0:00/0:00
// Simply Irrestible — Robert Palmer
// 145 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 13 electric bass pick (copy of ch 1 electric bass pick); ch 16 piano (copy of ch 10 piano)
// note: Full arrangement: all 146 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(145/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.
// bass · electric bass pick
const bass = note(`<
~ A B@2 C D E F G D E F H D E F H D E F H I J K L M N ~@2 D E F G D E F O D E F G D E F H D E F H D E F H I J K L M N
~@2 D E F G D E F P D E F G D E F G ~@8 D E F G D E Q@3 R S R T U V W X@2 Y ~ D E F G D E F H D E F H D E F H I J K L
M N ~@2 D E F G D E F P D E F G D E F G Z
>`.pickRestart({
A: "e2 ~ e2 ~ e2 ~@3 e2 ~@3 e2 ~ e2 ~", B: "[e2 ~ e2 ~ e2 ~@3 e2 ~@3 e2 ~ a2@17 ~]/2", C: "b2@13 ~@3",
D: "e2 ~ e2@2 d2@2 ~@2 e2@2 ~@4 d2@2", E: "e2 ~ e2@2 d2@2 ~@2 e2@3 ~@3 g1@2", F: "a1 ~ a1@2 g1@2 ~@2 a1@2 ~@4 g1@2",
G: "a1 ~ a1@2 g1@2 ~@2 a1@3 ~@3 d2@2", H: "a1 ~ a1@2 g1@2 ~@2 a1@2 ~@4 d2 ~",
I: "b1 ~ b1 ~ b1@2 b1 ~ b1@2 b1@2 b1@2 b1@2", J: "b1@2 b1 ~ b1@2 b1 ~ b1@2 b1 ~ b1@2 b1 ~",
K: "a1@2 a1 ~ a1@2 a1 ~ a1@2 a1@2 a1@2 a1 ~", L: "g1@2 g1@2 g1@2 g1@2 g1@2 g1 ~ g1@2 g1@2",
M: "b1@2 b1@2 b1@2 b1 ~ b1@2 b1@2 b1@2 b1 ~", N: "g1 ~ g1@2 g1@2 g1@2 g1@2 g1@2 g1@2 g1@2", O: "b1@3 ~@13",
P: "[g1,a1] ~ a1@2 g1@2 ~@2 a1@3 ~@3 d2@2", Q: "[a1 ~ a1@2 g1@2 ~@2 a1@2 ~@4 d2@33 ~]/3",
R: "g1@2 g1@2 g1@2 ~@2 g1 ~ g1@2 g1@2 f1@2", S: "~@2 f1@2 ~@2 f1@2 f1@3 ~ f1@4",
T: "~@2 f1@2 ~@2 f1@2 f1 ~ f1@2 f1 ~ f1 ~", U: "g1@2 g1@2 g1@2 ~@2 g1 ~ g1@2 g1 ~ f1@2",
V: "~@2 f1@2 ~@2 f1@2 f1@3 ~ f1@3 ~", W: "a#2@2 ~ a#2 f3@3 a#2 d#3@3 a#2!2 ~ a2@2",
X: "[c#2@3 c#2 d#3@3 c#2 c#3@3 c#2 c3@2 b1@16 d#2@2]/2", Y: "e2 f2 g#2 f#2 b1 ~@3", Z: "e1!3 ~@5",
})).s("gm_electric_bass_pick").gain(0.51)
// chords · piano
const piano = note(`<
~@2 A@2 B C@8 D@8 E@2 F G H G ~@2 I@7 J C@8 D@8 E@2 F G H G ~@2 I@7 K L@4 M@4 ~@8 N O@8 P Q R S T U V W@3 X C@8 D@8
E@2 F G H G ~@2 I@7 K L@4 M@4 Y
>`.pickRestart({
A: "[~@7 [a1,a3,c#4,e4]@9]/2", B: "[b1,b3,d#4,f#4]@13 ~@3",
C: "[[e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e2,e3,g#3,b3] ~@5 [d3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e3,g#3,b3] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [f2,d3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e2,e3,g#3,b3] ~@5 [d3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e3,g#3,b3] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [a2,e3,a3,c#4,e4] ~, [e2,b2]@3 ~ b2 ~@2 [e2,b2]@3 ~@5 [a2,e3]@4 ~ [a2,e3] ~@2 [a2,e3]@4 ~ [a2,e3] ~@2 [e2,b2]@4 ~ b2 ~@2 [e2,b2]@4 ~ [e2,b2] ~@2 [a2,e3]@4 ~ [a2,e3] ~@2 [a2,e3]@4 ~ [a2,e3] ~@3]/8", // E G#dim E G#dim E G#dim E C#dim …
D: "[[e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e2,e3,g#3,b3] ~@5 [d3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e3,g#3,b3] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [a2,e3,a3,c#4,e4] ~, [e2,b2]@3 ~ b2 ~@2 [e2,b2]@4 ~ [e2,b2] ~@2 [a2,e3]@4 ~ [a2,e3] ~@2 [a2,e3]@4 ~ [a2,e3] ~@3]/4", // E G#dim E G#dim E G#dim E C#dim …
E: "[[b1,d#3,f#3,b3]@15 ~]/2", F: "[a1,c#3,e3,a3]@7 ~", G: "[g1,b2,d3,g3]@7 ~", H: "[b1,d#3,f#3,b3]@13 ~@3",
I: "[[e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e2,e3,g#3,b3] ~@5 [d3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e3,g#3,b3] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [f2,d3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e2,e3,g#3,b3] ~@5 [d3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e3,g#3,b3] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [g3,c#4,e4] ~, [e2,b2]@3 ~ b2 ~@2 [e2,b2]@3 ~@5 [a2,e3]@4 ~ [a2,e3] ~@2 [a2,e3]@4 ~ [a2,e3] ~@2 [e2,b2]@4 ~ b2 ~@2 [e2,b2]@4 ~ [e2,b2] ~@2 [a2,e3]@4 ~ [a2,e3] ~@2 [a2,e3]]/7", // E G#dim E G#dim E G#dim E C#dim …
J: "[b1,d#3,f#3,b3] ~@7", // B
K: "[a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [f2,d3,g#3,b3] ~, [a2,e3]@3 ~ [a2,e3] ~@2 [e2,b2]", // A C#dim A Fdim A5 E5
L: "[[e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e2,e3,g#3,b3] ~@5 [d3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e3,g#3,b3] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [f2,d3,g#3,b3] ~, [e2,b2]@3 ~ b2 ~@2 [e2,b2]@3 ~@5 [a2,e3]@4 ~ [a2,e3] ~@2 [a2,e3]@4 ~ [a2,e3] ~@2 [e2,b2]]/4", // E G#dim E G#dim E G#dim E C#dim …
M: "[[e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e2,e3,g#3,b3] ~@5 [d3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e3,g#3,b3] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@7, [e2,b2]@3 ~ b2 ~@2 [e2,b2]@3 ~@5 [a2,e3]@4 ~ [a2,e3] ~@2 [a2,e3]@4 ~ [a2,e3] ~@3]/4", // E G#dim E G#dim E G#dim E C#dim …
N: "[e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e2,e3,g#3,b3] ~@5 [d3,g#3,b3] ~, [e2,b2]@3 ~ b2 ~@2 [e2,b2]", // E G#dim E G#dim E5
O: "[[e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e3,g#3,b3] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [f2,d3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e2,e3,g#3,b3] ~@5 [d3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e3,g#3,b3] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [d2,f#3,a3,d4]@32 ~@2, ~@7 [a2,e3]@4 ~ [a2,e3] ~@2 [a2,e3]@4 ~ [a2,e3] ~@2 [e2,b2]@4 ~ b2 ~@2 [e2,b2]@4 ~ [e2,b2] ~@2 [a2,e3]@4 ~ [a2,e3] ~@19]/8", // E G#dim E C#dim A C#dim A C#dim …
P: "[f3,b3,d4] ~@3 [f3,b3,d4] ~@3 [f3,d4]@2 ~@2 d3 ~@3, g2@4 ~@4 b3 ~@7", // Bdim Dm
Q: "~@2 [d#3,a3,c4] ~@3 [d#3,a3,c4]@2 f2 ~ [d#3,a3,c4] ~ [d#3,a3] ~ d3 ~, ~@6 c4 ~", // Adim D#dim
R: "[f3,b3,d4]@2 g2 ~ [f3,b3] ~@3 [f3,b3,d4] ~@7, ~@2 d4 ~@5", // Bdim Fdim Bdim
S: "~@2 [d#3,a3,c4] ~ f2 ~ [d#3,a3,c4]@2 f2 ~ [d#3,a3,c4]@2 d3 ~ f3 ~", // Adim
T: "g2@2 [f3,b3,d4] ~ [f3,d4]@2 ~@2 [f3,b3,d4] ~@3 d3 ~@3, ~@4 b3 ~@11", // Bdim Dm Bdim
U: "~@2 [d#3,a3,c4] ~@3 f2@2 [d#3,a3,c4]@2 f2 ~ [d#3,c4]@2 ~@2, ~@12 a3 ~@3", V: "[d#2,a#2,d#3,g3] ~@7",
W: "[[c#2,g#2,c#3,f3]@2 ~@12 [b2,d#3,f#3]@19 ~@15]/3", // C# B
X: "~@4 [d2,e2] ~@5 c6 [d6,e6,a#6] [e6,f6,g6,a6] [a5,b5,c6,d6] [c5,d5,e5,f5,g5] [f4,g4,a4], ~@4 [f2,g2]@4 [e4,f4,g4,a4] [b4,c5,d5,e5,f5] [g5,a5,b5]@2 ~@4, ~@5 [a2,b2]@7 ~@4, ~@3 [c3,d3,e3,f3,g3]@3 ~@2, ~@7 [a3,b3,c4,d4]@5 ~@4", // Dsus2 Em7b5 Fmaj7 D7 C F Fsus2 Fmaj7 …
Y: "[e2,b2,e3,g#3,b3] ~ [e2,b2,e3,g#3,b3] ~ [e2,b2,e3,g#3,b3] ~@11", // E
})).s("gm_piano").gain(0.51)
// chords · synth brass 1
const synth_brass_1 = note(`<
~@2 A@2 B ~ C D E ~ C F G ~ C F H ~ C F E I@2 J K L M ~@11 C F N ~ C O N ~ C P G ~ C Q@2 I@2 J K L M ~@2 R S T ~ U V W
~ R S T ~ U V X Y ~@10 Z Y ~@17 C ~@3 C ~@3 C ~@3 C ~@2 I@2 J K L M ~@2 R S T ~ U V W ~ R S T ~ U V W ~@2
>`.pickRestart({
A: "[~@14 a2@17 ~]/2", B: "b2@3 ~", C: "[b4,e5,a5] ~ [b4,e5,a5]@2 ~@4", D: "a3 ~ a3@2 g3@2 f#3@2 e3@3 ~@3 a3@2",
E: "~@2 a3@2 g3@2 f#3@2 e3@3 ~@5", F: "a3 ~ a3@2 g3@2 f#3@2 e3@2 ~@4 a3@2", G: "~ a3 g3 f#3 e3 ~@3",
H: "~@2 a3 ~ g3 ~ f#3@2 e3@2 ~@6", I: "[[b3,d#4,f#4]@31 ~]/2", J: "[a3,c#4,e4]@7 ~", K: "[g3,b3,d4]@7 ~",
L: "[b3,d#4,f#4]@7 ~", M: "[g3,b3,d4]@14 g3 ~", N: "~@2 a3 ~ g3@2 f#3@2 e3@2 ~@6",
O: "a3 ~ a3@2 g3 ~ f#3@2 e3@2 ~@4 a3@2", P: "a3 ~ a3 ~ g3@2 f#3@2 e3@2 ~@4 a3@2",
Q: "[a3 ~ a3@2 g3@2 f#3@2 e3@2 ~@4 a3@5 ~ g3@2 f#3@2 e3@2 ~@6]/2",
R: "[d5,g#5]@3 ~ [d5,g#5]@3 ~ [d5,g#5]@4 g#5 ~ f#5 ~", S: "g#5@3 ~ [d5,g#5]@3 ~ g#5 ~ g#5@2 f#5@2 e5@2",
T: "f#5 ~ e5 ~@5", U: "[d5,g#5]@3 ~ [d5,g#5]@3 ~ [d5,g#5]@3 ~ g#5@2 f#5@2",
V: "g#5 ~ g#5 ~ g#5@3 ~ g#5 ~ g#5@2 f#5@2 e5@2", W: "f#5 e5 ~@6", X: "f#5 e5 ~@5 [f#5,f#6]",
Y: "[g5,g6] ~ g6@2 ~@12, ~@2 g5 ~@13", Z: "~@7 [f#5,f#6]",
})).s("gm_synth_brass_1").gain(0.46)
// chords · piano
const piano_2 = note(`<
~@2 A@2 B C D E F G H E@2 I@2 J K L M E N O P Q R O S ~@2 T U V W@2 X Y Z C D E F G H E@2 I@2 J K L M E N O P Q R O S
~@2 AA AB AC@2 AD@2 AE AF AA AB AC@2 AD@2 AE AF ~@8 AA AB AC@2 AD@2 AG@3 AH AI AJ@2 AK@2 AL AM AN AO ~ C D E F G H E@2
I@2 J K L M E N O P Q R O S ~@2 AA AB AC@2 AD@2 AE AF AA AB AC@2 AD@2 AE AF AP
>`.pickRestart({
A: "[~@7 [a2,e3,a3]@9]/2", B: "[b2,d#3,b3]@3 ~", C: "[e2,b2,e3]@5 ~ [e2,b2,e3] ~@5 [e2,b2,e3] ~@3",
D: "[e2,b2,e3]@4 e3 ~@3 [e2,b2,e3] ~@3 [e2,b2,e3] ~@3", E: "[a2,e3,a3]@7 ~ [a2,e3,a3] ~@3 [a2,e3,a3] ~@3",
F: "[a2,a3]@2 ~@2 [a2,e3,a3]@3 ~ [a2,e3,a3] ~@3 [a2,e3,a3] ~@3, e3 ~@15", // A A5
G: "[e2,b2,e3]@6 ~@2 [e2,b2,e3] ~@3 [e2,b2,e3] ~@3", H: "[e2,b2,e3]@3 ~ [e2,b2,e3] ~@3 [e2,b2,e3]@4 e3 ~@3",
I: "[[e2,b2,e3]@5 ~@3 [e2,b2,e3] ~@3 [e2,b2,e3]@7 ~ [e2,b2,e3] ~@3 [e2,b2,e3]@4 e3 ~@3]/2", // E5
J: "[a2,e3,a3]@7 ~ [a2,e3,a3] ~@3 a3@2 [a2,e3]@2", K: "a3@4 [a2,e3] ~@3 [a2,e3] ~@3 [a2,e3,a3] ~@3, ~@4 a3 ~@3",
L: "[e2,b2,e3]@7 ~ [e2,b2,e3] ~@3 [e2,b2,e3] ~@3", M: "~@2 [e2,b2,e3] ~@3 [e2,b2,e3] ~ [e2,b2,e3]@5 ~@3",
N: "[a2,e3,a3]@7 ~ [a2,e3] ~@3 [a2,e3,a3] ~@3, ~@4 a3 ~@3", O: "[b2,f#3]@9 ~ [b2,f#3] ~@5",
P: "[b2,f#3]@11 ~ [b2,f#3] ~@3", Q: "[a2,e3]@15 ~", R: "~@4 g3@5 ~ [d3,g3]@2 ~@4, [g2,d3]@9 ~@7",
S: "[g2,d3]@5 ~ [g2,d3,g3]@5 ~ [g2,d3,g3]@4", T: "[b2,e3]@6 e2@2 e3@3 ~ e3@2 e2@2, e2 ~@3",
U: "e3 d3 b2 e2@2 d3 ~ e2", V: "a2@5 ~ g2 ~ f#2@2 e2@2 ~@2 a2@2",
W: "[~@2 a2@2 g2 ~ f#2@2 e2@4 ~@2 e3@4 e2@2 [b2,e3]@8 e2 ~ [b2,e3] ~]/2", X: "~ [b2,e3] e2 ~ [b2,e3]@2 e2 ~",
Y: "a2 ~ a2@2 g2 ~ f#2@2 e2@3 ~@5", Z: "[b2,f#3]@3 ~@13", AA: "[e2,e3]@6 [e2,e3] ~@3 [e2,e3]@6",
AB: "[e3,b3]@5 ~ b3@2 ~@2 [e3,b3]@2 ~@2 [e3,b3]@2, ~@6 e3 ~@9", // E5
AC: "[a2@4 [d3,a3]@3 ~ [e3,a3]@2 a2@4 ~@4 a2@2 a3@2 ~@2 [e3,a3]@2 a2 ~ [e3,a3]@2 ~@2, ~@14 [e3,a3]@6 e3 ~@11]/2", // D5 A5
AD: "[e2@4 [e3,b3]@2 ~@2 [e3,b3]@2 ~@8 e2@2 [e3,b3]@2 ~@2 [e3,b3]@2 e2 ~ [e3,b3]@4, ~@5 e2@4 ~@7, ~@7 [e3,b3]@3 ~@6]/2", // E5
AE: "[a2,e3,a3]@5 ~ [e3,a3] ~@3 a2@2 [e3,a3]@4", AF: "[e3,a3]@6 a2 ~ [e3,a3]@2 ~@2 a3@2 ~@2, ~@12 e3 ~@3",
AG: "[[a2,e3,a3]@5 ~ [e3,a3] ~@3 a2@2 a3@2 [d3,a3,d4]@26 ~@8, ~@3 e3 ~@8]/3", // A5 D5
AH: "g4 ~@2 f4 d4@2 ~@4 d4@2 ~@2 g4@2, ~@2 g4@2 e4 ~ g4@6 a4@4", AI: "c5@2 d5 ~ e5@9 ~ f5 ~",
AJ: "[g5 ~ g5 [e5,f5] d5@2 c5 a#4 a4 g4 f4 d4@3 g3@16 ~@2]/2", AK: "[[g3,d4]@15 c4@7 f5@8 ~@2]/2", AL: "f5@15 ~",
AM: "f5@4 g5@2 d#5@7 ~@3", AN: "c#5@2 d5 c#5 b4@2 c#5 b4 a4@2 a4 g#4 g4 f#4 f4 e4", AO: "d#4 c#4 c4 b3 a3 g3@2 f3@9",
AP: "~@2 [e2,b2,e3] ~ [e2,b2,e3]@2 ~@10", // E5
})).s("gm_piano").gain(0.36)
// chords · piano
const piano_3 = note(`<
~@2 A@2 B C D@3 C E@3 C E@3 C E@3 F@2 G H I J ~@2 C D@3 C K@2 L C D@3 C E@3 C E@3 C E@3 F@2 G H I J ~@2 C D@3 C K@2 M
C D@3 C N@3 ~@8 C D@3 C O@4 P Q R S T U V W@3 X C D@3 C E@3 C E@3 C E@3 F@2 G H I J ~@2 C D@3 C K@2 M C D@3 C N@3 Y
>`.pickRestart({
A: "[~@14 [a1,a3,c#4,e4]@9 ~@9]/2", B: "[b1,b3,d#4,f#4]@13 ~@3",
C: "[e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e3,g#3,b3] ~@5 [d3,g#3,b3] ~", // E G#dim E G#dim
D: "[[e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e3,g#3,b3] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [d3,g#3,b3] ~, ~@7 e3@4 ~ e3 ~@2 e3@4 ~ e3 ~@3]/3", // E G#dim E C#dim A C#dim A C#dim …
E: "[[e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e3,g#3,b3] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [e3,a3,c#4,e4] ~, ~@7 e3@4 ~ e3 ~@2 e3@4 ~ e3 ~@3]/3", // E G#dim E C#dim A C#dim A C#dim …
F: "[[d#3,f#3,b3]@25 ~@7]/2", G: "[c#3,e3,a3]@9 ~@7", H: "[d3,g3]@9 ~@7", I: "[d#3,f#3,b3]@13 ~@3", J: "[d3,g3]@7 ~",
K: "[[e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e3,g#3,b3] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [g3,c#4,e4] ~, ~@7 e3@4 ~ e3 ~@2 e3]/2", // E G#dim E C#dim A C#dim A C#dim
L: "[d#3,f#3,b3] ~@7", M: "[a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [d3,g#3,b3] ~, e3@3 ~ e3 ~@3",
N: "[[e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e3,g#3,b3] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@7, ~@7 e3@4 ~ e3 ~@2 e3@4 ~ e3 ~@3]/3", // E G#dim E C#dim A C#dim A C#dim …
O: "[[e3,g#3,b3] ~ [e3,g#3,b3] ~ [d3,g#3,b3] ~@3 [e3,g#3,b3] ~@5 [g3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [g3,c#4,e4] ~@3 [a3,c#4,e4] ~@5 [f#3,a3,d4]@32 ~@2, ~@7 e3@4 ~ e3 ~@19]/4", // E G#dim E C#dim A C#dim A D
P: "[f3,b3,d4] ~@3 [f3,b3,d4] ~@3 [f3,d4]@2 ~@2 d3 ~@3, ~@8 b3 ~@7", // Bdim Dm
Q: "~@2 [d#3,a3,c4] ~@3 [d#3,a3,c4]@2 ~@2 [d#3,a3,c4] ~ [d#3,a3] ~ d3 ~, ~@6 c4 ~", // Adim D#dim
R: "[f3,b3,d4]@2 ~@2 [f3,b3] ~@3 [f3,b3,d4] ~@7, ~@2 d4 ~@5", // Bdim Fdim Bdim
S: "~@2 [d#3,a3,c4] ~@3 [d#3,a3,c4]@2 ~@2 [d#3,a3,c4]@2 d3 ~ f3 ~", // Adim
T: "~@2 [f3,b3,d4] ~ [f3,d4]@2 ~@2 [f3,b3,d4] ~@3 d3 ~@3, ~@4 b3 ~@11", // Bdim Dm Bdim
U: "~@2 [d#3,a3,c4] ~@5 [d#3,a3,c4]@2 ~@2 [d#3,c4]@2 ~@2, ~@12 a3 ~@3", V: "[d#3,g3] ~@7",
W: "[[c#3,f3]@2 ~@12 [d#3,f#3]@19 ~@15]/3", // C# D#m
X: "~@6 [d3,e3,f3,g3] [a3,b3,c4,d4] [e4,f4,g4,a4] [b4,c5,d5,e5,f5] [g5,a5,b5,c6] [d6,e6,a#6] [e6,f6,g6,a6] [a5,b5,c6,d6] [c5,d5,e5,f5,g5] [f4,g4,a4]", // Em7 D7 Fmaj7 Bdim Cmaj7 Em7b5 Fmaj7 D7 …
Y: "[e3,g#3,b3] ~ [e3,g#3,b3] ~ [e3,g#3,b3] ~@11", // E
})).s("gm_piano").gain(0.05)
// chords · overdriven guitar
const overdriven_guitar = note(`<
~@2 A@2 B C ~@2 D E ~@2 F@2 ~@2 G H ~@2 I J K L M N O ~ P Q R S T@2 U V W C ~@2 D E ~@2 F@2 ~@2 G H ~@2 I X Y Z AA AB
AC ~ P AD AE AF@2 AG@2 AH AI AD AE AF@2 AG@2 AH AJ AK AL AM AN AO AP AQ AR AD AE AF@2 AG@2 AS@3 AT AU AV@2 AW@2 AX AY
AZ BA G BB BC BD BE BF BG BH BI@3 BJ BK BL BM BH BN J K L M N O ~ P AD AE AF@2 AG@2 AH AI AD AE AF@2 AG@2 AH BO BP
>`.pickRestart({
A: "[~@7 [a2,e3,a3]@9]/2", B: "[b2,d#3,b3]@3 ~", C: "d4@2 e4 ~ e4@2 d4@2 g4@2 d4@2 e4@2 ~@2", D: "~@7 d4",
E: "e4 ~ e4 ~ e4 ~ d4 ~ g4 ~ g4 ~ e4@4", F: "[~@14 b4@4 a4@2 g4@2 ~@2 g4 ~ g4 ~ e4@4]/2", G: "~@14 d4 ~",
H: "d4 ~ d4 ~ e4 ~ e4 ~ g4 ~ g4@2 e4@4", I: "~@14 f#4 ~",
J: "f#4 ~ f#4 ~ f#4@3 ~ f#4@2 [b2,f#3] ~ f#4@2 e4@2, [b2,f#3]@9 ~@7", // B5
K: "f#4@2 e4@2 f#4 ~ f#4@5 ~ [b2,f#3,f#4] ~@3, [b2,f#3]@11 ~@5", L: "g4@2 f#4@2 e4@2 ~@2 e4@3 ~ e4@3 ~, [a2,e3]@15 ~",
M: "g4@2 f#4@2 e4@2 f#4 ~@3 [d3,g3]@2 ~@2 e4 ~, [g2,d3]@9 ~@7, ~@4 g3@5 ~@7, ~@3 e4@3 ~@2", // G5
N: "f#4@3 ~ f#4@2 ~@2 f#4@2 [b2,f#3] ~ f#4 ~ f#4 ~, [b2,f#3]@9 ~@7", // B5
O: "g4@2 f#4 ~ e4 ~ [g2,d3,g3,e4]@5 ~ [g2,d3,g3]@4, [g2,d3]@5 ~@11", P: "~@8 d4 ~ e4 ~ e4 ~ e4 ~",
Q: "g#4 ~ g#4 ~ g#4@2 e2@2 e3@3 ~ e3@2 e2@2, [b2,e3]@3 ~@5, e2 ~@3", R: "e3 d3 b2 e2@2 d3 ~ e2",
S: "a2@5 ~ g2 ~ f#2@2 e2@2 ~@2 a2@2",
T: "[~@2 a2@2 g2 ~ f#2@2 d4@2 e4 ~ e4@2 d4 ~ g4 ~ [e2,g4]@2 f#4@2 e4@2 ~@4 e2 ~ [b2,e3] ~, ~@4 e2@2 ~ e3@2 ~ [b2,e3]@4 ~@2]/2", // Em E5
U: "~ [b2,e3] e2 ~ [b2,e3]@2 e2 ~", V: "a2 ~ a2@2 g2 ~ f#2@2 e2@3 ~@5", W: "[b2,f#3]@3 ~@11 d4 ~",
X: "f#4 ~ f#4 ~ f#4@3 ~ f#4@3 ~ f#4@2 e4@2", Y: "f#4@2 e4@2 f#4 ~ f#4@5 ~ f#4@2 ~@2",
Z: "g4@2 f#4@2 e4@2 ~@2 e4@3 ~ e4@3 ~", AA: "g4@2 f#4@2 e4@2 e4@6 ~@2 e4 ~, ~@6 f#4 ~@9",
AB: "f#4@3 ~ f#4@2 ~@2 f#4@2 ~@2 f#4 ~ f#4 ~", AC: "g4@2 f#4 ~ e4 ~ e4@6 ~@4",
AD: "g#4 ~ g#4@2 g#4@2 [e2,e3] ~@3 [e2,e3]@6, [e2,e3]@3 ~@5", AE: "[e3,b3]@5 ~ [e3,b3]@2 ~@2 [e3,b3]@2 ~@2 [e3,b3]@2",
AF: "[a2@4 [d3,a3]@3 ~ [e3,a3]@2 a2@4 ~@4 a2@2 [e3,a3]@2 ~@2 [e3,a3,d4]@2 [a2,e4] ~ [e3,a3,e4]@2 d4 ~, ~@7 [e3,a3]@3 ~@6]/2", // D5 A5 Dsus2 A5
AG: "[g4 ~ g4 ~ [e3,b3,f#4]@2 e4@2 [e3,b3]@2 ~@8 e2@2 [e3,b3]@2 ~@2 [e3,b3]@2 e2 ~ [e3,b3]@4, e2@2 ~@3 e2@4 ~@7, ~@7 [e3,b3]@3 ~@6]/2", // Esus2 E5
AH: "[a2,e3,a3]@5 ~ [e3,a3] ~@3 a2@2 [e3,a3]@4", AI: "[e3,a3]@6 a2 ~ [e3,a3,d4]@2 e4 ~ [e3,a3,e4] ~ d4 ~",
AJ: "[e3,a3]@6 a2 ~ [e3,a3]@2 ~@2 [e3,a3]@2 g4 ~", AK: "g4 ~ g4 ~ g4@2 e4 ~ g4@3 ~ g4@2 e4@2",
AL: "g4 ~ g4@2 e4@2 g4@4 ~@4 g4 ~", AM: "g4@2 f#4 ~ e4 ~ g4 ~ g4@3 ~ g4@2 e4 ~", AN: "g4@2 a4@2 g4@2 e4@6 ~@2 e4 ~",
AO: "g4@2 f#4 ~ g4@2 ~@2 g4@2 e4 ~ g4@2 ~@2", AP: "g4@2 f#4 ~ g4 ~ g4@6 ~@2 e4@2",
AQ: "g4@2 ~@2 g4@2 ~@2 g4@2 e4@2 g4@2 e4 ~", AR: "a4@2 g4 ~ g4@2 a4 ~ d4 ~ d4 ~ e4 ~ e4 ~",
AS: "[[a2,e3,a3]@5 ~ [e3,a3] ~@3 a2@2 a3@2 [d3,a3,d4]@25 ~@9, ~@3 e3 ~@8]/3", // A5 D5
AT: "g4 ~@2 f4 [d4,e4]@2 ~@4 d4@2 ~@2 g4@2, ~ g4 ~ g4@3 a4@2", AU: "c5@2 d5 ~ e5@9 ~ f5 ~",
AV: "[g5 ~ g5 [e5,f5] d5@2 c5 a#4 a4 g4 f4 d4@3 g3@16 ~@2]/2", AW: "[[g3,d4]@15 c4@7 f5@8 ~@2]/2", AX: "f5@15 ~",
AY: "f5@4 g5@2 d#5@7 ~@3", AZ: "c#5@2 d5 c#5 b4@2 c#5 b4 a4@2 a4 g#4 g4 f#4 f4 e4", BA: "d#4 c#4 c4 b3 a3 g3@2 f3@9",
BB: "d4@2 e4 ~ e4@2 [e2,b2,e3,d4] ~ g4@2 d4@2 [e2,b2,e3,e4] ~@3, [e2,b2,e3]@5 ~@11", // E7 E5
BC: "[e2,b2,e3]@4 e3 ~@3 [e2,b2,e3] ~@3 [e2,b2,e3] ~@3", BD: "[a2,e3,a3]@6 ~@2 [a2,e3,a3] ~@3 [a2,e3,a3] ~@3",
BE: "[a2,e3,a3]@2 ~@2 [a2,e3,a3]@3 ~ [a2,e3,a3] ~@3 [a2,e3,a3] ~ d4@2", // A5
BF: "e4 ~ e4 ~ e4 ~ d4 ~ [e2,b2,e3,g4] ~ g4 ~ [e2,b2,e3] ~@3, [e2,b2,e3]@3 ~@3 e4@2", // Em E5
BG: "[e2,b2,e3]@2 ~@2 [e2,b2,e3] ~@3 [e2,b2,e3]@4 e3 ~@3", BH: "[a2,e3,a3]@7 ~ [a2,e3,a3] ~@3 [a2,e3,a3] ~@3",
BI: "[[a2,e3,a3]@7 ~ [a2,e3,a3] ~@3 [a2,e3,a3] ~@5 a4@2 g4@2 ~@2 [e2,b2,e3,g4] ~ g4 ~ [e2,b2,e3]@7 ~ [e2,b2,e3] ~@3 [e2,b2,e3]@4 e3 ~@3, ~@7 b4@2 ~@5 e4@2 ~@8, ~@16 [e2,b2,e3]@5 ~@27]/3", // A5 Em E5
BJ: "[a2,e3,a3]@7 ~ [a2,e3,a3] ~@3 a3@2 [a2,e3]@2", BK: "a3@4 [a2,e3] ~@3 [a2,e3,a3] ~@3 [a2,e3,a3] ~ d4 ~",
BL: "d4 ~ d4 ~ e4 ~ e4 ~ [e2,b2,e3,g4] ~ g4@2 [e2,b2,e3] ~@3, [e2,b2,e3]@7 ~@5 e4@4", // Em E5
BM: "~@2 [e2,b2,e3] ~@3 [e2,b2,e3] ~ [e2,b2,e3]@5 ~@3", BN: "[a2,e3,a3]@7 ~ [a2,e3,a3] ~@3 [a2,e3,a3] ~ f#4 ~",
BO: "[e3,a3]@6 a2 ~ [e3,a3,d4]@2 e4 ~ [e3,a3,e4]@2 d4 ~", BP: "g4 ~ [e2,b2,e3,g4] ~ [e2,b2,e3,e4]@2 ~@10",
})).s("gm_overdriven_guitar").gain(0.41)
// drums · kick
const kick = s("bd").struct(`<
~@2 A ~ B C D C D C D C D C D C D C D C D E@6 F G C D C D C D C B C D C D C D C D C D C D C D C D E@6 F G C D C D C D
C D C D C D C D C D C D C D H D E@2 C D C D C D@2 I J C D C D C D C D I K L C D C D C D C D C D C D C D C D E@6 F G C
D C D C D C D C D C D C D C D M
>`.pickRestart({
A: "~@7 x", B: "x", C: "x!2", D: "x ~@3 x ~@2 x", E: "x!2 ~ x!3 ~ x", F: "~ x ~@2 x ~@2 x", G: "~ x ~@2",
H: "x!5 ~@3", I: "~@5 x ~@2", J: "~ x ~ x ~@4", K: "~ x ~ x ~ x ~ x", L: "~@10 x!2 ~@4", M: "x!3 ~@5",
})).gain(0.51)
// drums · snare
const snare = s("sd").struct(`<
~@4 A B@22 C D B@6 E F B@22 C D B@23 G B@7 H G B@7 I H G A B@22 C D B@16 J
>`.pickRestart({
A: "~@3 x", B: "~ x ~ x", C: "x ~@2 x ~@2 x ~", D: "~ x ~@6", E: "~@4 x ~@7 x ~@2 x", F: "x ~@2 x", G: "x ~ x ~ x!4",
H: "~@2 x ~ x ~@2 x", I: "~@2 x ~@3 x!2", J: "x!3 ~@5",
})).gain(0.51)
// drums · low tom
const low_tom = s("lt").struct("<~@4 [~@3 x] ~@31 [~@3 x] ~@108 [x!3 ~@5]>").gain(0.51)
// drums · hihat
const hihat = s("hh").struct("<A@4 B A@22 ~ C A@7 D A@22 ~ C A@31 D ~ A@8 ~@2 E A@22 ~ C A@16 ~>".pickRestart({
A: "x!4", B: "~ x!3", C: "~@2 x!2", D: "x", E: "x!3 ~",
})).gain(0.51)
// … 23 more lines
More by Robert Palmer
Addicted To Love1986 · A major · 110 bpmSimply IrresistibleA major · 141 bpmBad Case Of Lovin' You ( Doctor, Doctor)E major · 153 bpmI'll Be Your Baby TonightE♭ major · 96 bpmEarly in the MorningE minor · 120 bpmEvery Kind of PeopleG major · 161 bpmKnow By NowE major · 118 bpmMercy Mercy Me I Want YouG♯ minor · 100 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.