0:00/0:00
// My Life — Billy Joel
// 142 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 174 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(142/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 · piano · "Piano 1"
const piano = note(`<
A@3 B@4 C@3 D@2 E@2 F@2 G@3 H I@3 J@4 K@5 D@2 E@2 F@2 L@3 H I@3 M@4 N@5 O P Q@3 R@3 S@2 T@2 U@2 G@3 H I@3 J@4 V@5 D@2
E@2 F@2 L@3 H I@3 M@4 N@5 O P Q@3 R@3 S@2 T@2 U@2 W@2 X H Y@2 Z AA@3 AB AC@5 D@2 E@2 F@2 AD@2 D@2 E@2 F@2 AD@2 D@2 E@2
F@2 AD@2 D@2 E@2 F@2 AD@2 D@2 E@2 F@2
>`.pickRestart({
A: "~ d3 ~ d3 ~ d3 ~ d3, d2!4",
B: "[[b3,d4,g4] d3 [a3,d4,f#4] [d3,b3,d4,g4] ~ d3 [g3,b3,d4,e4] d3 ~ d3 ~ d3 ~ d3 ~ d3, d2!4 d2!4, ~@7 [a3,d4,f#4]@9]/2", // G D G Em7 D
C: "[[b3,d4,g4] d3 [a3,d4,f#4] [d3,b3,d4,g4] ~ d3 [g3,b3,d4,e4] d3 ~ d3 [d4,f#4,b4] d3 ~ d3 ~ d3 ~ c3 ~ c3 ~ c3 ~ c3, d2!4 d2!4 c2!4, ~@7 [a3,d4,f#4]@3 ~ [c4,e4,a4]@4 [e4,g4,a#4,d5]@9]/3", // G D G Em7 Bm D Am Em7b5
D: "[[d#4,g4,a#4,d5] [f3,d#4,g4,a#4,d5] [d#4,g4,a#4,d5] [f3,d#4,g4,a#4,d5] ~ f3 [d#4,g4,a#4,c5] f3 ~ [a#2,d4,f4,a#4] ~ a#2 ~ a2 ~ g#2, f2!2 [f2,d#4,g4,a#4,d5] f2 a#1!2 a1 g#1, ~@7 [d#4,g4,a#4,c5]@2 ~@7]/2", // D#maj7 Cm7 A# D#maj7 Cm7
E: "[~@2 d3@2 [d4,f#4,b4]@2 d3@2 ~@2 d3@2 ~@2 d3@2 ~@2 c3@2 [g5,g6] ~@4 [g5,g6] [c3,g5,g6]@2 ~@2 c3@2, d2!4 c2!3 [c2,g5,g6], ~@3 [c4,e4,a4]@4 [e4,g4,a#4,d5]@9, ~@21 [g5,g6]@2 [g5,g6]@2 ~@7, ~@11 c3 ~@4]/2", // Bm G C5 Am Em7b5 G
F: "[[d#4,g4,a#4,d5] [f3,d#4,g4,a#4,d5] [d#4,g4,a#4,d5] [f3,d#4,g4,a#4,d5] ~ f3 [d#4,g4,a#4,c5] f3 ~ [a#2,d4,f4,a#4] ~ a#2 ~ c3 ~ c#3, f2!2 [f2,d#4,g4,a#4,d5] f2 a#1!2 c2 c#2, ~@7 [d#4,g4,a#4,c5]@2 ~@7]/2", // D#maj7 Cm7 A# D#maj7 Cm7
G: "[~ [d3,a4,f#5] [a4,f#5] d3 ~ [d3,f#4,d5] [f#4,d5] d3 ~ f#2 ~ [f#2,d4,a4] [d4,a4] [f#2,a4] f#4 f#2 ~ g2 ~ [g2,d4,g4,b4] ~ g2 ~ g2, d2!4 f#1!4 g1!4, ~@3 [a4,f#5]@2 ~@2 [f#4,d5]@2 [d4,a4]@2 ~@2 d4@2 [b3,d4,g4]@4 ~@5]/3", // D D5 F#m G D D5 G
H: "~ [g2,a3,d4] ~ g2 [a3,d4] g2 [g3,d4] g2, g1!4", // Gsus2 D5 G5
I: "[~ [a2,e4,c#5,e5] [e4,c#5,e5] a2 ~ [a2,e4,c#5] [e4,c#5] a2 ~ [a2,c#4,a4] [c#4,a4] a2 ~ [a2,d4,b4] [c#4,a4] a2 ~ d3 ~ d3 ~ d3 ~ d3, a1!4 a1!4 d2!4, ~@3 [e4,c#5,e5]@2 ~@2 [e4,c#5]@2 ~@2 [e4,c#5]@2 ~@2 [d4,f#4,a4]@9]/3", // A C#m A C#m A F#m Bm7 F#m …
J: "[[b3,d4,g4] d3 ~ [d3,b3,d4,g4] ~ d3 ~ d3 ~ [d3,a4,f#5] [a4,f#5] d3 ~ [d3,f#4,d5] [f#4,d5] d3 ~ [f#2,d4,a4] [d4,a4] [f#2,d4,a4] a4 [f#2,g4] f#4 f#2 ~ g2 ~ [g2,d4,g4,b4] ~ g2 ~ g2, d2!4 d2!4 f#1!4 g1!4, ~@7 [a3,d4,f#4]@5 ~@11 [b3,d4,g4]@4 ~@5, ~@11 [a4,f#5]@2 ~@2 [f#4,d5]@2 ~@3 d4@3 ~@9]/4", // G D D5 D Gmaj7 G D G …
K: "[[d3,g3,b3] g2 ~ [g2,d3,g3,b3] ~ g2 ~ g2 ~ [a2,e4,c#5,e5] [e4,c#5,e5] a2 ~ [a2,e4,c#5] [e4,c#5] a2 ~ [a2,c#4,a4] [c#4,a4] a2 ~ [a2,e4,a4,d5] [e4,a4,d5] a2 ~ d3 b4 d3 ~ d3 ~ d3 ~ c3 ~ c3 ~ c3 ~ c3, g1!4 a1!4 a1!4 d2 d4 d2!2 c2!4, ~@7 [e3,a3,c#4]@5 ~@11 [d4,f#4]@3 f#4@6 ~@8, ~@11 [e4,c#5,e5]@2 ~@2 [e4,c#5]@2 ~@2 [e4,c#5]@2 ~@2 d5@8 ~@9, ~@26 d2 [c4,e4,a4]@4 [e4,g4,a#4,d5]@9]/5", // G A C#m A C#m A F#m Asus4 …
L: "[~ [d3,a4,f#5] [a4,f#5] d3 ~ [d3,f#4,d5] [f#4,d5] d3 ~ [f#2,d4,a4] [d4,a4] f#2 ~ [f#2,a4] f#4 f#2 ~ g2 ~ [g2,d4,g4,b4] ~ g2 ~ g2, d2!4 f#1!4 g1!4, ~@3 [a4,f#5]@2 ~@2 [f#4,d5]@2 ~@2 [d4,a4]@2 d4@2 [b3,d4,g4]@4 ~@5]/3", // D D5 F#m G D D5 G
M: "[[b3,d4,g4] d3 ~ [d3,b3,d4,g4] ~ d3 ~ d3 ~ [d3,a4,f#5] [a4,f#5] d3 ~ [d3,f#4,d5] [f#4,d5] d3 ~ [f#2,d4,a4] [d4,a4] f#2 ~ [f#2,g4] f#4 f#2 ~ g2 ~ [g2,d4,g4,b4] ~ g2 ~ g2, d2!4 d2!4 f#1!4 g1!4, ~@7 [a3,d4,f#4]@5 ~@7 a4@2 ~@11, ~@11 [a4,f#5]@2 ~@2 [f#4,d5]@2 ~@2 d4@4 [b3,d4,g4]@4 ~@5]/4", // G D D5 Gmaj7 G D G
N: "[[g2,g3,b3,d4]@2 [f#2,f#3,a3,d4]@2 [e2,e3,g3,d4] [d2,d3,f#3,d4] ~@3 [a2,e4,c#5,e5] [e4,c#5,e5] a2 ~ [a2,e4,c#5] [e4,c#5] a2 ~ [a2,c#4,a4] [c#4,a4] a2 ~ [a2,e4,a4,d5] [e4,a4,d5] a2 ~@3 [b1,b2] d4 [d4,d5]!3 ~ [b3,b4]!3 [b3,f#4,b4] [f#3,f#4] [e3,d4,e4] [d3,d4], ~@7 [e3,a3,c#4]@5 ~@11 [d4,f#4]@3 [d4,f#4]@2 f#4@2 f#4@2 [d4,f#4]@2 [d4,f#4]@2 d4@2 f#4@2, ~@7 a1@3 a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 [b1,b2]@3 ~ [b1,b2]@12, ~@11 [e4,c#5,e5]@2 ~@2 [e4,c#5]@2 ~@2 [e4,c#5]@2 ~@2 d5@6 ~@3 d5@8]/5", // G D Em7 D A C#m A C#m …
O: "[e3,e4,f#4] f#4!3 [a#3,c#4,f#4]@2 ~ [a#1,a#2], [a#1,a#2]@7 ~, [a#3,c#4]!2 ~ [a#3,c#4,f#4], ~ f#3@2 f#3@5", // Esus2 F# A# A#m F#
P: "[a#3,c#4,f#4]@2 ~ [a#1,a#2] [a#3,c#4,f#4]@2 ~ [a#1,a#2], [a#1,a#2]@3 ~ [a#1,a#2]@3 ~, ~ [a#3,c#4,f#4] ~ [a#3,c#4,f#4]", // F# A# F# A# F#
Q: "[[c4,d4,f#4]@2 ~ d2 d4 [d3,d4] [d4,d5]!2 d5 [b3,b4]!3 [b3,f#4,b4] [f#3,f#4] d3 ~ [e2,g#3,d4,f#4]@2 [f#2,f#3] ~ d4!2 ~ e2, d2@3 ~ d2@12 ~@3 e2@4 ~, ~ [c4,d4,f#4] [c4,f#4] f#4 [d4,f#4]!2 d4 [c4,d4,f#4] ~ [g#3,d4,f#4] [g#3,f#4] [g#3,d4,f#4], ~@15 [e3,e4]@3 ~ [e3,e4]@2 d3@3]/3", // D7 D B B5 F# E7 F# D7 …
R: "[e2@3 e2 [e2,g#3,d4,e4] [f#2,a#3,c#4,f#4] ~ [b3,d4,g4]@3 ~ [g1,g2] [a3,a4]@2 [b3,b4] [g1,g2] [f#1,f#2]@3 [f#1,f#2] [f#1,f#2]@3 [f#1,f#2], [g#3,d4,f#4]@4 ~@3 [g1,g2]@4 ~ [g1,g2]@3 ~@9, ~@10 [b3,d4]@4 ~ a4@9, ~@10 [g3,g4]@2 ~@3 [a3,d4,f#4]@5 [a3,d4,f#4]@4]/3", // E7 F# G A B G F# G#m7b5 …
S: "[[a#3,c#4,f#4]@2 ~ [f#1,f#2] [b3,b4]@2 [c#4,c#5] [f#1,f#2] [b1,b2]@3 [b1,b2] [b1,b2]@3 [b1,b2], [f#1,f#2]@3 ~ [f#1,f#2]@3 ~@9, ~@2 [c#4,f#4]@4 ~ [b4,d5]@9, ~@2 [a#3,a#4]@2 ~@3 [d4,f#4]@5 [d4,f#4]@4]/2", // F# B C# F# B F# F#5 Bm …
T: "[[e2,e3]@3 [e2,e3] ~@2 [c#4,c#5] [e2,e3] ~ [e4,g#4,e5]@2 [e2,e3] [e2,e3]@3 [e2,e3,b3,e4,b4], g#3 ~, d4@7 [d4,f#4,d5]@2 ~@2 [c#4,e4,c#5]@4 ~, f#4@4 [e2,e3]@3 ~ [e2,e3]@3 ~@5, ~@3 [b3,b4]@3 ~@10]/2", // E C# E E5 D C#m E B
U: "[[b3,d4,g4,b4] [a3,c#4,e4,a4] [b3,d4,g4,b4] [c#4,e4,a4,c#5], [a1,a2]]/2", // G A G A
V: "[[g2,g3,b3,d4]@2 [f#2,f#3,a3,d4]@2 [e2,e3,g3,d4] [d2,d3,f#3,d4] ~@3 [a2,e4,c#5,e5] [e4,c#5,e5] a2 ~ [a2,e4,c#5] [e4,c#5] a2 ~ [a2,c#4,a4] [c#4,a4] a2 ~ [a2,e4,a4,d5] [e4,a4,d5] a2 ~ d3 b4 d3 ~ d3 ~ d3 ~ c3 ~ c3 ~ c3 ~ c3, ~@7 [e3,a3,c#4]@5 ~@11 [d4,f#4]@3 f#4@6 ~@8, ~@7 a1@3 a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 d2@2 d4@2 d2@2 d2@2 c2@2 c2@2 c2@2 c2@2, ~@11 [e4,c#5,e5]@2 ~@2 [e4,c#5]@2 ~@2 [e4,c#5]@2 ~@2 d5@8 ~@9, ~@26 d2 [c4,e4,a4]@4 [e4,g4,a#4,d5]@9]/5", // G D Em7 D A C#m A C#m …
W: "[~ [d3,a4,d5,f#5] [a4,d5,f#5] d3 ~ [d3,f#4,a4,d5] [f#4,a4,d5] d3 ~ [f#2,d4,f#4,a4] [d4,f#4,a4] f#2 ~ [f#2,e4,g4] ~ f#2, d2!4 f#1!3 [f#1,d4,f#4], ~@3 [a4,d5,f#5]@2 ~@2 [f#4,a4,d5]@2 ~@2 [d4,f#4,a4]@2 ~@3]/2", // D C D
X: "~ g2 ~ g2 [d4,g4,b4] g2 ~ g2, [b3,d4,g4]@8 a4 ~@7, g1!4", // G
Y: "[~ a2 ~ a2 ~ [a2,c#5,e5] [c#5,e5] a2 ~ [a2,a4,c#5] [a4,c#5] a2 ~ [a2,g4,b4] ~ a2, [e3,a3,c#4] ~, a1!4 a1!3 [a1,f#4,a4], ~@7 [c#5,e5]@2 ~@2 [a4,c#5]@2 ~@3]/2", // A C#m A Em A D C#m A
Z: "~ d3 ~ d3 ~ d3 ~ d3, [d4,f#4,a4], d2!4", // D
AA: "[[b3,d4,g4] d3 [a3,d4,f#4] [d3,b3,d4,g4] ~ d3 [g3,b3,d4,e4] d3 ~ [d3,a4,f#5] [a4,f#5] d3 ~ [d3,f#4,d5] [f#4,d5] d3 ~ [f#2,d4,a4] [d4,a4] f#2 ~ [f#2,e4,g4] ~ f#2, d2!4 d2!4 f#1!3 [f#1,d4,f#4], ~@7 [a3,d4,f#4]@5 ~@12, ~@11 [a4,f#5]@2 ~@2 [f#4,d5]@2 ~@2 [d4,a4]@2 ~@3]/3", // G D G Em7 D D5 C D …
AB: "~ g2 ~ g2 [d4,g4,b4] g2 ~ g2, [b3,d4,g4] ~, g1!4", // G
AC: "[[g2,g3,b3,d4]@2 [f#2,f#3,a3,d4]@2 [e2,e3,g3,d4] [d2,d3,f#3,d4] ~@3 [a2,e4,c#5,e5] [e4,c#5,e5] a2 ~ [a2,e4,c#5] [e4,c#5] a2 ~ a2 ~ a2 [a4,f#5] [a2,g4,e5] [f#4,d5] a2 ~ d3 b4 d3 ~ d3 ~ d3 ~ c3 ~ c3 ~ c3 ~ c3, ~@7 [e3,a3,c#4]@5 ~@11 [d4,f#4]@3 f#4@6 ~@8, ~@7 a1@3 a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 d2@2 d4@2 d2@2 d2@2 c2@2 c2@2 c2@2 c2@2, ~@11 [e4,c#5,e5]@2 ~@2 [e4,c#5]@2 [c#4,a4]@3 ~@3 d5@8 ~@9, ~@26 d2 [c4,e4,a4]@4 [e4,g4,a#4,d5]@9]/5", // G D Em7 D A C#m A C#m …
AD: "[~ d3 [d4,f#4,b4] d3 ~ d3 ~ d3 ~ c3 ~ c3 ~ c3 ~ c3, d2!4 c2!4, ~@3 [c4,e4,a4]@4 [e4,g4,a#4,d5]@9]/2", // Bm Am Em7b5
})).s("gm_piano").gain(0.64).pan(0.6)
// chords · synth brass 2
const synth_brass_2 = note(`<
~@3 A@4 B@3 ~@2 C@2 ~@9 D@2 ~@2 E@2 ~ C@2 ~@2 C@2 ~@9 D@2 ~@2 F@2 ~ G@2 H@2 I@2 J K@3 L M N ~ O P ~@7 D@2 ~@2 F@2 ~
C@2 ~@2 C@2 ~@9 D@2 ~@2 F@2 ~ G@2 H@2 I@2 J K@3 L M N ~ O P Q@2 R S T@2 U A@2 ~@2 F@2 ~ C@2 ~@2 C@2 ~@2 C@2 ~@2 C@2
~@2 C@2 ~@2 C@2 ~@2 C@2 ~@2 C@2 ~@2 C@2 ~@2 C@2 ~@2
>`.pickRestart({
A: "[[b3,d4,g4] ~ [a3,d4,f#4] [b3,d4,g4] ~@2 [g3,b3,d4,e4] [a3,d4,f#4]@9]/2", // G D G Em7 D
B: "[[b3,d4,g4] ~ [a3,d4,f#4] [b3,d4,g4] ~@2 [g3,b3,d4,e4] [a3,d4,f#4]@3 [d4,f#4,b4] [c4,e4,a4]@4 [e4,g4,a#4,d5]@9]/3", // G D G Em7 D Bm Am Em7b5
C: "[~@2 [d4,f#4,b4] [c4,e4,a4]@4 [e4,g4,a#4,d5]@9]/2", D: "[[b3,d4,g4] ~@2 [b3,d4,g4] ~@3 [a3,d4,f#4]@9]/2",
E: "[[d3,g3,b3] ~@2 [d3,g3,b3] ~@3 [e3,a3,c#4]@9]/2", // G A
F: "[[g3,b3,d4]@2 [f#3,a3,d4]@2 [e3,g3,d4] [d3,f#3,d4] ~ [e3,a3,c#4]@9]/2", G: "[d4,f#4]!4", H: "[a#3,c#4,f#4]!4",
I: "[c4,d4,f#4]!4", J: "[g#3,d4,f#4]!4",
K: "[[g#3,d4,f#4]@4 [g#3,d4,e4] [a#3,c#4,f#4] ~ b3@3 b3@4 ~ [a3,d4]@5 [a3,d4]@4, ~@7 g4@9 ~@8, ~@7 d4@8 ~@9, ~@7 b3 ~@4]/3", // G#m7b5 E7 F# D5
L: "[a#3,c#4,f#4]", M: "[d4,f#4]!2", N: "[g#3,d4,f#4]", O: "[b3,d4,g4,b4] [a3,c#4,e4,a4]",
P: "[b3,d4,g4,b4] [c#4,e4,a4,c#5]", // G A
Q: "[~ [a4,d5]!2 [a4,d5]@2 [f#4,a4]!2 [f#4,a4]@2 [d4,f#4]!2 [d4,f#4]@2 e4 d4@2]/2", R: "[b3,d4]@4 [d4,g4] ~@3",
S: "~ [a3,d4] ~@2 [a3,d4] ~ [g3,d4] ~", T: "[~@5 c#5!2 c#5@2 a4!2 a4@2 g4 f#4@2, [e3,a3,c#4] ~]/2", U: "[d4,f#4]",
})).s("gm_synth_brass_2").gain(0.59).pan(0.4)
// bass · electric bass finger · "Fingered E. Bass"
const bass = note(`<
A@9 B C D A B C E A F G@2 H@2 A@3 F G@2 H@2 A B C D A B C E A F G@2 H@2 A@3 F G I@2 H J@2 K L M@2 N O@2 P@2 Q R@2 S@2
A F G@2 H@2 A@3 F G I@2 H A B C D A B C E A F G@2 H@2 A@3 F G I@2 H J@2 K L M@2 N O@2 P@2 Q R@2 S@2 A F G@2 H@2 A@3 F
G I@2 H A B C D A B C E A B C D A B C E A B C D A B C E A B C D A B C E A B C D A B C E
>`.pickRestart({
A: "d2!8", B: "c2!8", C: "f2!8", D: "a#1!4 a1!2 g#1!2", E: "a#1!4 c2!2 c#2!2", F: "f#1!8", G: "g1!8", H: "a1!8",
I: "[g2@2 f#2@2 e2 d2 ~ a1@2 a1!7]/2", J: "[b1@3 b1 b1@12]/2", K: "a#1@7 a#1", L: "a#1@3 a#1 a#1@3 a#1",
M: "[d2@3 d2 d2@12]/2", N: "e2@2 f#2 e2@4 e2", O: "[e2@3 e2!2 f#2 ~ g1@4 g1 g1@3 g1]/2", P: "f#1@3 f#1 f#1@3 f#1",
Q: "b1@3 b1 b1@3 b1", R: "e2@3 e2 e2@3 e2", S: "a1/2",
})).s("gm_electric_bass_finger").gain(0.4)
// drums · kick
const kick = s("bd").struct(`<
A B C D E F G D H I J K F L J M N O F P N Q R S Q T U S Q@2 H I J K F L J M N O F P N Q R S Q@2 U A Q@2 F@2 V F W V X
A R F@5 Y@2 N O F P N Q R S Q T U B Q@2 H I J K F Z J M N O F P N Q R S Q T U B Q@2 F@2 V F W V X A R F@5 Y@2 N AA W P
N AB AC S Q AD AE B Q@2 H I J K F Z J M N O F P N Z J M N O F P N Z J M N O F P N Z J M N O F P N Z J M
>`.pickRestart({
A: "x ~@3 x ~@2 x", B: "x ~@3 x!2 ~ x", C: "x ~@2 x!2 ~@3", D: "x ~@2 x ~@2 x!2", E: "~@3 x!2 ~@3",
F: "x ~@2 x ~@3 x", G: "~@4 x!2 ~ x", H: "~@3 x ~@3 x", I: "~@4 x!2 ~@2", J: "x!2 ~ x!2 ~@2 x", K: "~ x ~@2 x!2 ~ x",
L: "~@7 x", M: "~ x ~ x!2 ~@3", N: "x ~@2 x ~ x ~ x", O: "x!2 ~ x!3 ~ x", P: "x ~@2 x ~ x ~@2", Q: "~ x ~ x ~ x ~ x",
R: "~@3 x!2 ~@2 x", S: "~@2 x ~@2 x ~ x", T: "~ x ~ x!3 ~ x", U: "~@3 x ~ x ~@2", V: "x ~@6 x", W: "x ~@2 x ~@4",
X: "x ~ x!2 ~ x ~ x", Y: "x", Z: "~@4 x ~@2 x", AA: "x!2 ~ x ~ x ~@2", AB: "~ x ~ x ~ x ~@2", AC: "x ~@2 x!2 ~@2 x",
AD: "~ x ~ x!3 ~@2", AE: "x!2",
})).gain(0.44)
// drums · snare
const snare = s("sd").struct(`<
A@2 B C B A@2 C D B A@2 E F A B A@3 G A@3 H A@3 H A@2 D B A@2 E F A B A@3 G A@3 H A@3 I A@2 J@7 K A J@3 L M J@2 A@3 G
A@3 H A@6 D B A@2 E F A B A@3 G A@3 H A@6 J@7 K A J@3 L M J N A B O G A B A H A@2 P Q A@2 D B A@2 E F A B A@3 G A F A
B A@3 G A F A B A@3 G A F A B A@3 G A F A B
>`.pickRestart({
A: "~ x ~ x", B: "~@4 x ~@7 x ~ x!2", C: "~@4 x ~@5 x!2 ~@4", D: "~@4 x ~@5 x!3 ~@3", E: "~@2 x!3 ~@7 x ~@3",
F: "~@4 x!2 ~ x ~ x!2 ~ x ~@3", G: "~@2 x ~@5 x ~@3 x ~ x!2", H: "x ~@2 x ~@2 x ~", I: "~@2 x ~@2 x ~@2", J: "~ x",
K: "~@5 x ~@2", L: "~@2 x!2", M: "~ x ~@2 x ~ x ~", N: "~@8 x ~@3 x ~ x!2", O: "~@4 x ~@3 x ~@3 x ~ x!2",
P: "~@4 x ~ x!2 ~@4 x ~ x!2", Q: "~@4 x ~@7 x!2 ~@2",
})).gain(0.49)
// drums · hihat
const hihat = s("hh").struct(`<
A B@2 C D C D E B@3 F C D G H A B I J A B D C B@2 I C B@5 F C D G H A B I J A B D C B@2 I ~ A B ~@16 A B I J A B D C
B@2 I ~ B@5 F C D G H A B I J A B D C B@2 I ~ A D ~@16 A B K J A B L C B D K ~ B@5 F C D G H A B I J A D G H A B I J A
M G H A B I J A M G H A B N J C M G H
>`.pickRestart({
A: "~ x!6 ~", B: "x!7 ~", C: "~ x!2 ~ x!3 ~", D: "x!8", E: "~ x!2 ~ x!2 ~@2", F: "x ~ x!5 ~", G: "~ x!3 ~ x!2 ~",
H: "x ~ x!6", I: "x!3 ~ x!4", J: "x ~ x!2 ~ x ~ x", K: "~ x!3 ~ x!3", L: "~ x!7", M: "x!4 ~ x!3", N: "~ x!2 ~ x!4",
})).gain(0.44)
// drums · open hat
const open_hat = s("oh").struct(`<
A@3 ~@6 A@3 ~@2 B ~ A@2 ~@2 A ~@3 A ~@3 A ~@2 A@3 ~@2 B ~ A@2 ~@2 A ~@3 A ~@3 A ~@17 A@2 ~@2 A ~@3 A ~@3 A ~@2 A@3 ~@2
B ~ A@2 ~@2 A ~@3 A ~@3 A ~@17 A@2 ~@2 A@2 ~@2 A ~@3 A ~@2 A@3 ~@2 B ~@2 A ~@4 B ~@2 A ~@3 C B ~@2 A ~@3 C B ~@2 A ~@2
D C B ~
>`.pickRestart({
A: "~@7 x", B: "~@4 x ~@2 x", C: "~ x", D: "~@3 x ~@4",
})).gain(0.44)
// drums · crash
const crash = s("cr").struct(`<
A ~@2 B ~ B ~ C D ~@2 E B ~ A E A ~ F G A D ~ B ~ D F B ~ D@2 ~@2 E B ~ A E A ~ F G A D ~ B ~ D F H ~ D ~@4 A ~ A I ~
A@3 J ~ K@2 A ~ F G A D ~ B ~ D F H ~ D@2 ~@2 E B ~ A E A ~ F G A D ~ B ~ D F H ~@2 A ~ A ~ A ~ A L ~ A@3 J ~ K@2 A ~
K G A ~ A B ~@2 K M ~ D@2 ~@2 E B ~ A E J ~ F G J ~ A E J ~ F G J ~ A E J ~ F G J ~ A E J ~ N G J ~ A E
>`.pickRestart({
A: "x", B: "x ~@2 x ~@3 x", C: "x ~@2 x ~@2 x!2", D: "~@7 x", E: "~ x ~@6", F: "~@3 x ~@4", G: "~ x ~@2 x ~ x ~",
H: "x ~ x ~ x ~@2 x", I: "x ~@3 x!2 ~ x", J: "x ~@6 x", K: "x!2", L: "~@4 x!2 ~ x", M: "x ~@3 x ~@2 x",
N: "x ~@2 x ~@4",
})).gain(0.33)
// drums · ride
const ride = s("rd").struct("<~@52 A@4 B A B C A B@4 A D C ~@36 B A B A B A B E A B@4 A D C ~@54>".pickRestart({
A: "x!4", B: "~ x!3", C: "~ x ~@2", D: "~ x ~ x", E: "x!2 ~@2",
})).gain(0.49)
stack(piano, synth_brass_2, bass, kick, snare, hihat, open_hat, crash, ride)
More by Billy Joel
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.