0:00/0:00
// Stolen Moments — Nelson Oliver
// 162 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 115 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(162/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
const piano = note(`<
~ A B C@2 D E F G H I J K L@6 M@2 N@3 O@5 P@6 Q@2 R S T U@2 V W X Y Z AA AB AC AD AE AF AG AH AI@2 AJ AK AL AM AN AO
AP AQ AR AS AT@3 AU AV@2 AW@2 AX AY AZ@2 BA@2 BB@2 BC BD BE BF BG BF BH BI BJ BK@5 BL@6 BM@2 BN@2 BO@7 ~
>`.pickRestart({
A: "~@4 [bb3,d4,eb4,g4]@17 ~@3, c3@5 ~", B: "~@4 [c4,e4,f4,a4]@19 ~, c3@19 ~@5",
C: "[~@4 [d4,eb4,g4,bb4]@19 ~@5 [c4,f4,a4]@20, c3@23 ~, ~@14 e4@9 ~]/2", D: "~ [d4,eb4,g4,bb4]@5, c3@23 ~",
E: "~@5 eb4@19, ~ c3@20 ~@3, ~ [c4,g4,a4]@5", F: "~ [d4,g4,bb4]@5, c3@7 ~, ~@2 eb4@9 ~",
G: "~@4 [c4,eb4,g4,a4]@17 ~@3, c3", H: "~ g4@5, f3@7 ~, ~@3 [eb4,ab4,c5]@20 ~",
I: "~@2 [g4,ab4,c5]@9 f3, f3@5 ~, ~ d4@5", J: "~ [d4,eb4,g4,bb4]@5, c3@7 ~",
K: "~@4 [d4,eb4,g4,c5] ~@5 [d4,eb4,g4,c5]@9 ~@5, c3", // Cm
L: "[~ d3@9 [eb3,db4,gb4]@11 ~ [a3,d4,g4]@9 ~@3 [f3,ab4]@12 [b3,e4]@9 ~@3 [f3,ab4]@12 [e3,g4]@12 [ab3,db4,gb4]@8 ~@3 [d3,d4,f4]@12 ~ eb3@12 [e3,g3]@11 ~ f3@4 ~@10, [g3,c4,f4]@8 ~@2 ab3@9 ~@3 e3@11 ~ [bb3,eb4]@10 ~@2 a4@12 ~@47 c4@10 ~@3 c4@9 ~@17, ~@46 gb3@11 ~ [bb3,eb4]@9 ~@3 [a3,d4]@8 ~@4 eb3@10 ~ [a3,c4]@10 ~@2 [gb3,a3]@12 ~@12 [ab3,c4]@4 ~@11]/6", // Ebm7 Dsus4 Fm E5 Fm Em Dbsus4 Dm …
M: "[[g3,bb4]@21 ~ f3@26, [d4,eb4]@19 ~@2 [eb4,g4]@27, ~@11 b3@11 ~@2]/2", // Gm Ebmaj7 Eb
N: "[g3@18 ~@3 g3@2 ~@5 [d4,g4,c5]@3 ~@3 [c4,bb4]@12 ~@6 [eb4,g4] ~@5 [d4,eb4,g4]@11 ab3@2 ~, eb3@23 ~, ~@24 a3@19 ~@5 bb3@21 ~@3, ~@33 f4@12 ~@7 d4@2 ~@18]/3", // Csus2 C7 Eb Ebmaj7
O: "[~@3 eb4 [d4,g4,c5] ~@5 a3@2 [d4,eb4,g4] ~@3 a3@2 [eb4,ab4,db5]@4 bb4 ~ g4@20 ~ db4@2 ~ d4@13 ~@3 g4@2 ~@2 [ab3,d4,g4,c5]@3 ~ [eb3,a3]@3 ~@2 a3@16 ab3@2 ~ a3@7 ~@3 a3 ~ [d4,g4,c5]@3 ~ a3@2 [g4,c5]@4 a3 ~, a3@8 ~@4 c5@2 ~@4 ab3@42 ~@3 [ab3,d4,gb4,c5]@3 ~@11 eb3@40 ~@3, ~@12 c5@13 ~@35, ~@24 d4@17 ~@26 gb4@2 ~@2 [d4,g4,c5]@4 ~@2 [d4,g4,c5]@29 ~@8 d4@2 ~@4]/5", // Csus2 Ebmaj7 Dbsus2 Abmaj7 Ebdim Csus2 C5 Ab7 …
P: "[[d3,c4]@6 ~@4 [eb3,ab3,db4,gb4]@10 ~@2 [a3,d4,g4]@8 ~@4 f3@9 ~@3 [gb3,b3,e4]@9 ~@3 [f3,bb3,eb4]@9 ~@3 [e2,a3,d4]@9 ~@3 [db4,gb4]@8 ~@4 [e4,f4]@12 [gb3,a3]@11 ~ [e3,g4]@11 [ab3,d4]@3 ~@12, f4@4 ~@18 e3@11 ab4@11 ~@50 c4@39 ~@11, ~@33 [bb3,eb4]@9 ~@4 [gb2,a4]@11 ~ [f2,ab4]@11 ~ [e3,g4]@12 [eb2,ab3]@6 ~@6 [d3,a3]@10 ~@2 eb3@9 ~@3 g3@13 ~@13]/6", // D7 Ebm7 Dsus4 Esus2 Ebsus2 Dsus2 Gb5 Fmaj7 …
Q: "[[g3,c4,d4,eb4,g4,bb4]@20 ~@2 [f3,b3,eb4]@23 ~@3, ~@21 ab4@22 ~@5]/2", R: "~@11 [eb3,a3] ~ [d4,gb4,g4,c5]@3 ~@8",
S: "~@11 [eb3,a3] [g4,c5]@2 ~@4 [e3,bb3,e4,ab4,c5,eb5]@3 ~@3, ~@12 d4 ~@11", // Ebdim C5 Ab
T: "[eb3,a3,d4,g4,c5]@2 ~@6 [d4,g4,g5] ~@3, ~@16 [eb3,a3] ~@7", // Am7b5 G5 Ebdim
U: "[~@14 [ab3,db4,gb4,bb4] ~@3 [db4,gb4]@3 ~@3 [c4,eb4,g4]@18 ~@6, ~@9 ab3@13 ~@2, ~@18 bb4@5 ~@25]/2", // Gb Gb5 Cm
V: "~@3 [ab4,c5,g5] [ab3,e4] ~@5 [ab3,eb4,ab4,c5,g5] ~@5 [ab3,d4,ab4]@4 ~@2 ab3 ~, ~@8 [c5,g5]@3 ~", // Abmaj7 Dbm Abmaj7 Abdim C5
W: "[eb3,a3,d4,g4,d5]@5 ~ [eb3,a3,d4,bb4,eb5]@3 ~@3 [eb3,a3,d4,g4,c5]@4 ~@8", // Ebmaj7 Am7b5
X: "~@4 [g4,c5]@4 [e3,bb3,eb4,ab4,db5]@3 ~ [eb3,a3,d4,g4,c5]@7 ~@3 eb3@2, ~@4 [a3,d4]@2 ~@16 a3 ~, ~@4 eb3 ~@19", // C5 Bbm7b5 Am7b5 D5
Y: "[gb3,c4,e4,ab4,c5]@4 ~@12 [gb3,c4,ab4,c5,eb5] ~@4 [gb3,ab4,c5,eb5]@2 ~, ~@21 c4 ~@2", // Caug Ab7
Z: "~ f3@4 ~@11 [f3,b3,e4,ab4,db5,e5]@3 ~@2 [f3,b3,e4,e5] ~@2, [b3,e4,ab4,db5,e5]@4 ~@17 [ab4,db5]@2 ~", // Db7 E Dbm7 Db5
AA: "~ [eb3,a3]@4 ~@2 [eb3,a3]@2 ~@7 [gb3,c4,f4,bb4,eb5,ab5]@2 ~@6, [d4,a4,d5,gb5]@5 ~ [a4,d5,gb5]@3 ~@15, ~@7 d4@4 ~@13", // Ebdim Fm7 D
AB: "~@4 [gb3,c4,f4,bb4,eb5,ab5] ~@4 [c4,f4,bb4,eb5,ab5] gb3 ~ ab5 [f3,b3]@4 ~ [f3,b3,e4,bb4,eb5,g5,bb5]@3 ~@3, ~@3 [e4,bb4,eb5,bb5] ~@2", // Fm7 Fdim Eb
AC: "[eb3,a3,d4,a4,d5,g5,b5]@2 ~@7 [eb3,a3,d4,a4,d5,g5] ~@2", // G Ebmaj7
AD: "~@14 [f3,b3,f4,bb4,d5] ~@3 [f3,b3,f4,bb4,d5]@2 ~ bb4 [f3,b3,f4,d5] ~", // Bb Bdim
AE: "[eb3,a3,gb4,d5]@5 ~ [a3,gb4,d5]@2 ~@16, ~@6 eb3 ~@17", // D
AF: "~@2 [eb3,a3,d4,a4,d5,gb5,a5] ~@3 [eb3,a3,d4,a4,d5,gb5,a5]@2 ~@2 [eb3,a3,d4,a4,d5,gb5,a5] ~@2 eb3 [a3,d4,a4,d5,gb5,a5] ~@4 [ab3,db4,gb4,db5,gb5]@4 ~, ~@18 bb5@5 ~", // D Dbsus4
AG: "~ [ab3,d4,g4]@3 ~@12 [ab3,d4,g4] ~ [g5,c6,g6]@2 ~@4, [c5,f5]@3 ~@15 eb6 ~@5", // G C5 F5
AH: "~@10 [ab3,d4,g4] ~@2 gb5@2 ~ [ab3,d4,g4] ~ [f5,c6]@2 ~@4, ~@6 [f5,c6] ~@5", // G F5
AI: "[~@10 [eb3,a3,d4] ~@2 [gb4,c5]@18 ~@4 [eb3,a3,d4] [f5,gb5,bb5]@3 ~ [eb3,a3,d4] ~ [eb5,bb5]@2 ~@4, ~@2 f4@3 ~@3]/2", // D Gbdim D Gbmaj7 D Eb5
AJ: "~@2 [e4,ab4,c5] ~ [gb3,c4] ~ [c4,e4,ab4]@3 ~ [e4,ab4,c5] ~ [gb3,c4] ab4 [c4,e4] c4 ~ [e4,ab4,c5]@3 ~ [ab4,c5] ~@2, ~@21 e4@2 ~", // Eaug Gbdim Caug Eaug Gbdim C Eaug Ab
AK: "[f3,b3] eb4 [g4,b4] [f3,b3] ~@2 [b3,eb4,g4]@3 ~ [eb4,g4,b4] ~ [f3,b3] ~ [b3,eb4,g4] [f3,b3] ~@2 [eb4,g4,b4]@3 ~ [f3,b3,eb4,g4] ~, ~@11 b4", // Fdim G Fdim Baug Ebaug Fdim Baug Fdim …
AL: "~ g3@4 ~@2 g3@3 ~@3 [gb3,c4]@5 ~ [gb3,c4]@5, [db4,f4,bb4]@4 ~@2 bb4@5 ~@13, ~@6 [db4,f4]@3 ~@3 [eb4,ab4]@5 ~ [eb4,ab4]@4 ~@2", // Gbdim Bbm Db Ab5
AM: "~ [b3,f4,db5]@4 ~ [b3,f4,ab4,db5]@3 ~@7 [f3,b3,e4,ab4,d5,g5] ~@3 [b3,e4,ab4,d5] f3 ~@2, ab4@4 ~@16 g5@3 ~", // Db7 E7
AN: "[a3,d4,eb4,g4,d5,g5,c6]@5 ~ [a3,eb4,g4,d5,g5,c6] ~@3 [g3,c4,f4,c5] ~@2 [a3,d4,g4,d5,g5,c6]@4 ~@7, ~@3 d4 ~ [f5,bb5] ~@6", // Am7b5 Csus4 Am7 Bb5
AO: "~@6 [c4,f4,bb4,eb5] f4 c4@2 [a3,d4,g4,c5,f5]@2 ~@12, ~@2 g3 ~@5, ~@7 [bb4,eb5]@2 ~@15", // Cm7 Dm7 Eb5
AP: "[g3,c4,f4,bb4] ~ [g3,c4,bb4] ~ f3@3 ~@2 [g3,c4,f4,bb4] [g3,c4,f4] ~ [f3,bb3,eb4,ab4]@4 ~ [g3,c4,f4,bb4] ~ [g3,c4,f4,bb4] ~ f3@3, ~ f4 ~@3 bb4 ~@6, ~@3 [bb3,eb4,ab4]@4 ~@13 [bb3,eb4,ab4]@4", // Gm7 C7 Gm7 Csus4 Fm7 Gm7 Ebsus4
AQ: "~@3 [g3,c4,f4] [g3,bb3,eb4,f4] ~ [gb3,b3,e4]@16 a4@2, ~@3 bb4@2 ~ a4@13 ~@5, ~@6 ab4 ~@17", // Csus4 Eb Esus2
AR: "~ g3@2 ~@7 f4@2 ~ g4@3 ~@5 [g3,ab3] ~@2, [ab3,f4]@3 ~@18 g4@2 ~", // Abmaj7 Db
AS: "ab4@2 ~@2 ab4@2 e4@2 ~@2 g4@2 f4@3 ~ [g3,ab3] ~ c4@3 ~@3", // Abmaj7
AT: "[~@16 [eb4,gb4]@2 d4@2 c4 ~ [eb4,gb4] ~ [eb4,gb4]@2 d4@2 c4@2 [eb4,gb4] ~ [eb4,gb4]@2 d4@2 c4@2 [eb4,gb4] ~ [eb4,gb4]@2 d4@2 c4 ~ [eb4,gb4] ~ [eb4,gb4]@2 d4@2 c4 ~ [e4,ab4] ~ [e4,ab4]@2 d4@2 c4 ~ [e4,ab4] ~ [e4,ab4]@2 d4 ~ c4 ~ [g4,b4] ~, ~@6 [d3,eb3,gb3,a3]@44 ~@4 gb3@17 ~]/3", // Ebm E G D
AU: "[g4,b4]@2 f4 ~ eb4 ~ [bb4,d5] ~@3 ab4@2 g4 ~ db5 f5 ~@2 c5 ~ b4 ~ d5@2, ab3@7 ~ [bb4,d5]@2 ~@7 [db5,f5]@3 ~@4, ~@9 b3@9 ~ d4@2 ~@3", // G Bb Db
AV: "[~ [eb3,a3]@6 c5@3 ~@6 b4 e5 ~ gb5 a5 ab5@2 ~ gb5@2 f5 ~ d5 ~ db5 ~@2 db5@2 ~ bb4 a4@2 ab4 ~@2 gb4 ~ g4 ~ d5 ~, c5@4 ~@9 g3@7 ~@4 [gb3,c4,f4]@10 ~@2 [b3,e4]@8 ~@4, ~ d4@9 ~@2 [db4,gb4]@8 ~@3 g5@2 ~@2 eb5@2 ~@2 gb5@2 ~@8 g4@2 ~@2 c5@2 ~, ~@32 eb5@2 ~ b4@2 f3@8 ~@3]/2", // Ebdim F E5 Gb5
AW: "[[eb3,a3,d4]@3 eb5 ~@2 c5@2 ~ [g3,c4,f4] ~@2 [f3,bb3,eb4] ~ eb5 ~@3 [eb3,a3,d4] ~@2 [a3,d4,g4] ~@5 [g3,c4,f4] ~@2 [g3,c4,f4]@3 eb5 c5@2 ~ c5@2 ~ [eb3,a3,d4] ~ g4@2 ~ bb4 ~@2, eb5 ~@16 c5@14 ~@17]/2", // D Csus4 Ebsus2 D Dsus4 Csus4 D
AX: "[g3,c4,f4]@3 g4 ~ bb4 c5 eb5 ~ bb4 ~ c5 eb5 ~ f5 c5 ~ eb5 f5 g5 ~ f5 ~ g5", // Csus4
AY: "bb5 ~@2 [bb3,eb4,ab4]@2 ~ [ab3,db4,gb4]@2 ~@2 gb6 f6 eb6 ~@2 db6@2 c6 [db4,gb4,bb5]@2 ~ g5 ~ f5, ~@4 bb6 ~@5 ab5 ~, ~@9 ab6@2 ~@3 d6@2 ~@2 ab3 ~@5", // Ebsus4 Dbsus4 Gb
AZ: "[~ g3@2 ab5@2 ~ f5@2 ~ [g3,ab3,c4] ~@2 [g3,ab3,db4]@3 ~ [g3,ab3,d4]@7 ~ bb3 ~@3 eb6@2 c6 ab5 ~@2 c6 ~ eb6 ~@3 c6 ~ bb3 ab5@2 g5 f5 ~, [ab3,c4,g5]@3 ~@20 d4@4 g6@2 ~@4 f6@2 ~@2 g3@7 ~@4, ~@24 [ab3,g4]@5 ~@7 [c4,f4]@7 ~@5, ~@19 d6 ~@4, ~@39 db6@2 ~ bb5@2 ~@4]/2", // Abmaj7 Db G Abmaj7 F5
BA: "[[bb3,gb5] ~ g5 b5@2 ~ d6 ~@4 [eb3,d4] g3 ~ b5 g5 eb5 ~@3 [ab3,db4,gb4]@3 ~ g3@2 ~@2 f5 ~ eb5 d5@2 db5 c5 ~ bb4 ~@2 c5@2 db5 d5 ~@2 c5 ~ d5, [eb3,g3,d4]@10 ~@3 c6@2 ~@3 bb5@5 [c4,f4]@3 [ab5,bb5]@2 ~@20, ~@27 gb5@2 ~@9 b4@2 ~@4 g4@2 ~@2]/2", // Ebm Ebmaj7 Dbsus4 Ebmaj7 F5 Absus2
BB: "[eb5@3 c5@2 ~ ab4@3 ~@11 c5@2 ~@3 e5@3 db5@2 ~ a4@2 ~@13 f5 ~, gb3@23 eb5@2 f3@20 ~@3, c4@13 ~@5 c4@6 b3@20 ~@4]/2",
BC: "~@4 c5@2 eb5@2 ~@5 f5!2 eb5 c5 ~ [bb4,eb5]@2 ~@2 [g4,c5]@2, [eb3,d4]@6 ~@6 gb3@11 ~, g5@2 ~@8 f5@2 ~ gb5@2 ~@9, ~ a3@5 ~@5 [c4,f4]@11 ~@2", // Eb5 C5 Ebmaj7 F5
BD: "~ [gb4,c5]@3 [f3,b3] ~ f4@2 ~@2 eb4@2 bb3 b3@3 ~@3 d4@2 ~ eb4@2, ~@8 c4 ~@3, ~@17 f3@7, ~@17 g2@4 ~@3", // Gbdim Fdim
BE: "~ c3@4 [bb3,d4,eb4,g4]@17 g2@2", BF: "~@4 [c4,e4,f4,a4]@17 ~ g2@2, c3@11 ~",
BG: "~@4 [d4,eb4,g4,bb4]@17 ~ g2@2, c3@7 ~", BH: "~@4 [bb3,d4,eb4,g4]@17 g2@3, c3@3 ~",
BI: "~@2 [a3,c4,eb4,g4]@9 g2, c3@7 ~", BJ: "~@2 [bb3,eb4,g4]@9 g2, c3@7 ~",
BK: "[~@4 g4@16 e3@3 ~@5 eb4@16 db4@4 d4@9 eb4@2 ~ f4@9 ~@23 [ab3,ab4]@4 [a3,a4]@24, c3@21 ~@7 c4@14 ~@27 gb4@4 ~@4 c4@20 ~@23, ~@4 [a3,eb4]@18 ~ f3@49 g4@20 ~@28, ~@28 ab3@12 ~@31 eb3@47 ~@2]/5", // Ab A Adim
BL: "[~ d3@8 ~ [eb3,ab3,db4,gb4]@12 [a3,d4]@12 [bb3,ab4]@11 ~ [b3,a4]@12 [f3,bb3,eb4,ab4]@12 [a3,d4,g4]@11 ~ [eb3,ab3,db4]@5 ~@7 f3@11 ~ eb3@10 ~@2 g3@12 [f3,ab3]@4 ~@10, [g3,c4,f4]@10 ~@12 [e3,g4]@11 ~ [f3,eb4]@10 ~ e4@13 ~@23 gb4@5 ~@7 c4@36 ~@15, ~@46 gb3@11 ~@13 e3@9 ~@14 a3@10 ~@2 gb3@11 ~ e3@11 ~@16, ~@47 d3@4 ~@21]/6", // Ebm7 D5 Bb7 B7 Fm7 Dsus4 Dbsus2 Fm …
BM: "[[g3,d4,bb4]@21 ~@18 g4@2 ~ a4@3 g4@2 ~, eb4@19 ~@5, ~@21 g4@16 ~@11, ~@11 [f3,b3]@13]/2", // Gm Fdim
BN: "[bb4@6 a4@5 ~@2 g4@6 ~@6 g4@16 c4@7, c3@20 ~ g2@27, eb4@18 ~@5 b3@14 ~@11, d4@8 ~@3 f3@13, ~@24 eb4@17 ~@7]/2",
BO: "[eb4@7 ~@56 g6@25 ~@40 [f5,c6]@22 ~@18, ~@7 g4@12 bb3@2 c4@7 g4@13 bb5@4 f5@43 c2@11 eb4@11 eb5@4 d5@5 g5@31 ~@18, ~@14 f2@18 bb4@16 bb5@39 ~@2 g2@7 bb3@11 bb4@43 ~@18, ~@15 c3@20 eb5@17 eb6@35 ~@5 eb3@9 g4@48 ~@19, ~@17 g3@7 f4@14 g5@18 f6@31 ~@7 f3@10 f4@46 ~@18]/7", // F5
})).s("gm_piano").gain(0.4).pan(0.3)
// chords · piano
const piano_2 = note("<~@5 A B C B D E A B F G H I J K L M ~@94>".pickRestart({
A: "[c3,bb3,eb4,g4]", B: "[c3,a3,c4,eb4,g4]", C: "[c3,bb3,c4,eb4,g4]", D: "[f3,c4,eb4,ab4]", E: "[f3,c4,d4,f4,ab4]",
F: "[d3,g3,c4,f4] [eb3,ab3,db4,gb4]", G: "[e3,a3,d4,g4] [f3,bb3,eb4,ab4]", H: "[gb3,b3,e4,a4] [f3,bb3,eb4,ab4]",
I: "[e3,a3,d4,g4] [eb3,ab3,db4,gb4]", J: "[d3,g3,c4,f4] [eb3,a3,c4,eb4]", K: "[e3,g3,c4,e4] [f3,ab3,c4,eb4]",
L: "[c3,g3,c4,eb4]", M: "[g2,f3,b3,eb4]",
})).s("gm_piano").gain(0.4).pan(0.3)
// bass · acoustic bass
const bass = note(`<
A B@2 C D C E D F G H C I J@6 K L C@3 M N O C P Q@6 R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP
AQ T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ B@2 C D C E D F G H C I J@6 K L ~@2 AR@7 ~
>`.pickRestart({
A: "~@11 g2", B: "c2@11 g2", C: "c2@21 ~ g1@2", D: "c2@10 ~ g1", E: "c2@19 ~@3 g1@2", F: "c2@19 ~@3 c2@2",
G: "f1@21 ~ c2@2", H: "f1@11 g1", I: "c2@23 ~",
J: "[d2@8 ~@2 eb2@11 ~ e2@10 ~@2 f2@11 ~ gb2@11 ~ f2@11 ~ e2@11 ~ eb2@10 ~@2 d2@12 eb2@11 ~ e2@11 ~ f2@4 ~@10]/6",
K: "c2", L: "g1", M: "c2@9 ~@2 c2", N: "f1@11 c2", O: "f1@10 gb1 g1", P: "c2@16 g2@2 c3@3 ~ db3@2",
Q: "[d3@9 ~ eb3@10 ~@2 e3@11 ~ f3@11 ~ gb3@12 f3@12 e3@12 eb3@7 ~@5 d2@12 eb2@12 e2@11 ~ f2@2 ~@12]/6", R: "c2@11 g1",
S: "g2@3 ~ g1@2 f2@6 eb2@6 db2@4 ~@2", T: "c2@6 bb1@6 a1@5 ~ ab1@6", U: "g1@3 ~ g1@2 ab1@6 a1@6 b1@6",
V: "c2 e1 f1 gb1", W: "g1 a1 bb1 ab1", X: "f1@6 ab1@6 bb1@3 ~ bb1@2 b1@5 ~", Y: "c2@3 d2@3 eb2@3 b1@2 d2",
Z: "c2@3 ~ c2@2 eb2@5 ~ f2@6 gb2@6", AA: "g2 f2 eb2 db2", AB: "d2@6 e2@5 ~ f2@4 d2@2 gb2@6",
AC: "g2@3 g1@3 b1@3 d2@2 b1", AD: "c2@5 ~ c2@6 eb2@5 ~ eb2@6", AE: "ab1@4 ~@2 ab1@6 g1@6 b1@5 ~",
AF: "c2@3 c3@2 c2 b2@3 bb2@3", AG: "a2@6 ab2@6 g2@3 ~ g2@2 b1@6", AH: "c2@6 e1@6 f1@5 ~ gb1@5 ~",
AI: "g1 ab1 bb1 gb1", AJ: "f1@3 f2@2 f1 e2@3 eb2@3", AK: "c2 f2 ab2 db2", AL: "c2 g2 d2 g2",
AM: "eb2@6 f2@6 gb2@4 g2@2 c2@3 ~ db2@2", AN: "d2 db2 d2 ab1", AO: "g1@3 g2@3 gb2@3 f2@2 e2",
AP: "eb2@5 ~ eb2@6 ab2@4 ~@2 ab2@6", AQ: "db2@4 ~@2 db2@6 g1@6 b1@5 ~", AR: "[~@17 f1@75 ~@2 c2@55 ~@19]/7",
})).s("gm_acoustic_bass").gain(0.35)
// other · vibraphone
const vibraphone = note("<~@5 A B A C D E F G H@6 I@2 ~@94>".pickRestart({
A: "~ g4 bb4 d5@2 c5@2 bb4", B: "c5@3 a4@6 f4 c4@2 eb4@3 g4@9", C: "c5 a4@3 g4@4", D: "~ ab4 c5 eb5 ~ d5@2 c5",
E: "d5 bb4@3 f4 ab4@3", F: "~ eb4 g4 bb4 ~ a4@2 g4", G: "a4 f4@3 eb4@2 g4 bb4",
H: "[c5@3 eb5@3 c5@3 c5@6 eb5@3 c5@3 c5@6 eb5@3 c5@3 c5@6 eb5@3 c5@3 c5@6 eb5@3 c5@3 c5@6 eb5@3 c5@3 c5@6 eb5@3 c5@3 c5@6 eb4@3 c4@3 c4@6 d4@3 c4@3 c4@6 d4@3 c4@3 c4@6 d4 eb4@2 c4@3 c4@6 g4@3 a4@3 g4@3]/6",
I: "[bb4@2 a4 g4@4 g4@9]/2",
})).s("gm_vibraphone").gain(0.4).pan(0.7)
// drums · clap
const clap = s("cp").struct(`<
~@38 A@2 ~@2 B@2 C ~ D B E F ~ G H ~ D B E F ~ G H ~ A@2 ~@2 B@2 C ~ D B E F ~ G H ~ D B E F ~ G H ~@30
>`.pickRestart({
A: "~@2 x", B: "~ x ~@4", C: "~ x ~@6", D: "~ x ~@2", E: "~@5 x ~@2 x ~@2 x", F: "~@11 x", G: "~@6 x ~@4 x",
H: "~@5 x ~@10 x ~@7",
})).gain(0.35)
// drums · pedal hat
const pedal_hat = s("hh").struct(`<
~ A B@2 C A B A D B A@2 E F@2 G H I J@2 K I F L D J I L E F@2 G H ~@4 I J@2 K I F L D J I L E F@2 G H M I L E F@2 G H
I J@2 K I F L D J I L E F@2 G H M I L E F@2 G H A B@2 C A B A D B A@2 E F@2 G H I J@2 K ~@10
>`.pickRestart({
A: "~@17 x ~@6", B: "~@3 x", C: "~@5 x ~@2", D: "~@5 x ~@3 x ~@5 x ~@8", E: "~@3 x ~@2 x!2 ~ x!2 ~", F: "~ x ~ x",
G: "~@2 x ~@6 x ~@2", H: "~@2 x ~@3 x ~@2 x ~@2", I: "~@6 x ~@10 x ~@6", J: "~@5 x ~@12 x ~@5", K: "~@2 x ~@2 x ~@2",
L: "~@5 x ~@11 x ~@6", M: "~@5 x!2 ~@11 x ~@5",
})).gain(0.4)
// drums · open hat
const open_hat = s("oh").struct(`<
~@4 A ~@3 A ~@4 B ~ C D ~@3 A ~@3 A ~@4 B ~ C D ~@7 A ~@3 A ~@4 B ~ C D ~@4 B ~ C D ~@3 A ~@3 A ~@4 B ~ C D ~@4 B ~ C
D ~@3 A ~@3 A ~@4 B ~ C D ~@3 A ~@10
>`.pickRestart({
A: "~@17 x ~@6", B: "x", C: "~ x ~@2", D: "~@7 x",
})).gain(0.4)
// drums · crash
const crash = s("cr").struct("<~@107 [~@3 x] [~ x] [~@9 x ~@5 x ~@6 x ~] [~@5 x] ~@2 [~ x ~] ~>").gain(0.25)
// drums · ride
const ride = s("rd").struct(`<
~ A@6 B A@2 C A@2 D E@4 F G ~ A@3 H A I J K E@5 F G L M@3 N O P N M Q N P R M R N S Q N P R M R N S M@3 N O P N M Q N
P R M R N S Q N P R M R N S T A@4 U V A@4 V W E@3 X F Y ~ J@2 Z ~@7
>`.pickRestart({
A: "~ x ~@4", B: "x ~@4 x ~@6", C: "~@2 x ~@5 x ~@2 x", D: "x ~@4 x ~@5 x", E: "~@5 x ~@5 x", F: "~@5 x ~@6",
G: "x ~@10 x", H: "x ~ x ~@2 x ~@6", I: "x ~ x ~@2 x!2 ~ x ~@2 x", J: "x", K: "~ x ~@2", L: "~@3 x ~ x!2 ~@2 x ~ x",
M: "x ~@2 x ~ x!2 ~@2 x ~@2", N: "x ~ x!2 ~@2 x ~@2 x ~ x", O: "x ~@2 x ~@2 x ~@2 x ~ x",
P: "x ~@2 x ~@2 x ~ x!2 ~@2", Q: "x ~@2 x ~ x!2 ~@2 x ~ x", R: "x ~ x!2 ~@2 x ~@2 x ~@2",
S: "x ~@2 x ~ x!2 ~ x!2 ~@2", T: "~@5 x ~@18", U: "~@2 x ~@8 x", V: "x!2 ~@4", W: "~ x ~@8 x ~@11 x ~",
X: "~@9 x ~@12 x ~", Y: "x ~@6 x", Z: "~@3 x",
})).gain(0.25)
stack(piano, piano_2, bass, vibraphone, clap, pedal_hat, open_hat, crash, ride)
More by
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.