0:00/0:00
// Every Kind of People — Robert Palmer
// 161 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "CHORDS | CLAVIUM I-A4" named as a piano, played on clavinet (its acoustic guitar nylon patch is not one)
// note: duplicate parts dropped: ch 6 "FLUTE | ITOPIA P1-A15" flute (copy of ch 5 "FLUTE | FLUTE P1-C14" blown bottle)
// note: Full arrangement: all 136 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(161/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.
// chords · clavinet · "CHORDS | CLAVIUM I-A4"
const clavinet = note("<~@6 A B@4 C@4 D@4 E@4 B@20 C@4 D@4 E F@5 G@4 H@5 I@8 J@16 K@8 L@8 J@24 M@5 ~>".pickRestart({
A: "~@18 [g3,b3,d4,f#4]@5 ~", B: "[g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~",
C: "[e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~", // Em7
D: "[c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~", // Cmaj7
E: "[a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~", // Am7
F: "[[a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [c4,e4,g4]@5 ~ [c4,e4,g4]@5 ~ [c4,e4,g4]@5 ~ [e4,g4]@5 ~ [c4,e4,g4]@5 ~ [c4,e4,g4]@5 ~ [c4,e4,g4]@5 ~ [c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [b3,d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [b3,d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 g3, ~@17 a3@5 ~ a3@5 ~ a3@5 ~ [a3,c4]@5 ~ a3@5 ~ a3@5 ~ a3@5 ~ a3@5 ~@7 g3@5 ~ [g3,b3]@5 ~ [g3,b3]@5 ~ [g3,b3]@5 ~ g3@5 ~ [g3,b3]@5 ~ [g3,b3]@5 ~ [g3,b3]@5 ~@2]/5", // Am7 C Em C Am7 Bm D Bm …
G: "[[b3,d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [b3,d4]@5 ~ [b3,d4]@5 ~ [b3,d4]@5 ~ d4@5 ~ [b3,d4]@5 ~ [b3,d4]@5 ~ [b3,d4]@5 ~ d4@5 [e3,g3], ~@5 [g3,b3]@5 ~ [g3,b3]@5 ~ [g3,b3]@5 ~ [g3,b3]@5 ~ [g3,b3]@5 ~ [g3,b3]@5 ~ [g3,b3]@5 ~ [e3,g3]@5 ~ [e3,g3]@5 ~ [e3,g3]@5 ~ [e3,g3,b3]@5 ~ [e3,g3]@5 ~ [e3,g3]@5 ~ [e3,g3]@5 ~ [e3,g3,b3]@5 ~@2]/4", // Bm D Bm Em G Em
H: "[[b3,d4]@5 ~ d4@5 ~ [b3,d4]@5 ~ d4@5 ~ d4@5 ~ d4@5 [e3,g3,b3,d4]@5 ~@2 d4@5 ~ b3@5 [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~@2 b3@5 [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~@2 b3@5 [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3], ~@5 [e3,g3,b3]@5 ~ [e3,g3]@5 ~ [e3,g3,b3]@5 ~ [e3,g3,b3]@5 ~ [e3,g3,b3]@5 ~@7 [e3,g3,b3]@5 ~ [c3,e3,g3]@5 ~@19 [c3,e3,g3]@5 ~@19 [c3,e3,g3]@5 ~@20]/5", // Bm Em7 Cmaj7 C Em C
I: "[b3@5 [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]]/8", // Cmaj7 Am7 Gmaj7
J: "[~@5 [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]]/8", // Gmaj7
K: "[~@5 [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]]/8", // Gmaj7 Em7 Cmaj7
L: "[~@5 [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]]/8", // Cmaj7 Am7 Gmaj7
M: "[~@5 [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [b3,d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~@2, ~@100 g3@5 ~ [g3,b3]@5 ~ [g3,b3]@5 ~@3]/5", // Gmaj7 Bm D G
})).s("gm_clavinet").gain(0.48)
// chords · piano · "A.CHORDS | JACOE\E I-B6"
const piano = note(`<
A@3 B@3 C@2 D E@2 F G H I J K L M@3 N O@2 P Q R@2 P S T@2 P Q U V P W@2 X@2 Y@3 Z P AA AB AC L AD@2 AE ~ AF@3 AG@4 H
AH@3 AI@4 AJ@2 AK AL@4 AM@3 AN AO@4 AP@5 AQ AR@3 AS AT@3 AU AV@3 AW@2 AX AY@4 AZ@3 AX BA@4 AS BB@2 AX AY@4 AZ@3 AX
BA@4 AS BB@2 ~
>`.pickRestart({
A: "f#3/3", B: "[f#3@65 ~@7]/3", C: "[~@15 g3@2 ~ g3@3 a3@5 ~ b3@5 ~ b3@5 ~ b3@8 ~, ~@21 [b2,d3,f#3]@23 ~@4]/2",
D: "~ b3@19 ~@4, [b2,d3,f#3]@5 ~", // Bm
E: "[~@6 [f#2,b2,d3,f#3]@2 ~@7 [f#2,b2,d3,f#3]@13 ~@2 [b2,d3,f#3,g3]@10 ~@2 g3@5 ~]/2", // Bm Gmaj7
F: "~ a3@5 b3@5 ~ b3@5 ~ b3@5 ~, [b2,d3,g3]@7 ~", G: "~ b3@21 ~@2, [b2,d3,g3]@7 ~",
H: "~@6 [g2,b2,d3,g3]@2 ~@7 [g2,b2,d3,g3]@3 ~@6", I: "[g2,b2,d3,g3]@7 ~", J: "[e3,g3,b3,d4]@15 ~@3 b3@5 ~",
K: "[e3,b3]@5 ~ e4@5 ~ b3@3 a3@3 [b2,e3,g3]@5 ~", L: "~@6 [b2,e3,g3]@3 ~@6 [b2,e3,g3]@7 ~@2",
M: "[~@6 [g2,b2,e3,g3]@10 ~@2 g3@3 [c3,e3,g3,a3]@8 ~ b3@3 [c3,e3,g3,b3]@8 ~ a3@3 [a2,g3,b3]@5 ~ a3@3 [a2,c3,e3,g3]@15 ~@3]/3", // Em Am7 Cmaj7 Em Am7
N: "~@6 [g3,a3,c4,e4]@10 ~@2 d4@5 ~", // Am7
O: "[[g3,a3,c4,e4]@5 ~ d4@2 ~ [e3,g3,a3,d4]@8 ~ c4@3 d4@5 ~ [d3,f#3,g3,b3]@17 ~@4]/2", // Am7 Em7 Gmaj7
P: "~@2 [f#2,b2,d3,f#3] ~@2 [f#2,b2,d3,f#3] ~@2", Q: "[f#2,b2,d3,f#3]@6 ~ b3",
R: "[e4@5 ~ [f#3,b3,d4]@5 ~ [f#3,b3,d4]@5 ~ e4@3 [d3,f#3,g3,b3]@23 ~@4]/2", S: "[f#2,b2,d3,f#3]@5 ~",
T: "[[f#3,b3,e4]@5 ~ d4@2 ~ [f#3,b3,d4]@8 ~ b3@3 d4@5 ~ b3@8 ~@13]/2", // Esus2 Bm
U: "[f#3,b3,e4]@5 ~ d4@2 ~ [f#3,b3,d4]@5 ~ e4@7 ~@2", V: "b3@2 ~ a3@2 ~ g3@15 ~@3, [b2,f#3]@5 ~",
W: "[[f#2,b2,d3,f#3]@30 ~@9 g3@3 g3@5 ~]/2", X: "[a3@2 ~ b3@5 ~ b3@5 ~ a3@5 ~ b3@23 ~@4, [b2,d3,f#3]@43 ~@5]/2",
Y: "[~@6 [f#2,b2,d3,f#3]@3 ~@3 [f#3,b3]@3 d4@5 ~ [g3,g4]@5 ~ [b3,f#4]@3 e4@5 ~ [f#3,b3,d4]@5 ~ e4@10 ~@2 e4@10 ~@2 e4@3 d4@3, ~@42 [d3,g3]@25 ~@5]/3", // Bm B5 G B5 Bm G5
Z: "[b2,d3,g3,b3]@7 ~", AA: "~@3 e4@5 ~ e4@5 ~ b3@7 ~@2, ~@3 [d3,g3]@17 ~@4",
AB: "d4@3 [e3,g3,b3]@5 ~ [e3,g3,b3,d4]@7 ~@2 d4@5 ~", AC: "b3@2 ~ a3@3 g3@15 ~@3, [b2,e3]@5 ~",
AD: "[~@6 [e3,b3,e4]@10 ~@2 b3@2 ~ [e3,g3,c4,d4]@8 ~ b3@5 ~ d4@3 d4@8 ~]/2", AE: "b3@2 a3@3 ~ [a2,e3,g3]@15 ~@3",
AF: "[~@6 [a3,c4,e4,g4]@7 ~@2 [a3,c4,e4,g4]@7 ~@2 g4@2 f#4@5 ~ f#4@5 ~@2 e4@5 ~@9 f#4@15 ~@4, ~@23 f#3@18 ~@3 f#3@23 ~@5, ~@24 b3@17 ~@4 b3@22 ~@5]/3", // Am7
AG: "[~@6 [f#2,b2,d3,f#3]@3 ~@3 [f#3,b3]@3 d4@5 ~ [g3,g4]@5 ~ f#4@5 e4@5 ~@2 [b3,d4]@5 ~ d4@7 ~@2 d4@5 d4@5 ~ b3@5 ~@2 g3@2 g3@17 ~@5, ~@26 b3@5 ~@7 f#3@5 ~ d3@23 ~@5 [g2,d3,e3]@20 ~@4, ~@45 g3@22 ~@4 a3@2 ~@23]/4", // Bm B5 G Bm Em7
AH: "[~@17 b3@5 ~ d4@3 ~ [g3,b3]@5 ~ [g3,b3,d4]@5 ~ [g3,b3,d4]@5 ~ [e3,b3]@5 a3@3 ~ [d3,g3,b3]@15 ~@3, ~@5 e4@10 ~@57, ~@6 [d3,g3]@15 ~@5 e3@5 ~ e3@5 ~ e3@5 ~ b2@5 ~@4 b2@15 ~@4]/3", // G E5 G G5
AI: "[~@6 [g3,b3]@2 ~@7 [g3,b3]@7 ~@2 [b3,e4]@5 d4@2 ~@2 e4@7 ~ b3@2 ~@2 [g3,c4,d4]@7 ~ b3@2 ~@2 [g3,c4,d4]@7 ~ d4@5 ~ b3@3 a3@3 ~ [c3,e3,g3,a3]@15 ~@3, ~@5 [b2,e3]@3 ~@6 [b2,e3]@7 ~@2 e3@5 ~@4 [e3,b3]@8 ~@4 e3@8 ~@4 e3@7 ~@14 a2@15 ~@4]/4", // G E5 Gsus4 Am7 E5
AJ: "[~@6 [c4,e4]@10 ~ d4@5 ~@2 [a3,c4,e4]@5 d4@3 ~ [a3,d4]@7 ~ c4@2 ~ d4@4, ~@5 [g3,a3]@10 ~@8 g3@5 ~@4 [e3,g3]@8 ~@8]/2", // C Am D5 Gsus2 Em
AK: "~@3 [g3,b3]@17 ~@4, ~@2 [d3,f#3]@17 ~@5", // G D
AL: "[~@6 [d3,f#3]@2 ~@7 [d3,f#3]@2 ~@7 [d3,f#3]@17 ~@3 b3@2 ~ e4@5 ~@2 d4@5 ~ d4@5 e4@2 ~@2 [g3,b3]@22 ~@5, ~@5 [f#2,b2]@3 ~@6 [f#2,b2]@3 ~@6 [f#2,b2]@17 ~@13 [f#3,b3]@5 ~ [f#3,b3]@5 ~@4 [d3,f#3]@23 ~@5]/4", // D G B5 D
AM: "[~@6 [d3,f#3]@2 ~@7 f#3@2 ~@7 f#3@20 ~@4 e4@5 d4@3 ~ d4@7 ~ b3@2 ~ d4@4, ~@5 [f#2,b2]@3 ~@6 [f#2,b2,d3]@3 ~@6 [f#2,b2,d3]@20 ~@4 [f#3,b3]@5 ~@4 [f#3,b3]@8 ~@8]/3", // D B5 Bm B5
AN: "~ b3@4 ~@7",
AO: "[~@6 [d3,f#3]@2 ~@7 f#3@2 ~@7 f#3@17 ~@3 b3@2 ~@2 e4@5 d4@3 [f#3,b3,d4]@5 ~ e4@8 ~@4 a3@3 g3@15 ~@4, ~@5 [f#2,b2]@3 ~@6 [f#2,b2,d3]@3 ~@6 [f#2,b2,d3]@17 ~@7 [f#3,b3]@5 ~@19 b2@20 ~@5, ~@71 b3@3 ~@22, ~@18 f#3@5 ~]/4", // D Bm B5 Bm B5
AP: "[~@6 f#3@2 ~@6 [f#2,b2,d3,f#3]@2 ~@7 [f#2,b2,d3,f#3]@30 ~@9 g3@2 ~ g3@5 ~@2 a3@2 b3@5 ~ b3@5 ~ a3@5 ~ b3@23 ~@5, ~@5 [f#2,b2,d3]@3 ~@63 [b2,d3,f#3]@43 ~@6]/5", // Bm
AQ: "~@5 [f#2,b2,d3,f#3]@3 ~@3 [f#3,b3]@3 d4@5 ~ [g3,g4]@4", // Bm B5 G
AR: "[~@2 [b3,f#4]@3 e4@5 ~ [f#3,b3,d4]@5 ~ e4@10 ~@2 e4@10 ~@2 e4@2 ~ d4@3 [b2,d3,g3,b3]@22 ~@3, ~@17 [d3,g3]@25 ~@30]/3", // B5 Bm G G5
AS: "~@5 [f#2,b2,d3,f#3]@3 ~@6 [f#2,b2,d3,f#3]@3 ~@7", // Bm
AT: "[~@2 e4@5 ~ e4@5 ~ b3@8 ~ d4@3 [e3,g3,b3]@5 ~ [e3,g3,b3,d4]@8 ~ d4@5 ~ b3@3 a3@3 g3@15 ~@4, ~@2 [d3,g3]@17 ~@28 [b2,e3]@20 ~@5]/3", // Em Em7 G5 E5
AU: "~@5 [b2,e3,g3]@3 ~@6 [b2,e3,g3]@8 ~@2", // Em
AV: "[~@5 [e3,b3,e4]@10 ~@2 b3@3 [e3,g3,c4,d4]@8 ~ b3@5 ~ d4@3 d4@8 ~ b3@3 a3@2 ~ [a2,e3,g3]@15 ~@4]/3", // E5 C A7
AW: "[~@5 [g3,a3,c4,e4]@10 ~@2 d4@5 ~ [g3,a3,c4,e4]@5 ~ d4@2 ~ [e3,g3,a3,d4]@8 ~ c4@2 ~ d4@4]/2", // Am7 Em7
AX: "~ [d3,f#3,g3,b3]@9 ~@2", // Gmaj7
AY: "[~@5 [f#2,b2,d3,f#3]@2 ~@7 [f#2,b2,d3,f#3]@2 ~@7 [f#2,b2,d3,f#3]@17 ~@4 b3@2 ~ e4@5 ~ [f#3,b3,d4]@5 ~ [f#3,b3,d4]@5 ~ e4@2 ~ [d3,f#3,g3,b3]@22 ~@6]/4", // Bm Gmaj7
AZ: "[~@5 [f#2,b2,d3,f#3]@2 ~@7 [f#2,b2,d3,f#3]@2 ~@7 [f#2,b2,d3,f#3]@20 ~@4 [f#3,b3,e4]@5 ~ d4@3 [f#3,b3,d4]@7 ~@2 b3@2 ~ d4@4]/3", // Bm Esus2 Bm
BA: "[~@5 [f#2,b2,d3,f#3]@2 ~@7 [f#2,b2,d3,f#3]@2 ~@7 [f#2,b2,d3,f#3]@17 ~@4 b3@3 [f#3,b3,e4]@5 ~ d4@3 [f#3,b3,d4]@5 ~ e4@8 ~ b3@3 a3@3 g3@15 ~@4, ~@71 [b2,f#3]@20 ~@5]/4", // Bm Esus2 Bm B5
BB: "[~@5 [f#3,b3,e4]@10 ~@2 d4@5 ~ [f#3,b3,e4]@5 ~ d4@3 [f#3,b3,d4]@7 ~@2 c4@3 d4@4]/2", // Esus2 Bm
})).s("gm_piano").gain(0.48)
// bass · acoustic bass · "BASS | FRETLESS P2-A10"
const bass = note(`<
A@3 B@3 ~ C D C@2 E F G H I J@3 K L M N O P Q R S P Q T S P U V W P U X C Y C@2 G F G H J@4 Z L M AA C Y C@2 G F G AB
J@4 K AC M AD@4 AE AF@3 AG@3 AH AI AJ@4 AK@5 AL@3 AM AN@6 AO@3 AP@4 AQ AR@3 AQ AS AF@3 AT@7 AU@8 AV@2 ~
>`.pickRestart({
A: "[g2,d3,b3]/3", B: "[[g2,d3,b3]@11 ~]/3", C: "g2@5 ~ d3@5 ~", D: "~ g2@7 ~ g2@3 d3@10 ~@2",
E: "~ e2@9 ~@3 b2@10 ~", F: "~ e2@7 ~ e2@3 b2@10 ~@2", G: "e2@5 ~ b2@5 ~", H: "e2@7 ~@2 e2@3 b2@5 ~ e2@5 ~",
I: "~ c2@10 ~ g2@11 ~", J: "c2@5 ~ g2@5 ~", K: "[a1,a2]@11 ~ [b1,b2]@11 ~", L: "[c2,c3]@11 ~ [d2,d3]@11 ~",
M: "[e2,e3]@5 ~ [a2,a3]@5 ~", N: "~ [e2,e3]@10 ~ [c2,c3]@11 ~", O: "[g1,g2]@15 ~@3 d2@5 ~", P: "g2@5 ~ d2@5 ~",
Q: "g1@7 ~@2 g1@2 ~ d2@10 ~@2", R: "g1@10 ~@3 d2@10 ~", S: "g1@15 ~@3 d2@5 ~", T: "~ g1@10 ~ d2@11 ~",
U: "f#1@8 ~ f#1@2 ~ d2@11 ~", V: "~ f#1@10 ~ d2@11 ~", W: "~ f#1@14 ~@3 d2@5 ~", X: "g2@8 ~ g2@2 ~ d2@10 ~@2",
Y: "g2@7 ~@2 g2@3 d3@10 ~@2", Z: "[g1,g2]@5 ~ [b1,b2]@5 ~", AA: "[e2,e3]@5 ~ [c2,c3]@5 ~",
AB: "e2@7 ~@2 e2@2 ~ b2@5 ~ b2@5 ~", AC: "[c2,c3]@11 ~ d3@10 ~@2, ~@11 d2@10 ~@3",
AD: "[[e2,e3]@9 ~@3 [c2,c3]@10 ~@2 g2@15 ~@3 d2@5 g2@10 ~@2 d2@10 ~@2 g1@7 ~@2 g1@3 d2@10 ~@3, ~@23 g1@15 ~@58]/4", // E C
AE: "g1@5 ~ d2@5 ~", AF: "[g1@15 ~@2 d2@5 ~ g2@10 ~@2 d2@10 ~@2 g1@7 ~@2 g1@3 d2@10 ~@3]/3",
AG: "[g1@10 ~@2 d2@11 g1@15 ~@3 d2@5 ~ g2@10 ~@2 d2@10 ~@3]/3", AH: "f#1@7 ~ f#1@3 d2@11 ~@2",
AI: "f#1@10 ~ d2@11 ~@2", AJ: "[f#1@14 ~@3 d2@5 ~ g2@11 ~ d2@11 ~ f#1@8 ~ f#1@3 d2@11 ~ g2@8 ~ g2@2 ~ d2@10 ~@3]/4",
AK: "[g2@10 ~ d3@11 ~ g2@7 ~@2 g2@3 d3@10 ~@2 g2@11 ~@2 d3@10 ~ g2@11 ~@2 d3@10 ~ e2@11 ~ b2@11 ~@2]/5",
AL: "[e2@7 ~ e2@3 b2@10 ~@2 e2@11 ~ b2@11 ~ e2@8 ~ e2@2 ~ b2@5 ~ e2@5 ~@2]/3", AM: "c2@10 ~ g2@10 ~@3",
AN: "[c2@9 ~@2 g2@10 ~@2 c2@10 ~@2 g2@10 ~@2 c2@10 ~@2 g2@10 ~@2 [g1,g2]@10 ~@3 b2@9 ~@3 c3@10 ~ [d2,d3]@10 ~@2 [e2,e3]@10 ~@2 [a2,a3]@10 ~@3, ~@83 b1@10 ~@2 c2@10 ~@39]/6", // G D E A
AO: "[[e2,e3]@9 ~@2 [c2,c3]@10 ~@2 [g1,g2]@15 ~@3 d2@5 ~ g2@10 ~@2 d2@10 ~@3]/3", // E C G
AP: "[g1@7 ~ g1@3 d2@10 ~@2 g1@10 ~@3 d2@9 ~@2 g1@15 ~@3 d2@5 ~ g2@10 ~@2 d2@10 ~@3]/4",
AQ: "g1@7 ~ g1@2 ~ d2@10 ~@3", AR: "[g1@9 ~@2 d2@10 ~@2 g1@15 ~@3 d2@5 ~ g2@10 ~@2 d2@10 ~@3]/3",
AS: "g1@9 ~@2 d2@10 ~@3",
AT: "[g2@7 ~ g2@2 ~ d2@10 ~@2 [g1,g2]@15 ~@3 d2@5 ~ g2@10 ~@2 d2@10 ~@2 g1@7 ~@2 g1@3 d2@10 ~@2 g1@9 ~@4 d2@9 ~@2 g1@15 ~@3 d2@5 ~ g2@10 ~@2 d2@10 ~@2 g1]/7", // G
AU: "[~@8 g1@3 d2@10 ~@2 g1@9 ~@3 d2@9 ~@3 g1@15 ~@3 d2@5 ~ g2@10 ~@2 d2@10 ~@2 g1@7 ~@2 g1@3 d2@10 ~@2 g1@9 ~@3 d2@9 ~@3 g1@15 ~@3 d2@5 ~ g2@10 ~@2 d2@10 ~@2 g1]/8",
AV: "[~@8 g1@3 d2@10 ~@2 g2@7 ~@2 g2@2 ~ d2@10 ~@3]/2",
})).s("gm_acoustic_bass").gain(0.48)
// other · blown bottle · "FLUTE | FLUTE P1-C14"
const blown_bottle = note(`<
A B C A B C ~@17 A B C ~ A B C ~ A B C ~ A B C ~@33 D@2 E ~ D@2 E ~ D@2 E ~ D@2 E ~@17 D@2 E ~ D@2 E ~ D@2 E ~ D@2 ~@2
D@2 E ~ D@2 E ~ D@2 E ~ D@2 ~@3
>`.pickRestart({
A: "~@2 f#5 ~@2 a5 ~@2", B: "g5@3 ~@6 d5@3 ~@6 c5@2 ~@4", C: "~@12 b4@2 ~ c5@3 b4@3 d5@3",
D: "[~@5 f#5@2 ~@7 a5@3 ~@6 g5@2 ~@7 d5@3 ~@6 c5@2 ~@5]/2", E: "~@11 b4@3 c5@3 b4@2 ~ d5@2 ~@2",
})).s("gm_blown_bottle").gain(0.32)
// other · pan flute · "FLUTE | IcePiano P1-B7"
const pan_flute = note(`<
A B C A B C ~@17 A B C ~ A B C ~ A B C ~ A B C ~@33 D@2 E ~ F G E ~ D@2 E ~ H G E ~@17 D@2 E ~ D@2 E ~ D@2 E ~ D@2 ~@2
D@2 E ~ D@2 E ~ D@2 E ~ D@2 ~@3
>`.pickRestart({
A: "~@6 f#5@2 ~@7 a5@2 ~@7", B: "g5@2 ~@7 d5@2 ~@7 c5@2 ~@4", C: "~@12 b4@3 c5@2 ~ b4@2 ~ d5@2 ~",
D: "[~@5 f#5@2 ~@7 a5@2 ~@7 g5@2 ~@7 d5@2 ~@7 c5@2 ~@5]/2", E: "~@11 b4@2 ~ c5@2 ~ b4@3 d5@2 ~@2",
F: "~@5 f#5@3 ~@6 a5@2 ~@8", G: "g5@2 ~@6 d5@3 ~@6 c5@3 ~@4", H: "~@3 f#5 ~@3 a5 ~@4",
})).s("gm_pan_flute").gain(0.32)
// chords · string ensemble 2 · "STRINGS | LwSTRINGS I-B13"
const string_ensemble_2 = note(`<
~@7 A@4 B@4 C@4 D@4 E@4 ~@4 F@5 ~@3 E@4 G@4 C@4 H@7 I@8 J@8 ~@4 K@5 ~@3 L@8 M@8 N@8 O@5 ~@3 N@8 P@6 ~@4
>`.pickRestart({
A: "[[g4,b4,d5] [g4,b4,d5]@21 ~@74, ~ f#5@86 ~@9]/4", B: "[~ d5@86 ~@9, [e4,g4,b4]@43 ~@5]/4",
C: "[[c4,e4,g4,b4]@43 ~@5]/4", D: "[[a4,c5,e5,g5]@43 ~@5]/4", E: "[[g4,b4,d5,f#5]@43 ~@5]/4",
F: "[[g4,b4,d5,f#5]@107 ~@13]/5", G: "[[e4,g4,b4,d5]@43 ~@5]/4",
H: "[[a4,c5,e5,g5]@43 ~@5 [b4,d5,f#5]@36, ~@95 g4@73]/7", // Am7 Bm
I: "[~@12 [g4,b4,d5]@43 ~@5 [e4,g4,b4]@36, ~@23 e4@86 ~@10 c4@73]/8", // G Em
J: "[~@12 [e5,g5]@43 ~@5 [d5,f#5]@36, ~@23 [a4,c5]@86 ~@10 [g4,b4]@73]/8", // Em D Am G
K: "[~@12 [d5,f#5]@43 ~@5, ~@23 [g4,b4]@86 ~@11]/5", // D G
L: "[~@24 f#5@85 ~@10 [e4,g4,b4,d5]@73, ~@23 [g4,b4,d5]@86 ~@83]/8", // Em7 G
M: "[~@23 [c4,e4,g4,b4]@86 ~@10 [a4,c5,e5,g5]@73]/8", N: "[~@23 [g4,b4,d5,f#5]@169]/8",
O: "[~@23 [g4,b4,d5,f#5]@86 ~@11]/5", P: "[~@23 [g4,b4,d5,f#5]@107 ~@14]/6",
})).s("gm_string_ensemble_2").gain(0.4)
// drums · kick
const kick = s("bd").struct(`<
~@7 A B A C A C A C A C A C A C A D A C A C A C A C A C A E ~ C A F A C A C G H I J A C A C A C A K I H I H I H ~ C A
E I H I H I L I J A E I H I L I H I H I H I L I H I J G H I H I H I J G H I L I M I J G H ~ K I H I H I H ~ K I H I H
I H ~ K I H I J G H I L ~
>`.pickRestart({
A: "x", B: "~ x ~@5 x ~@16", C: "x!2 ~@2", D: "~ x ~@10 x ~@11", E: "x ~@5 x ~@16 x", F: "x!2", G: "x ~@22 x",
H: "~@5 x ~@17 x", I: "~@23 x", J: "~@5 x ~@18", K: "x ~@10 x ~@11 x", L: "~@11 x ~@11 x", M: "~@5 x ~@16 x ~",
})).gain(0.56)
// drums · snare
const snare = s("sd").struct(`<
~@7 A B A C D C D E D C D C A B A F D C D C D C D G D C D C D C D F D C D C D H D G D C D C D H G F I H I H D C D G D
H I H D H J K I H D C I H J K I H I H I H J K D H I L D H D H D H I H I H J K M H I L D H D F I H I L D H J ~ I H I L
D H J ~ I H I G D H N ~@2
>`.pickRestart({
A: "~@13 x ~@8 x ~", B: "~@13 x ~@10", C: "~ x", D: "~@4 x ~@2 x", E: "~@13 x ~@5 x ~ x ~@2", F: "x!2 ~@6",
G: "~@4 x ~ x!2", H: "~@11 x ~@12", I: "~@11 x ~@8 x ~@3", J: "~@12 x ~@7 x ~@2 x", K: "~ x ~@10",
L: "~@11 x ~@5 x ~@2 x ~@3", M: "~@11 x ~@7 x ~@4", N: "~@11 x ~@8 x ~@2 x",
})).gain(0.7)
// drums · hihat
const hihat = s("hh").struct(`<
~@7 A B C@2 A C@3 D C E D ~@20 D C@3 D E F D@2 C@3 ~@4 F@3 G D E F D@2 C H G ~@20 D H F G F@3 G F@3 G ~@37
>`.pickRestart({
A: "~@7 x ~@5 x ~@5 x ~@4", B: "~ x ~@5 x ~@5 x ~@5 x ~@4", C: "x!4", D: "~ x!3", E: "x ~@5 x ~@5 x ~@5 x ~@4 x",
F: "~@5 x ~@5 x ~@5 x ~@5 x", G: "~@5 x ~@5 x ~@5 x ~@6", H: "x ~@5 x ~@4 x ~@5 x ~@5 x",
})).gain(0.7)
// drums · low tom
const low_tom = s("lt").struct(`<
~@22 A ~@15 A ~@15 B ~@15 B ~@7 B ~@7 B ~@15 B ~@7 B ~@7 B ~ C ~@5 D ~@7 D ~
>`.pickRestart({
A: "~@6 x!2", B: "~@17 x ~@2 x ~@3", C: "~@23 x", D: "~@16 x ~@2 x ~@4",
})).gain(0.63)
// drums · mid tom
const mid_tom = s("mt").struct(`<
~@22 A ~@15 A ~@15 B ~@15 B ~@7 B ~@7 B ~@15 B ~@7 B ~@7 B ~@7 C ~@7 D ~
>`.pickRestart({
A: "~@4 x!2 ~@2", B: "~@11 x ~@2 x ~@9", C: "~@11 x ~@12", D: "~@10 x ~@2 x ~@10",
})).gain(0.7)
// drums · open hat
const open_hat = s("oh").struct("<~@19 A B C D ~@28 A C@2 D ~@12 E C@2 D ~@28 F@3 ~@34>".pickRestart({
A: "~ x!3", B: "x ~@5 x ~@5 x ~@6 x ~@4", C: "x!4", D: "x", E: "~@5 x ~@6 x ~@5 x ~@5", F: "~@5 x ~@5 x ~@5 x ~@5 x",
})).gain(0.56)
// drums · high tom
const high_tom = s("ht").struct(`<
~@22 A ~@15 A ~@15 B ~@15 B ~@7 B ~@7 B ~@15 B ~@7 B ~@7 C ~@7 D ~@7 E ~
>`.pickRestart({
A: "~@2 x!2 ~@4", B: "~@5 x ~@2 x ~@15", C: "~@2 x ~@2 x ~@2 x ~@15", D: "~@2 x ~@2 x ~@18", E: "~@2 x ~@4 x ~@16",
})).gain(0.7)
// drums · crash
const crash = s("cr").struct(`<
~@7 A ~@3 B ~@3 B ~@3 B ~@3 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@3 B ~@2 C ~@4 B ~@2 C ~@3 C ~@4 B ~@2 C ~@3 C ~@2 B ~
B ~ B C ~ C ~ C ~ C ~@2 B ~@2 C ~@3 C ~@3 C ~@3 C ~ C ~ C ~@2 B C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~
>`.pickRestart({
// … 17 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 bpmKnow By NowE major · 118 bpmMercy Mercy Me I Want YouG♯ minor · 100 bpmSome Guys Have All the LuckA major · 92 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.