0:00/0:00
// Stiletto — Billy Joel
// 100 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 52, 4/4 at bar 53) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 125 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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.
// other · alto sax
const alto_sax = note("<A B@2 C@5 ~@51 D E@2 F G E@2 F H@2 ~@25 I J@3 K@4 ~@23>".pickRestart({
A: "~@15 d3",
B: "[~ [f3,g3] [bb3,c4] d4@5 d4@2 d4@9 d4@2 ~ d4@4 e4@2 ~ f4@12 d4@4 d4@2 ~ d4@9 d4@2 db4 d4@4, ~@41 db4 ~@22]/2", // Fsus2 Bbsus2
C: "[e4@2 f4@9 ~ [f3,g3] bb3 d4@5 d4@2 d4@9 ~ d4@2 d4@5 e4@4 f4@19 e4@19 d4@52 ~@28, ~@14 c4 ~@145]/5", // Fsus2
D: "~@8 f4@4 d4@3 d4", E: "d4@3 d4 d4@2 e4 f4@5 d4@3 d4", F: "d4@3 d4 d4@2 e4@2 f4@8", G: "e4@8 f4@4 d4@3 d4",
H: "[e4@4 d4@9 ~@3]/2", I: "~@21 d3@2 e3 [g3,a3] d4@5 d4@2, ~@25 bb3 ~@6",
J: "[~ d4@9 d4@2 d4@5 e4@2 f4@12 d4@5 d4@2 d4@9 ~ d4@2 d4@5 e4@2 f4@12 d4@4 d4@2 ~ d4@9 d4@2 ~ d4@4 e4@4]/3",
K: "[~ f4@19 e4@19 d4@60 ~@29]/4",
})).s("gm_alto_sax").gain(0.57).pan(0.3)
// chords · piano · "Acc Piano"
const piano = note(`<
A@7 B@4 C D C E F G H I J K L M N O P@2 Q R S@2 T U F G H I J K L M N O P@2 Q R S@2 T V W X Y Z AA AB AC AD AE AF AG
AH AI AF AG AH AJ@2 B@3 AK C AL C AM AN@2 AO AP AQ@2 AR AS@3 AT AU AV@2 AW AX AY AZ@4 BA@8 BB@8 BC@8 BD@3
>`.pickRestart({
A: "[~@25 [f3,a3,d4]@28 ~ [e3,g3]@9 [f3,bb3,d4]@28 [e3,a3]@9 ~ [f3,b3,d4]@37 [f3,bb3,d4,f4]@19 [g3,db4,e4]@19 [f3,bb3,d4]@46 eb2@2, ~@22 bb2@5 ~]/7", // Dm Em Bb A5 Bdim Bb Dbdim Bb
B: "f2@2 f2@2 ~@3 eb2 f2@2 f2@2 ~@3 eb2",
C: "[ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~, f2@2 f2@2 ~@3 eb2 f2@2 f2@2 ~@3 eb2", // Ab Adim Ab Adim
D: "[ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [g4,bb4,d5,g5] ~ [f4,bb4,d5,f5] ~ [f4,bb4,d5,f5] ~ [f4,bb4,d5,f5] ~, f2@2 f2@2 ~@3 eb2 f2@2 f2@2 ~@3 eb2", // Ab Adim Ab Adim Gm Bb
E: "[ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [g4,bb4,d5,g5] ~ [f4,bb4,d5,f5] ~@3 [eb2,eb4]@2, f2@2 f2@2 ~@3 eb2 f2@2 f2@2 ~@4", // Ab Adim Ab Adim Gm Bb Eb
F: "[f2,a3,c4,f4]@2 [a3,c4,f4]!2 ~@3 eb4 [eb2,g3,bb3,f4]@2 [g3,bb3,f4]!2 ~@3 c4, ~ f2 ~@3 eb2 ~@2", // F Eb Gm7
G: "[d3,f3,a3,d4]@2 [d3,f3,a3,d4]@2 [c3,c4]@2 d4 c4 bb3@2 [f3,bb3,d4] ~@2 [g3,bb3,eb4]@2 c4, ~@3 bb2@5, ~@3 f3@2 ~@3", // Dm C Bb Eb
H: "[a3,c4,d4] [a3,c4,eb4] [a2,a3,c4,eb4]@2 [a3,c4,eb4]@2 c4!2 [d3,f3,a3,d4]@2 [f3,a3,d4] [f3,a3,d4]@3 g3!2, a2 ~@4 d3 ~@2", // D7 Adim Dm
I: "[bb2,g3]@3 f3 [d3,f3,a3,d4]@3 c4 [e3,g3,c4]@4 ~ c4 d4 [a3,c4,f4], ~ c3", // Eb Dm C F
J: "~ c5 d5 f5 ~ c4 d4 [g3,bb3,f4] ~ c5 d5 f5 ~@2 c4 d4, f2!2 ~@2 eb2!2 ~@2", // Gm7
K: "[d3,f3,a3,d4]@2 [d3,f3,a3,d4]@2 c3@2 ~ c4 d4 c4 bb3@4 d4!2, ~ [f3,a3,d4] f3 ~, ~@3 bb2@5", // Dm
L: "[a2,a3,c4,eb4]@2 [a2,a3,c4,eb4]@2 [a3,c4,eb4] [a3,c4,d4]!3 [d2,a3,d4]@2 [d2,a3,d4,f4]@2 [a3,d4,f4] a3!3", // Adim D7 D5 Dm
M: "g3@2 f3@2 [d3,f3,a3,d4]@3 c4 [c3,e3,g3,c4]@8, bb2 ~@3", // Dm C
N: "[f3,a3,d4]@2 [f3,a3,d4]@2 [g4,d5]@2 [f4,d5] ~@3 [d4,f4,a4] ~@3 f3@2, d2@4 d2@3 [f4,d5]@3 ~ [d4,f4,a4]@3 ~@2, ~@2 d2!2", // Dm G5 Dm
O: "[g3,db4,e4]@2 ~@6 d2@4 ~ [g3,db4,e4]@3, d2!2 ~ d2, ~@2 [g3,db4,e4]@4 [g3,db4,e4]@7 ~@3", // Dbdim
P: "[[f3,a3,bb3,d4]@2 [f3,a3,bb3,d4]@2 [g4,d5]@2 [f4,d5]@2 [f4,d5] d4@3 a3@2 f3 ~ e3@2 [e3,g3,b3,d4]@2 [e3,g3,b3,d4]@2 [e3,g3,b3,d4]@2 [eb3,g3,bb3,eb4]@2 [eb3,g3,bb3,eb4]@2 [eb3,g3,bb3,eb4] [a2,g3,db4,e4]@3, bb2@4 bb2@4 bb2@4 bb2@3 [g3,b3,d4]@3 ~@14]/2", // Bbmaj7 G5 Dm Em7 Eb A7 G
Q: "[a3,d4,f4]!2 [f4,a4] [d4,f4]!2 c4 a3 f3, d2!4", // Dm F Dm
R: "[g3,db4,e4]@2 ~@6 d3@4 d3 db3@3, d2!2 ~@2, ~ [g3,db4,e4]@2 [g3,db4,e4]@5", // Dbdim
S: "[[g3,c4,eb4]@2 [g3,c4,eb4]@2 [g4,c5] f4@3 f4 d4@3 g3@2 f3 ~ b2@2 b2@2 b2@2 b2@2 bb2@2 bb2@2 bb2@2 bb2@2, c3@4 c3@4 c3@4 c3@3 [g3,b3,d4]@9 [g3,bb3,d4]@8]/2", // Cm C5 G Gm
T: "[c3,d4,f4]!4 [c3,bb3,d4,f4]!4", // Dm7 Bb
U: "[c3,bb3,d4,f4]@2 [c3,bb3,d4,f4]@2 [c3,bb3,d4,f4]@2 [c3,bb3,d4,f4]@2 [c3,bb3,d4,f4]@2 [c3,bb3,d4,f4]@2 [c3,bb3,d4,f4]@2 ~ eb4, ~@7 c3", // Bb
V: "[c3,bb3,d4,f4]@2 [c3,bb3,d4,f4]@2 [c3,bb3,d4,f4]@2 d4 ~ c3@2 [c3,d4,ab4]@2 [c3,d4,g4]@2 [c3,d4,f4]@2, ~@3 c3 ~@4, ~@7 f4@3 ~@6", // Bb Dm7b5 Csus2 Dm7
W: "[f2,a3,c4,f4]@2 ~@7 f2 ~ a2 ~ bb2 ~ d3", X: "~ g2 ~ b2 ~ c3 ~ e3 ~ a2 ~ db3 ~ d3 ~ c3",
Y: "~ bb2 ~ d3 ~ c3 ~ [e2,ab3] a3 [f2,f3,c4,f4] ~ a2 [g3,bb3,d4,f4] bb2 ~ [d3,bb3]", // E F5 Gm7 Gm
Z: "b3 [g2,g3,d4,g4] ~ b2 [g3,c4,e4,g4] [c3,g3,c4,e4,g4] ~ [e3,c4] db4 [a2,a3,e4,a4] ~ db3 [a3,d4,f4,a4] d3 ~ c3", // G5 C A5 Dm
AA: "[d4,f4,bb4] [bb2,d4,f4,bb4] [d4,f4,bb4] [d4,f4,a4]@2 [c4,e4,g4]@2 [e2,ab3] a3 [f2,f3,a3,c4,f4] [f3,a3,c4,f4] [a2,f3,a3,c4,f4] [f3,a3,c4,f4] [bb2,f3,bb3,d4,f4] [f3,bb3,d4,f4] [d3,f3,bb3,d4,f4], ~@3 d3 ~ c3 ~@10", // Bb Dm C E F Bb
AB: "~ [g2,g3,b3,d4,g4] [g3,b3,d4,g4] [b2,g3,b3,d4,g4] [g3,b3,d4,g4] [c3,g3,c4,e4,g4] [g3,c4,e4,g4] [e3,g3,c4,e4,g4] ~ [a2,a3,db4,e4,a4] [a3,db4,e4,a4] [db3,a3,db4,e4,a4] [a3,db4,e4,a4] [d3,a3,d4,f4,a4] [a3,d4,f4,a4] [c3,a3,d4,f4,a4]", // G C A Dm Dm7
AC: "[d4,f4,bb4] [bb2,d4,f4,bb4] [d4,f4,bb4] [c4,f4,a4]@2 [c4,e4,g4]@2 [e2,ab4] a4 [c4,f4,c5]@2 [d4,f4,bb4,d5]@2 [bb2,a4] bb4 [d3,b4], ~@3 d3 ~ c3 ~@3 f2 ~ a2 ~@4", // Bb F C E F5 Bb Bbmaj7 G
AD: "[d5,g5]@2 [g2,g4]@2 [d5,f5]@2 [b2,g4]@2 ~@2 [c3,g4,c5,e5]@2 ~@2 b4 c5 db5@2 [a4,e5,a5]@4 [db3,a4]@2 [d5,f5]@2 [d3,a4]@2 [c5,eb5]@2 [c3,g4]@2, ~@7 e3 ~ a2 ~@6", // G5 G Dm Em C A5 Gbm Dm …
AE: "bb4 [bb2,f4] [bb4,d5] [d3,a4] [c5,e5] [c3,g4] [db5,a5] [db3,a4] ~ d3 ~ d3 ~ d3 ~ [d3,d4,f4,a4,d5], ~@8 [f4,a4,d5,f5]@4 [d4,f4,a4,d5]@3 ~", // Bb5 Bb D5 C C5 Gbm Dm
AF: "~ d3 ~ [d3,d4,f4,a4,d5] ~ d3 [e4,e5] c3 ~ bb2 ~ bb2 ~ bb2 ~ [bb2,d4,f4,bb4,d5], [d4,f4,a4,d5]@3 ~ [d4,f4,a4,d5]@2 ~ [f4,bb4,d5,f5]@5 [d4,f4,bb4,d5]@3 ~", // Dm E Bb Dm Bb
AG: "~ bb2 ~ [bb2,d4,f4,bb4,d5] ~ bb2 [e4,e5] a2 ~ g2 ~ g2 ~ g2 ~ [g2,d4,f4,b4,d5], [d4,f4,bb4,d5]@3 ~ [d4,f4,bb4,d5]@2 ~ [f4,b4,d5,f5]@5 [d4,f4,b4,d5]@3 ~", // Bb E G7 Bb Bdim
AH: "~ g2 ~ [g2,d4,f4,b4,d5] ~ g2 ~ g2 ~ a2 ~ a2 ~ a2 ~ a2, [d4,f4,b4,d5]@3 ~ [d4,f4,a4,d5]@2 [e4,e5]@2 [f4,a4,d5,f5]@8", // G7 Bdim Dm E Dm
AI: "~ a2 ~ a2 ~ a2 ~ a2 ~ d3 ~ d3 ~ d3 ~ [d3,d4,f4,a4,d5], [e4,a4,db5,e5]@8 [f4,a4,d5,f5]@4 [d4,f4,a4,d5]@3 ~", // Dm A Dm
AJ: "[~ a2 ~ a2 ~ a2 ~ a2 f2@2 f2@2 ~@3 eb2 f2@2 f2@2 ~@3 eb2 f2@2 f2@2 ~@3 eb2, [e4,a4,db5,e5]@4 d5@9 ~@3, ~ [d4,f4,bb4]@2 ~]/2", // A Bb
AK: "f2@4 f2@4 ~@6 eb2@2 [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~, ~@8 f2@2 f2@2 ~@3 eb2", // Ab Adim
AL: "[ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [g4,bb4,d5,g5] ~ [f4,bb4,d5,f5] ~ [f4,bb4,d5,f5] ~ [f4,bb4,d5,f5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~, f2@2 f2@2 ~@3 eb2 f2@2 f2@2 ~@3 eb2", // Ab Adim Gm Bb Ab Adim
AM: "[ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [g4,bb4,d5,g5] ~ [f4,bb4,d5,f5] ~@3 [eb2,eb4]@2 [f2,a3,c4,f4]@4 [a3,c4,f4]@2 [a3,c4,f4]@2 ~@6 eb4@2, f2!2 ~@3 f2 ~@2", // Ab Adim Gm Bb Eb F
AN: "[[eb2,g3,bb3,f4]@2 [g3,bb3,f4]!2 ~@3 c4 [d3,f3,a3,d4]@2 [d3,f3,a3,d4]@2 [c3,c4]@2 d4 c4 bb3@2 [f3,bb3,d4] ~@2 [g3,bb3,eb4]@2 c4 [a3,c4,d4] [a3,c4,eb4] [a2,a3,c4,eb4]@2 [a3,c4,eb4]@2 c4!2, ~ eb2 ~@5 bb2@5 a2 ~@3, ~@7 f3@2 ~@7]/2", // Eb Gm7 Dm C Bb Eb D7 Adim
AO: "[d3,f3,a3,d4]@2 [f3,a3,d4] [f3,a3,d4]@3 g3!2 [bb2,g3]@3 f3 [d3,f3,a3,d4]@3 c4, ~ d3 ~@6", // Dm Eb Dm
AP: "[e3,g3,c4]@4 ~ c4 d4 [a3,c4,f4] ~ c5 d5 f5 ~ c4 d4 [g3,bb3,f4], c3@4 f2!2 ~@2", // C F Gm7
AQ: "[~ c5 d5 f5 ~@2 c4 d4 [d3,f3,a3,d4]@2 [d3,f3,a3,d4]@2 c3@2 ~ c4 d4 c4 bb3@4 d4!2 [a2,a3,c4,eb4]@2 [a2,a3,c4,eb4]@2 [a3,c4,eb4] [a3,c4,d4]!3, eb2!2 ~@4 [f3,a3,d4]@2 f3@2 ~@6, ~@7 bb2@5 ~@4]/2", // Dm Adim D7 Dm
AR: "[d2,a3,d4]@2 [d2,a3,d4,f4]@2 [a3,d4,f4] a3!3 g3@2 f3@2 [d3,f3,a3,d4]@3 c4, ~@2 bb2 ~", // D5 Dm
AS: "[[c3,e3,g3,c4]@8 [f3,a3,d4]@2 [f3,a3,d4]@2 [g4,d5]@2 [f4,d5] ~@3 [d4,f4,a4] ~@3 f3@2 [g3,db4,e4]@2 ~@6 d2@4 ~ [g3,db4,e4]@3 [f3,a3,bb3,d4]@2 [f3,a3,bb3,d4]@2 [g4,d5]@2 [f4,d5]@2, ~@8 d2@4 d2@3 [f4,d5]@3 ~ [d4,f4,a4]@3 ~@4 [g3,db4,e4]@4 [g3,db4,e4]@7 ~@11, ~@4 d2!4 ~ d2 bb2!2]/3", // C Dm G5 Dm Dbdim Bbmaj7 G5 Dm …
AT: "[f4,d5] d4@3 a3@2 f3 ~ e3@2 [e3,g3,b3,d4]@2 [e3,g3,b3,d4]@2 [e3,g3,b3,d4]@2, bb2@4 bb2@3 [g3,b3,d4]@3 ~@6", // Dm Em7 G
AU: "[eb3,g3,bb3,eb4]@2 [eb3,g3,bb3,eb4]@2 [eb3,g3,bb3,eb4] [a2,g3,db4,e4]@3 [a3,d4,f4]@2 [a3,d4,f4]@2 [f4,a4]@2 [d4,f4]@2, ~@2 d2!2", // Eb A7 Dm F Dm
AV: "[[d4,f4]@2 c4@2 a3@2 f3@2 [g3,db4,e4]@2 ~@6 d3@4 d3 db3@3 [g3,c4,eb4]@2 [g3,c4,eb4]@2 [g4,c5] f4@3, d2!4 ~@4, ~@5 [g3,db4,e4]@2 [g3,db4,e4]@5 c3@2 c3@2]/2", // Dm Dbdim Cm C5 Dbdim
AW: "f4 d4@3 g3@2 f3 ~ b2@2 b2@2 b2@2 b2@2, c3@4 c3@3 [g3,b3,d4]@9", AX: "bb2!4 [c3,d4,f4]!4, [g3,bb3,d4] ~",
AY: "[c3,bb3,d4,f4]!4 c3!4, ~@2 [d4,f4,bb4] [f4,bb4,d5]", // Bb
AZ: "[c3@4 c3@4 c3@4 c3@4 [f3,a3,d4]@28 [c4,e4]@9 ~ [bb3,d4]@28 [a3,c4]@9 [g3,b3]@37, [f4,bb4,d5,f5]@8 d3@19 ~@37]/4", // Dm C Bb Am G Bb
BA: "[~ [g3,a3,d4,f4]@19 [e3,g3,db4,e4]@19 [f3,bb3,d4]@54 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2, ~@39 bb2@48 ~@169]/8", // Dm Dbdim Bb
BB: "[~@3 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [g4,bb4,d5,g5] ~ [f4,bb4,d5,f5] ~ [f4,bb4,d5,f5] ~ [f4,bb4,d5,f5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [g4,bb4,d5,g5] ~ [f4,bb4,d5,f5] ~ [f4,bb4,d5,f5] ~ [f4,bb4,d5,f5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [f2,ab4,c5,eb5,ab5], ~@95 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 ~]/8", // Ab Adim Ab Adim Ab Adim Ab Adim …
BC: "[~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [g4,bb4,d5,g5] ~ [f4,bb4,d5,f5] ~ [f4,bb4,d5,f5] ~ [f4,bb4,d5,f5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [g4,bb4,d5,g5] ~ [f4,bb4,d5,f5] ~ [f4,bb4,d5,f5] ~ [f4,bb4,d5,f5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [g4,bb4,d5,g5] ~ [f4,bb4,d5,f5] ~ [f4,bb4,d5,f5] ~ [f4,bb4,d5,f5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [g4,bb4,d5,g5] ~ [f4,bb4,d5,f5] ~ [f4,bb4,d5,f5] ~ [f4,bb4,d5,f5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [f2,ab4,c5,eb5,ab5], ~@3 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 ~]/8", // Adim Ab Adim Gm Bb Ab Adim Ab …
BD: "[~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [g4,bb4,d5,g5] ~ [f4,bb4,d5,f5] ~ [f4,bb4,d5,f5] ~ [f4,bb4,d5,f5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [ab4,c5,eb5,ab5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [a4,c5,eb5,a5] ~ [g4,bb4,d5,g5] ~ [f4,bb4,d5,f5] ~ [f4,bb4,d5,f5] ~ [f4,bb4,d5,f5] ~@2, ~@3 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 f2@4 f2@4 ~@6 eb2@2 ~]/3", // Adim Ab Adim Gm Bb Ab Adim Ab …
})).s("gm_piano").gain(0.52).pan(0.6)
// bass · electric bass finger · "Fingered E Bass"
const bass = note(`<
A@7 B@8 C D E F C D G F H@2 I J H K L M N@2 C D E F C D G F H@2 I J H K L M N@2 O P Q P Q P Q P R S T U V S T U W B@8
X Y@2 Z AA Y@2 AB AC H AD AE AF H AG AH AI N AJ@2 ~@2 AK@8 AL@16 AM@3
>`.pickRestart({
A: "[~@25 d2@28 ~ c2@9 bb1@28 a1@9 ~ g1@37 a1@19 a1@19 bb1@40 ~@6 eb1@2]/7", B: "f1 ~ f1@2 ~@3 eb1 f1 ~ f1@2 ~@3 eb1",
C: "f1 ~ f1@2 ~@4 eb1 ~ eb1@2 ~@4", D: "d2 ~ d2@2 c2 ~ bb1@10", E: "a1 ~ a1@2 ~@4 d2 ~ d2@2 ~@4", F: "bb1 d2 c2@2",
G: "a1 ~ a1@2 ~@4 d1 ~ d1@2 ~@4", H: "d1@5 ~@3 d1@5 ~@3 d1@5 ~@3 d1@5 ~@3",
I: "bb1@5 ~@3 bb1@5 ~@3 bb1@5 ~@3 bb1@5 ~@3", J: "e2@3 ~ e2@3 ~ e2@3 ~ e2@3 ~ eb2@3 ~ eb2@3 ~ eb2@2 a1@6",
K: "d1@5 ~@3 d1@5 ~@3 d2@5 ~@3 d2@2 db2@6", L: "c2@5 ~@3 c2@5 ~@3 c2@5 ~@3 c2@5 ~@3",
M: "b1@3 ~ b1@3 ~ b1@3 ~ b1@3 ~ bb1@3 ~ bb1@3 ~ bb1@3 ~ bb1@3 ~",
N: "c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~", O: "f1 ~@3 f1 a1 bb1 d2", P: "g1 b1 c2 e2 a1 db2 d2 c2",
Q: "bb1 d2 c2 e1 f1 a1 bb1 d2", R: "bb1@4 d2@4 c2@4 db2@4 d2@3 ~ d2@3 ~ d2@3 ~ d2@3 ~",
S: "d2@3 ~ d2@3 ~ d2@3 ~ c2@3 ~ bb1@3 ~ bb1@3 ~ bb1@3 ~ bb1@3 ~",
T: "bb1@3 ~ bb1@3 ~ bb1@3 ~ a1@3 ~ g1@3 ~ g1@3 ~ g1@3 ~ g1@3 ~",
U: "g1@3 ~ g1@3 ~ g1@3 ~ g1@3 ~ a1@3 ~ a1@3 ~ a1@3 ~ a1@3 ~",
V: "a1@3 ~ a1@3 ~ a1@3 ~ a1@3 ~ d2@3 ~ d2@3 ~ d2@3 ~ d2@3 ~", W: "a1@3 ~ a1@3 ~ a1@3 ~ a1@3 ~ f1@3 ~ f1@4 ~@6 eb1@2",
X: "f1@3 ~ f1@4 ~@6 eb1@2 f1@3 ~ f1@4 ~@8", Y: "[eb1@3 ~ eb1@4 ~@8 d2@3 ~ d2@4 c2@3 ~ bb1@20 a1@3 ~ a1@4 ~@8]/2",
Z: "d2@3 ~ d2@4 ~@8 bb1@8 d2@8", AA: "c2@16 f1@3 ~ f1@4 ~@8", AB: "d1@3 ~ d1@4 ~@8 bb1@8 d2@8",
AC: "c2@16 d1@5 ~@3 d1@5 ~@3", AD: "d1@5 ~@3 d1@5 ~@3 bb1@5 ~@3 bb1@5 ~@3",
AE: "bb1@5 ~@3 bb1@5 ~@3 e2@3 ~ e2@3 ~ e2@3 ~ e2@3 ~", AF: "eb2@3 ~ eb2@3 ~ eb2@2 a1@6 d1@5 ~@3 d1@5 ~@3",
AG: "d2@5 ~@3 d2@2 db2@6 c2@5 ~@3 c2@5 ~@3", AH: "c2@5 ~@3 c2@5 ~@3 b1@3 ~ b1@3 ~ b1@3 ~ b1@3 ~",
AI: "bb1@3 ~ bb1@3 ~ bb1@3 ~ bb1@3 ~ c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~", AJ: "[c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~ d2@33 ~@15]/2",
AK: "[~ a2@19 a1@19 bb1@48 ~@6 eb1@2 f1@3 ~ f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1]/8",
AL: "[~@3 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1]/8",
AM: "[~@3 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 f1@2 ~@2 f1@4 ~@6 eb1@2 ~]/3",
})).s("gm_electric_bass_finger").gain(0.4)
// chords · rock organ · "Rock Org"
const rock_organ = note(`<
~@12 A B C ~ D E F G H I F ~@8 J K ~ D ~ F G H I F ~@8 J K ~@23 L@2 ~@2 M N O P Q R S ~@7 T@3 ~@15 U@2 V W X@2 Y@2 U@2
Z AA@3 AB
>`.pickRestart({
A: "~@30 [f5,g5] [a5,bb5,c6]", B: "[c6,eb6,f6]@30 b5 [a5,e6], [d6,e6] ~@31", C: "[g5,c6,d6] [f5,g5,a5,b5] ~@30",
D: "~@10 [f4,bb4,d5] ~@2 [g4,bb4,eb5]@3", E: "~@11 [f4,a4,d5]@3 ~@2", F: "~ [f4,a4,d5] [e4,g4,c5]@2",
G: "~@7 [g4,bb4,f5] ~@8", H: "[f4,a4,d5]!2 [f4,a4,d5]@2 [f4,bb4,d5]@4", I: "[a4,c5,eb5]!3 ~ [a4,d5]!3 ~",
J: "g5@28 g5 a5 c6 [d6,e6], [bb5,d6]@15 bb5", K: "[bb5,d6,g6], f6 ~@31",
L: "[~@14 [f5,g5] [a5,bb5,c6] [c6,eb6,f6]@30 b5 [a5,e6] [g5,c6,d6] [f5,g5,a5,b5] ~@14, ~@16 [d6,e6] ~@47]/2", // Fsus2 Am F7 A5 Gsus4 G7 Dsus2
M: "~@2 [f4,bb4,d5] ~@2 [g4,bb4,eb5]@3 ~@8", N: "~@3 [f4,a4,d5]", O: "[e4,g4,c5]@8 ~@7 [g4,bb4,f5]",
P: "~@4 [f4,a4,d5]!2 [f4,a4,d5]@2", Q: "[f4,bb4,d5]@4 [a4,c5,eb5]!3 ~", R: "[a4,d5]!3 ~@3 [f4,a4,d5]@2",
S: "[e4,g4,c5] ~", T: "[~@16 g5@28 g5 a5 c6 [d6,e6] [bb5,d6,g6]@32 ~@16, ~@16 [bb5,d6]@30 bb5@2 f6 ~@47]/3",
U: "[~@28 f5 [g5,a5,bb5] [c6,d6,e6] [c6,eb6,f6]@30 [b5,e6] [a5,d6] [g5,a5,b5,c6]]/2", // Gm C F7 E5 D5 Cmaj7
V: "[f5,g5,a5] ~@2 [c6,eb6,f6] ~@5 [c6,eb6,f6] ~@5 [c6,eb6,f6]@14 ~@3", // F F7
W: "~@3 [c6,eb6,f6] ~@5 [c6,eb6,f6] ~@5 [c6,eb6,f6] ~@16", X: "[~@31 [c6,eb6,f6]@30 [b5,e6] [a5,d6] [g5,a5,b5,c6]]/2",
Y: "[[f5,g5,a5] ~@18 [c6,eb6,f6]@5 ~ [c6,eb6,f6] ~@5 [c6,eb6,f6]@14 ~@19]/2", // F F7
Z: "[f5,g5,a5] ~@18 [c6,eb6,f6] ~@3 [c6,eb6,f6] ~ [c6,eb6,f6] ~@5 [c6,eb6,f6]", // F F7
AA: "[~@19 [c6,eb6,f6] ~@5 [c6,eb6,f6] ~@5 [c6,eb6,f6]@10 ~@22 [c6,eb6,f6]@30 [b5,e6] [a5,d6] [g5,a5,b5,c6]]/3", // F7 E5 D5 Cmaj7
AB: "[f5,g5,a5] ~@31", // F
})).s("gm_rock_organ").gain(0.32).pan(0.3)
// chords · lead 1 square · "Square Wave"
const lead_1_square = note(`<
~@23 A B A C A B D E F ~@9 A B A C A B D E F ~@9 G@4 H@4 I@2 ~@15 J@4 K@4 L@2 ~@31
>`.pickRestart({
A: "[a4,d5,f5] [a4,d5,f5]@2 [a4,d5,f5]@5", B: "[g4,db5,e5] [g4,db5,e5]@2 [g4,db5,e5]@5",
C: "[b4,d5,g5]@2 [b4,d5,g5]@2 [b4,d5,g5]@2 [b4,d5,g5]@2 [bb4,eb5,g5]@2 [bb4,eb5,g5]@2 [bb4,eb5,g5] [db5,e5,g5]@3", // G Eb Dbdim
D: "[g4,c5,eb5] [g4,c5,eb5]@2 [g4,c5,eb5]@5", E: "[g4,b4,d5]!4 [g4,bb4,d5]!4", F: "[g4,bb4,d5]@31 ~",
G: "[~@3 [a4,d5,f5]@3 ~ [bb4,d5,f5]@3 ~ [b4,d5,f5]@3 [a4,d5,f5]@2]/4", // Dm Bb Bdim Dm
H: "[[a4,db5,e5]@8 ~@4 [a4,d5,f5]@12 ~@4 [bb4,d5,f5]@12 ~@4 b4@3 b4 b4@3 b4 a4@2 e4@2 [f4,a4,d5]@8, ~@11 [d5,f5]@3 ~@2]/4", // A Dm Bb Dm
I: "[[e4,a4,db5]@4 [f4,bb4,d5]@9 ~@3]/2", // A Bb
J: "[~@4 [a4,d5,f5] [a4,d5,f5]@2 [a4,d5,f5]@5 [g4,db5,e5] [g4,db5,e5]@2 [g4,db5,e5]@5 [a4,d5,f5] [a4,d5,f5]@2 [a4,d5,f5]@5 [b4,d5,g5]!4]/4", // Dm Dbdim Dm G
K: "[[bb4,eb5,g5]@2 [bb4,eb5,g5]@2 [bb4,eb5,g5] [db5,e5,g5]@3 [a4,d5,f5]@2 [a4,d5,f5]@4 [a4,d5,f5]@10 [g4,db5,e5]@2 [g4,db5,e5]@4 [g4,db5,e5]@10 [g4,c5,eb5]@2 [g4,c5,eb5]@4 [g4,c5,eb5]@10 [g4,b4,d5]@2 [g4,b4,d5]@2 [g4,b4,d5]@2 [g4,b4,d5]@2]/4", // Eb Dbdim Dm Dbdim Cm G
L: "[[g4,bb4,d5]@4 [g4,bb4,d5]@4 [g4,bb4,d5]@4 [g4,bb4,d5]@4 [g4,bb4,d5]@31 ~@17]/2", // Gm
})).s("gm_lead_1_square").gain(0.24).pan(0.8)
// drums · kick
const kick = s("bd").struct(`<
~@7 A B@6 C B D C E F G C H I@2 J K I L J M I N B D C E F G C H I@2 J K I L J M I N O P@7 Q R@7 G ~ S B@6 T C U V W X
T F Y I@2 Z AA I AB Z AC AD O ~@6 AE AF@6 AG AF@15 AH
>`.pickRestart({
A: "~@15 x", B: "x ~ x ~@4 x!2 ~ x ~@4 x", C: "x ~ x ~@4 x!2 ~ x ~@5", D: "x ~ x ~@5 x ~@3 x ~@2 x",
E: "x ~@2 x ~@3 x!2 ~@7", F: "x!2 ~@2 x!2 ~@2", G: "x!2 ~ x!3 ~@2", H: "x!2 ~@2 x ~@3", I: "x!4",
J: "x ~@3 x ~@3 x ~@3 x ~@2 x", K: "x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~@2", L: "x ~@3 x ~@3 x ~@3 x!2 ~@2", M: "x!8",
N: "x!4 ~@4", O: "~ x", P: "x!2", Q: "x ~@3 x!2 ~ x", R: "x!2 ~ x!3 ~ x", S: "~@7 x!2 ~ x ~@4 x",
T: "x ~ x ~@5 x ~ x ~@4 x", U: "x ~@3 x ~@2 x!2 ~ x ~@4 x", V: "x ~ x ~@5 x ~@2 x ~@3 x", W: "x ~@3 x!2 ~@2",
X: "x!2 ~@2 x!2 ~ x", Y: "x ~ x!2", Z: "x ~@3 x ~@2 x!2 ~ x ~ x ~ x ~", AA: "x ~ x ~ x!2 ~@2 x ~@3 x ~@3",
AB: "x ~@3 x!2 ~@2 x ~@3 x ~@3", AC: "x!5 ~ x ~", AD: "x ~ x ~ x!4", AE: "~@29 x ~ x",
AF: "~@3 x ~@9 x ~ x ~@3 x ~@9 x ~ x", AG: "~@3 x ~@9 x ~ x ~@3 x ~@11 x", AH: "~@3 x ~@9 x ~ x ~@3 x ~@9 x ~@2",
})).gain(0.4)
// drums · snare
const snare = s("sd").struct(`<
~@8 A@6 B A C D E F D G H I J@2 K L M N ~@2 O A C D E F D G H I J@2 K L M N ~@2 O P Q R S Q@3 T U A@7 V ~ W A@6 X D Y
Z AA Z@2 AB AC AD@2 AE AF AG AH AE ~@2 AI ~@7 AJ@6 AK AJ@16
>`.pickRestart({
A: "~ x ~ x", B: "~@8 x ~@13 x!3 ~ x ~ x ~ x ~", C: "~@4 x ~ x!2 ~@2 x ~@2 x ~@2", D: "~@4 x ~@7 x ~ x!2",
E: "~@4 x ~@8 x!3", F: "~@4 x ~ x!2 ~@4 x ~ x!2", G: "~@4 x ~@7 x!4", H: "~@8 x ~@5 x ~@3 x!3 ~ x ~ x ~@3 x ~@3",
I: "~@4 x ~@3 x ~@2 x!2 ~ x ~", J: "x ~@3 x ~@3 x ~@2 x!2 ~ x ~", K: "~@22 x!3 ~@7", L: "x ~@3 x ~@2 x!2 ~@3 x ~ x ~",
M: "x ~@5 x ~ x ~@7 x ~@5 x!3 ~@7", N: "x ~@3 x!2 ~@2 x ~@2 x!2 ~ x ~", O: "~@8 x!5 ~ x ~", P: "x ~@10 x ~@4",
Q: "~@3 x ~@7 x ~@4", R: "~@3 x ~@3 x ~@3 x ~@3 x", S: "~@3 x!3 ~@5 x!2 ~@3", T: "~@3 x ~@7 x!2 ~@3",
U: "~@6 x!3 ~@3 x ~@11 x ~@7", V: "~ x ~@2", W: "~@3 x", X: "~@6 x!3 ~ x ~ x ~ x ~@9 x ~@7",
Y: "~@2 x ~@2 x ~@6 x ~@3", Z: "~@4 x ~ x!2 ~@4 x ~@3", AA: "~@5 x!3 ~@4 x ~ x!2", AB: "~@4 x!4 ~@4 x ~@2 x",
AC: "~@2 x!3 ~ x ~ x ~@3 x ~@11 x ~@7", AD: "x ~@2 x!2 ~ x ~ x ~@3 x ~@3", AE: "x ~@2 x!2 ~ x ~@9",
AF: "~@6 x!3 ~@7 x ~@7 x ~@5 x ~", AG: "x ~@3 x ~ x ~ x ~@2 x!2 ~@3", AH: "x ~@5 x!3 ~@7 x ~@7 x ~ x ~@5",
AI: "x!5 ~ x ~@9", AJ: "~@7 x ~@15 x ~@8", AK: "~@7 x ~@13 x!3 ~ x ~ x ~ x ~@2",
})).gain(0.4)
// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
~@23 A@3 B C D E ~@11 A@3 B C D E ~@3 F G H I G@3 J K ~@24 L M@2 N O P Q R ~@33
>`.pickRestart({
A: "~ x!3 ~ x!3 ~ x!2 ~@2 x ~ x", B: "~@15 x", C: "~ x!3 ~ x!2 ~@2 x!3 ~ x ~ x", D: "~ x!2 ~@2 x!3 ~ x!2 ~@5",
E: "~ x!3 ~@2 x!2 ~ x!2 ~@2 x ~@2", F: "~@8 x!3 ~ x!4", G: "x!3 ~ x!7 ~ x!4", H: "x!3 ~ x!3 ~ x!3 ~ x!3 ~",
I: "x!3 ~@3 x!5 ~@2 x!3", J: "x!3 ~ x!7 ~@2 x!3", K: "x!3 ~@2 x ~ x ~@8", L: "~@9 x!3 ~ x!3",
M: "~ x!2 ~@2 x ~ x ~ x!3 ~ x!3", N: "~ x!2 ~@2 x ~ x ~@8", O: "~@7 x ~ x!3 ~ x!2 ~",
P: "~ x!3 ~ x ~ x ~ x!2 ~@2 x!3", Q: "~ x!2 ~@6 x!3 ~@2 x!2", R: "~ x!2 ~@2 x ~@10",
})).gain(0.25)
// drums · clap
const clap = s("cp").struct("<~@8 [~@3 x]!7 ~@55 [~ x ~@2]!7 ~@25 [~@23 x ~@8]!23>").gain(0.45)
// drums · low tom
const low_tom = s("lt").struct("<~@31 A B ~@16 C B ~ D E D ~ E@2 D E ~@33 F ~@31>".pickRestart({
A: "~@8 x ~@2 x!3 ~ x", B: "x ~ x!3 ~ x ~@9", C: "~@2 x!2", D: "x!2", E: "x", F: "x ~@2 x!3 ~ x!2 ~ x!3 ~ x ~",
})).gain(0.4)
// drums · hihat
// … 48 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.