0:00/0:00
// Big Shot — Billy Joel
// 156 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 141 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(156/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 · "MAIN PIANO"
const piano = note(`<
A@2 B@2 C@2 D@4 E@2 F@3 G@2 H I@2 J@3 K L@3 M@6 N O P Q@2 R@2 S T@4 U@3 V W@4 X@3 Y Z@4 AA@3 AB@2 AC AD@2 AE AF@2 AG
AH@2 AI@3 AJ@2 AK@2 AL AM AN AO AP AM AQ AR@4 AS AT AU@2 AV AW@2 AX@2 AY@2 AZ@2 BA BB BC@2 BD@2 BE BF AX@2 AY@2 AZ@2
BA BB BC@2 BD@2 BE BF AX@2 AY@2 AZ@2 BA BB BC@2 BD@2 ~
>`.pickRestart({
A: "[~@22 [a3,d4]@5 ~ [a3,d4]@3 g3@3 [a3,d4]@3 g3@3 e3@3 d3@3 ~@2]/2", // D5
B: "[~ [d3,g3]@3 ~@3 [d3,g3]@13 ~@2 [a3,d4]@5 ~ [a3,d4]@3 g3@3 [a3,d4]@3 g3@3 e3@3 d3@3 ~@2]/2", // G5 D5
C: "[~ [d3,g3]@3 ~@9 [d3,g3]@3 ~@6 [a3,d4]@5 ~ [a3,d4]@3 g3@3 [a3,d4]@3 g3@3 e3@3 d3@3 ~@2]/2", // G5 D5
D: "[~ [c#4,f4]@3 [d4,f#4]@3 [d4,f#4,b4]@13 ~@2 [c4,e4,g4]@8 ~ [c4,f4,a4]@3 ~@3 [c4,f4,a4]@6 [c4,f4,a4]@3 [c4,e4,g4]@5 ~@19 [b3,e4,a4]@5 ~ [b3,e4,a4]@5 ~ [b3,e4,a4]@3 g4@3 e4@3 d4@3 ~@2]/4", // C# D Bm C F C Esus4
E: "[~ [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@8 ~@7 [b3,e4,a4]@6 [b3,e4,a4]@5 ~ [b3,e4,a4]@3 g4@3 e4@3 d4@3 ~@2]/2", // G Esus4
F: "[~ [d4,g4,b4]@8 ~@13 [b3,e4,a4]@5 ~ [b3,e4,a4]@3 [b3,e4,a4]@3 [b3,e4,a4]@3 g4@3 e4@3 [d4,f#4,b4]@8 ~ [d4,f#4,b4]@3 [d4,f#4,b4]@3 [d4,f#4,b4]@3 a4@3 g4@3 [c4,f4,a4]@3 [c4,f4,a4]@2]/3", // G Esus4 Bm F
G: "[~ [c4,e4,g4]@6 [c4,f4,a4]@3 ~@3 [c4,f4,a4]@3 ~@3 [c4,f4,a4]@3 [c4,e4,g4]@5 ~@19 [b3,e4,a4]@2]/2", // C F C Esus4
H: "~ [b3,e4,a4]@3 [b3,e4,a4]@3 [b3,e4,a4]@3 [b3,e4,a4]@3 g4@3 e4@3 d4@3 [d4,g4,b4]@2", // Esus4 G
I: "[~ [d4,g4,b4]@6 [d4,g4,b4]@6 a4@3 a4@3 a4@3 [b3,e4,a4]@5 ~ [b3,e4,a4]@5 ~ [b3,e4,a4]@3 g4@3 e4@3 d5@3 ~@2]/2", // G Esus4
J: "[~ [d4,g4,b4]@8 ~@13 [b3,e4,a4]@5 ~ [b3,e4,a4]@3 [b3,e4,a4]@3 [b3,e4,a4]@3 g4@3 e4@3 [d4,f#4,b4]@8 ~ [d4,f#4,b4]@5 ~ [d4,f#4,b4]@3 a4@3 g4@3 [c4,f4,a4]@5]/3", // G Esus4 Bm F
K: "~ [c4,e4,g4]@6 [c4,f4,a4]@3 ~@3 [c4,f4,a4]@3 ~@3 [c4,f4,a4]@3 [c4,e4,g4]@2", // C F C
L: "[~ [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@8 ~ [d4,g4,b4]@3 ~@7 [d4,g4,b4]@9 [c4,f4,a4]@3 ~@4 [c4,f4,a4]@3 [g4,b4,d5]@5 ~ [f4,a4,c5]@5 ~]/3", // G F G F
M: "[[d4,g4,b4]@5 ~@2 [e4,a4,c5]@3 [d4,g4,b4]@6 [e4,a4,c5]@3 [d4,g4,b4]@3 [c4,f4,a4]@8 ~@5 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@8 ~@2 [d4,g4,b4]@3 ~@6 [d4,g4,b4]@9 ~ [c4,f4,a4]@8 ~ [g4,b4,d5]@5 ~ [e4,a4,c5]@5 ~@2 [d4,g4,b4]@5 ~ [e4,a4,c5]@3 [d4,g4,b4]@6 ~ [c4,f4,a4]@6 [c4,f4,a4]@3 [c4,e4,g4]@5 ~@5 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@2]/6", // G Am G Am G F G F …
N: "~ [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@8 ~ [c4,f4,a4]@3 ~@5", // G F
O: "~ [d4,g4,b4]@9 ~ [c4,f4,a4]@3 ~@3 [c4,f4,a4]@3 [g4,b4,d5]@4", // G F G
P: "~@3 [e4,a4,c5]@5 ~ [d4,g4,b4]@5 ~ [e4,a4,c5]@3 ~ [d4,g4,b4]@5", // Am G Am G
Q: "[~ [e4,a4,c5]@3 [d4,g4,b4]@3 [c4,f4,a4]@8 ~@5 [c4,f4,a4]@3 [c4,f4,a4]@3 [c4,f4,a4]@3 [c4,f4,a4]@3 [c4,f4,a4]@3 [c4,f4,a4]@8 ~ [c4,e4,g4]@3 ~]/2", // Am G F C
R: "[~@5 [c4,f4,a4]@9 [c4,e4,g4]@3 ~@3 [d4,g4]@3 [d4,a4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@8 ~ [d4,f#4,a4]@3 ~]/2", // F C G5 D5 G D
S: "~@5 [d4,g4,b4]@9 [d4,f#4,a4]@8 ~@2", // G D
T: "[~@11 [a3,d4]@5 ~ [a3,d4]@3 g3@3 [a3,d4]@3 g3@3 e3@3 d3@3 ~@3 [d3,g3]@3 ~@3 [d3,g3]@13 ~@2 [a3,d4]@5 ~ [a3,d4]@3 g3@3 [a3,d4]@3 g3@3 e3@3 d3@3 ~@3 [d3,g3]@3 ~@7]/4", // D5 G5 D5 G5
U: "[~@2 [d3,g3]@3 ~@6 [a3,d4]@5 ~ [a3,d4]@3 g3@3 [a3,d4]@3 g3@3 e3@3 d3@3 ~@3 [c#4,f4]@3 [d4,f#4]@3 [d4,f#4,b4]@13 ~@2 [c4,e4,g4]@8 ~ [c4,f4,a4]@3 ~]/3", // G5 D5 C# D Bm C F
V: "~@2 [c4,f4,a4]@6 [c4,f4,a4]@3 [c4,e4,g4]@5 ~@8", // F C
W: "[~@11 [b3,e4,a4]@5 ~ [b3,e4,a4]@5 ~ [b3,e4,a4]@3 g4@3 e4@3 d4@3 ~@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@8 ~@7 [b3,e4,a4]@5 ~ [b3,e4,a4]@5 ~ [b3,e4,a4]@3 g4@3 e4@3 d4@3 ~@3 [d4,g4,b4]@8 ~@2]/4", // Esus4 G Esus4 G
X: "[~@11 [b3,e4,a4]@5 ~ [b3,e4,a4]@3 [b3,e4,a4]@3 [b3,e4,a4]@3 g4@3 e4@3 [d4,f#4,b4]@8 ~ [d4,f#4,b4]@3 [d4,f#4,b4]@3 [d4,f#4,b4]@3 a4@3 g4@3 [c4,f4,a4]@3 [c4,f4,a4]@3 [c4,e4,g4]@6 [c4,f4,a4]@3 ~]/3", // Esus4 Bm F C F
Y: "~@2 [c4,f4,a4]@3 ~@3 [c4,f4,a4]@3 [c4,e4,g4]@5 ~@8", // F C
Z: "[~@11 [b3,e4,a4]@3 [b3,e4,a4]@3 [b3,e4,a4]@3 [b3,e4,a4]@3 [b3,e4,a4]@3 g4@3 e4@3 d4@3 [d4,g4,b4]@3 [d4,g4,b4]@6 [d4,g4,b4]@6 a4@3 a4@3 a4@3 [b3,e4,a4]@5 ~ [b3,e4,a4]@5 ~ [b3,e4,a4]@3 g4@3 e4@3 d5@3 ~@3 [d4,g4,b4]@8 ~@2]/4", // Esus4 G Esus4 G
AA: "[~@11 [b3,e4,a4]@5 ~ [b3,e4,a4]@3 [b3,e4,a4]@3 [b3,e4,a4]@3 g4@3 e4@3 [d4,f#4,b4]@8 ~ [d4,f#4,b4]@5 ~ [d4,f#4,b4]@3 a4@3 g4@3 [c4,f4,a4]@6 [c4,e4,g4]@6 [c4,f4,a4]@3 ~]/3", // Esus4 Bm F C F
AB: "[~@2 [c4,f4,a4]@3 ~@3 [c4,f4,a4]@3 [c4,e4,g4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@8 ~ [d4,g4,b4]@3 ~]/2", // F C G
AC: "~@6 [d4,g4,b4]@9 [c4,f4,a4]@3 ~@4 [c4,f4,a4]@2", // G F
AD: "[~ [g4,b4,d5]@5 ~ [f4,a4,c5]@5 ~ [d4,g4,b4]@5 ~@2 [e4,a4,c5]@3 [d4,g4,b4]@6 [e4,a4,c5]@3 [d4,g4,b4]@3 ~ [c4,f4,a4]@8 ~@4]/2", // G F G Am G Am G F
AE: "[d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@8 ~", // G
AF: "[~ [d4,g4,b4]@3 ~@6 [d4,g4,b4]@9 ~ [c4,f4,a4]@8 ~ [g4,b4,d5]@5 ~@2 [e4,a4,c5]@5 ~ [d4,g4,b4]@5 ~]/2", // G F G Am G
AG: "[e4,a4,c5]@3 [d4,g4,b4]@6 ~ [c4,f4,a4]@6 [c4,f4,a4]@3 [c4,e4,g4]@5", // Am G F C
AH: "[~@5 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@8 ~ [c4,f4,a4]@3 ~@7 [d4,g4,b4]@9]/2", // G F G
AI: "[[c4,f4,a4]@3 ~@3 [c4,f4,a4]@3 ~ [g4,b4,d5]@5 ~ [e4,a4,c5]@5 ~ [d4,g4,b4]@5 ~@2 [e4,a4,c5]@3 [d4,g4,b4]@6 [e4,a4,c5]@3 [d4,g4,b4]@3 [c4,f4,a4]@8 ~@5 [c4,f4,a4]@3 [c4,f4,a4]@3 [c4,f4,a4]@3 [c4,f4,a4]@3 [c4,f4,a4]@3]/3", // F G Am G Am G Am G …
AJ: "[[c4,f4,a4]@8 ~ [c4,e4,g4]@3 ~@6 [c4,f4,a4]@9 [c4,e4,g4]@3 ~@3 [d4,g4]@3 [d4,a4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3]/2", // F C F C G5 D5 G
AK: "[[d4,g4,b4]@8 ~ [d4,f#4,a4]@3 ~@6 [d4,g4,b4]@9 [d4,f#4,a4]@8 ~ [d4,f#4,a4]@3 [d4,g4,b4]@8 ~]/2", // G D G D G
AL: "~@3 [f4,a4,c5] ~ [a4,c5,f5] ~ d5", AM: "[g4,e5]@3 c5@3 [f4,d5]@3 [e4,c5]@8 ~@7",
AN: "~@3 [d4,g4,b4] ~ [g4,b4,e5] ~ b4", AO: "[f#4,d5]@5 ~@10 [d4,f#4,a4]@8 ~",
AP: "~ [c4,f4,a4] ~ [f4,a4,c5] ~ [a4,c5,f5] ~ d5", AQ: "~ [b3,d4,g4] ~ [d4,g4,b4] ~ [g4,b4,e5] ~ b4",
AR: "[d5@3 [d4,f#4,a4]@8 ~@4 [d4,f#4,a4]@6 [b3,e4,a4]@6 [b3,e4,a4]@6 [b3,e4,a4]@6 a4@3 g4@3 [d4,g4,b4]@6 [d4,g4,b4]@6 [d4,g4,b4]@6 a4@3 a4@3 [b3,e4,a4]@6 [b3,e4,a4]@3 [b3,e4,a4]@3 [b3,e4,a4]@3 ~@12]/4", // D Esus4 G Esus4
AS: "[d4,g4,b4]@5 ~@10 [g4,b4,d5]@3 [g4,b4,d5]@3 [g4,b4,d5]@3", AT: "[g4,b4,e5]!3 [g4,b4,e5]@2 [g4,b4,d5]!3",
AU: "[[b4,g5] [d4,f#4,a4]!2 [d4,f#4,a4]@2 [d4,f#4,a4]!2 [c4,f4,a4]@2 [c4,e4,g4]@2 [c4,f4,a4] ~ [c4,f4,a4]@2 [c4,f4,a4]]/2", // Em D F C F
AV: "[c4,e4,g4] [d4,g4,b4]!7", // C G
AW: "[[d4,g4,b4]@8 ~ [c4,f4,a4]@3 ~@6 [d4,g4,b4]@9 [c4,f4,a4]@3 ~@6 [g4,b4,d5]@5 ~ [e4,a4,c5]@5 ~]/2", // G F G F G Am
AX: "[[d4,g4,b4]@5 ~ [e4,a4,c5]@3 [d4,g4,b4]@6 [e4,a4,c5]@3 [d4,g4,b4]@3 [c4,f4,a4]@8 ~@4 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3]/2", // G Am G Am G F G
AY: "[[d4,g4,b4]@8 ~ [c4,f4,a4]@6 ~@3 [d4,g4,b4]@9 [c4,f4,a4]@3 ~@6 [g4,b4,d5]@5 ~ [e4,a4,c5]@5 ~]/2", // G F G F G Am
AZ: "[[d4,g4,b4]@5 ~ [e4,a4,c5]@3 [d4,g4,b4]@6 [c4,f4,a4]@3 [c4,f4,a4]@3 [c4,e4,g4]@8 ~@10 [d4,g4,b4]@3 [d4,g4,b4]@3 [d4,g4,b4]@3]/2", // G Am G F C G
BA: "[d4,g4,b4]!3 [c4,f4,a4]!3 [d4,g4,b4]!2", // G F G
BB: "[d4,g4,b4]@3 [c4,f4,a4]@3 [c4,f4,a4]@3 [c4,f4,a4]@3 [g4,b4,d5]@5 ~ [e4,a4,c5]@5 ~", // G F G Am
BC: "[[d4,g4,b4]@5 ~ [e4,a4,c5]@3 [d4,g4,b4]@6 [e4,a4,c5]@3 [d4,g4,b4]@3 [c4,f4,a4]@8 ~@4 [c4,f4,a4]@3 [c4,f4,a4]@3 [c4,f4,a4]@3 [c4,f4,a4]@3 [c4,f4,a4]@3]/2", // G Am G Am G F
BD: "[[c4,f4,a4]@8 ~ [c4,e4,g4]@8 ~ [c4,f4,a4]@9 [c4,e4,g4]@19 ~@2]/2", // F C F C
BE: "[d4,g4,b4]@8 ~ [c4,f4,a4]@3 ~@6 [d4,g4,b4]@5 ~", // G F G
BF: "[d4,g4,b4]@3 [c4,f4,a4]@3 ~@6 [g4,b4,d5]@5 ~ [e4,a4,c5]@5 ~", // G F G Am
})).s("gm_piano").gain(0.64)
// bass · piano · "BASS PIANO"
const bass = note(`<
A@2 B@2 C@6 D@2 E@2 F G@3 H@2 E@2 F I@4 J K L@4 M@8 N O@2 ~ P Q@3 R@8 S@8 T U V W@2 X Y Z AA AB@3 AC AD@2 AE AF AG AH
AI AJ AG AH AI AK AL AM AN AM AN AE AO AP AQ@3 AR AS@3 AT AQ@3 AU AD@2 AQ@3 AR AS@3 AT AQ@3 AU AD@2 AQ@3 AR AS@3 AT
AQ@3 AU AD@2 ~
>`.pickRestart({
A: "[~@22 [e1,e2]@5 ~@21]/2", B: "[~ [g1,g2]@3 ~@3 [g1,g2]@13 ~@2 [e1,e2]@5 ~@21]/2",
C: "[~@22 [e1,e2]@5 ~@19 [d2,d3]@10 ~@2 [d2,d3]@10 ~@2 c2@15 g2@8 ~ [c2,c3]@5 ~@19 [e1,e2]@5 ~@7 [e1,e2]@5 ~@9]/6", // E D C E
D: "[~ [g1,g2]@3 ~@3 d2@3 [g1,g2]@10 ~@2 [e1,e2]@6 ~@3 b1@3 [e1,e2]@5 ~@9]/2", // G E
E: "[~ [g1,g2]@3 ~@3 d2@3 [g1,g2]@10 ~@2 [e1,e2]@5 ~@4 b1@3 [e1,e2]@5 ~@7 [d2,d3]@2]/2", // G E D
F: "~ [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [c2,c3]@2", // D C
G: "[~ [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@5 ~@19 [e1,e2]@5 ~@4 b1@3 [e1,e2]@5 ~@9]/3", // C E
H: "[~ [g1,g2]@3 ~@3 d2@3 [g1,g2]@10 ~@2 [e1,e2]@5 ~@4 b1@3 [e1,e2]@5 ~@9]/2", // G E
I: "[~ [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@5 ~@19 [f1,f2]@5 ~@7 [c2,c3]@11 ~@2 [f1,f2]@5 ~@8 [c2,c3]@11 ~]/4", // C F C F C
J: "[f1,f2]@5 ~@8 [c2,c3]@11", K: "~@2 [f1,f2]@5 ~ [f1,f2]@5 ~@4 [c2,c3]@7",
L: "[~@2 [g1,g2]@5 ~@8 [d2,d3]@11 ~ [g1,g2]@5 ~@8 [d2,d3]@11 ~@2 [g1,g2]@5 ~@7 [d2,d3]@11 ~@5 [c2,c3]@3 [c2,c3]@5 ~@5 [e2,e3]@2]/4", // G D G D G D C E
M: "[~ [e2,e3]@5 ~ [f1,f2]@5 ~@7 [c2,c3]@11 ~@2 [f1,f2]@5 ~@7 [c2,c3]@11 ~@2 [f1,f2]@5 ~@8 [c2,c3]@11 ~ [f1,f2]@8 ~@2 [f1,f2]@6 [f1,f2]@3 [a1,a2]@3 [a#1,a#2]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]]/8", // E F C F C F C F …
N: "~@2 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [e1,e2]@5 ~@8", O: "[~@14 [g1,g2]@3 ~@3 [g1,g2]@13 ~@2 [e1,e2]@5 ~@8]/2",
P: "~@11 [e1,e2]@5 ~@8", Q: "[~@11 [d2,d3]@10 ~@2 [d2,d3]@10 ~@2 c2@15 g2@8 ~ [c2,c3]@5 ~@8]/3",
R: "[~@11 [e1,e2]@5 ~@7 [e1,e2]@5 ~@10 [g1,g2]@3 ~@3 d2@3 [g1,g2]@10 ~@2 [e1,e2]@5 ~@4 b1@3 [e1,e2]@5 ~@10 [g1,g2]@3 ~@3 d2@3 [g1,g2]@10 ~@2 [e1,e2]@5 ~@4 b1@3 [e1,e2]@5 ~@7 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@5 ~@8]/8", // E G E G E D C
S: "[~@11 [e1,e2]@5 ~@4 b1@3 [e1,e2]@5 ~@10 [g1,g2]@3 ~@3 d2@3 [g1,g2]@10 ~@2 [e1,e2]@5 ~@4 b1@3 [e1,e2]@5 ~@10 [g1,g2]@3 ~@3 d2@3 [g1,g2]@10 ~@2 [e1,e2]@5 ~@4 b1@3 [e1,e2]@5 ~@7 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [d2,d3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@3 [c2,c3]@5 ~@8]/8", // E G E G E D C
T: "~@11 [f1,f2]@5 ~@8", U: "[c2,c3]@11 ~ [f1,f2]@5 ~@7", V: "~ [c2,c3]@11 ~ [f1,f2]@5 ~@6",
W: "[~@2 [c2,c3]@11 ~@2 [f1,f2]@5 ~ [f1,f2]@5 ~@4 [c2,c3]@8 ~ [g1,g2]@5 ~@4]/2", // C F C G
X: "~@4 [d2,d3]@11 ~@2 [g1,g2]@5 ~@2", Y: "~@5 [d2,d3]@11 ~@2 [g1,g2]@5 ~", Z: "~@6 [d2,d3]@11 ~@5 [c2,c3]@2",
AA: "~ [c2,c3]@5 ~@5 [e2,e3]@3 [e2,e3]@5 ~ [f1,f2]@4", // C E F
AB: "[~@8 [c2,c3]@11 ~@2 [f1,f2]@5 ~@8 [c2,c3]@11 ~ [f1,f2]@5 ~@8 [c2,c3]@11 ~@2]/3", // C F C F C
AC: "[f1,f2]@8 ~ [f1,f2]@6 [f1,f2]@3 [a1,a2]@3 [a#1,a#2]@3", AD: "[c2,c3]!8", AE: "[d2,d3]!8",
AF: "[d2,d3]@5 ~ [d2,d3]@5 ~ [d2,d3]@10 ~@2", AG: "[f1,f2]@5 ~@4 [a1,a2]@3 ~@6 [c2,c3]@5 ~",
AH: "~@6 [c2,c3]@5 ~@4 [e2,e3]@8 ~", AI: "[g1,g2]@5 ~@4 [b1,b2]@3 ~@6 [d2,d3]@5 ~",
AJ: "~@6 [d1,d2]@5 ~@4 [e1,e2]@8 ~", AK: "~ [d2,d3]!7", AL: "[e1,e2]@5 ~@7 [e1,e2]@5 ~@7",
AM: "~@3 [g1,g2]@3 ~@3 d2@3 [g1,g2]@10 ~@2", AN: "[e1,e2]@5 ~@4 b1@3 [e1,e2]@5 ~@7",
AO: "[c2,c3]@8 ~ [e1,e2]@3 ~@3 [g1,g2]@6 [a1,a2]@3", AP: "[c2,c3]@5 ~@19", AQ: "[f1,f2]@5 ~@7 [c2,c3]@10 ~@2",
AR: "[f1,f2]@5 ~ [f1,f2]@5 ~@4 [c2,c3]@8 ~", AS: "[g1,g2]@5 ~@7 [d2,d3]@10 ~@2",
AT: "~@3 [c2,c3]@3 [c2,c3]@5 ~@4 [e2,e3]@3 [e2,e3]@5 ~", // C E
AU: "[f1,f2]@8 ~ [f1,f2]@3 [f1,f2]@5 ~ [a1,a2]@3 [a#1,a#2]@3", // F A A#
})).s("gm_piano").gain(0.64)
// bass · fretless bass · "BASS"
const bass_2 = note(`<
A@2 B@2 C@6 D@2 E@2 F G@3 H@2 E@2 F I@4 J K L@4 M@8 N O@2 P Q R@3 S@8 T@8 U V W X@2 Y Z AA AB AC@3 AD AE@2 AF AG AH AI
AJ AK AH AI AJ AL AM AN AO AN AO AF AP AQ AR@3 AS AT@3 AU AR@3 AV AE@2 AR@3 AS AT@3 AU AR@3 AV AE@2 AR@3 AS AT@3 AU
AR@3 AV AE@2 ~
>`.pickRestart({
A: "[~@22 e1@5 ~@21]/2", B: "[~ g1@3 ~@3 g1@13 ~@2 e1@5 ~@21]/2",
C: "[~ g2@3 f2@5 ~@4 d2@3 c2@3 a#1@3 e1@5 ~@19 d2@10 ~@2 d2@10 ~@2 c2@15 g2@8 ~ c2@5 ~@19 e1@5 ~@7 e1@5 ~@9]/6",
D: "[~ g1@3 ~@3 d2@3 g1@10 ~@2 e1@6 ~@3 b1@3 e1@5 ~@9]/2",
E: "[~ g1@3 ~@3 d2@3 g1@10 ~@2 e1@5 ~@4 b1@3 e1@5 ~@7 d2@2]/2", F: "~ d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 c2@2",
G: "[~ c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@5 ~@19 e1@5 ~@4 b1@3 e1@5 ~@9]/3",
H: "[~ g1@3 ~@3 d2@3 g1@10 ~@2 e1@5 ~@4 b1@3 e1@5 ~@9]/2",
I: "[~ c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@5 ~@19 f1@5 ~@7 c2@11 ~@2 f1@5 ~@8 c2@11 ~]/4", J: "f1@5 ~@8 c2@11",
K: "~@2 f1@5 ~ f1@5 ~@4 c2@7", L: "[~@2 g1@5 ~@8 d2@11 ~ g1@5 ~@8 d2@11 ~@2 g1@5 ~@7 d2@11 ~@5 c2@3 c2@5 ~@5 e2@2]/4",
M: "[~ e2@5 ~ f1@5 ~@7 c2@11 ~@2 f1@5 ~@7 c2@11 ~@2 f1@5 ~@8 c2@11 ~ f1@8 ~@2 f1@6 f1@3 a1@3 a#1@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2]/8",
N: "~@2 d2@3 d2@3 d2@3 e1@5 ~@8", O: "[~@14 g1@3 ~@3 g1@13 ~@2 e1@5 ~@8]/2", P: "~@14 g2@3 f2@5 ~@2",
Q: "~@2 d2@3 c2@3 a#1@3 e1@5 ~@8", R: "[~@11 d2@10 ~@2 d2@10 ~@2 c2@15 g2@8 ~ c2@5 ~@8]/3",
S: "[~@11 e1@5 ~@7 e1@5 ~@10 g1@3 ~@3 d2@3 g1@10 ~@2 e1@5 ~@4 b1@3 e1@5 ~@10 g1@3 ~@3 d2@3 g1@10 ~@2 e1@5 ~@4 b1@3 e1@5 ~@7 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@5 ~@8]/8",
T: "[~@11 e1@5 ~@4 b1@3 e1@5 ~@10 g1@3 ~@3 d2@3 g1@10 ~@2 e1@5 ~@4 b1@3 e1@5 ~@10 g1@3 ~@3 d2@3 g1@10 ~@2 e1@5 ~@4 b1@3 e1@5 ~@7 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 d2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@3 c2@5 ~@8]/8",
U: "~@11 f1@5 ~@8", V: "c2@11 ~ f1@5 ~@7", W: "~ c2@11 ~ f1@5 ~@6",
X: "[~@2 c2@11 ~@2 f1@5 ~ f1@5 ~@4 c2@8 ~ g1@5 ~@4]/2", Y: "~@4 d2@11 ~@2 g1@5 ~@2", Z: "~@5 d2@11 ~@2 g1@5 ~",
AA: "~@6 d2@11 ~@5 c2@2", AB: "~ c2@5 ~@5 e2@3 e2@5 ~ f1@4",
AC: "[~@8 c2@11 ~@2 f1@5 ~@8 c2@11 ~ f1@5 ~@8 c2@11 ~@2]/3", AD: "f1@8 ~ f1@6 f1@3 a1@3 a#1@3", AE: "c2!8",
AF: "d2!8", AG: "d2@5 ~ d2@5 ~ d2@10 ~@2", AH: "f1@5 ~@4 a1@3 ~@6 c2@5 ~", AI: "~@6 c2@5 ~@4 e2@8 ~",
AJ: "g1@5 ~@4 b1@3 ~@6 d2@5 ~", AK: "~@6 d1@5 ~@4 e1@8 ~", AL: "~ d2!7", AM: "e1@5 ~@7 e1@5 ~@7",
AN: "~@3 g1@3 ~@3 d2@3 g1@10 ~@2", AO: "e1@5 ~@4 b1@3 e1@5 ~@7", AP: "c2@8 ~ e1@3 ~@3 g1@6 a1@3", AQ: "c2@5 ~@19",
AR: "f1@5 ~@7 c2@10 ~@2", AS: "f1@5 ~ f1@5 ~@4 c2@8 ~", AT: "g1@5 ~@7 d2@10 ~@2", AU: "~@3 c2@3 c2@5 ~@4 e2@3 e2@5 ~",
AV: "f1@8 ~ f1@3 f1@5 ~ a1@3 a#1@3",
})).s("gm_fretless_bass").gain(0.56)
// chords · distortion guitar · "ROCK GUITAR"
const distortion_guitar = note(`<
A@2 B@2 C@2 D@4 E@2 F@3 G@2 H I@2 J@3 K L@3 M@6 N@5 O@2 P Q@4 R@3 S T@4 U@3 V W@4 X@3 Y Z AA AB AC AD AE AF AG AH@4 AI
AJ@2 AK@2 ~@8 AL AM AL AN AO AP@2 AQ ~@28 AR AS AT@2 AU AV AW@2 AR AS AT@2 ~@3
>`.pickRestart({
A: "[~@22 [d3,a3,d4]@5 ~ [d3,a3]@3 g3@3 [a3,d4]@3 g3@3 e3@3 d3@3 ~@2]/2", // D5
B: "[~ [g3,b3,d4]@3 ~@3 [g3,b3,d4]@13 ~@2 [d3,a3]@5 ~ [d3,a3]@3 g3@3 [a3,d4]@3 g3@3 e3@3 d3@3 ~@2]/2", // G D5
C: "[~ [d3,g3,b3]@3 ~@9 [d3,g3,b3]@3 ~@6 [d3,a3]@5 ~ [d3,a3]@3 g3@3 [a3,d4]@3 g3@3 e3@3 d3@3 ~@2]/2", // G D5
D: "[~ [c#4,f4]@3 [d4,d#4,f#4,g4] [e4,g#4] [f4,a4] [d4,f#4,b4]@13 ~@2 [g3,c4,e4]@8 ~ [c4,f4,a4]@3 ~@3 [a3,c4,f4]@6 [a3,c4,f4]@3 [g3,c4,e4]@5 ~@19 [a3,b3,e4]@5 ~@7 [a3,b3,e4]@6 ~@8, ~@7 a#4 ~@88]/4", // C# D#maj7 E F Bm C F C …
E: "[~ [b3,d4,g4]@3 ~@3 [b3,d4,g4]@9 ~@6 [a3,b3,e4]@5 ~@7 [a3,b3,e4]@3 ~@11]/2", // G Asus2
F: "[~ [g3,b3,d4]@9 ~@12 [b3,e4,a4]@5 ~@7 [b3,e4,a4]@3 ~@4 [c4,f4,a#4]@2 [d4,f#4,b4]@8 ~ [d4,f#4,b4]@3 [d4,f#4,b4]@3 [d4,f#4,b4]@3 [d4,f#4,b4]@3 [d4,f#4,b4]@3 [c4,f4,a4]@3 [c4,f4,a4]@2, ~@20 [b3,e4,a4] ~@15]/3", // G Esus4 Fsus4 Bm F Esus4
G: "[~ [c4,e4,g4]@6 [c4,f4,a4]@3 ~@3 [c4,f4,a4]@3 ~@3 [c4,f4,a4]@3 [c4,e4,g4]@5 ~@19 [b3,e4,a4]@2]/2", // C F C Esus4
H: "~@10 [b3,e4,a4]@3 ~@11", I: "[~ [b3,d4,g4]@3 ~@3 [b3,d4,g4]@9 ~@6 [b3,e4,a4]@5 ~@7 [b3,e4,a4]@3 ~@11]/2",
J: "[~ [b3,d4,g4]@9 ~@12 [a3,b3,e4]@5 ~@7 [a3,b3,e4]@3 [b3,c4,c#4,f4,f#4] ~ [c4,d4,d#4,g4] [c#4,e4,g#4] [c#4,f4,a4] [d4,f4,a#4] [d4,f#4,b4]@8 ~ [b3,d4,f#4]@3 [b3,d4,f#4]@3 [b3,d4,f#4]@3 ~@6 [c4,f4,a4]@5]/3", // G Asus2 Bsus2 Cm C#m C#aug A# Bm …
K: "~ [c4,e4,g4]@6 [c4,f4,a4]@3 ~@3 [c4,f4,a4]@3 ~@3 [c4,f4,a4]@3 [c4,e4,g4]@2", // C F C
L: "[~@22 f3@6 ~@6 c4@13 f3@6 ~@7 c4@12]/3",
M: "[f3@6 ~@7 c4@13 ~@9 [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@3 g3@6 ~@7 d4@12 g3@6 ~@7 d4@13 g3@6 ~@6 d4@13 ~@3 [g3,c4,e4]@3 [g3,c4,e4]@6 ~@4 [g3,b3,d4]@2]/6", // G C G
N: "[~ [g3,b3,d4]@6 f3@6 ~@6 c4@13 f3@6 ~@6 c4@13 f3@6 ~@7 c4@13 ~@9 [f3,a3,c4]@3 [f3,a3,c4]@3 [f3,a3,c4]@3 [f3,a3,c4]@3 [f3,a3,c4]@3 [a3,c4,f4]@3 ~@6 [g3,c4,e4]@3 ~]/5", // G F C
O: "[~@5 [a3,c4,f4]@9 [g3,c4,e4]@3 ~@3 [d4,g4]@3 [d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@3 [b3,d4,g4]@8 ~ [a3,d4,f#4]@3 ~]/2", // F C G5 G D
P: "~@5 [b3,d4,g4]@9 [a3,d4,f#4]@3 ~@7", // G D
Q: "[~@11 [d3,a3]@5 ~ [a3,d4]@3 g3@3 [a3,d4]@3 g3@3 e3@3 d3@3 ~@3 [g3,b3]@3 ~@3 [g3,b3]@13 ~@2 [a3,d4]@5 ~ [a3,d4]@3 g3@3 [a3,d4]@3 g3@3 e3@3 d3@3 ~@3 [d3,g3,b3]@3 ~@7]/4", // D5 G D5 G
R: "[~@2 [d3,g3,b3]@3 ~@6 [d3,a3]@5 ~ [d3,a3]@3 g3@3 [a3,d4]@3 g3@3 e3@3 d3@3 ~@3 [c#4,f4]@3 [d4,f#4] [d#4,e4,g4,g#4] [f4,a4] [d4,f#4,b4]@13 ~@2 [g3,c4,e4]@8 ~ [a3,c4,f4]@3 ~, ~@44 a#4 ~@27]/3", // G D5 C# D Emaj7 F Bm C …
S: "~@2 [a3,c4,f4]@6 [a3,c4,f4]@3 [g3,c4,e4]@5 ~@8", // F C
T: "[~@11 [a3,b3,e4]@5 ~@7 [a3,b3,e4]@3 ~@12 [b3,d4,g4]@3 ~@3 [b3,d4,g4]@8 ~@7 [a3,b3,e4]@5 ~@7 [a3,b3,e4]@3 ~@12 [b3,d4,g4]@8 ~@2]/4", // Asus2 G Asus2 G
U: "[~@11 [b3,e4,a4]@5 ~ [b3,e4,a4]@3 [b3,e4,a4]@3 [b3,e4,a4]@3 ~@6 [d4,f#4,b4]@8 ~ [d4,f#4,b4]@3 [d4,f#4,b4]@3 [d4,f#4,b4]@3 a4@3 g4@3 [c4,f4,a4]@3 [c4,f4,a4]@3 [c4,e4,g4]@6 [c4,f4,a4]@3 ~]/3", // Esus4 Bm F C F
V: "~@2 [c4,f4,a4]@3 ~@3 [c4,f4,a4]@3 [c4,e4,g4]@5 ~@8", // F C
W: "[~@11 [b3,e4,a4]@3 ~@9 [b3,e4,a4]@3 ~@12 [b3,d4,g4]@3 ~@3 [b3,d4,g4]@9 ~@6 [b3,e4,a4]@5 ~@7 [b3,e4,a4]@3 ~@12 [b3,d4,g4]@9 ~]/4", // Esus4 G Esus4 G
X: "[~@11 [a3,b3,e4]@5 ~@7 [a3,b3,e4]@3 [b3,c4,f4] [c#4,f#4] [c4,d4,g4] [c#4,d#4,e4,g#4] [c#4,f4,a4] [d4,f4,a#4] [d4,f#4,b4]@8 ~ [b3,d4,f#4]@3 [b3,d4,f#4]@3 [b3,d4,f#4]@3 ~@6 [c4,f4,a4]@6 [c4,e4,g4]@6 [c4,f4,a4]@3 ~]/3", // Asus2 F F#5 Csus2 C#m C#aug A# Bm …
Y: "~@2 [c4,f4,a4]@3 ~@3 [c4,f4,a4]@3 [c4,e4,g4]@3 ~@10", Z: "~@11 f3@6 ~@7", AA: "c4@2 f3 ~", AB: "~ c4@12 f3@6 ~@5",
AC: "~@2 c4@13 ~@9", AD: "[b3,d4,g4]!5 g3@2 ~", AE: "~@4 d4@13 g3@6 ~", AF: "~@5 d4@13 g3@6",
AG: "~@6 d4@13 ~@3 [g3,c4,e4]@2", // C
AH: "[~ [g3,c4,e4]@6 ~@4 [g3,b3,d4]@3 [g3,b3,d4]@6 f3@6 ~@6 c4@13 f3@6 ~@7 c4@12 f3@6 ~@7 c4@13]/4", // C G
AI: "~@3 [f3,a3,c4]!5", AJ: "[[a3,c4,f4] ~@2 [g3,c4,e4] ~@2 [a3,c4,f4]@3 [g3,c4,e4] ~ [d4,g4]!2 [b3,d4,g4]!3]/2",
AK: "[[b3,d4,g4]@8 ~ [a3,d4,f#4]@3 ~@6 [b3,d4,g4]@9 [a3,d4,f#4]@3 ~@18]/2", AL: "[a3,b3,e4]!2 ~@2 [a3,b3,e4] ~@3",
AM: "~ [b3,d4,g4] ~@2 [b3,d4,g4]@3 ~", AN: "~ [b3,d4,g4]@3 ~@4", AO: "[b3,e4,g4]!2 ~ [b3,e4,g4]@3 ~@2",
AP: "[[a3,d4,f#4]!2 ~ [a3,d4,f#4] ~ [a3,d4,f#4] ~ [c4,e4,g4]@2 [c4,e4,g4] ~ [c4,f4,a4] ~ [c4,f4,a4]@2 [c4,f4,a4]]/2", // D C F
AQ: "[c4,e4,g4] ~@7", AR: "f3 ~@3 c4@4", AS: "f3@3 ~ b3@2 c4@2", AT: "[d4@2 c4 ~ b3 c4 b3@5 ~@5]/2", AU: "g3 ~ d4@2",
AV: "g3 ~ b3 c4", AW: "[d4@2 c4 ~ b3 c4 b3@6 ~@4]/2",
})).s("gm_distortion_guitar").gain(0.48).pan(1)
// drums · kick
const kick = s("bd").struct(`<
A ~ B ~ C ~ A ~ A D B D B D E F A D B D B G H@2 A I J K L M N O P Q R S T U@4 V W X Y Z ~ X ~ AA AB AA AB@4 X AA AB AA
AB AA AC U@2 AD AE AF AG AH AI AJ AK AL AM AN AO AP@5 AQ AR AQ AR AQ AR AQ AS AT AU AT AU@4 AV ~@11 AW AP@2 AX@11 AY
AP@2 AX@11 AY AP@2 ~
>`.pickRestart({
A: "~@11 x", B: "~ x ~@5 x ~@14 x ~", C: "~ x ~@11 x ~@8 x ~", D: "~@5 x ~@6", E: "~ x ~@4", F: "~ x ~@20 x ~",
G: "~@5 x ~@5 x", H: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", I: "~@10 x ~@12 x", J: "~ x",
K: "x ~@12 x ~@10", L: "~ x ~@10", M: "~@2 x ~@9 x ~@2 x ~@8", N: "~@3 x ~@3 x ~@5 x ~@2 x ~@7",
O: "~@5 x ~@8 x ~@2 x ~@6", P: "~@3 x ~@2 x ~@4 x", Q: "~ x ~@5 x ~@11 x ~@4", R: "~@8 x ~@2 x ~@5 x ~@2 x ~@3",
S: "~@9 x ~@12 x ~", T: "~@10 x ~@9 x ~@2 x", U: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x",
V: "~@2 x ~@2 x ~@2 x ~@2 x ~@12", W: "~@7 x ~@2 x ~", X: "~@11 x ~@12", Y: "~@7 x ~@4", Z: "~@2 x ~@8 x ~@12",
AA: "~@11 x ~@8 x ~@2 x", AB: "~@11 x ~@2 x ~@5 x ~@2 x", AC: "~@11 x ~@2 x ~@2 x ~@2 x ~@2 x",
AD: "~@2 x ~@2 x ~@2 x ~@2 x ~@8 x ~@3", AE: "x ~@5 x ~@4 x", AF: "~ x ~@11 x ~@9 x", AG: "~@2 x ~@12 x ~@8",
AH: "x!6 ~@2", AI: "~ x ~@2 x ~@12 x ~@6", AJ: "~@2 x ~@2 x ~@12 x ~@5", AK: "~@3 x ~@2 x ~@15 x ~",
AL: "~ x ~@9 x ~@8 x ~@3", AM: "~@5 x ~@2 x ~@12 x ~@2", AN: "~@3 x ~ x ~@5 x", AO: "~ x ~@6 x ~@2 x ~@12", AP: "x!8",
AQ: "x ~@2 x ~@2 x ~", AR: "~@2 x ~@2 x ~@2", AS: "~ x!7", AT: "x ~@2 x!2 ~@3", AU: "x!2 ~ x!2 ~@3", AV: "x",
AW: "~@5 x!3", AX: "x!2", AY: "x ~@3 x ~ x!2",
})).gain(0.72)
// drums · rim
// … 95 more lines
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.