0:00/0:00
// Tonight's the Night — Rod Stewart
// 91 bpm, 4/4, key B 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 81 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(91/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, A@4 for four bars: edit a riff to change every repeat.
// bass · electric bass finger · "Bass"
const bass = note(`<
~ A B@5 C D C D C D C D E F C D C D C D C D C G H I J K L M C G C G C G C G C G N O J K L P Q R Q S C T U V C D C D C
D C D W G N X Y Z AA AB C AC C G C AC C AD
>`.pickRestart({
A: "~@14 d2@3 e2@3 ~ f2@3", B: "[g2@3 a2@13 f1@22 ~ a#1@2 ~ [b1,c2,b2] c3@25 a1@25 ~ e1@25 ~, ~@39 a#2 ~@80]/5",
C: "b1@3 ~@2 b1 b1@3 ~ g#1 f#1", D: "e1@3 ~@2 e1 e1@3 ~@2 e1", E: "a1@11 ~", F: "f#1@8 ~@2 g#1@8 a#1@5 ~",
G: "e1@3 ~@2 e1 e1@2 g#1 b1 c#2 g#1", H: "b1@6 ~@4 b1@2 b1@7 ~ f#1@2 g1@2", I: "g#1@6 ~@4 g#1@2 g#1@7 ~ b1@2 c2@2",
J: "c#2@3 ~@2 c#2 c#2@4 b1 c#2", K: "e1@3 ~@2 e1 e1@4 f#1 g#1", L: "b1@6 ~@4 b1@2 b1@5 ~ b1@2 a#1@2 g#1@2",
M: "f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1 ~ g#1@2", N: "b1@3 ~@2 b1 b1@2 f#1!3 g1",
O: "g#1@6 c#2@2 d#2@2 g#1@2 g#1@7 ~ b1@2 c2@2",
P: "f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 g#1@2 b1 ~ c#2@2", Q: "d2@7 ~@3 d2@2 d2@6 ~@2 b1@2 a1@2",
R: "g1@6 ~@4 g1@2 g2@5 ~ g2@2 f#2@2 e2@2", S: "g1@3 ~@2 g1 g1@3 ~ a1 a#1", T: "e1@3 ~@2 e1 e1@3 ~ e1 f1",
U: "f#1@7 ~@3 f#1@2 f#1@7 ~@3 f#1@2", V: "f#1@3 ~@2 f#1 f#1@2 f#1!2 g#1 a#1", W: "b1@3 ~@2 b1 b1@3 ~@2 g#1",
X: "g#1@6 c#2@2 d#2@2 g#1@2 g#1@7 ~@3 c2@2", Y: "c#2@3 ~@2 c#2 c#2@4 c#2 d#2", Z: "e2@3 ~@2 e2 e2@4 d#2 c#2",
AA: "b1@3 ~@2 b1 b1@3 ~ a#1 g#1", AB: "f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 g#1 ~ a#1@2",
AC: "e1@6 ~@4 e1@2 e1@7 ~@3 g#1@2", AD: "e1@3 ~@2 e1 e1@2 g#1 b1 c#2 ~",
})).s("gm_electric_bass_finger").gain(0.44)
// chords · overdriven guitar · "Overdriv"
const overdriven_guitar = note(`<
A@7 B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH@2 L M N
O P Q R S T U V W X Y Z AA B C D E F G H I
>`.pickRestart({
A: "[~@13 g4@15 g4@4 e4@5 ~@2 f4@5 ~@14 a4@3 f4@2 ~@2 [f4,g#4]@22 c4@2 ~ [a#3,d4]@2 [b3,d#4] ~@23 [a3,d4]@3 [a3,d4]@22 ~@2 g#3@24 ~, ~@10 g3@26 ~ d3@21 ~@84 [b2,e3]@26, ~@11 b3@26 ~ a3@23 ~@107, ~@12 e4@19 ~@7 c4@21 ~@5 c4@22 ~@6 c4@17 ~@59, ~@45 f4@16 ~@31 e4@20 ~@56]/7", // Fm A# B D5 E5
B: "[b2,f#3]@6 f3 ~@3 [b2,f#3,b3]@8 [b2,f#3] ~@5", // B5
C: "[e3,b3]@6 [e3,b3,d#4] ~@5 [b3,e4]@2 [c#4,f#4]@4 [b3,e4]@4 e2@2", // E5 Emaj7 E5 F#5 E5
D: "b2@6 [b2,f#3,b3] ~@3 [b2,f#3,b3]@8 [b2,f#3,b3]@2 ~@4", // B5
E: "[e3,b3]@5 ~ [e3,b3,d#4,g#4]@2 ~@4 [f#3,b3]@2 [g#3,c#4]@2 [b3,e4]@2 [b3,e4]@2 c#4@2 b3 ~, ~@5 e2@2 ~@5", // E5 Emaj7 B5 C#5 E5
F: "b2@6 [b2,b3] ~@3 [b2,f#3,b3,d#4]@8 [b2,f#3,b3]@2 ~@4, f#3 ~@5", // B B5
G: "[e3,b3]@5 ~ [b3,d#4,g#4] ~@3 e2@2 [f#3,b3]@2 [g#3,c#4]@2 [b3,e4]@2 [b3,e4]@2 c#4@2 b3@2", // E5 G#m B5 C#5 E5
H: "[b2,f#3]@6 [b2,f#3] ~@3 [b3,d#4]@8 [f#3,b3]@2 ~@4, ~@3 b2@3 ~@2", // B5 B B5
I: "[e3,b3]@5 ~ [e3,b3,d#4]@2 ~@4 [e3,d#4]@4 [d#4,g#4]@7 ~, ~@3 b3@2 ~", J: "[b3,e4,g#4]@23 ~",
K: "[f#3,a#3]@4 ~ [g#3,b3]@4 [g#3,c#4]@3", L: "[b2,f#3]@6 [b2,f#3] ~@3 [b3,d#4]@8 [b3,d#4]@2 ~@4, ~@5 [b2,f#3]@5 ~@2",
M: "[e3,b3,d#4]@6 [b3,d#4,g#4] ~@5 [f#3,b3]@2 [g#3,c#4] ~ [b3,e4]@2 [b3,e4]@2 c#4@2 [b3,e4]@2", // Emaj7 G#m B5 C#5 E5
N: "[b2,f#3]@6 [b2,f#3] ~@3 [b3,d#4]@8 [f#3,b3] ~@5, ~@9 [b2,f#3]@10 ~@5", // B5 B B5
O: "[e3,b3,d#4]@5 ~ [b3,d#4,g#4]@2 ~@4 [b3,e4] [c#4,f#4]@4 [c4,f4] e4@4 a2@2, ~@13 [c4,f4] ~@3 b3@4 ~@3", // Emaj7 G#m E5 F#5 F5
P: "[b2,f#3]@6 [b2,f#3] ~@3 [f#3,b3,d#4]@8 [f#3,b3,d#4] ~@5, ~@3 b2@3 ~@2", // B5 B
Q: "[e3,b3]@6 [e3,b3,d#4]@2 ~@4 [b3,e4]@2 c#4 ~ e4@2 [e4,g#4]@2 f#4@2 e4@2", // E5 Emaj7 E5 E
R: "[b2,f#3]@6 [f#3,b3] ~@3 [f#3,b3,d#4]@8 [f#3,b3,d#4,f#4]@2 ~@4, ~@9 b2@10 ~@5", // B5 B
S: "[e3,b3]@6 [e3,b3,d#4]@6 d#4@4 [d#4,g#4]@6 a2 ~, ~@12 b3@11 ~, ~@2 e3 ~", // E5 Emaj7 G#5
T: "b2@6 [f#3,b3,d#4,f#4]@2 ~@2 [f#3,b3,d#4]@8 [f#3,b3,d#4]@3 ~@3, f#3@5 ~@5 b2@10 ~@4, ~@18 f#4@5 ~", // B
U: "[e3,b3,d#4]@6 [b3,d#4]@2 ~@2 a2 ~ [f#3,b3]@2 [g#3,c#4]@2 [b3,e4]@2 [b3,e4]@2 c#4@2 [b3,e4]@2", // Emaj7 B B5 C#5 E5
V: "[b2,f#3]@6 [f#3,b3] ~@3 [b2,f#3,b3]@8 [b2,f#3,b3,d#4]@3 [e3,f3,a#3] [g#3,a3]@2, ~@5 d#4@3 ~@4", // B5 B A# Amaj7
W: "d#3@6 [d#3,g#3,b3] ~@3 [d#3,g#3]@2 [f#3,b3]@2 [g#3,c#4] ~ [b3,d#4]@2 [b3,d#4]@2 c#4@2 [f#3,b3]@2, g#2 ~@2", // G#m G#5 B5 C#5 B B5
X: "~@6 e4@4 ~@6 g#3@2 g#3@3 ~ d#4 ~, [g#3,c#4]@15 ~ c#4@6 ~@2, ~@10 d#4@11 ~@3", // C#5
Y: "[c#4,f#4]@2 ~@14 e4@2 [e3,b3,e4]@3 ~ d3@2, ~@2 g#4@7 ~ g#4@12 ~@2, ~@2 e4@4 e4@9 ~@9, ~@2 b4@5 ~@5", // F#5 E5
Z: "b3@3 ~ b3@2 ~@12 [b2,f#3]@5 ~, [b2,f#3]@4 f#4 ~, ~ b3@2 ~, ~@6 d#4@9 ~ d#4@6 ~@2, ~@5 b4@5 ~@2", // B5
AA: "f#2@2 g#2@2 b2@2 [b2,e3]@2 [c#3,f#3]@2 e3 ~ e3@2 f#3@2 e3@2 c#3@2 b2@2 a2@2", // E5 F#5
AB: "[d3,a3]@6 a3 [a#3,b3,d4] ~@2 a3@6 a3@2 [a3,d4] b3@2 d4@2 ~, ~@5 d4@4 ~@3", // D5 A# D5
AC: "g3@4 g3@2 d4 d#4 e4@2 [d4,g4]@8 d4@2 e4@2 d4@2, d4 ~@3", // G5
AD: "d3@3 ~ d3@2 a3 [a#3,b3]@2 a#3 [a3,d4]@8 [a3,d4]@2 b3 ~ [a3,d4]@2, a3 ~@3", // Bmaj7 D5
AE: "[g3,d4]@6 d4 [d#4,e4]@2 ~ [d4,g4]@8 d4@2 e4 ~ d4 ~", // G5 Emaj7 G5
AF: "b2@3 ~ b2@2 f#3@2 [c#3,g#3] ~ [f#3,b3]@8 ~@2 g#3@2 f#3 ~, ~@9 f#3 ~@2, ~@19 b3@4 ~", // C#5 B5
AG: "b3@3 ~ b3@2 ~ c#4@2 ~ [b3,d#4]@8 b3@2 c#4@2 b3@2, e3@6 b3@2 ~@10 d#4@5 ~", // B
AH: "[f#3@4 f#3@2 c#4 d4 d#4@2 f#4@6 f#4@2 ~@4 c#4@2 c#4@2 d#4@2 ~@2 c#4@2 d#4 ~@4 d#4@2 ~@4 d#4@2 ~ c#4@2, c#4@3 ~@2 c#4@6 ~@7 c#4 ~@2 c#4 ~@2, ~@18 f#4@9 ~ f#4@5 f#4@5 ~ f#4@6 f#4@3]/2",
})).s("gm_overdriven_guitar").gain(0.24).pan(0.8)
// chords · rock organ · "Organ 3"
const rock_organ = note(`<
~@4 A@3 B C B C B C B D@2 E@2 C B C B C B F@2 C G H I C J@3 C B C K@3 L@2 C G H I C M@3 N O P Q C R@4 S@2 T@2 U V@2 C
G H I C J@3 C B C B C B C
>`.pickRestart({
A: "[~@19 [c6,d6,e6] [f6,g6] ~@2 g6@2 ~ e6 f#6@2 e6 f#6@2 ~@14 [b4,g#5,g#6]@20 ~@6, ~@7 [g3,a3,b3] [f4,g4,a4] [f5,g5,a5] [d5,a5]@13 ~@13, ~@15 [c4,d4,e4]@2 [b4,c5,d5,e5]@2 b5@2 ~@51, ~@20 e6@6 ~@6 e6@33 ~@7, ~@20 a6@3 a6@23 ~@26]/3", // C Fsus2 E G F D5 C Cmaj7
B: "[d#5,f#5]", C: "[e5,g#5]", D: "[e5 b4, g#5]/2", E: "[a#4@5 b4@4 c#5@3 d#5@12, f#5]/2",
F: "[~ f#5, [e5,g#5] ~, ~ b5@3]/2", G: "[f#5,b5]", H: "[d#5,g#5]", I: "[c#5,e5]@3 [d#5,f#5]",
J: "[b5 c#5 d#5, f#5]/3",
K: "[~@18 g5 g#5@3 ~@20 c#6@4 ~@17 b5@3 d#6@6, [d#5,f#5] [e5,g#5] [d#5,f#5], ~@22 b5@19 c6@2 ~@3 d#6@18 ~@8]/3", // D#m E D#m
L: "[e6@2 d#6 b5 c#6 ~@7 f#5@12, [e5,g#5] ~, d#6 ~@9 b5@38]/2", M: "[b5@24 c#5@24 a5@21 ~ a5 ~, f#5, ~@69 b5@2 ~]/3",
N: "a#5 ~@3 d6@20, g5, ~ b5@23", O: "a5@21 ~@2 a#5, f#5, ~@11 a5", P: "b5@3 ~ d6@2 a#5 ~@3 d6@12 e6@2, g5, ~ b5@3",
Q: "[d#5,f#5,d#6]", R: "[~@24 c#6@24 ~@42 g#5@3 ~ g#5@2, f#5@3 e5, c#5@48 b5@42 g5 ~@3 g5 ~]/4",
S: "[d#5@9 c#5@2 ~ e5@12, f#5 ~, ~@18 c5 ~@3 b4@26]/2",
T: "[f#5@18 g#5@4 ~@19 a#5 b5@3 ~ c#6@2, d#5 e5, ~@18 g5 ~@3 b5@20 ~@6]/2", U: "[f#5,d#6]@23 c6",
V: "[c#6 ~@3 f#5@4, e5 ~, ~ b5@7]/2",
})).s("gm_rock_organ").gain(0.37).pan(0.6)
// chords · electric guitar clean · "Clean gt"
const electric_guitar_clean = note(`<
A@4 B@2 C ~ D@2 E F G@2 ~ H I J K L K J K L M N O@2 P Q R S T U V@2 W@2 X Y ~ Z@3 AA AB AC AD AE AF AG AH AI AJ AK
AL@2 ~ AM@2 AN AO AP@2 AQ@2 AR AS AT AU AV AW ~@2 D@2 E F G@2 ~
>`.pickRestart({
A: "[~@7 [b4,e5]@2 a#4 [g#4,a4,d#5] ~ [g4,b4]@16 [g4,b4]@3 [f#4,a#4] [d#4,e4,f4,g4,g#4,a4] [b3,c4,d4,f4,f#4] [a3,a#3,d4] ~@16 d5@9 ~@24 g#3@5 ~ d3 e3@2 g3@3, ~@38 d4@12 ~@14 f3@23 ~@9, ~@41 f4@7 f4@5 ~@14 g#3@16 ~@13, ~@45 a4@10 ~@16 d4@9 d4@7 ~@9, ~@77 f4@9 ~@10]/4", // E5 G# G F# Bm A#maj7
B: "[a3@2 ~@2 c4@3 e4@3 d4@3 c4@3 ~ a3@3 ~ b3@5 ~@10 d4@8 ~@4, ~@7 c4 ~@12 g3@25 ~@3, ~@13 b3@8 ~@3, ~@10 g4@5 ~]/2",
C: "~ a3@3 g#3@3 g#3 a3@3 g#3@13", D: "[~@12 d#4@4 b3@2 c#4@19 ~@11]/2", E: "~@12 e4@3 ~ c#4@2 e4@3 ~ c#4@2",
F: "b3@5 ~", G: "[~@12 c#4@25 ~@11]/2",
H: "~@6 [a4,c#5]@3 [g4,g#4,b4,c5] [e4,f4,f#4,g#4,a4,a#4] ~ [e4,g#4]@11 ~, g#4@3 ~@5", // A Cmaj7 E
I: "[f#4,a#4]@7 ~@3 [g#4,b4]@8 [a#4,c#5]@5 ~", J: "~@10 [f#4,b4] ~@7 [f#4,b4] ~@5",
K: "~@6 [e4,g#4] ~@3 [e4,g#4] ~@5 [e4,g#4]@2 ~@4 [e4,g#4]@2", L: "~@6 [f#4,b4] ~@3 [f#4,b4] ~@7 [f#4,b4] ~@5",
M: "~@6 [b3,e4] ~@3 f#3@2 f#3 g#3 b3@2 c#4 ~ b3@4 g#3@2", N: "b3@6 b3@4 b3@8 [f#3,b3]@3 ~@3, f#3@3 ~, ~@5 d#4@6 ~",
O: "[~ d#4@5 ~@12 b3@6 b3@6 b3@4 [b3,d#4]@8 ~ b3@4 ~, b3@6 b3@11 ~@7 f#3@18 f#3@4 ~@2, ~@9 b4@23 ~@16, ~@15 g#4@7 ~@26]/2", // B
P: "g#3@3 ~ b3@2 c#4@15 ~@3", Q: "~@9 e4@2 ~, e4@9 ~ e4@8 ~@6, ~@2 [g#4,c#5]@4 g#4@5 ~, ~@3 c#5@2 ~",
R: "g4@4 e5@6 ~@8 g#4@5 ~, ~@4 g#4@5 ~ g#4@8 ~@6, ~@3 e5@2 ~",
S: "~@10 f#4@5 ~ [d#4,f#4]@6 ~@2, [f#3,b3]@11 ~, ~@4 f#4@6 b4@11 ~@3, ~@3 d#4@5 ~@4", // D#m B5
T: "g#3@2 a#3@2 c#4@2 c#4@2 d#4@2 f#4@2 f#4@4 [f#4,g#4] ~ f#4@2 c#4 ~ d#4@2", U: "b3@8 ~@2 [f#4,b4] ~@7 [f#4,b4] ~@5",
V: "[~@12 c#4@3 ~ c#4@4 c#4@18 ~@10]/2", W: "[~@16 [d#4,f#4]@3 ~ d4 [d#4,f#4]@14 ~@13, ~@16 [d4,f4] ~@4 f4 ~@26]/2",
X: "~@17 c#4 d#4@2 c#4@2 b3@2", Y: "d#4@3 ~@5",
Z: "[[d#4,f#4,b4]@6 [f#4,b4]@4 f#4@6 f#4@2 [b3,d#4]@3 ~ f#4@2 ~@18 [b3,d#4]@3 ~@9 f#4@4 ~@8 [b3,d#4]@3 ~ b3@2, b3@18 ~@6 [b3,d#4]@9 ~ [b3,d#4]@8 ~@6 [b2,f#3]@21 ~@3, ~@6 d#4@12 ~@10 g#4@12 [g#4,b4]@5 ~ f#4@8 d#4@11 ~@7, ~@10 b4@22 ~@16 b3@17 ~@7, ~@29 [f#4,b4]@5 ~@2]/3", // B B5 B B5 G#m B5
AA: "g#3@3 ~ b3@2 c#4@2 ~@2 c#4@8 b3@3 ~@3", AB: "~@9 e4@2 ~, g#4@3 ~, e4@5 e4@4 ~@3, ~@4 c#5@8 c#5@9 ~@3",
AC: "f4@2 ~@16 g#4@3 ~@3, ~ g#4@4 g#4@4 ~@3, ~@4 e5@8 e5@9 ~@3",
AD: "~@6 f#4 g#4@2 ~@9 d#4@3 ~ d4 ~, d#4@10 [d#4,f#4]@7 f#4@4 ~@3, ~@3 b4@5 b4@2 ~@2", // D#m
AE: "[c#4,f#4] d#4 ~ c#4 d#4 c#4!2 d#4 ~ c#4 d#4 [c#4,f#4], ~@4 f#4@5 ~ f#4@6 f#4@4 ~@4", // F#5
AF: "~@3 [a3,d4,f#4]@2 [a3,d4,f#4]@4 [a3,d4] ~@2, a2 ~@2", AG: "~@4 [d4,g4]@2 d4@4 [d4,g4]@6 d4@2 d4@3 ~@3, ~@4 g4 ~",
AH: "a3@4 [d4,f#4]@3 ~@3 [a3,d4,f#4]@6 f#4@2 [a3,d4]@2 ~@4, ~@4 a4 ~", // D D5
AI: "~@2 [d4,g4]@2 ~ [g3,g4]@3 g4 [d4,g4] ~@2, ~@5 d4@4 ~@3", // G5 G G5
AJ: "~@4 [d#4,f#4]@2 [f#3,b3,d#4] ~@3 [b3,d#4]@6 [d#4,f#4,b4]@2 [b3,d#4]@2 ~@4, [b2,f#3]@7 ~@3 f#4@5 ~@9", // D#m B B5
AK: "~@4 [d#4,g#4]@4 ~@2 [d#4,g#4]@6 ~@2 [e3,b3]@3 ~@3, ~@2 b3 ~@2 b3@4 ~@3", // G#5 E5
AL: "[f#3@4 ~@2 g#3@2 a#3 ~ g#3@2 g#3@2 a#3@2 g#3@2 g#3@2 a#3@2 g#3@2 g#3@2 a#3@2 g#3@2 g#3@2 a#3@2 g#3@2 g#3@2 a#3@2 g#3@2 g#3@2 a#3@2 [g#3,c#4]@2, ~@4 c#4@6 c#4@5 ~ c#4@5 ~ c#4@5 ~ c#4@5 ~ c#4@6 c#4@6 ~@2]/2", // C#5
AM: "[~@18 [d4,f#4,g4] [e4,g#4]@3 [d#4,f#4]@20 ~@6, ~@19 d#4 ~@28]/2", AN: "~@3 d4!3", AO: "d#4@19 ~@5",
AP: "[~@16 e4@2 f#4@3 ~ f#4@10 ~@16]/2",
AQ: "[~@20 c#4@2 ~@12 b4@8 b4@3 ~ f#3@2, ~@11 d#4@4 d#4@5 ~@4, ~@12 b4@5 ~@7]/2",
AR: "~@18 g#4@5 ~, b3@15 ~ b3@7 ~, ~@2 g#4@7 ~@3, ~@5 d#4@7",
AS: "~@12 b4@5 ~ [d#4,b4]@3 ~ b3@2, d#4@5 d#4@4 ~@3, ~ b4@2 ~@3", AT: "g#3@3 ~ b3@2 c#4@2 ~ c#4@9 b3@3 ~@3",
AU: "e4@2 c#5@3 ~@4 e4@2 f#4, ~@4 e4@5 ~ e4@8 ~@6, ~@4 c#5@3 ~",
AV: "~@9 g#4 ~ e4, g#4@9 ~ g#4@8 ~@6, ~@4 e5@8 e5@9 ~@3",
AW: "~@7 g#4@2 ~ f#4@6 f#4@5 ~ d#4@2, d#4@5 ~@7, ~@2 b4@7 ~@3, ~@3 f#4 ~@8",
})).s("gm_electric_guitar_clean").gain(0.29).pan(0.2)
// other · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
~@17 A@2 B C@3 D E@2 F G@3 H I@2 J@2 B C@3 D E@2 F G@3 H K@2 L M@2 N O@2 P@2 Q ~@5 R S@2 F G@3 H K@2 T@6 U@2
>`.pickRestart({
A: "[f#5@23 g#5@19 d#5@4 g#5@2]/2", B: "f#5", C: "[g#5@18 d#5@2 g#5@2 ~ f#5@24 g#5@19 d#5@4 g#5@2, ~@11 d#5 ~@24]/3",
D: "f#5@6 d#5@5 c#5", E: "[~@2 b3 [f#4,f#5], b4@3 ~]/2",
F: "[d#4,d#5]@9 ~ c#5@6 [g#3,g#4]@2 [b3,b4]@2 [c#4,c#5]@2 [g#3,g#4]@2, ~@9 c#4@5 ~@10", // D# G# B C# G#
G: "[[b3,b4]@12 ~@12 d#5@9 ~ c#5@5 g#3@2 ~ b3@2 c#4@2 g#3@2 ~@12 d#5@12, ~@12 [f#4,f#5]@13 ~@14 b4@13 c#5@9 ~@11, ~@23 d#4@10 c#4@5 ~@10 b3@11 d#4@13]/3", // B F#
H: "c#4@12 b3@6 [g#3,b4]@3 ~ g#3 ~, e5@6 ~ g#4", // G#m
I: "[g#3@4 f#3@25 ~ b3@2 c#4@2 g#3@2 b3@2 c#4@2 g#3@2 b3@2 c#4@2 g#3@2, f#4@5 ~@3]/2",
J: "[f#5@23 g#5@19 d#5@4 g#5@2, b3@5 ~@7]/2",
K: "[g#3@4 f#3@25 ~ [b3,b4]@2 [c#4,c#5]@2 [g#3,g#4]@2 [b3,b4]@2 [c#4,c#5]@2 [g#3,g#4]@2 [b3,b4]@2 [c#4,c#5]@2 [g#3,g#4]@2, f#4@5 ~@3]/2", // B C# G# B C# G# B C# …
L: "[a3,a4]@3 [b3,b4]", M: "[[d4,d5]@18 [b3,b4]@5 [a3,a4]@19 [b3,b4]@5 ~]/2", N: "[d4,d5]@17 [e4,e5]@7",
O: "[[d#4,d#5]@36 [c#4,c#5]@5 [b3,b4]@7]/2", // D# C# B
P: "[[g#3,g#4]@3 [f#3,f#4]@26 ~ [b3,b4]@2 [c#4,c#5]@2 [g#3,g#4]@2 [b3,b4]@2 [c#4,c#5]@2 [g#3,g#4]@2 [b3,b4]@2 [c#4,c#5]@2 [g#3,g#4]@2]/2", // G# F# B C# G# B C# G# …
Q: "[b3,b4]@13 ~@11", R: "f#5 d#5", S: "[c#5 ~ b3 [f#4,f#5], ~ b4@2 ~]/2",
T: "[b4@6 f#5@6 d#5@5 c#5@3 [g#3,g#4] [b3,b4] [c#4,c#5] [g#3,g#4], b3@5 ~]/2", // G# B C# G#
U: "[b4@6 f#5@6 d#5@5 c#5@3 [g#3,g#4] [b3,b4] [c#4,c#5] ~, b3@5 ~]/2", // G# B C#
})).s("gm_string_ensemble_1").gain(0.26).pan(0.4)
// other · electric guitar muted · "Muted gt"
const electric_guitar_muted = note("<~@73 A B A C A B A C>".pickRestart({
A: "~@6 c#5@3 ~ c#5@10 c#5 ~ b4@2", B: "c#5@3 ~ c#5@18 ~@2", C: "c#5@4 d5@5 g#4@13 ~@2",
})).s("gm_electric_guitar_muted").gain(0.4).pan(0.3)
// other · electric guitar muted · "Muted gt"
const electric_guitar_muted_2 = note("<~@73 A B A C A B A C>".pickRestart({
A: "~@6 e5@3 ~ e5@10 e5@2 d#5@2", B: "e5@3 ~ e5@18 ~@2", C: "e5@4 f5@5 b4@13 ~@2",
})).s("gm_electric_guitar_muted").gain(0.36).pan(0.7)
// drums · kick
const kick = s("bd").struct("<~@7 A@9 B A@7 C A@7 D A@7 D A@7 E A@15 D A@7 F A@7 D>".pickRestart({
A: "x ~@4 x!2 ~@4 x", B: "x ~@4 x ~@6", C: "x ~@4 x!2 ~@5", D: "x", E: "~ x!11", F: "x!2 ~ x",
})).gain(0.45)
// drums · snare
const snare = s("sd").struct("<~@6 A B@9 C B@7 D B@7 E B@7 F B@7 E B@7 G B@7 F B@7 H B@7 F>".pickRestart({
A: "~@13 x ~@10", B: "~ x ~ x", C: "~@2 x!2 ~@4 x ~@3", D: "~@3 x ~@2 x!6", E: "x ~ x!10", F: "x!6 ~@6",
G: "~@3 x ~@4 x!2 ~@2", H: "~@2 x ~ x ~ x ~ x ~ x ~ x ~ x!3 ~@7",
})).gain(0.45)
// drums · low tom
const low_tom = s("lt").struct("<~@6 A ~@9 B ~@15 C ~@7 D ~@23 D ~@7 E ~@7 F>".pickRestart({
A: "~@10 x!2", B: "~@11 x", C: "~@2 x!10", D: "~@9 x!3", E: "~@6 x ~@2 x!3", F: "~@9 x!2 ~",
})).gain(0.45)
// drums · hihat
const hihat = s("hh").struct(`<
~@7 A B@7 A C A B D B D B@2 E D B D B D B D ~ A B@6 F D E D B D B D ~ G E D G D@2 G F B@2 D B@3 D F D G D E D@2 B F
D@3 B D@3 F
>`.pickRestart({
A: "~@6 x ~ x!2 ~@2", B: "x ~@2 x ~@2 x ~ x!2 ~@2", C: "x!2 ~ x", D: "~@3 x ~@2 x ~ x!2 ~@2", E: "x!4", F: "~ x ~ x",
G: "~ x!3",
})).gain(0.4)
// drums · mid tom
const mid_tom = s("mt").struct("<~@6 A ~@9 B ~@23 C ~@23 C ~@15 C>".pickRestart({
A: "~@5 x!2 ~", B: "~@3 x", C: "~@6 x!3 ~@3",
})).gain(0.4)
// drums · open hat
const open_hat = s("oh").struct("<~@42 A ~@5 B A@2 ~ A ~@2 A C ~@9 A ~ A ~@12>".pickRestart({
A: "~@2 x", B: "x ~ x!5 ~@5", C: "~@6 x ~@4 x",
})).gain(0.4)
// drums · crash
const crash = s("cr").struct(`<
~@4 A ~@2 B ~@7 B C B ~ B ~ B ~@3 B ~ B ~ B ~ B@3 ~@7 B ~ B ~ B ~ B ~ B ~ B@6 ~@2 B ~@3 B@5 ~ B@2 ~ B@4 ~ B@4
>`.pickRestart({
A: "~@5 x", B: "x", C: "~@5 x ~@6",
})).gain(0.28)
// … 7 more lines
More by Rod Stewart
Maggie May1971 · D major · 130 bpmSailingB major · 130 bpmIt Takes TwoB♭ major · 122 bpmTwistin The Night Away (From "Innerspace")1987 · D major · 136 bpmDa Ya Think I'm SexyD minor · 114 bpmSome Guys Have All the LuckD major · 118 bpmRhythm of My HeartD♭ major · 94 bpmTom Traubert's Blues (Waltzing Matilda)C major · 73 bpm
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.