0:00/0:00
// Out of Touch — Hall & Oates
// 58 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 3/4 at bar 18, 4/4 at bar 19, 2/4 at bar 24, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 79 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(58/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
A B C B D B D B D B E F G F H I J K@3 L@2 M@2 N O@2 P@2 Q R S T U T U V W X Y Z AA AB AA AB ~@12 AC AA AD AA AE AF@12
AG@2 D B E
>`.pickRestart({
A: "~@8 a2!4 g2!4", B: "a2!5 e2!3 f2!8", C: "d2!2 g2!6 a2!3 g2!5", D: "d2!2 g2!6 a2!4 g2!4", E: "d2!2 g2!4 a2!2 ~@8",
F: "g2@4 ~ d2 e2 g2 ~@6 a1!2", G: "d2!2 a1 ~@5 d2!2 e1 f1@2 ~ e1!2", H: "d2!2 a1 ~@5 d2 a1 e1 f1@2 ~ e1!2",
I: "c2 c2@5 ~ g1 a1 c2 e2 a2 g2@3 ~", J: "f2 c2 d2 f1 e1!2 ~@2 f2 f1 f#1 g1 ~ g1 a1 b1",
K: "[c2@7 ~ a#1@3 ~ a1@2 ~ d2@9 ~@4 f2@2 ~ f2@3 ~@2 d2 ~ g2@3 ~ g2 ~ a2@3 ~]/3",
L: "[g2@2 ~ a2@4 ~ a2 e2@2 ~ f2@2 ~ f2@3 ~@2 d2 ~ g2@3 ~ g2 ~ a2@3 ~]/2",
M: "[g2@2 ~ a2@4 ~ a2 e2@2 ~ f2@2 ~ f2@3 ~@2 d2 ~ g2@3 ~ g2 a2 ~@4]/2", N: "~@4 g2@4 ~ d2 e2 g2 ~@4",
O: "[~@2 a1!2 d2!2 a1 ~@5 d2!2 e1 f1@2 ~ e1!2 g2@4 ~ d2 e2 g2 ~@4]/2",
P: "[~@2 a1!2 d2!2 a1 ~@5 d2 a1 e1 f1@2 ~ e1!2 c2 c2@5 ~ g1 a1 c2 e2 a2]/2",
Q: "g2@3 ~ f2 c2 d2 f1 e1!2 ~@2 f2 f1 f#1 g1", R: "~ g1 a1 b1 c2@7 ~ a#1@3 ~", S: "a1@2 ~ d2@9 ~@4",
T: "f2@2 ~ f2@3 ~@2 d2 ~ g2@3 ~ g2 ~", U: "a2@3 ~ g2@2 ~ a2@4 ~ a2 e2@2 ~", V: "f2@2 ~ f2@3 ~@2 d2 ~ g2@4 ~ g2",
W: "a2@2 ~@2 g2@2 ~ a2@4 ~ a2 e2@2 ~", X: "f2@2 ~ f2@3 ~ f2 g2@2 ~ g2@3 ~ g2", Y: "d2@2 ~ d2@3 ~@2 d2@2 ~ d2@4 ~",
Z: "d2@2 ~ d2@4 ~ d2@2 ~ d2@3 ~ a1", AA: "d2@2 ~ d2@3 ~@2 d2@2 ~ d2@3 ~@2", AB: "d2@2 ~ d2@3 ~@2 d2@2 ~ d2@3 ~ a1",
AC: "~@8 d2@2 ~ d2@3 ~@2", AD: "d2@2 ~ d2@3 ~ a1 d2@2 ~ d2@3 ~@2", AE: "d2@2 ~ d2@3 ~ a1 f2@2 ~ f2@3 ~@2",
AF: "[d2 ~ g2@3 ~ g2 ~ a2@3 ~ g2@2 ~ a2@4 ~ a2 e2@2 ~ f2@2 ~ f2@3 ~@2]/2",
AG: "[d2 ~ g2@3 ~ g2 ~ a2@3 ~ g2@2 ~ a2@4 ~ a2 e2@2 ~ f2!8]/2",
})).s("gm_acoustic_bass").gain(0.64)
// chords · piano · "A.PIANO 3"
const piano = note(`<
~@3 A B C D@2 E F G ~@6 H@7 ~@6 I@2 J K L K M N O ~@22 P Q R Q R Q R Q R Q R Q R Q S T U V
>`.pickRestart({
A: "~@4 [c4,f4,a4]@3 ~", B: "[a3,d4,f4] ~ [d4,g4,b4]@4 ~@2 [e4,a4,c5]@3 ~ [d4,g4,b4]@3 ~",
C: "[e4,a4,c5]@4 ~ [b3,e4,g4] ~@2 [c4,f4,a4]@6 ~@2", // Am Em F
D: "[[a3,d4,f4] ~ [d4,g4,b4]@4 ~@2 [e4,a4,c5]@3 ~ [d4,g4,b4]@2 ~ [e4,a4,c5]@5 ~@7 [d5,d6]@2 ~ [d5,d6]@2, ~@26 [e5,e6]@3 [e5,e6]@3]/2", // Dm G Am G Am D E
E: "~@2 c5 [d5,d6]@2 ~ [e5,e6]@3 ~ [a4,a5] a4 [c5,c6]!2 [d5,d6] ~, ~@2 c6@3 [c5,c6]@3 ~@3 a5@2 ~@3", // D E A C D C
F: "[e5,e6]@2 [d5,d6]!2 ~ [b4,b5]@2 [a4,a5]@3 e5 [d5,d6]@2 e5 [d5,d6] ~, ~@4 [c5,c6]@3 ~@3 e6@3 e6@3", // E D B A D C
G: "~@3 [d5,d6]@2 ~ e6@3 ~@7, ~@2 [c5,c6]@3 [c5,c6]@3 ~@8, ~@6 e5 ~@9", // D C
H: "[~@8 [a#4,d5,f5]@18 ~@4 e5 d6@2 ~ d6@3 ~@2 [d5,d6] ~ c5 [e5,e6] ~@3 [a4,a5] a5 [c5,c6] ~ [d5,d6] ~ e5@2 [d5,d6] d5 ~ [b4,b5]@2 [a4,a5] ~@2 e5 d6@2 ~ d6@3 ~@2 [d5,d6] ~ c5 [e5,e6] ~@3 [a4,a5] a5 [c5,c6] ~ [d5,d6] ~ e5@2 [d5,d6] d5 ~ [b4,b5]@2 [a4,a5] ~@2 e5 [d5,d6]@2 e6 [d5,d6]@3 ~@2 [d5,d6]@2 ~ [e5,e6] ~@5, ~@30 e6@3 ~ d5 ~@3 [c5,c6]@2 ~@7 a4@2 [c5,c6]@2 ~@5 [c5,c6]@3 ~@4 d5 ~ [e5,e6]@3 ~@5 c6@3 ~@8 e6 ~@2 d6@2 ~@5 e6@3 ~@15, ~@31 d5 ~ [e5,e6]@3 ~@5 c6@3 ~@8 e6 ~@2 d6@2 ~@5 e6@3 ~ d5 ~@3 [c5,c6]@2 ~@7 a4@2 [c5,c6]@2 ~@5 [c5,c6]@3 ~@6 e5@3 ~@2 [c5,c6]@3 [c5,c6]@3 ~@4]/7", // A# D E A C D B A …
I: "[~@6 [a#4,d5,f5]@9 ~]/2", // A#
J: "~@2 e5 d6@2 ~ d6@3 ~@2 [d5,d6] ~ c5 [e5,e6] ~, ~@2 e6@3 ~ d5 ~@3 [c5,c6]@3 ~@3, ~@3 d5 ~ [e5,e6]@3 ~@5 c6@3", // D E C E
K: "~@2 [a4,a5] a5 [c5,c6] ~ [d5,d6] ~ e5@2 [d5,d6] d5 ~ [b4,b5]@2 [a4,a5], ~@3 a4@2 [c5,c6]@2 ~ e6 ~@2 d6@2 ~@3, ~@12 [c5,c6]@3 ~", // A C D B A C
L: "~@2 e5 d6@2 ~ d6@3 ~@2 [d5,d6] ~ c5 [e5,e6] ~, ~@2 e6@3 ~ d5 ~@3 [c5,c6]@2 ~@4, ~@3 d5 ~ [e5,e6]@3 ~@5 c6@3", // D E C E
M: "~@3 d6@2 ~ d6@3 ~@2 [d5,d6]@2 ~ [e5,e6] ~, ~@2 [e5,e6]@3 [e5,e6]@3 ~@8, ~@3 d5 ~@2 d5 ~@3 [c5,c6]@3 [c5,c6]@3", // D E C
N: "~@2 [a4,a5]!2 [c5,c6]!2 [d5,d6]@2 [e5,e6] ~ [d5,d6] d6 [c5,c6] [b4,b5]@2 [a4,a5], ~@11 d5@2 ~@3", // A C D E D C B A
O: "~@2 e6 [d5,d6] ~ [e5,e6] [d5,d6] ~@4 [d5,d6]@2 ~ [e5,e6] ~, ~@2 e5@3 ~@5 [c5,c6]@3 [c5,c6]@3", // D E D E C
P: "~@10 e5 d6@2 ~ d6@2, ~@10 e6@2 ~@2 d5 ~, ~@11 d5 ~ [e5,e6]@2 ~", // E
Q: "~@3 [d5,d6] ~ c5 [e5,e6] ~@3 [a4,a5]!2 [c5,c6]!2 [d5,d6] ~, ~@2 [c5,c6]@2 ~ c6@2 ~@9", // D E A C D C
R: "e5@2 [d5,d6]!2 ~ [b4,b5]@2 [a4,a5] ~@2 e5 d6@2 ~ d6@2, e6 ~@3 [c5,c6]@2 ~@4 e6@2 ~@2 d5 ~, ~@11 d5 ~ [e5,e6]@2 ~", // D B A C E
S: "e5@2 [d5,d6]!2 ~ [b4,b5]@2 [a4,a5] ~@3 d6@2 ~ [d5,d6] ~, e6 ~@3 [c5,c6]@2 ~@4 [e5,e6]@2 ~ [e5,e6]@2 ~, ~@11 d5 ~@4", // D B A D C E
T: "~@3 [d5,d6]@2 ~ [e5,e6] ~@3 [a4,a5]!2 [c5,c6]!2 [d5,d6] ~, ~@2 [c5,c6]@2 ~ [c5,c6]@2 ~@9", // D E A C D C
U: "[e5,e6] ~ [d5,d6]!2 ~ b4@2 [a4,a5] ~@2 [e5,e6] d6@2 [e5,e6] [d5,d6] ~, ~@4 [c5,c6]@2 ~@5 d5 ~@4, ~@5 b5 ~@10", // E D A E D C
V: "~@3 d6@2 [c5,c6] [e5,e6] ~@9, ~ [c5,c6] ~@6, ~@3 d5 ~@12", // C E C
})).s("gm_piano").gain(0.56)
// chords · brass section · "BRASS 1"
const brass_section = note(`<
~@3 A B C D@2 B C E ~@4 F G H I@2 J@2 K@2 ~@4 L@3 ~ M N M N O P Q R S T@2 U V ~@8 W X@2 W Y Z U AA A D@2 AB@12 AC C E
>`.pickRestart({
A: "~@8 [f4,a4,c5,f5,a5]@7 ~", B: "[d4,f4,a4,d5,f5] ~ [g4,b4,d5,g5,b5]@5 ~ [a4,c5,e5,a5,c6]@3 ~ [g4,b4,d5,g5,b5]@3 ~",
C: "[a4,c5,e5,a5,c6]@4 ~ [e4,g4,b4,e5,g5]@2 ~ [f4,a4,c5,f5,a5]@7 ~", // Am Em F
D: "[[d4,f4,a4,d5,f5] ~ [g4,b4,d5,g5,b5]@5 ~ [a4,c5,e5,a5,c6]@3 ~ [g4,b4,d5,g5,b5]@2 ~ [a4,c5,e5,a5,c6]@5 ~ [e4,g4,b4,e5,g5]@2 ~ [f4,a4,c5,f5,a5]@7 ~]/2", // Dm G Am G Am Em F
E: "[d4,f4,a4,d5,f5] ~ [g4,b4,d5,g5,b5]@3 ~ [a4,c5,e5,a5,c6]!2 ~@8", F: "[g4,c5,e5]", G: "[f4,a4]@7 ~, c5",
H: "[c5,e5,g5]@7 ~ [a#5,d6,f6]@4 ~@4", // C A#
I: "[~@12 [f4,a4,c5,f5,a5]@7 ~ [d4,f4,a4,d5,f5] ~ [g4,b4,d5,g5,b5]@5 ~ [a4,c5,e5,a5,c6]@3 ~]/2", // F Dm G Am
J: "[[g4,b4,d5,g5,b5]@2 ~ [a4,c5,e5,a5,c6]@5 ~ [e4,g4,b4,e5,g5]@3 [f4,a4,c5,f5,a5]@7 ~ [d4,f4,a4,d5,f5] ~ [g4,b4,d5,g5,b5]@5 ~ [a4,c5,e5,a5,c6]@3 ~]/2", // G Am Em F Dm G Am
K: "[[g4,b4,d5,g5,b5]@2 ~ [a4,c5,e5,a5,c6]@5 ~ [e4,g4,b4,e5,g5]@3 [c5,f5,a5]@6 ~@2 [a4,d5,f5] ~ [d5,g5,b5]@3 ~ [e5,a5,c6]!2 ~@4]/2", // G Am Em F Dm G Am
L: "[~@4 [g4,c5,e5]@16 [f4,a4]@14 ~@2 [c5,e5,g5]@7 ~ [a#5,d6,f6]@4, ~@5 c5@4 ~@3]/3", // C F C A#
M: "[f4,a4,c5,f5,a5]@7 ~ [d4,f4,a4,d5,f5] ~ [g4,b4,d5,g5,b5]@5 ~", // F Dm G
N: "[a4,c5,e5,a5,c6]@3 ~ [g4,b4,d5,g5,b5]@2 ~ [a4,c5,e5,a5,c6]@5 ~ [e4,g4,b4,e5,g5]@2 ~", // Am G Am Em
O: "[c5,f5,a5]@6 ~@2 [a4,d5,f5] ~ [d5,g5,b5]@5 ~", P: "[e5,a5,c6]@3 ~ [d5,g5,b5]@2 ~ [e5,a5,c6]@5 ~ [b4,e5,g5]@2 ~",
Q: "[c5,f5,a5]@7 ~ [d5,g5,b5]@8", R: "[f#4,a4,d5]@15 ~", S: "[f4,a4]@15 ~, d5 ~@3",
T: "[[f#4,a4]@11 ~ [f#4,d5]@3 ~ f4@15 ~, ~@12 a4@19 ~]/2", U: "~@8 [d5,f#5,a5]@7 ~", V: "[f5,a5,c6]@15 ~",
W: "~@8 [d6,a6]@7 ~", X: "~@8 [a5,d6]@7 ~", Y: "~@8 d6@7 ~", Z: "~@8 [d6,f6,a6]@7 ~", AA: "~@8 [d5,f5,a5]@7 ~",
AB: "[[d4,f4,a4,d5,f5] ~ [g4,b4,d5,g5,b5]@5 ~ [a4,c5,e5,a5,c6]@3 ~ [g4,b4,d5,g5,b5]@2 ~ [a4,c5,e5,a5,c6]@5 ~ [e4,g4,b4,e5,g5]@3 [f4,a4,c5,f5,a5]@7 ~]/2", // Dm G Am G Am Em F
AC: "[d4,f4,a4,d5,f5] ~ [g4,b4,d5,g5,b5]@4 ~@2 [c5,e5,a5,c6]@3 ~ [g4,b4,d5,g5,b5]@3 ~, ~@8 a4 ~@7", // Dm G Am G
})).s("gm_brass_section").gain(0.45)
// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
~@6 A@2 B C D ~@7 E@2 F@2 G@3 ~@7 H I H I J K L M@3 N@3 ~@8 O@3 P@8 Q@4 R@2 S@4 T@2 U V W
>`.pickRestart({
A: "[~@10 e6@13 ~ f6@8]/2", B: "d6@2 g6@6 a6@4 g6@3 ~", C: "a6@5 e6@2 ~ f6@7 ~", D: "d6 ~@2 [b5,d6] ~@4, ~ g6@3 ~@4",
E: "[~@12 [f4,a4,c5]@6 ~@2 [d4,f4,a4] ~@3 [b5,d6]@3 ~ [a4,c5,e6,a6]@4, ~@3 f6@2 [a5,c6] ~@2, ~@11 [g4,b4]@2 ~@3]/2", // F Dm Bm Am G
F: "[[d6,g6]@3 ~@6 [g4,b4]@2 ~ [f4,a4,c5]@6 ~@2 [d4,f4,a4] ~@3 [b5,d6]@3 ~ [a4,c5,e6,a6]@4, [g4,b4]@2 ~ [a4,c5]@5 ~@14 [g4,b4]@4 ~@6, ~ [e6,a6]@2 f6@2 [a5,c6] ~@2]/2", // G5 G F Dm Bm Am G Am …
G: "[[d6,g6]@3 ~@6 [g4,b4]@2 ~ [f4,a4,c5,f6]@7 ~ [d4,f4,a5,c6]@2 ~@4 g6@2 [g3,b3,d4,g4]@8 ~@12, [g4,b4]@2 ~ [a4,c5]@5 ~@14 [g4,b4]@4 ~@22, ~@4 [e6,a6]@8 ~@11 [b5,d6]@5 ~@20]/3", // G5 G F Dm7 G Am G A5 …
H: "[f4,a4,c5]@6 ~@2 [d4,f4,a4] ~@3 [b5,d6]@3 ~, f6@2 [a5,c6] ~, ~@10 [g4,b4]@5 ~", // F Dm Bm Am G
I: "[a4,c5,e6,a6]@4 [d6,g6]@3 ~@6 [g4,b4]@2 ~, ~@4 [g4,b4]@2 ~ [a4,c5]@5 ~@4, ~ [e6,a6]", // Am G5 G Am A5
J: "[f4,a4,c5,f6]@7 ~ [a5,c6]@2 ~@2 [b5,d6]@3 ~, ~@8 [d4,f4] ~ [g4,b4]@5 ~", // F Am Bm Dm G
K: "[a4,c5,e6,a6]@2 [g4,b4,d6,g6]@2 [a4,c5,e6,a6]@3 ~", L: "[f4,a4,c5,f6]@7 ~ [g4,b4,d5,g6]@8",
M: "[[d6,a6]@22 ~ g6, ~@46 c6 ~]/3", N: "[~@7 [g4,c5] [a4,d5]@15 ~, [d6,a6]@41 ~@7]/3", O: "[~ [d6,a6]@5]/3",
P: "[~@6 [c6,g6]@2 ~@30 [c6,g6]@2 ~@14 [g4,c5]@2 [a4,d5]@31 ~ [a4,f6]@8 [d4,f4] ~@3 b5@3 ~ [a4,c5,e6]@4 [g4,b4]@2 ~@7 [g4,b4]@2 ~ [a4,f6]@8, ~ [d6,a6]@4 a6@8 a6 a6@2, ~@40 d6@58 [g4,b4]@4 ~@9 a4@9 [f4,c5]@6 ~@2, ~@88 [f4,c5]@6 ~@2 a4@8 ~@4 g6@3 c5 e6@8 ~@8, ~@24 [a5,c6] d6@2 d6@5]/8", // C5 D5 Dm Am G Dm D5 G …
Q: "[[d4,f4] ~@3 b5@3 ~ [c5,e6]@4 [g4,b4]@2 ~@7 [g4,b4]@2 ~ [a4,f6]@8 [d4,f4,a4] ~@3 [b5,d6]@3 ~ [a4,c5,e6,a6]@4 [d6,g6]@3 ~ a6@4 ~ [g4,b4]@2 ~ [a4,f6]@8, a4@8 a6@7 c5 e6@8 ~@24 e6@8 ~@8, [a5,c6] d6@2 d6@5 [a5,c6] ~@7, ~@2 [g4,b4]@5 ~ a4 ~@3 g6@3 a4@9 [f4,c5]@6 ~@4 [g4,b4]@5 ~@5 [g4,b4]@2 ~ [a4,c5]@5 ~@4 [f4,c5]@6 ~@2, ~@2 a6@3 ~@3]/4", // Dm C G Dm Bm Am G5 G …
R: "[[d4,f4] ~@3 [b5,d6]@3 ~ [c5,e6,a6]@4 [d6,g6]@3 ~@6 [g4,b4]@2 ~ [f4,a4,c5]@6 ~@2, a4@8 a4 ~@6 [a4,c5]@5 ~@12, [a5,c6] ~@3 [e6,a6]@2 f6@2, ~ [g4,b4]@2 ~@3 [g4,b4] ~@9]/2", // Dm Bm Am G5 G F Am A5 …
S: "[[d4,f4,a4] ~@3 [b5,d6]@3 ~ [a4,c5,e6,a6]@4 [d6,g6]@3 ~@6 [g4,b4]@2 ~ [f4,a4,c5]@6 ~@2, [a5,c6] ~@3 [e6,a6]@2 f6@2, ~@2 [g4,b4]@5 ~@5 [g4,b4]@2 ~ [a4,c5]@5 ~@12]/2", // Dm Bm Am G5 G F Am A5 …
T: "[[d4,f4,a4] ~@3 [b5,d6]@3 ~ [a4,c5,e6,a6]@4 [d6,g6]@3 ~@6 [g4,b4]@2 ~ [f4,a4,c5,f6]@7 ~, [a5,c6] ~@3 [e6,a6]@2 ~@2, ~@2 [g4,b4]@5 ~@5 [g4,b4]@2 ~ [a4,c5]@5 ~@12]/2", // Dm Bm Am G5 G F Am A5 …
U: "[d4,f4,a5,c6]@2 ~@2 [b5,d6]@4 [a4,c5,e6,a6]@3 ~ [g4,b4,d6,g6]@4, ~@2 [g4,b4]@5 ~@9", // Dm7 Bm Am G
V: "[a4,c5]@5 [e4,g4]@2 ~ [f4,a4,c5,f6]@7 ~, [e6,a6]@7 ~@9", // Am Em F A5
W: "[d4,f4] ~ g4@2 [b5,d6]@2 a4@2 ~@8, [a5,c6]@4 ~@2 g6 ~@9, ~@2 b4 ~@13", // Dm Bm Am
})).s("gm_string_ensemble_2").gain(0.33)
// drums · kick
const kick = s("bd").struct(`<
A B C B C B C B C B D C E C E C E F G H I H I J I K H K H K@2 L C E C E C E C@2 E C E C E M B E@2 B E@2 B M B C B C B
C B C B C B C B C B C B C B C B C B C D
>`.pickRestart({
A: "~@8 x ~@2 x ~ x ~@2", B: "x ~@2 x ~ x ~@2 x ~@2 x ~@4", C: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2",
D: "x ~@2 x ~ x!3 ~@8", E: "x ~@2 x ~@4 x ~@2 x ~ x ~@2", F: "x ~@2 x ~@4 x ~@2 x!2 ~@3",
G: "x ~@2 x!2 ~@3 x!2 ~ x!2 ~@2 x", H: "~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x", I: "~@4 x ~@2 x ~ x ~@2 x ~@2 x",
J: "~ x ~@2 x ~@2 x ~ x!3 ~@4", K: "~ x ~@2 x ~@2 x ~@4 x ~@2 x", L: "x ~@3 x ~@2 x!2 ~@3 x!2 ~ x",
M: "x ~@7 x ~@2 x ~ x ~@2",
})).gain(0.8)
// drums · snare
const snare = s("sd").struct("<A B@9 C B@12 D E B@20 F B G H B G H B I B@24 C>".pickRestart({
A: "~@5 x ~ x", B: "~ x ~ x ~ x ~ x", C: "~@2 x ~@3 x!2 ~@8", D: "~@2 x ~@3 x ~@3 x!2 ~@4", E: "~@3 x ~ x ~ x",
F: "x ~ x!6 ~@2 x ~@3 x ~", G: "~@2 x ~ x!4 ~@2 x ~@3 x ~", H: "~@2 x ~ x!2 ~@4 x ~@3 x ~",
I: "x!2 ~ x ~@2 x!2 ~@2 x ~@3 x ~",
})).gain(0.72)
// drums · clap
const clap = s("cp").struct("<~@45 A B C@2 B C@2 B D ~@7 E ~@17>".pickRestart({
A: "~@4 x!4 ~@2 x ~@3 x ~", B: "~ x ~ x ~ x ~ x", C: "~@2 x ~@3 x!2 ~@2 x ~@3 x ~", D: "~@2 x!6 ~@8",
E: "~@6 x!2 ~@8",
})).gain(0.8)
// drums · low tom
const low_tom = s("lt").struct("<~@45 A B C D B C D B ~@8 E ~@17>".pickRestart({
A: "x ~@7 x!8", B: "x!16", C: "x!4 ~@4 x!8", D: "x!5 ~@3 x!8", E: "~@3 x ~@4",
})).gain(0.8)
// drums · hihat
const hihat = s("hh").struct("<A B@9 C B@12 D E B@20 A B@2 F B@2 F B G B@24 H>".pickRestart({
A: "~@4 x!4", B: "x!8", C: "x!4 ~@4", D: "x ~ x ~ x ~ x ~ x ~ x!2 ~@4", E: "~@2 x!6", F: "x!2 ~@2 x!4",
G: "x ~@3 x!4", H: "x!3 ~@5",
})).gain(0.8)
// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<A B@9 C B@12 D E B@20 A B@2 F B@2 F B G B@24 H>".pickRestart({
A: "~@9 x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", C: "~ x ~ x ~ x ~ x ~@8", D: "~ x ~ x ~ x ~ x ~ x ~@6",
E: "~@5 x ~ x ~ x ~ x ~ x ~ x", F: "~ x ~ x ~@5 x ~ x ~ x ~ x", G: "~ x ~@7 x ~ x ~ x ~ x", H: "~ x ~ x ~ x ~@10",
})).gain(0.24)
// drums · mid tom
const mid_tom = s("mt").struct("<~@45 A ~ B C ~ B C ~ D ~@25>".pickRestart({
A: "~@4 x!4 ~@8", B: "~@4 x!2 ~@10", C: "~@6 x!2 ~@8", D: "~@2 x!6 ~@8",
})).gain(0.8)
// drums · open hat
const open_hat = s("oh").struct("<~@45 x ~@32 [~@3 x ~@4]>").gain(0.8)
// drums · crash
const crash = s("cr").struct("<~@45 A ~ A@2 ~ A@2 B ~@8 C ~@15 A D>".pickRestart({
A: "~ x", B: "~ x ~@14", C: "~@3 x ~@4", D: "~@7 x ~@8",
})).gain(0.8)
// drums · shaker
const shaker = s("sh").struct("<~@45 A B C D B C D B E ~@25>".pickRestart({
A: "~@4 x!4", B: "x!8", C: "x!3 ~ x!4", D: "x!2 ~@2 x!4", E: "x!2 ~@6",
})).gain(0.72)
stack(
bass, piano, brass_section, string_ensemble_2, kick, snare, clap, low_tom, hihat, hihat_soft, mid_tom, open_hat,
crash, shaker
)
More by Hall & Oates
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.