0:00/0:00
// Closer to the Heart — Rush
// 140 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 105 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): STEEL GTR.
setcpm(140/4)
// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.
// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note("<A@3 B@2 C@7 D@5 E@2 F G H@6 I@4 J@5 ~@31 K@2 L@8 ~@28>".pickRestart({
A: "[~@50 g#4@3 f#4@2 ~ e4@3 a3@3 ~@8 b4@2, ~@15 a4@8 b4@7 ~@2 g#4@7 ~@2 a4@8 ~@13 a4@8 ~@2, ~@18 b3@8 b3@8 ~ b3@8 ~ b3@9 ~@11 b3@8, ~@20 c#4@8 ~ c#4@8 ~ c#4@8 ~ c#4@20 c#4@5]/3",
B: "[~@25 g#4@2 ~ f#4@2 ~ e4@3 a3@2 ~@9 b4@3, ~ b3@8 ~ b3@8 ~ b3@8 ~@12 b3@8 ~, ~@4 c#4@8 ~ c#4@8 ~ c#4@26, ~@7 g#4@8 ~ a4@7 ~@13 a4@8 ~@4, ~@7 a3]/2",
C: "[~@24 g#4@3 f#4@2 ~ e4@3 a3@3 ~@35 g#4@2 ~ f#4@2 ~@3 a3@3 ~@18 g3@4 ~@20 f#3@5 ~@18 f3@3 ~@4 e4@7 ~@2 [d4,e4]@5, b3@9 b3@8 ~ b3@8 ~@12 b3@8 ~ b3@8 ~ b3@8 ~ b3@8 ~@4 e4@7 ~@5 d4@9 d4@7 ~@7 d4@8 ~ d4@6 ~@9 c4@8 c4@5 ~@19, ~@3 c#4@8 ~ c#4@8 ~ c#4@28 ~ c#4@8 ~ c#4@8 ~ c#4@16 ~@2 b3@19 ~@4 a3@17 ~@7 a3@14 ~@6 [e3,a3,b3]@8 ~ [e3,a3]@6, ~@6 g#4@8 ~ a4@7 ~@14 a4@8 b4@8 ~ g#4@7 ~@2 a4@7 ~@23 e4@23 e4@23 ~ e4@15 ~@14, ~@42 a3@8 ~@33 g3@17 ~@6 f#3@17 ~@7 f3@17 ~@5 a2@16]/7", // Dsus2 Esus4 A5
D: "[~@3 c#4@8 ~@10 b3@3 ~@3 e4@5 ~ e4@8 ~ e4@8 ~ [c#4,e4]@27 ~@2 [c#4,e4,a4]@6 [c#4,e4,a4]@3 [e4,a4]@6 [e4,a4]@3 [a3,c#4,e4,a4]@3 ~@3 [b3,d4,g4]@6 [b3,d4,g4]@3 [d4,g4]@5 [d4,g4]@2, ~@2 a2@29 ~ [a2,e3,a3,b3]@8 ~ [a2,e3]@9 a2@16 ~@54, ~@3 e4@23 ~@16 d4@7 ~@71, ~@3 a3@19 ~@2 c#4@8 ~@9 a3@7 ~@32 a3@9 [a3,c#4]@9 ~@15 [g3,b3]@7, ~@3 e3@9 c#4@6 e3@14 ~@18 [e3,a3]@28 ~@42]/5", // C#m A A5 A G G5 Asus2 A5 …
E: "[~ [g3,b3,d4,g4]@3 ~@3 [a3,d4,f#4]@5 ~ g3 ~@2 [g3,b3,d4,g4]@3 ~@4 g#3@2 [e4,a4]@6 [e4,a4]@3 c#4@3 c#4@3 [c#4,e4,a4]@3 [a3,c#4,e4,a4]@5, ~@25 [a3,c#4]@9 a3@9 ~@5, ~@17 [e4,a4]@3 ~@4]/2", // G D G A5 A A5
F: "~ [e4,a4]@3 [e4,a4]@3 [e4,a4]@6 [e4,a4]@3 [a3,c#4,e4,a4]@5 ~ g4 ~, ~ [a3,c#4]@6 [a3,c#4]@9 ~@8", // A5 A
G: "~ [d4,g4]@6 [d4,g4]@2 ~ d4@5 [d4,g4]@3 [g3,b3,d4,g4]@6, g3@3 g4@2 ~@3, ~ b3@9 [g3,b3]@8 ~@6", // G5 G
H: "[[g3,b3,d4,g4]@3 ~@3 [a3,d4,f#4]@5 ~ [b3,e4]@2 ~ [e3,a3,c#4]@4 ~@2 [g3,b3]@2 ~ b3@6 [b3,g4]@3 [g3,b3,g4]@5 ~ b3@2 ~ b3@5 [b3,g4]@3 [b3,e4]@2 ~ [a3,d4,f#4]@5 ~ [g3,b3,e4] ~@2 [e3,a3,c#4]@3 b3@2 ~ [g3,b3]@3 [b3,g4]@6 [b3,g4]@3 [d3,g3,b3,g4]@6 [b2,d3,g3,b3,g4]@2 ~ [b2,b3,g4]@6 [b2,b3,g4]@4 ~@2 [c#4,e4,a4]@6 [c#4,e4,a4]@3 [e4,a4]@6 [e4,a4]@2 ~ c#4@3 ~@3 [d4,g4]@5 [b3,d4,g4]@3 ~@6 [d4,g4]@3 [g3,b3,d4,g4]@2, ~@6 d3@8 ~ e4@6 [d3,e4] ~ [b2,g4]@6 ~@4 [b2,d3]@8 b2@8 ~@4 [a2,d3]@9 [a2,e4]@6 ~@3 g2@17 ~ [g2,d3]@9 ~@46, ~@24 [d3,g3]@9 ~@5 g4@3 g4@6 ~@21 e4 ~@49 [a3,e4,a4]@3 ~@3 b3@6 ~@3 b3@8 ~@3, ~@39 g3@8 g3@5 ~@37 g3@12 a3@9 [a3,c#4]@9 ~@14 [d4,g4]@5 ~@6, ~@42 d3@11 ~@18 [b2,d3,g3]@9 ~@54 g3@7 ~@3]/6", // G D E5 A G Em G Em …
I: "[~@4 [a3,d4,f#4]@5 ~ g3 ~@2 [g3,b3,d4,g4]@3 ~@3 g#3@2 ~ [e4,a4]@6 [e4,a4]@3 c#4@3 c#4@3 [c#4,e4,a4]@3 [a3,c#4,e4,a4]@5 ~ a4@3 [e4,a4]@2 ~ [e4,a4]@5 [e4,a4]@3 [a3,c#4,e4,a4]@5 ~ g4 ~@2 [d4,g4]@6 [d4,g4]@3 [d4,g4]@6 [d4,g4]@3 [g3,b3,d4,g4]@6 [g3,b3,d4,g4]@3, ~@21 a3@9 ~ a3@9 ~@6 [a3,c#4]@5 a3@9 ~@9 [g3,b3]@9 [g3,b3]@9 ~@9, ~@22 c#4@9 [e4,a4]@6 ~@8 e4@3 ~@4 c#4@8 ~@36]/4", // D G A5 A A5 A G5 G …
J: "[~@3 [a3,d4,f#4]@5 ~ [b3,e4]@2 ~ [e3,a3]@4 ~ e4 d3 ~ [b3,g4]@6 [b3,g4]@3 [g3,b3,g4]@6 [b3,g4]@3 [b3,g4]@6 [b3,g4]@3 [b3,e4]@2 ~ [a3,d4,f#4]@5 ~ [g3,b3,e4] ~@2 [e3,a3,c#4]@3 b3@2 ~ [g3,b3]@3 [b2,d3,g3,b3,g4]@29 ~@23, ~@3 d3@8 e4@6 ~@18 g3@8 ~ g3@5 ~@10 e4@6 e4 ~@54, ~@11 c#4@4 ~@2 [g3,b3]@3 [d3,g3]@9 d3@8 ~ d3@12 d3@8 ~@62]/5", // D E5 A5 Em G Em E5 D …
K: "[~@36 g#4@3 f#4@2 ~ e4@3 a3@3, a4@8 ~ b4@8 ~ g#4@7 ~@2 a4@8 ~@13, ~@3 b3@8 ~ b3@9 b3@8 ~ b3@9 ~@9, ~@6 c#4@8 ~ c#4@8 ~ c#4@8 ~ c#4@15]/2",
L: "[~@36 g#4@2 ~ f#4@2 ~ e4@3 a3@3 ~@36 g#4@3 f#4@2 ~ e4@3 a3@3 ~@36 g#4@2 ~ f#4@2 ~@4 a3@3 ~@36 g#4@2 ~ f#4@2 ~@4 a3@3, a4@8 ~ b4@8 ~ g#4@8 ~ a4@7 ~@14 a4@8 ~ b4@8 ~ g#4@8 ~ a4@7 ~@14 a4@8 ~ b4@8 ~ g#4@7 ~@2 a4@7 ~@8 e4@7 ~@5 a3@8 ~@34, ~@3 b3@8 ~ b3@8 ~ b3@9 b3@8 ~@13 b3@8 ~ b3@9 b3@8 ~ b3@9 ~@12 b3@8 ~ b3@8 ~ b3@8 ~ b3@8 ~@10 a4@8 ~ b4@8 ~ g#4@7 ~@2 a4@7 ~@8 e4@5 ~, ~@6 c#4@8 ~ c#4@8 ~ c#4@8 ~ c#4@29 ~ c#4@8 ~ c#4@8 ~ c#4@28 ~@2 c#4@8 ~ c#4@8 ~ c#4@29 ~ c#4@8 ~ c#4@8 ~ c#4@15, ~@54 a3@8 ~@40 a3@8 ~@37 b3@8 ~ b3@8 ~ b3@8 ~ b3@8 ~@10]/8",
})).s("gm_acoustic_guitar_steel").gain(0.32).pan(0.3)
// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
~@25 A B@3 C@4 D@3 ~@3 E F G@2 H I J@2 K@2 L@2 M N O P Q R S T U V W X Y Z AA AB AC AD@3 AE AF AG AH AI AJ AK AL AM@2
AN AO AP@2 AQ@2 AR AS AT@2 AU AV AW@2 AX@2 AY@2 AZ@2 BA@2 BB ~
>`.pickRestart({
A: "~@5 a2@9 e2@5 a2@4 ~", B: "[~ e2@3 g2@8 ~ g#2@5 ~ g2@9 d2@6 e2@3 f#2@6 g2@3 a1@15 e2@2 a2@6 d2@3]/3",
C: "[d#2@2 ~ e2@6 e2@3 e2@5 ~ e2@2 ~ d2@9 g2@9 f#2@6 g2@6 a2@3 g2@2 ~ f#2@2 e2@5 ~ f#2@3 d2@12 ~@3 a1@3 d2@6 a2@4]/4",
D: "[~@2 c#2@6 a1@3 a1@6 d2@2 ~ g1@35 ~@17]/3", E: "a2@5 ~ e2@3 a2@6 e2@2 ~ a2@3 e2@2 ~",
F: "g2@4 ~@2 g2@3 f#2@5 ~ f#2@3 g2@5 ~", G: "[d2@5 ~ e2@3 f#2@6 g2@3 a1@15 a2 ~ a2 a2@5 ~ e2@2 ~ a2@2 ~]/2",
H: "d#2@5 ~ e2@2 ~ f2@5 ~ e2@3 d2@6", I: "d2@3 g2@5 ~ g2@2 ~ f#2@6 g2@6",
J: "[a2@3 g2@3 f#2@3 e2@6 f#2@3 d2@14 ~ c#2@3 d2@2 ~ c#2@3 a2@4 ~@2]/2",
K: "[d2@3 a1@3 d2@3 a1@2 ~ d2@3 a1@3 g1@9 g1 ~@5 g1@3 g1@2 ~ a1@3 b1@3 c#2@2 ~]/2", L: "[d2@6 ~@3 a1@4 ~@5 g1@30]/2",
M: "d2@6 a1@3 d2@6 d2@3 d2@3 e2 ~ f#2", N: "g2@5 ~ f#2@3 f#2@8 ~ d2@2 ~ c#2@3", O: "c2@4 g1 ~ c2@3 b1@8 ~ c2@3 g1@3",
P: "a1@4 a1@4 a1@4 d2@3 ~ d2@3 ~ d2@2 g#1@2", Q: "d2@6 c#2@2 ~ d2@6 c#2@3 d2@2 ~ f#2@3", R: "g2@2 g2 f#2@2 f#2 g2 b2",
S: "c3@6 c3@2 ~ b2@6 c3@2 ~ b2@3 g2@3", T: "a2@11 ~ g2 g2@2 ~ g2@2 ~@2 g2 c#2@3",
U: "d2@5 ~ c#2@3 c#2@5 ~ c#2@3 d2@2 ~ f#2@2 ~", V: "g2@6 g2@2 ~ f#2@6 f#2@2 ~ d2@2 ~ c#2@3",
W: "c2@3 g1@2 ~ b1@3 c2@6 b1@3 c2@2 ~ g1@3", X: "a1 b1 c2 c#2", Y: "d2@6 c#2@3 d2@5 ~ c#2@3 d2@2 ~ f#2@3",
Z: "g2@6 f#2@3 g2@5 ~ g2@3 b2@3 b2@3", AA: "c3@2 ~ b2@3 c#3@3 c3@6 b2@3 a2@2 ~ g2@2 ~", AB: "g#2@6 g2@6 f#2@5 ~ e2@6",
AC: "a1@2 a1!6",
AD: "[a1@3 a1@3 a1@3 a1@3 a1@3 a1@3 a1@3 ~@3 a2@3 ~@3 a2@3 a1@3 a1@3 ~@3 a2@3 ~@3 a2@2 ~ a1@3 a1@3 ~@3 a2@2 ~ a1@5 ~@4, ~@7 a1@2 a1@2 ~@2 a1@2 a1@2 ~@2 a1@2 ~@3]/3",
AE: "a2@3 b2@3 g#2@2", AF: "g#2@3 a2@8 ~ g#2@3 f#2@3 e2@2 ~ c#2@3", AG: "a2@6 a2@2 ~ b2@5 ~ b2@3 g#2@6",
AH: "g#2@2 ~ a2@5 ~ a2@2 ~ d#3@3 d3@3 c#3@2 ~ b2@3", AI: "a2@3 e2@2 ~ a2@3 b2@6 b2@3 g#2@6",
AJ: "g#2@3 a2@6 a2@3 g#2@2 ~ f2@2 ~ e2@2 ~ c#2@3", AK: "a1@6 a1@3 a1@6 e2@3 a2@4 e2@2",
AL: "g2@5 ~ g2@3 g#2@5 ~ g2@3 f#2@3 e2@2 ~",
AM: "[d2@3 e2@2 ~ f#2@3 g2@6 f#2@3 a1@9 a1@3 ~@3 a1@3 a2@3 g2@3 f#2@3 d2@3]/2", AN: "e2@5 ~ e2@2 ~ f2@6 e2@3 d2@6",
AO: "d2@3 g2@5 ~ g2@3 f#2@6 g2@6",
AP: "[a2@3 g2@2 ~ f#2@3 e2@6 f#2@3 d2@8 ~ c#2@3 d2@2 ~ c#2@2 ~ d2@2 ~ e2@3 f#2@3 g2@3]/2",
AQ: "[a2@2 ~ g2@3 f#2@3 e2@6 f#2@3 d2@8 ~ a1@2 ~ d2@3 c#2@3 d2@3 d2@3 a2@4 ~@2]/2",
AR: "d2@3 a2@3 d2@3 a1@6 d2@2 ~ g1@6", AS: "~@3 f#1@3 g1@3 f#1@3 g1@2 ~ a1@3 b1@2 ~ c#2@3",
AT: "[d2@3 a2@3 d2@2 ~ a1@4 ~@2 d2@2 ~ g1@8 ~ f#1@3 ~@3 f#1@3 g1@2 ~ a1@3 b1@2 ~ c#2@3]/2",
AU: "d2@3 a2@3 d2@3 a2@3 d2@2 ~ a1@2 ~ g1@6", AV: "~@3 g2@3 f#2@2 ~ g2@2 ~ g#2@2 ~ g2@3 f#2@3 e2@3",
AW: "[d2@2 ~ d#3@3 d3@2 ~ c#3@2 ~ b2@3 a2@3 g2@8 ~ f#2@3 g2@3 a2@6 g2@3 f#2@3 e2@3]/2",
AX: "[d2@3 a1@3 d2@3 a1@3 d2@3 a1@2 ~ g1@8 ~ f#1@3 g1@3 f#1@3 g1@3 a1@3 b1@3 c#2@3]/2",
AY: "[d2@3 f#3@3 f#3@3 e3@6 d3@2 ~ c#3@2 ~ b2@5 ~ g#2@3 g2@2 ~ f#2@3 g2@3 f#2@3 e2@4 ~@2]/2",
AZ: "[d2@9 a1@4 ~@5 g1@9 f#1@3 g1@3 f#1@3 g1@2 ~ a1@2 ~ b1@2 ~ c#2@3]/2",
BA: "[d2@8 ~ a1@3 ~@6 g1@9 f#1@3 g1@3 f#1@3 g1@2 ~ a1@2 ~ b1@2 ~ c#2@3]/2", BB: "d2@7 ~@2 a1@3 ~@12",
})).s("gm_electric_bass_finger").gain(0.49)
// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@39 A@6 B@4 C@2 D E F G D E F G D E F G D E F G ~@10 A@6 B@20 H ~>".pickRestart({
A: "[[e3,a3,c#4]@19 ~@2 [d3,g3] ~ g3 [g3,b3,g4]@17 ~@4 [a3,d4,f#4] ~ [a3,d4,f#4] [a3,d4,f#4]@7 ~@2 [d3,g3,b3]@7 ~@2 [e3,a3,c#4]@22 ~@5 [e3,a3,c#4,e4] ~ [e3,e4] [e3,e4]@9 [e3,a3,c#4,e4]@5 ~@4 [d3,g3,b3,d4]@24 [d3,g3,b3,d4]@3 ~@3, a4@17 ~@6 d3@18 ~@4 d3@11 ~@39 [a3,c#4]@10 ~@39, ~@24 d4@13 ~@20 g4@5 ~@4 e4@24 ~@24 g4@27 ~@3]/6", // A G5 G D G A E A …
B: "[[a3,d4,f#4]@6 ~@3 [e3,a3,c#4]@3 ~@6 d3@9 d3@9 [g3,b3]@6 [g3,b3]@6 [a3,d4,f#4]@5 ~@4 [e3,a3,c#4]@4 ~@5 [b2,d3,g3,b3]@9 [b2,d3,g3]@6 [b2,d3]@3 [b2,d3,g3,b3]@6 [d3,g3]@6, d3@8 ~ e4@7 ~@2 g4@24 g4@4 ~@2 a2@9 [a2,e4]@8 ~@10 b3@8 ~@7 b3@4 ~@2, ~@18 [g3,b3]@18 d3@20 ~@10 g4@24 [b2,g4] ~@5]/4", // D A G D A G Bm G …
C: "[[d3,a3,d4] ~@2 [a2,e3,a3] ~@2 [g2,d3,g3]@10]/2", // D5 A5 G5
D: "[d3,a3,d4]@6 [d3,a3,d4]@2 ~ [d3,d4]@6 d4@3 d4@4 ~@2, ~@3 a3@4 ~, ~@15 d3@8 ~", // D5 D
E: "[g2,d3,g3]@6 [g2,d3,g3]@2 ~ g3@5 ~@4 g2@5 ~, ~@3 [g2,d3]@3 d3 ~, ~@15 g3@7 ~@2", // G5
F: "[c3,g3,c4]@6 c4@2 ~@10 c4@3 ~@3, ~@6 [c3,g3]@9 c3@8 ~, ~@3 c4@3 ~@2, ~@5 g3@2 ~", // C5
G: "[a2,e3,a3]@6 a3@2 ~ a3@6 e3@3 e3@4 ~@2, ~@6 a2@17 ~, ~@6 e3@9 a3@8 ~", // A5
H: "[a3,d4,f#4]@2 ~ [e3,a3,c#4] ~@4, d3@8 ~ e4@7 ~@8", // D A
})).s("gm_overdriven_guitar").gain(0.29).pan(0.3)
// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar_2 = note("<~@51 A B C D E F G H I J K L M N O P ~@38>".pickRestart({
A: "d5", B: "d5@5 ~", C: "c5@17 ~@7", D: "f#4@2 ~@2 g4 ~ a4@2 b4@2 ~@2 c#5@2 ~@2 d5@2 c#5@2 d5@2 e5@2",
E: "d5@2 e5@2 f#5@2 e5@2 f#5@2 g5@2 e5@2 f#5@2 g5 ~ f#5 ~ g5 ~ a5@2", F: "a5@14 ~ a5@3 ~@2 a5@3 ~",
G: "a5@11 ~@4 e5@3 f#5@2 ~ g5@2 ~", H: "g5@5 a5 g5@4 ~@2", I: "d#5@10 d5 ~ d5@8 ~@4", J: "e5@9 ~ e5 ~ d#5@5 ~@7",
K: "g5@2 ~ f#5@2 ~ g5@3 f#5@2 ~ g5@2 ~ f#5@2 ~ g5@2 ~ f#5@2 ~", L: "g5@9 a5@2 g5@7 ~@6",
M: "a#4@6 ~ d5@5 a#4@6 g4@3 f#4@3", N: "e4@3 d4@2 ~ e4@4 ~@2 d4@7 ~@5", O: "c4@3 b3@3 c4@2 ~ b3@10 ~@2 c#4@3",
P: "d4@5 ~ c4@3 a4@11 ~@4",
})).s("gm_overdriven_guitar").gain(0.4)
// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_2 = note(`<
A@5 B@8 C@5 D@2 E@7 F@4 G@2 H@2 ~@4 I J K@2 L@2 M@2 N@4 O P Q R O P Q S O P Q S O P Q S ~@10 I J K@2 L@2 M@2 N@4 M@2
N@2 M@2 N@2 M@2 N@2 M@2 T ~
>`.pickRestart({
A: "[~@50 g#4@3 f#4@2 ~ e4@3 ~@38 g#4@3 ~@3 e4@3 ~@11 b4@3, ~@15 a4@8 ~ b4@7 ~ g#4@8 ~ a4@7 ~@14 a4@8 ~ b4@7 ~ g#4@8 ~ a4@7 ~@14 a4@8 ~@3, ~@18 b3@8 ~ b3@8 b3@8 ~ b3@8 ~@13 b3@8 b3@8 ~ b3@8 ~ b3@8 ~@13 b3@8, ~@21 c#4@8 ~ c#4@8 c#4@8 ~ c#4@11 ~ c#4@8 ~ c#4@8 c#4@8 ~ c#4@7 ~@2 c#4@11 ~ c#4@8 ~ c#4@5]/5",
B: "[~@24 g#4@3 f#4@2 ~ e4@3 ~@38 g#4@3 f#4@2 ~ e4@3 ~@20 b3@2 ~@22 a3@5 ~@18 a3 ~@6 e4@8 [e3,e4]@9 c#4@8 ~ c#4@7 ~@2 b3@3, b3@8 ~ b3@8 ~ b3@8 ~@13 b3@8 b3@8 ~ b3@8 ~ b3@6 ~@12 g3@21 ~@2 f#3@21 ~@3 f3@19 ~@3 e3@9 ~@31, ~@3 c#4@8 ~ c#4@8 ~ c#4@11 ~ c#4@8 ~ c#4@8 c#4@8 ~ c#4@8 ~ c#4@12 ~@6 b3@14 ~@9 a3@14 ~@10 a3@14 ~@6 a3@9 [a3,d4]@7 ~@2 a3@14 ~@7, ~@6 g#4@8 ~ a4@7 ~@14 a4@8 b4@7 ~@2 g#4@8 ~ a4@6 ~@21 d4@8 d4@5 ~@10 d4@7 ~@2 d4@5 ~@10 c4@7 ~ c4@5 ~@4 b3@7 ~@32, ~@92 e4@16 ~@7 e4@23 ~ e4@14 ~@18 e4@21]/8", // E D5
C: "[~@3 e4@5 ~ [b3,e4]@8 ~ e4@8 ~ [c#4,e4]@26 ~@3 [c#4,e4,a4]@6 [e4,a4]@3 [e4,a4]@6 [e4,a4]@3 [a3,c#4]@4 ~@19 b3@2 ~@4 [a3,d4,f#4]@5 ~ f4 ~@2 [b3,d4,g4]@3 ~@5, c#4@7 ~ [e3,a3]@9 [e3,a3]@6 ~@3 [e3,a3]@26 ~@13 [a3,c#4]@8 ~@10 b3@14 ~@23, ~@18 d4@5 ~@51 [e4,a4]@2 ~@9 d4@8 ~ d4@5 ~@21, ~@22 g4@3 ~@5]/5", // E5 C#m A A5 A D G A5 …
D: "[~@25 e4@5 ~ [c#4,e4,a4]@6 ~@3 c#4@5 g#4 ~@2, ~ a4@17 ~ a4@11 ~@18, ~ e4@14 ~ e4@8 ~@15 [e4,a4]@5 ~@4, ~ c#4@12 c#4@17 ~@18, ~@10 a3@19 ~@2 a3@15 ~@2]/2", // A A5
E: "[g4@8 ~@16 d4@3 ~@3 [a3,d4,f#4]@6 ~@3 [a3,c#4,e4]@3 ~@29 d4@3 ~@3 [a3,d4,f#4]@5 ~ [b3,e4] ~@2 [e3,a3,c#4,e4]@3 ~@6 b3@12 ~@15 d4@3 [c#4,e4,a4]@6 [e4,a4]@3 [e4,a4]@5 [e4,a4]@3 [a3,c#4]@4 ~@20 b3@2, g3@27 ~@3 d3@8 ~@10 b3@11 b3@15 ~@33 b3@9 b3@9 ~@9 [a3,c#4]@8 ~@9 b3@14 ~@3, b3@23 ~@24 g3@8 ~@2 g3@17 ~@21 g3@9 ~@64, d4@15 d4@8 ~@25 d4@14 d4@8 ~@25 d4@14 ~ d4@12 ~@20 [e4,a4]@2 ~@10 d4@8 ~ d4@5, ~@9 g4@11 ~ g4@5 ~@22 g4@17 g4@9 ~@21 g4@17 ~ g4@12 ~@32 g4@11]/7", // D A D E5 A A5 A A5
F: "[~@4 [a3,d4,f#4]@5 ~ f4 ~@2 [b3,d4,g4]@3 ~@29 e4@5 ~ [c#4,e4,a4]@6 ~@3 [c#4,e4,a4]@5 ~ g#4 ~@2 g4@8 ~@16 d4@3, ~@21 c#4@12 ~ c#4@17 ~@18 b3@23 ~@4, ~@22 a4@17 a4@11 ~@28 g4@11 ~ g4@5 ~, ~@22 e4@14 ~ e4@8 ~@24 d4@15 d4@8 ~@4, ~@31 a3@19 ~ a3@15 ~@3 g3@27]/4", // D G A
G: "[~@3 [a3,d4,f#4]@6 ~@3 [a3,c#4]@3 ~@5 g3@8 ~@16 d4@3 ~, ~@3 d3@8 e4@4 ~@5 g4@17 ~ g4@9 ~, ~@20 d4@14 ~ d4@8 ~@5, ~@20 b3@11 ~ b3@15 ~, ~@29 g3@17 ~@2]/2", // D A
H: "[~@2 [a3,d4,f#4]@5 ~ [b3,e4] ~@2 [e3,a3,c#4,e4]@3 ~@5 [g3,b3,d4,g4]@29]/2", // D E5 A G
I: "[c#4,e4,a4]@6 [e4,a4]@3 [e4,a4]@6 [e4,a4]@3 [a3,c#4]@4 ~@2, ~@9 [a3,c#4]@8 ~ [e4,a4]@2 ~@4", // A A5 A A5
J: "~@9 b3 ~@2, g3@7 ~, ~@3 b3@14 ~@7, ~@6 d4@8 ~ d4@5 ~@4, ~@3 g4@4 ~",
K: "[[a3,d4,f#4]@5 ~ f4 ~@2 [b3,d4,g4]@3 ~@30 e4@5 ~, ~@18 a4@17 ~ a4@11 ~, ~@18 e4@15 e4@8 ~@7, ~@18 c#4@12 c#4@17 ~, ~@27 a3@19 ~@2]/2", // D G
L: "[[c#4,e4,a4]@6 a4@3 [c#4,e4,a4]@5 ~ g#4 ~@2 g4@9 ~@15 d4@3 ~@3, a3@5 ~ g3@9 ~, ~@3 b3@4 ~, ~@18 d4@15 d4@8 ~@7, ~@27 g4@11 ~ g4@6 ~@3]/2", // A
M: "[[a3,d4,f#4]@2 ~ [a3,c#4,e4] ~@2 g3@3 ~@5 d4 ~, d3@8 ~@10 g4@17 ~ g4@9 ~@3, ~@18 d4@14 ~ d4@9 ~@6, ~@6 b3@4 b3@5 ~, ~@9 g3@6 ~]/2", // D A
N: "[[a3,d4,f#4]@5 ~ [g3,b3,e4] ~@2 [e3,a3,c#4,e4]@3 ~@6 [g3,b3,d4,g4]@29 ~]/2", // D Em A G
O: "~ f#4@5 [a3,d4,f#4]@3 [d4,f#4]@6 [d4,f#4]@3 [d3,a3,d4,f#4]@3 d4@3, d3@3 ~@5, [a3,d4]@2 ~ a3@3 ~@2", // D D5
P: "[b3,d4,g4]@6 [b3,d4,g4]@3 ~@6 [d4,g4]@3 [g3,b3,d4]@4 ~@2, ~@9 b3@8 ~@7, ~@9 [d4,g4]@5 ~@4 g4@2 ~@4, ~@5 g3@4 ~@3", // G G5 G G5
Q: "~ g4@5 [g3,c4,g4]@3 [c4,g4]@6 [c4,g4]@3 [e3,g3,c4,g4]@3 c4@3, e3@3 ~@5, [g3,c4]@2 ~ g3@3 ~@2", // C5 C C5
R: "[a3,c#4,e4]@6 [a3,c#4,e4]@3 [c#4,e4]@5 ~ [c#4,e4]@3 [e3,a3,c#4,e4]@4 ~@2, ~@9 [e3,a3]@8 ~@7", // A C#m A A5
S: "[a3,c#4,e4]@6 [a3,c#4,e4]@3 ~@6 [c#4,e4]@3 [e3,a3,c#4,e4]@4 ~@2, ~@9 a3@8 ~@7, ~@9 [c#4,e4]@5 ~@10, ~@5 e3@4 ~@3", // A C#m A C#m
T: "[a3,d4,f#4]@5 ~ [g3,b3,e4] ~@2 [e3,a3,c#4,e4]@3 ~@12", // D Em A
})).s("gm_acoustic_guitar_steel").gain(0.32).pan(0.7)
// chords · acoustic guitar steel · "STEEL GTR" · soft notes
const acoustic_guitar_steel_3 = note(`<
~@4 A ~@3 B ~@3 C@2 ~ D E@2 F G ~ H ~ I J@2 K L@2 M ~ N ~ O ~@5 P ~ Q@2 R ~ S ~@5 T ~ U ~ T ~ U ~ T ~ U ~ T ~ U ~@11 P
~ Q@2 R ~ S ~@5 S ~@3 S ~@3 S ~@3 S ~@3
>`.pickRestart({
A: "~@4 f#4@3 ~@17", B: "~@4 c#4 ~@7", C: "[~@18 a3@13 ~@17, ~@3 e3@28 ~@17]/2", D: "~@14 c#4@3 ~@7, ~@8 a3@9 ~@7",
E: "[~@8 g3@20 ~@3 f#3@5 ~@4 g3@3 ~@5]/2", F: "~ a3@9 ~@14", G: "~@13 a4@2 ~@9, ~@4 e4 ~@3", H: "~@6 [b3,e4] ~@5",
I: "~@11 g3 ~@12", J: "[~@8 g3@21 ~@6 c#4@3 ~@10, ~@29 a3@9 ~@10]/2", K: "~ g3@5",
L: "[~@4 f#3@5 ~@4 g3@3 ~@5 a3@9 ~@18]/2", M: "~@3 [e4,a4] ~@4", N: "~@9 [b3,e4]@2 ~@13", O: "~@8 g3 ~@15",
P: "~@2 c#4 ~@5, a3@3 ~@5", Q: "[f#3@5 ~@4 g3@3 ~@6 a3@9 ~@21]/2", R: "~@2 e4 ~@5", S: "~@3 [b3,e4] ~@8",
T: "~@9 d3@8 ~@7", U: "~@9 e3@8 ~@7",
})).s("gm_acoustic_guitar_steel").gain(0.16).pan(0.7)
// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar_3 = note(`<
~@39 A@2 B@4 C@2 D@2 E@2 F G H I F G H I F G H I F G H I J@8 K@2 L@2 B@4 C@2 D@2 C@2 D@2 C@2 D@2 C@2 D@2 C@2 D@2 M ~
>`.pickRestart({
A: "[[a2,e3,a3]@19 ~@2 [g2,d3,g3] g3 d3 [d3,g3]@19 ~@2 [d3,a3,d4]@2 d4, ~@23 g2@20 ~@5]/2", // A5 G5 D5
B: "[[d3,a3,d4]@7 ~@2 [g2,d3,g3]@2 ~@7 [a2,e3,a3]@27 [a2,e3,a3] ~ a2 [a2,a3]@9 [a2,e3,a3]@3 ~@6 [g2,d3,g3]@24 [g2,d3,g3]@2 ~@4, ~@23 a3 ~@24, ~@47 e3@10 ~@39]/4", // D5 G5 A5 A A5 G5
C: "[[d3,a3,d4]@5 ~@4 [a2,e3,a3]@2 ~@7 [g2,d3,g3]@9 [g2,d3]@6 g2@2 ~ [g2,d3,g3]@6 [g2,d3,g3]@2 ~@4, ~@9 g3@3 ~@4]/2", // D5 A5 G5
D: "[[d3,a3,d4]@6 ~@3 [a2,e3,a3]@2 ~@7 [g2,d3]@9 d3@6 d3@3 [d3,g3]@6 [d3,g3]@2 ~@4, ~@3 g3@3 ~@2, ~@27 g2@9 g2@8 ~@4]/2", // D5 A5 G5
E: "[[d3,a3,d4]@4 ~@5 [a2,e3,a3]@2 ~@7 [g2,d3,g3]@28 ~@2]/2", // D5 A5 G5
F: "d4@6 ~ d4@2 ~ a3@4 ~ [d3,d4]@8 ~, d3@3 [d3,d4]@2 ~@3, a3@4 ~@2 a3@3 ~@6 a3@6 ~@3", // D
G: "g3@6 ~ g3@2 ~@6 g3@3 [g2,g3]@5 ~, [g2,d3]@9 d3@11 ~@4, ~@9 g3@5 ~@10, ~@5 g2@4 ~@3", // G G5
H: "[g3,c4]@2 c4 [c3,c4]@2 ~ g3 ~, c3@3 ~@2 g3 ~@2, ~@6 g3@9 c4@7 ~@2, ~@16 c3@7 ~", // C5 C
I: "e3@6 e3@3 ~@9 a2@4 ~@2, a2@3 ~, a3@9 a3@5 ~ a3@7 ~@2, ~@5 e3@6 ~",
J: "[~@36 g#4@3 f#4@2 ~ e4@3 ~@39 g#4@3 f#4@3 e4@3 ~@39 g#4@3 f#4@2 ~ e4@3 ~@39 g#4@3 f#4@2 ~ e4@3 c#4@3, a4@8 ~ b4@7 ~@2 g#4@8 ~ a4@7 ~@14 a4@8 ~ b4@7 ~@2 g#4@8 ~ a4@7 ~@14 a4@8 ~ b4@7 ~@2 g#4@8 ~ a4@7 ~@14 a4@8 ~ b4@8 ~ g#4@8 ~ a4@6 ~@15, ~@3 b3@8 ~ b3@8 ~ b3@8 ~ b3@8 ~@13 b3@8 ~ b3@8 ~ b3@8 ~ b3@8 ~@13 b3@8 ~ b3@8 ~ b3@8 ~ b3@8 ~@13 b3@8 ~ b3@8 ~ b3@8 ~ b3@6 ~@12, ~@6 c#4@8 ~ c#4@8 ~ c#4@8 ~ c#4@11 ~ c#4@8 ~ c#4@8 ~ c#4@8 ~ c#4@8 ~ c#4@11 ~ c#4@8 ~ c#4@8 ~ c#4@8 ~ c#4@8 ~ c#4@11 ~ c#4@8 ~ c#4@8 ~ c#4@8 ~ c#4@8 ~ c#4@12 ~@3]/8",
K: "[~@36 g#4@3 f#4@2 ~ e4@3 c#4@2 ~, a4@8 ~ b4@8 ~ g#4@8 ~ a4@6 ~@15, ~@3 b3@8 ~ b3@8 ~ b3@8 ~ b3@6 ~@12, ~@6 c#4@8 ~ c#4@8 ~ c#4@8 ~ c#4@12 ~@3]/2",
L: "[[a2,e3,a3]@19 ~@2 [g2,d3,g3] g3 d3 [d3,g3]@19 ~@3 d4 ~, ~@23 g2@20 ~@2 [d3,a3,d4]@2 ~]/2", // A5 G5 D5
M: "[d3,a3,d4]@5 ~@4 [a2,e3,a3]@2 ~@13", // D5 A5
})).s("gm_overdriven_guitar").gain(0.29).pan(0.6)
// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar_4 = note("<~@51 A B C D E F G H I J K L M N O P ~@38>".pickRestart({
A: "a4", B: "a4@5 ~", C: "g4@17 ~@7", D: "f#4@2 ~@2 g4 ~ a4@2 b4@2 ~@2 c#5@2 ~@2 d5@2 c#5@2 d5@2 e5@2",
E: "d5@2 e5@2 f#5 ~ e5@2 f#5@2 g5@2 e5@2 f#5@2 g5 ~ f#5 ~ g5 ~ a5@2", F: "a5@14 ~ a5@3 ~@2 a5@3 ~",
G: "a5@11 ~@4 b4@3 c#5@2 ~ d5@2 ~", H: "d5@5 e5 d5@4 ~@2", I: "a#4@10 a4 ~ a4@8 ~@4", J: "b4@9 ~ b4 ~ a#4@5 ~@7",
K: "d5@2 ~ c#5@2 ~ d5@3 c#5@2 ~ d5@2 ~ c#5@2 ~ d5@2 ~ c#5@2 ~", L: "d5@9 e5@2 ~ d5@7 ~@5",
M: "f4@6 ~ a4@5 f4@6 d4@3 c#4@3", N: "b3@3 a3@2 ~ b3@4 ~@2 a3@7 ~@5", O: "g3@3 f#3@3 g3@2 ~ f#3@10 ~@2 g#3@3",
P: "a3@5 ~ g3@3 e4@11 ~@4",
})).s("gm_overdriven_guitar").gain(0.4).pan(0.4)
// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_4 = note("<A@2 B@2 C@2 D@2 E F ~ G@3 H@2 I@2 ~@2 J@2 K L ~ M@3 N O@3 P ~@72>".pickRestart({
A: "[~@24 b4@7 ~@17, ~@21 c#5@8 ~@19]/2", B: "[~@23 b4@8 ~@17, ~@17 b3@8 ~@23, ~@5 c#5@2 ~@5]/2",
C: "[~@19 a4@8 ~@21, ~@13 a4@6 ~@29, ~@2 b3 ~@3]/2", D: "[~@21 b4@8 ~@19, ~@15 b3@8 ~@25]/2", E: "~@8 a4@3 ~@13",
F: "~@5 g4@4 ~@15", G: "[~@4 f4@3 ~@3 b3@8 ~ a4@7 ~@2 e4@23 ~@6 [b3,a4]@8 ~ a4@6, ~ c4@5 ~@22 c#4@8 ~@36]/3",
H: "[~@3 a4@27 ~@3 [e4,a4]@5 ~@10]/2", // A5
I: "[~@14 a3@3 ~@6 [d4,g4]@2 ~ [d4,g4,b4]@3 ~@3 [d4,f#4,a4]@5 a4 ~@3 a3@7, ~@17 a3@8 a3@15 ~@8]/2", // G5 G D
J: "[~@16 [d4,g4]@3 [d4,g4]@6 g4@2 ~@4 [f#4,a4]@5 ~@12, ~ a3@29 ~ d4@8 ~@9]/2", K: "~@18 g4@5 ~",
L: "b3@3 [e4,b4]@2 ~ [f#4,a4]@5 ~@4 a4@3 b3@2 ~@4, ~@5 a3@2 ~", // E5 F#m
M: "[~@23 [e4,a4]@3 ~@3 b4@5 ~ g4@3 [a3,b4]@8 ~@12 a4 ~@2 a3@8 ~@3, ~@34 a3@3 ~ d4@5 ~@3 a3@15 ~@11]/3", N: "~@11 e4",
O: "[~@10 [e4,a4]@3 [e4,c#5]@5 ~@3 a3@29 ~@10 c#4@4 ~@2 [b3,g4]@2 ~@4]/3", P: "~@3 [b3,g4]@2 ~ d4@8 ~@10",
})).s("gm_acoustic_guitar_steel").gain(0.32).pan(0.4)
// bass · lead 2 sawtooth · "SAW WAVE"
const bass_2 = note("<~@4 A@8 B@2 C@2 ~@19 D@4 ~@66>".pickRestart({
A: "[~@13 a1@45 ~@2 a1@47 g1@23 d2@23 f1@23 ~ a1@15]/8", B: "[~@3 a1@29 a1@16]/2", C: "[~@2 a1@29 ~@17]/2",
D: "[~ d2@47]/2",
})).s("gm_lead_2_sawtooth").gain(0.25).pan(0.6)
// other · tinkle bell · "TINKLEBELL"
const tinkle_bell = note("<~@4 A ~ B ~ C D E F G H I ~@20 J K L ~@67>".pickRestart({
A: "~@13 a6 ~@10", B: "~@12 a6 ~@11", C: "~@11 g6 ~@12", D: "~@10 d7 ~@13", E: "~@10 f6 ~@13", F: "~@9 b6 ~@8 d7 ~@5",
G: "~@3 c#7 ~@20", H: "~@8 b6 ~@8 d7 ~@6", I: "~@2 c#7 ~@21", J: "~ d7 ~@8 a6 ~@8 g6 ~@4",
K: "~@4 f#6 ~@8 g6 ~@5 a6 ~@4", L: "d7 ~@8 a6 ~@8 g6 ~@5",
})).s("gm_tinkle_bell").gain(0.33).pan(0.4)
// other · tubular bells · "TUBULARBEL"
const tubular_bells = note("<~@35 [~ d5 ~@8 a4 ~@8 g4 ~@4] [~@4 f#4 ~@8 g4 ~@5 a4 ~@4] [~ d5 ~@7 a4 ~@8 g4 ~@5] ~@67>")
.s("gm_tubular_bells").gain(0.38)
// drums · kick
const kick = s("bd").struct(`<
~@25 A B C D E F G H I ~@5 J@2 K L M N M O P ~ M ~ Q R S ~ S T@2 U Q T@2 U S T@2 U@2 ~ V@2 Q W Q W M X Q R Q W Q W Q U
Q W Q W Y W Q W U ~ M W Q W Y W Q W Z ~
>`.pickRestart({
A: "~@5 x ~@8 x ~@9", B: "~ x ~@2 x ~@8 x ~@10", C: "~ x ~@2 x ~@8 x ~@8 x ~", D: "~@7 x ~@2 x ~@13",
E: "x!2 ~@2 x ~@2 x", F: "~@2 x!2 ~@4", G: "x ~@2 x ~@7 x ~@8 x ~@3", H: "~@5 x ~@2 x ~@11 x ~@3", I: "~@5 x",
J: "x ~@2 x ~@3 x", K: "x ~@2 x ~@2 x!2", L: "~@2 x!2 ~ x!2 ~", M: "x ~@2 x ~@2 x ~", N: "~ x!2 ~@4 x",
O: "~ x!2 ~@3 x ~", P: "~@3 x", Q: "x ~@2 x ~ x ~@2", R: "x!2 ~ x ~ x ~@2", S: "x ~@2 x ~ x ~ x",
T: "x!2 ~ x ~ x ~ x", U: "x", V: "x!8", W: "~ x ~ x ~ x ~ x", X: "~ x ~@2 x ~@3", Y: "x ~@2 x", Z: "~ x ~ x ~@4",
})).gain(0.44)
// drums · snare
// … 97 more lines
More by Rush
Not in the database
That song isn't here.
Nothing in the database matches this link. It may have been renamed, or the address was mistyped. The closest songs to :
Real transcriptions · Editable patterns · Instrumental
Type a song.
Get Strudel code.
Chords, structure, melody, bass and drums compiled from open transcriptions into Strudel live-coding patterns. Play it here, scrub through the bars, then open it in strudel.cc and start hacking.
Smells Like Teen SpiritNirvana
The JokerSteve Miller Band · 1973
Love Me DoThe Beatles · 1964
I Don't MindJames Brown · 1961
- Real transcriptionsMcGill chord charts, Lakh MIDI and quality-filtered PDMX scores. The library includes alternate transcriptions of some songs.
- One bar, one cycleEvery layer follows the same bar timeline, keeping the code, playback and song structure aligned.
- Instrumental by designDetected vocal parts are removed. Guitar riffs, harmonica and other instrumental leads stay.