0:00/0:00
// When Your Lover Has Gone — Oscar Peterson
// 120 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 121 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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(`<
~@40 A B@4 C@2 D@2 E@2 F@8 G H@2 I J K@2 L@5 M N O@2 P@4 Q@2 R@2 S@5 T@2 U@2 V@2 W X Y@2 Z@7 AA@4 AB@2 AC@2 AD@2 AE
AF@5
>`.pickRestart({
A: "~@25 bb2@7", B: "[~@2 f2@9 d2@6 eb2@3 e2@9 f2@9 bb1@10 f2@9 e2@9 eb2@8 g2@10 ab2@9 a2@9 bb2@9 eb2@9 eb3@8]/4",
C: "[~ db2@8 ~ c2@9 c3@9 d2@9 eb2@9 e2@9 g2@9]/2", D: "[~ c2@6 db2@3 d2@6 eb2@12 f2@9 gb2@9 g2@9 ab2@9]/2",
E: "[c3@10 eb3@8 e3@9 ~ f3@9 d3@9 a2@9 gb2@9]/2",
F: "[g2@8 bb2@9 g2@10 f2@9 e2@9 g2@9 d2@8 ~ db2@9 c2@9 g2@6 ab2@3 a2@9 db2@8 ~ d2@9 d3@9 g2@9 ~ gb2@9 f2@8 ~ f1@9 g1@9 a1@9 bb1@6 f2@3 gb2@9 g2@6 d2@3 db2@9 c2@6 eb2@3 e2@6 ~ f2@9 ab2@2 ~ a2@6 bb2@5]/8",
G: "~@4 bb2@3 d2@9 eb2@8 e2@8", H: "[~ f2@9 g2@10 a2@8 bb2@3 db3@3 d3@4 eb3@9 g2@10 ab2@7]/2",
I: "~ a2@9 bb2@9 eb2@9 bb2@4", J: "~@2 eb2@3 d2@6 db2@3 c2@7 c3@2 e2@9",
K: "[f2@9 gb2@9 ~ g2@8 c2@10 g2@9 d2@9 eb2@9]/2",
L: "[f2@9 gb2@6 bb2@2 ~ a2@9 ab2@9 gb2@9 ~ f2@8 ~ eb2@2 d2@3 c2@3 bb1@9 ~ d2@8 gb2@6 ~ a2@3 ab2@9 g2@9 bb2@9 gb2@9 bb2@9 f2@9 bb2@9 a2@6]/5",
M: "~@3 a2@9 ab2@7 ~@2 ab2@8 ~ g2@2", N: "~ f2@2 ~ d2@2 ~ b1@6 g2@2 ~ c2@6 g2@2 ~ d2@7",
O: "[~@3 eb2@8 e2@9 f2@10 gb2@9 g2@9 a2@9 bb2@7]/2",
P: "[~@2 db3@9 d3@9 b2@9 c3@9 ~ bb2@8 a2@7 f2@3 g2@6 a2@3 bb2@8 d2@10 eb2@8 e2@9 f2@9 gb2@9 g2@9]/4",
Q: "[~ a2@9 bb2@6 eb3@2 ~ g2@9 ab2@9 a2@9 bb2@9 eb2@9]/2", R: "[d2@8 ~ db2@9 c2@7 c3@2 d2@9 eb2@10 e2@9 g2@9]/2",
S: "[a2@9 bb2@9 e2@9 eb2@9 f2@9 gb2@9 g2@9 ab2@9 bb2@9 c3@9 db3@9 d3@9 bb2@9 a2@9 gb2@9 g2@9 bb2@6 g2@4 f2@6]/5",
T: "[~@3 bb2@6 f2@3 e2@6 c3@2 ~ d2@8 c2@10 d2@9 e2@9 c2@7]/2", U: "[~ db2@10 e2@9 f2@9 bb1@9 d2@10 eb2@9 f2@7]/2",
V: "[~@2 a2@9 c3@9 db3@8 d3@9 c3@10 b2@7 ~@2 b2@8]/2", W: "~ c3@9 bb2@8 ~ a2@6 f2@3 g2@4",
X: "~@3 a2@3 bb2@4 ~@2 bb2@2 d2@9 eb2@9", Y: "[~ e2@9 f2@8 gb2@9 g2@9 a2@9 bb2@6 ~ eb3@2 g2@10]/2",
Z: "[ab2@9 a2@9 bb2@9 eb2@9 db2@8 ~ bb2@9 c2@7 c3@2 d2@9 eb2@9 ~ e2@9 bb2@9 b2@9 c3@8 e2@6 ~ c3@2 eb2@9 f2@10 bb2@9 a2@9 ab2@9 gb2@9 f2@9 ~ eb2@2 d2@3 c2@3 bb1@8 ~ d2@9 gb2@7]/7",
AA: "[~@2 a2@9 g2@9 bb2@9 gb2@9 bb2@9 ~ f2@9 d3@6 bb2@3 a2@9 a1@9 ab2@7 ~@2 ab2@9 ~ g2@8 b1@8 ~ c2@7 b2]/4",
AB: "[~ d2@10 eb2@8 e2@9 f2@9 gb2@9 ~ g2@9 eb2@8]/2", AC: "[d2@6 d3@2 ~ eb2@9 f2@10 gb2@9 g2@9 ab2@9 a2@9]/2",
AD: "[b2@9 ~ c3@9 bb2@9 a2@9 g2@9 ~ gb2@9 eb2@8]/2", AE: "~ f2@9 a1@6 bb1@2 ~@6 bb1@4 d2@4",
AF: "[~ f2@2 ~ eb2@4 ~ g2@4 bb2@5 c3 ~@3 d3@5 bb2@2 ~ c3@5 ~ bb2@3 ~@9 bb1@85 ~@27]/5",
})).s("gm_acoustic_bass").gain(0.33).pan(0.3)
// chords · piano · "A.PIANO 1"
const piano = note(`<
A B@8 C@8 D@5 E@4 F@8 G H@6 I@4 J@2 K@2 L M N O@2 P Q R S T@2 U@3 V@2 W@3 X Y@3 Z@2 AA AB@4 AC AD AE@5 AF@4 AG@4 AH@3
AI AJ AK AL AM AN AO@2 AP@2 AQ AR@3 AS AT@4 AU AV@4
>`.pickRestart({
A: "~@8 a3@11 [b3,eb4,g4]@13, ~ f2@31, ~@7 [bb3,d4,f4]@11 ~@14", // Baug Bb
B: "[~@11 [g3,bb3,c4,eb4]@3 ~@7 d4@20 ~@6 [g3,c4,d4,f4,a4]@8 [bb3,db4,e4,g4,bb4]@22 ~@6 [g3,bb3,eb4,f4]@9 ~@12 gb4@6 ~@19 a4@3 [c4,d4,f4,a4]@9 [b1,a3,db4,ab4]@6 ~ f2@8 bb1@12 f2@6 eb2@3 [e2,ab3,d4,gb4]@6 ~@17 a4@4 ~@9 ab4@6 ~@13 g4@5 ~@10 bb2@2 ~ d2@5 ~, ~@5 f2@36 f2@36 f2@34 [bb2,a3]@30 ~@78 [e2,db4,ab4]@18 ~@19, ~@20 [a3,c4,f4]@21 ~@51 [eb3,a3,g4]@19 ~@9 bb1@21 ~@43 eb2@36 ~@18 eb2@12 ~@6, ~@92 db4@2 ~@17 c4@21 ~@16 [a3,c4,d4]@29 ~@6 [g3,db4,f4]@21 [eb3,g3,db4,f4,a4]@16 ~@18 f3@18, ~@93 d4@17 [d4,f4]@22 ~@9 eb4@2 ~@4 g4@29 ~@61 [db4,g4]@19]/8", // Cm7 Dm7 Bbdim Eb Dm7 Db7 E7 Bbmaj7 …
C: "[db2@3 ~@6 [d4,bb4,d5]@2 g4 ~@9 e3@8 ~ db5@5 ~ [e3,bb3,e4,a4]@11 ~ f3@8 ~ [eb2,gb3,c4,eb4]@8 ~ [g3,g4]@8 ~ gb3@17 ~@13 db5@5 ~@2 gb4@13 ~@13 eb5@6 ~@13 d5@6 ~@12 a4@6 ~@17 g2@3 ~@16 e3@3 ~@6 gb4@2 ~@22 bb4@6, ~@3 c2@27 ~@17 [d2,c4,f4]@9 gb4@9 [e2,c4,e4]@9 [f4,bb4,d5]@25 ~@36 d5@10 ~@8 eb5@10 ~@18 bb4@39 ~@6 bb4@17 c5@4 d4@9, ~@9 gb4 ~@19 db2@6 c5@40 eb2@36 [a2,g3,db4,bb4,db5]@14 ~ [ab2,gb3,c4,f4,a4]@19 [bb2,f3,d4,g4]@19 ~@25 [f3,bb3]@13 ~@6 [ab3,eb4,g4]@12 ~@6 [g3,d5]@30, ~@75 c4@24 [c4,f4,bb4,d5]@12 ~@33 [a3,a4,c5,f5]@19 ~@18 [d4,g4]@21 ~@24 d4@2 g4@28, ~@92 gb3@18 ~@53 [a2,gb3,c4,gb4,c5]@18 g2@17 ~@3 f2@18 ~ e2@36]/8", // Gm A Cdim G Dm7 C Bb Gdim …
D: "[~@24 e3@3 ~ [g3,bb3,db4,e4]@6 ~@9 f3@2 ~ f3@5 ~ f3@9 ~@6 g4@6 f4@8 f4@7 ~@9 f3@9 ~@9 d3@2 ~ gb2@9 ~@6 [f3,b3,f4]@3 db2@7 g2@2 [g3,bb3]@6 [c3,g3]@2 ~ [gb2,ab3]@6, g3@27 ~@34 f3@12 ~@33 f4@24 ~@15 eb4@15, [db4,f4,a4]@12 ~@3 [bb3,db4,e4,g4]@12 ~@7 [a3,bb3,d4,f4]@39 [a3,db4,eb4,a4]@15 [a3,db4,eb4,f4,a4]@18 [gb3,c4]@21 ~@33, ~@9 a2@25 ~@39 f2@35 ~ d2@9 ~@9 g2@9 ~@9 c2@9 ~@6]/5", // Gdim Fdim Gm C5 Gbsus2 Dbaug Bbdim Bbmaj7 …
E: "[~@9 [f1,db4,eb4,g4]@12 ~@16 [c4,d4,f4,a4]@4 ~@2 [c4,d4,f4,a4]@3 ~@3 [b3,db4,eb4,ab4]@6 ~@17 [f2,g2]@3 ~@16 bb2@2 ~@8 [g3,f4]@3 ~@8 [db4,f4,a4]@6 bb2@2 ~ [e2,ab3,d4,ab4]@6 ~, a3@21 bb2@54 ~ e2@18 eb2@26 ~@8, ~ f2@20 bb3@19 ~@15 [bb3,d4,f4,g4]@20 ~@25 [db4,a4]@3 ~@25, ~@22 a3@19 ~@41 [ab3,d4,gb4,bb4]@12 ~@34, ~@11 [d4,f4]@4 bb1@14 ~@3 bb1@6 ~@26]/4", // Eb7 Dm7 Abm Fsus2 G7 Dbaug E7 Gm7 …
F: "[~@3 d4@6 ~ g3@2 ~@6 g3@7 [d2,f3,c4]@6 ~ [db2,f3]@5 ~@20 d5@6 ~@7 db5@5 ~ d4@8 [d3,a3,c4,f4]@9 ~ gb3@7 ~ [g3,c4,e4,g4]@9 ~@7 c4@11 ~@10 db5@6 ~@12 c5@6 ~@12 eb5@5 ~ c3@2 ~@10 d5@6 ~@12 c5@5 ~ [g2,g4]@9 ab3@3 g3@6 ~@9 [c4,eb4,gb4]@12, ~@2 [e2,ab3,ab4]@7 [eb2,db4,g4]@2 ~@6 g4@40 [bb3,d4,g4,bb4]@10 g3@9 ~@17 [eb4,gb4]@8 ~@16 [f4,bb4,d5]@12 ~ [c4,f4,bb4]@16 ~@35 [g4,a4]@18 ~@18 bb4@39, ~@17 [eb2,db4]@8 ~@6 b3@6 g3@26 d5@12 c5@36 ~@18 d5@16 ~@26 d5@9 ~@28 d5@9 d4@18 ~@21, ~@37 bb3@10 e3@28 [e3,bb3,g4]@8 ~@35 gb3@28 ~@34 [d3,bb3,f5]@19 ~@36 gb3@21, ~@38 c2@37 ~@26 e2@10 eb2@34 ~ [a2,g3,db4,gb4,bb4,db5]@17 [ab2,gb3,c4,f4,a4]@17 ~@19 [a2,gb3,c4,e4,gb4]@18 ~@39]/8", // Dm7 Db Dm7 C G Cdim E Eb7 …
G: "f4@15 f4@4 ~@8 gb4@5, [bb2,f3,a3,c4,d4]@19 [a2,g3,db4,f4]@13", // Bbmaj7 Aaug
H: "[~ db4@8 ~@6 g4@6 ~@9 b3@7 ~@9 [e3,g3,bb3,d4]@13 gb4 g4@5 bb4@2 ~ c5@6 ~@12 [gb3,bb4]@6 [a3,eb4,gb4]@11 ~ [gb3,c4,eb4,a4]@6 [g3,d4,f4,bb4]@12 [ab2,gb3,c4,f4,ab4]@9 [g2,f3,b3,e4,g4]@9 [g2,f3,b3,e4,g4]@9 [gb2,e3,bb3,eb4,gb4]@9 [gb2,e3,bb3,eb4,gb4]@8 ~ eb3@2 ~@4 gb2@3 g2@7 a2@3 ~@6, ~ [ab2,eb3,gb3,gb4]@20 [g2,f3,c4]@16 e2@22 e4@3 ~@130, ~@9 c4@12 g4@38 bb3@15 [bb3,e4,ab4,db5]@17 ~@76 [f2,a3,d4,f4]@9 ~@16]/6", // Em7b5 Gb Ebdim Gbdim Gm7 Fm Em Ebm …
I: "[[c4,f4,a4,c5]@3 ~@6 [bb3,d4,f4,g4,bb4]@2 ~@3 [a3,d4,f4]@3 ~@4 [ab3,bb3,d4,f4,ab4]@3 ~@6 [g3,bb3,d4,g4]@4 ~@4 [bb3,d4,f4,a4]@4 ~@6 [bb3,d4,f4,g4,bb4]@6 ~ [a3,a4]@3 ~@5 db4 g4 ~@16 [b3,db4,f4,g4,b4]@3 ~ bb4@2 ~@7 [a3,a4]@6 [g3,g4]@2 ~@26, d4 ~@12 a4@3 ~@14 f4@2 ~@31 [c4,f4,c5]@3 ~@18 [bb3,f4]@3 ~@41]/4", // F Gm7 Dm Bb7 Gm Bbmaj7 Gm7 A …
J: "[~@29 [d4,e4,g4]@5 bb3@2 ~ [db4,e4,g4,bb4,db5]@7 [c4,g4]@2 ~@7 [a3,a4]@3 ~ ab3@6 ~, ~@28 [bb4,d5]@7 ~@18 [bb3,d4,e4]@8 ~@3, ~@28 ab4@3 ~]/2", // Em7 Dbdim C5 A Bb Em7b5
K: "[~@2 [g3,d4]@3 ~@6 [bb3,d4,e4]@3 ~@7 gb4 ~@4 [eb4,gb4,bb4] ~@3 db4@5 ~ gb4 ~@8 eb4@13 ~@6, ~ g4@4 ~@5 a4@4 ~@6 [eb4,bb4]@3 ~@6 [eb4,gb4,db5]@4 ~@2 [c4,eb4,bb4]@2 ~@7 [bb3,gb4,bb4]@14 ~@6, ~@11 a3@5 ~@4 bb3@6 c4@3 ~ bb4@3 ~@31]/2", // G5 Em7b5 Ebm Eb5 Ebm7 Cm7 Ebm
L: "~@16 [f4,gb4,bb4,c5,f5]@3 ~@6 [eb4,gb4,eb5]@2 ~@2 [d4,f4,g4,d5]@3, ~@25 [bb4,c5] ~@6", // Fsus4 Ebm G7 Bbsus2
M: "~@11 [c4,d4,bb4,d5]@2 ~@2 [c4,gb4,a4]@3 ~@11 [c4,eb4,gb4]@2 ~, ~@11 [f4,g4] ~@17 a4 ~@2", // Gm Gbdim Cdim Fsus2
N: "~ [bb3,f4,g4,bb4]@3 ~@11 [bb3,d4]@2 ~@2 [f4,a4]@3 ~@10, ~@7 bb4 ~@8, ~@15 [f4,g4] ~@2 [a3,d4]@3 ~@11", // Gm7 Bb F Fsus2 D5
O: "[~ [a3,a4]@2 ~ [g3,d4,g4]@3 ~@13 g3@2 [a3,bb3,d4,e4,a4]@7 gb3@2 ~ [ab3,e4]@6 [g3,d4,e4,g4]@14 ~@8 c4@4, ~ d4 ~@29 [d4,ab4]@5 ~@23 [db4,e4,g4,c5]@5]/2", // A G5 Asus4 Dbm Em7 Ddim C
P: "~@4 [c4,e4,g4]@6 [bb3,db4,e4,bb4]@3 ~@2 [c4,f4,a4]@4 ~@4 [bb3,f4]@3 ~@3 f3@2 ~, ~@4 db4@3 ~@7 a3@5 ~@3 bb4@3 ~@3 [bb3,d4,f4]@3 ~", // C Bbdim F Bb5 Bb
Q: "~@14 [gb3,db4,gb4]@2 ~@2 [g3,c4,eb4,g4]@4 ~@5 [a3,a4]@4 ~, ~@14 [a3,eb4] ~@11 [c4,eb4]@4 ~@2", // Gb5 Cm A Adim Cm
R: "~ [f3,db4,eb4,f4]@3 ~@9 [f3,a3,db4,eb4,f4]@4 ~@2 [f3,d4,f4]@2 ~@11, ~@19 [g3,bb3] ~@12", // Db Faug Dm Gm
S: "~@5 [f3,b3] ~ [f4,f5]@6 ~@4 [f4,f5]@6 ~@3 [f4,f5]@6", // Fdim F
T: "[~@3 [f4,f5]@5 ~ [a3,eb4] ~@4 d5@4 bb4@3 f4@5 ~ eb4@2 ~ d4@6 f4@3 ~ g4@4 ~ bb4@3 ~@2 g4@5 ~@2 g4@5 ~@2, ~@9 eb5@3 ~@52]/2", // F Adim
U: "[~@18 bb4@2 ~ g4@5 bb4@2 ~@2 d5@5 f5@3 ~ g4@5 db5@2 ~@2 bb4@6 ~@2 g4@6 ~ bb4@2 ~ db5@5 ~@4 [g4,g5]@6 db5@3 bb4@2 ~ g4@2 ~ bb4@2 ~ db5@2 ~, g4@11 ~@6 d5@2 ~@19 g5@5 ~@53, ~@2 d4@7 ~@15, ~@8 [g3,a3,bb3]@24 ~@3 [g3,db4]@39 ~@22]/3", // G Gm Gdim
V: "[g5@2 ~ b4@3 eb5@2 ~ f5 ~@2 [gb4,gb5]@2 ~@2 [g4,g5]@13 ~@4 [d5,d6]@5 ~@4 [db5,db6]@4 ~@2 [c5,c6]@6 ~@2 [e3,a3,bb3,d4] c5@2 ~ bb4@4, ~@3 [f3,bb3,b3,eb4]@8 ~@3 [e3,d4]@38 ~@4 e5@2 ~@6]/2", // Gb G D Db C Dsus2 Ebsus2 E7
W: "[~@2 a4@4 ~ g4@4 [e3,a3,bb3,d4] ~@3 bb4@4 ~ c5@2 ~@2 db5@5 bb4@3 ~ b4@5 ~@10 [gb3,bb3,db4,f4] ~@20 ab5@5 ~ g5@2 ~@2 gb5@4 ~ bb5@3 ~@6 eb5@2 ~, ~@11 a4@3 ~@6 [gb3,bb3,db4,f4]@19 c5@20 [ab3,bb3,c4,f4]@35 ~@2, ~@60 gb3@35 ~]/3", // Dsus2 Gbmaj7 Fm
X: "~@7 [f3,bb3,d4] ~@19 f5@3 eb5@2, d5@17 ~ [gb3,c4,f4]@14", // Bb F
Y: "[d5@2 ~@3 bb4@5 d5@8 ~ ab4 ~ g4 gb4@5 ~ bb4@2 ~@2 f4@5 eb4@2 ~ d4@6 [g3,a3,bb3] ~@15 d5@2 e5@2 ~@2 gb5@2 e5@3 ~ d5@2 ~@4 db5@2 ~ eb5@2 ~@2 f5@2 eb5@2 ~ db5 ~@3, ~@2 c5@2 ~@14 a4@2 ~@39 [b3,d4]@15 ~@3 [db4,f4]@17 ~@2, ~@3 [a3,d4]@15 ~@4 c4@14 ~@22 [g3,gb4]@15 ~@5 [gb3,ab3,bb3]@16 ~@2]/3", // Gm Bm Db D5 Gmaj7 Gb
Z: "[~@3 c5@2 ~ d5@2 ~ e5@2 ~@7 bb4@5 d5@2 ~@2 a4@5 ab4@2 ~ g4@6 bb3 ~@2 gb4@7 ~@2 f4@6 f3@2 ~@3, [f3,a3,c4,e4]@13 ~@2 b4@3 ~@14 d5@5 ~@27, ~@16 d4@25 ~@23]/2", // Fmaj7
AA: "~@8 d4@6 c4@2 ~ [d4,gb4,d5]@5 ~@2 [d4,f4,g4] ~@7, ~@5 c4@2 [eb4,gb4,a4,b4,d5]@8 ~@2 [eb4,a4]@3 ~@12, ~@3 db4 ~@8 [bb3,bb4] ~@3", // D G7 B7 Ebdim Bb
AB: "[~@12 [g5,g6]@5 ~ eb6@2 ~@3 b5@4 g5@2 ~@2 c6@4 ~ bb5@2 ~@7 ab5@2 ~@2 a5@3 ~@3 ab5@3 g5@4 ~@5 f5@3 ~@3 bb3@2 ~ [d4,f4,a4]@2 ~@4 [bb3,d4]@2 ~@3 [a3,d4,a4]@3 ~@4 [d4,f4]@4 ~@4 [g3,g4]@6 eb3@2 ~ [gb3,a3,gb4]@5 ~ bb3 d4 ~@9, ~@48 [a3,eb4]@12 ~@3 [a3,bb3]@5 ~@25 [ab3,ab4]@4 ~@20 [f3,f4]@2 ~@9, ~@63 gb5@2 ~@16 bb4@2 ~@45, ~@64 d4@5 ~@7 [c4,c5]@4 ~@2 [f4,g4] ~@28 db4@3 ~@14]/4", // G Dm Bb D5 Dm G Gbm Adim …
AC: "~@8 [c4,f4,g4]@3 ~@6 [c4,db4,f4,g4]@2 ~@7 [b3,g4,b4]@2 ~ [bb3,db4,f4,g4,bb4]@3, ~@7 c5@4 ~@5 c5@3 ~@13, ~@7 db4@2 ~@17 [db4,f4] ~@5", // Csus4 Em Gm7b5 Db
AD: "~@15 [a3,bb3,db4,f4,a4]@3 ~@6 [ab3,db4,f4,ab4]@6 [g3,bb3,db4,g4]@2", // Bbm Db Gdim
AE: "[~@16 [db4,e4,gb4,bb4,db5]@3 [e4,g4,bb4,d5]@10 bb4@2 g4@2 ~ e4 ~@2 ab4@2 a4@5 ~@2 ab4@5 ~@23 g4@5 ~ bb4@3 ~ d5@3 ~@2 eb5@3 ~@2 f5@3 ~ eb5@3 ~@2 bb4@4 gb4@2 ~ f4 ~ gb4@2 f4@2 eb4@2 ~ f4@15 [gb3,bb3,c4] ~@8 gb5@2 ~@2 ab5@2 gb5@3 db5@2 a4@2 ab4@2 ~ gb4, ~@19 d4@27 ~@7 g4@14 ~@22 db4@15 ~@56, ~@37 d5@6 ~@3 d5@20 ~@94, ~@62 [e3,bb3,d4]@23 ~@4 [gb3,bb3]@30 ~@41]/5", // Gb7 Em7b5 Cm7b5 Em7b5 Gb
AF: "[f4 ~@4 d4@6 ~@4 d4@2 ~ a4@2 ~@3 c5@2 bb4 ~@2 d5 ~ c5 ~ f5@2 eb5@2 d5 ~@3 bb4@2 ~@2 a4 ~ ab4 ~@2 g4@22 ~@10 bb4@2 g4@2 ~ a4@2 ~@2 e4 ab4@2 ~ e4 g4@13 ~@11 e4 ~@2 c4@3 db4@2 eb4, ~@3 bb3@15 ~@21 [a3,d4]@13 ~@68 eb4@2 ~@6, ~@3 eb4@2 ~@12 f4@2 ~ c5@2 ~@16 c5@2 ~@3 d5@2 ~@35 d5@2 ~@46, ~@4 a3@14 ~@3 [gb3,c4]@16 ~@40 [e3,a3]@33 ~@11 db4@2 ~@5]/4", // D5 Gbdim A5
AG: "[~ e4@2 ~ gb4@2 g4@2 a4@2 ~ bb4 ~ c5@2 db5 ~ d5 ~@4 f5@2 d5@2 eb5 ~ c5@2 d5@2 ~ bb4 ~@19 f5 ~ g5 ~@2 gb5@2 ab5@2 gb5@2 db5@2 a4@2 ~@2 gb4@3 f4 ~ eb4@2 db4@2 a3@2 ~ ab3@2 gb3@2 f3@2 ~ db3 ~@3 gb2@2 f2@9 ~@11 eb4@2 f4@2 g4 ~ ab4@2 ~ bb4@2 g4@2, ~@10 db4@6 ~@3 eb5@2 ~@36 eb4@15 ~@20 ab2@2 ~@34, ~@11 g3@7 ~@2 [a3,bb3,d4]@35 ~@2 a3@18 ~@13 eb3@2 ~ a2@2 ~@35, ~@17 ab4 ~@14]/4", // Bbmaj7
AH: "[f4@2 eb4@6 g4@3 d4@5 db4@3 ~ c4 ~@5 [d4,eb4,gb4,d5]@3 [db4,bb4,db5]@6 [c4,d4,f4,a4]@3 ~@9 d4@7 g3@2 ~ [a3,bb3,d4,f4,a4]@6 g3@2 ~ [ab3,d4]@5 ~ [g3,bb3,d4,f4] ~@19 [bb3,c4,d5,f5,a5]@2 ~@2, ~@26 a4 ~@17 [bb3,a4]@10 ~@11 [bb3,f4,ab4]@5 ~@22 [d4,f4,a4] ~@3, ~@22 db4 ~@13 g4 ~@11, ~@45 [a3,f4]@10 ~@41]/3", // D Gb Dm7 Bbmaj7 Abdim Gm7 Bbmaj7 Bb7 …
AI: "~@14 [g3,db4,f4,a4,db5,f5,a5]@6 ~ [a4,db5] ~@7 db5 f5@2, ~@21 g3@2 ~@6 [g3,db4,f4,a5]@2 ~, ~@30 a4 ~", // Dbaug A Dbaug
AJ: "~ [g3,f4,db5,a5]@2 ~@21 [ab3,d4,ab4,db5,ab5]@3 ~@2 [db4,g4,db5,g5]@3", // Dbaug Db Dbdim
AK: "~@3 [g3,g4]@2 ~@9 [db4,e4,gb4,bb4,db5]@5 ~ [d4,d5]@4 e4 ~ d5 [e4,g4]@2 [e4,g4] ~ d4, ~@3 db5 ~@16 bb4@11 ~, ~@20 [e4,g4]@3 ~@6 d5@2 ~", // G Gb7 D Em
AL: "~@9 [d4,e4,g4,bb4,d5]@6 bb3@2 ~ [db4,e4,g4,bb4,db5]@6 ~ [c4,e4,g4,bb4]@2 ~@5", // Em7b5 Dbdim C7
AM: "~@4 [g3,bb3,d4,e4,g4]@4 ~@2 [g3,bb3,d4,e4,g4]@3 ~ [a3,d4,a4]@3 ~@2 [d4,e4] ~@3 [e4,g4]@3 ~@2 [e4,g4,bb4] ~@3, ~@9 a4 ~@6, ~@19 a3@2 ~ [bb3,bb4]@3 ~@3 bb3@3 ~", // Em7b5 D5 Dsus2 Em Edim Bb
AN: "[d4,gb4,d5]@3 ~@11 [d4,gb4,bb4,d5]@2 ~@2 gb4@2 ~@12, ~@14 eb4 ~@2 [d4,bb4,d5]@3 ~@12", // D Daug Gm
AO: "[~ [db4,eb4,gb4,bb4,db5]@4 ~@2 [eb4,gb4,bb4]@3 ~@3 [c4,eb4,bb4]@5 ~ [c4,eb4,gb4,bb4,c5]@8 ~ [eb4,gb4,bb4] ~@2 [eb4,eb5]@6 [f4,g4,bb4,d5,f5]@14 ~@4 c4@2 ~ d4@5 ~, ~@6 [db4,db5]@4 ~@3 gb4@3 ~@12 [d4,d5]@3 ~@26 [eb4,a4,d5]@4 ~@3, ~@58 gb4@3 ~@3]/2", // Ebm7 Ebm Cm7 Cm7b5 Ebm Eb Gm7 Db …
AP: "[bb3@2 ~ [c4,gb4]@6 [bb3,d4,f4,g4]@16 ~@5 [bb3,gb4]@13 ~@12 g4@8 ~, ~@3 a4@3 ~@3 bb4@35 ~@20, ~@29 [c4,eb4]@13 ~@12 [ab3,d4,c5,f5]@9 ~]/2", // Cdim Gm7 Ebm Cm Dm7b5
AQ: "~@3 [g3,db4,g4,b4,db5,f5]@3 ~@11 [gb3,ab3,bb3,db4,gb4,bb4,db5,eb5,gb5]@3 ~@3 [gb3,bb3,gb4,bb4,gb5]@2 ~@4 g5@3, ~@22 db4@3 ~@7", // G7 Ebm7 Gb
AR: "[~@4 bb4@2 ~@16 a3@2 ~@19 gb4 g4@4 ~ bb4@2 ~@2 c5@5 [g3,bb4]@3 ~ [bb3,e4]@6 [ab3,bb4]@3 ~@6 [a3,g4,c5]@19, ~@4 [b3,g4,e5,g5]@21 ~@6 [bb3,d4]@25 ~@5 [ab4,db5]@7 ~@9 eb4@14 ~@5, ~@4 f3@18 ~@3 e3@34 ~@37, ~@6 b4@19 ~@7 a3@23 ~@41]/3", // Gm Bbdim Absus2 Am7 Em Bb Db5
AS: "~@7 [f3,a3,c4,d4,d5,f5,a5,d6]@8 ~@4 [f3,a3,c4,d4,f5,c6]@2 ~@7 [gb3,bb3,c4,f4,g5,e6,g6]@3 ~, ~@19 a5 ~@12", // Dm7 C7
AT: "[~@5 [f3,b3,eb4,ab5,eb6,ab6]@6 ~@2 [f3,eb4,f5] ~@7 [f3,b3,eb4,g5,b5,eb6,g6]@18 bb3@2 ~@7 [bb3,d4]@12 [gb3,gb4] ~ g4@4 ~ bb4@2 ~ [bb3,c5]@5 ~ [db4,e4,g4,bb4,db5]@9 bb3@2 ~ [db4,e4,g4,bb4,db5]@4 ~@2 [db4,bb4,db5]@3 bb3@6 [c4,eb4,gb4,a4,c5]@4 ~@4 [bb3,d4,f4,g4,bb4]@3 ~@6 [bb2,bb3]@3 [db3,db4]@3 [d3,d4]@2, ~@13 b3@2 ~@27 e3@18 ~@37 bb4@3 ~@28, ~@24 g3@3 ~@4 g3@5 ~@11 [e4,g4]@3 ~@14]/4", // Fm7b5 F7 Ebaug Bb Gb Bbsus2 Dbdim Gb …
AU: "~ [f3,f4] ~@2 [eb3,eb4]@5 ~ g4@2 ~ [bb3,bb4]@5 [c4,c5]@2 ~ db5@2 ~@2 db5@2 [bb3,bb4]@2 ~ [c4,c5]@2, ~@9 g3@4 ~@8 db4@3 d4@3 ~@5, ~@23 d5@2 ~@7", // F Eb Bb C Bb C
AV: "[~ g3@2 [bb3,bb4]@3 ~@11 [ab3,c4,d4,g4,d5,e5,g5,bb5]@85 ~@26, ~ g4 ~@14 ab4@85 ~@27]/4", // Bb C7
})).s("gm_piano").gain(0.4).pan(0.6)
// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
A@3 ~@2 B ~ C@2 ~@3 D@2 ~@11 E ~@2 F@2 ~ G H ~@4 I@2 ~@3 J K@2 ~ L M N O P Q R@2 S T U ~@6 V@2 W@2 X ~ Y@2 ~ Z@2 ~@3
AA AB ~ AC ~@2 AD@2 ~@2 AE AF@2 ~@3 AG AH@2 AI AJ AK AL AM AN AO AP ~ AQ ~ AR ~@13
>`.pickRestart({
A: "[~@19 ab3@19 ~@14 gb3@21 ~@23]/3", B: "~@13 eb3@7 ~@12", C: "[~@14 gb3@9 ~@9]/2", D: "[~@24 c5@5 ~ c5@18 ~@16]/2",
E: "~@17 g3@7 ~@8", F: "[~@15 eb2@4 ~@13, ~@29 c4@8 ~@27]/2", G: "~@3 c5@18 ~@11", H: "~@7 c5@12 ~@13",
I: "[~@28 c5@11 ~@25]/2", J: "~@7 a3@4 ~@12 [d4,f4] ~@8",
K: "[~@21 g4 ~@8 [bb3,db4,f4]@4 ~@2 [db4,f4] ~@27, ~@20 db4@3 ~@13 bb3@2 ~@26]/2", // Bbm Db
L: "~@13 bb4 ~@18, ~@6 [e4,c5] ~@9", M: "~ e4 ~@8 db4 ~@2 c5 ~@2, ~ bb3@3 ~@28", N: "~@3 c5@2 ~@7 db4@13 ~@7",
O: "~@29 bb4@2 ~", P: "~@16 eb4 ~@12 c5@2 ~, ~@15 c5@3 ~@14", Q: "~ d4@2 ~@29",
R: "[~@5 [bb3,e4]@3 ~@23 bb3@4 ~@3 bb3@13 ~@13]/2", // Bbdim
S: "~@2 a3@2 c5@4 ~@2 g4@2 ~@3 g4@4 ~@4 c4@3 ~@3 g3@2 ~, ~@23 g4 ~@8", T: "~@18 bb3@3 ~@11", U: "~ a3@2 ~@29",
V: "[~@14 [a3,bb3]@37 ~@2 a5@3 ~@8]/2", W: "[~@21 ab3@19 ~@8 ab3 ~@15]/2", X: "~@6 f5 ~",
Y: "[~@3 bb3@14 ~@5 gb3@13 ~@29]/2", Z: "[~@12 c5@3 ~ e3@24 ~@24, ~@4 bb3@5 ~@7]/2", AA: "~@12 f4 ~@2 bb3",
AB: "~@7 [d4,f4]@5 ~@10 g3 ~@9, ~@6 bb3@5 ~@21", AC: "~@12 bb3@2 ~ f4", AD: "[~@14 ab3@13 ~@5, ~@26 f4@11 ~@27]/2",
AE: "~@7 bb3@13 ~@12", AF: "[~@21 e4 ~@42, ~@13 [bb3,d4]@32 ~@19]/2", AG: "~@17 b3@2 ~@9 ab4 ~@3",
AH: "[~@29 [eb4,gb4]@5 ~ c5@3 ~@26]/2", AI: "~@28 c5 ~@3", AJ: "~@21 [db4,f5,a5]@2 ~@9, ~@21 f4 ~@10",
AK: "~ a4@2 ~@26 g3@3, ~ db4 ~@30", AL: "~@3 [db4,g5] ~@20 g4@2 ~ d4@2 ~@3", AM: "~@25 c5@2 ~@5",
AN: "~@14 e4@3 ~@15", AO: "[eb4,bb4] ~@8 eb4 ~@6", AP: "~@13 c5@5 ~@14", AQ: "~@3 [eb4,c5]@3 ~@26",
AR: "~@23 [ab3,eb5]@2 ~@7, ~@23 db5 ~@8", // Ab5
})).s("gm_piano").gain(0.24).pan(0.6)
// drums · kick
const kick = s("bd").struct(`<
~@40 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z J AA AB AC AD AE AF AG AH S AI AJ AK W AL AG AM AN AA AB AO
AP O AF AQ AR AS AI AJ AT AU AL AV AW AX K AB AO AY AZ BA AQ BB BC AI AJ AT BD BE ~ BF BG ~@3
>`.pickRestart({
A: "~@25 x ~@6", B: "~@8 x ~@18 x ~ x ~@2", C: "~@13 x ~@18", D: "~@17 x ~@14", E: "~@6 x ~@14 x ~@10",
F: "~@7 x ~@17 x ~@6", G: "~@21 x ~@10", H: "~@7 x ~@8 x ~@2 x ~@12", I: "~@2 x ~@17 x ~@2 x ~@8",
J: "~@6 x ~@20 x ~@4", K: "~@5 x ~@8 x ~", L: "~@15 x ~@16", M: "~@4 x ~@14 x ~@12", N: "~@23 x ~@8",
O: "~@12 x ~@14 x ~@4", P: "~ x", Q: "x ~@17 x ~@2 x ~@10", R: "~@4 x ~@17 x ~@2 x ~@6", S: "~@8 x ~@20 x ~@2",
T: "~@12 x ~@18 x", U: "~ x ~@15 x ~@14", V: "~@3 x ~@17 x ~@10", W: "~@10 x ~@14 x ~@6", X: "~@11 x ~@8 x ~@11",
Y: "~@7 x ~@8 x ~@15", Z: "~@2 x ~@20 x ~@8", AA: "~@10 x ~@20 x", AB: "~@7 x ~@8", AC: "~ x ~@17 x ~@12",
AD: "~@8 x ~@14 x ~@8", AE: "~@9 x ~@2 x ~@14 x ~@4", AF: "~@16 x ~@14 x", AG: "~@9 x ~@6", AH: "~@4 x ~@20 x ~@6",
AI: "~@3 x ~@4", AJ: "~ x ~@14 x ~@15", AK: "~@5 x ~@15 x ~@10", AL: "~@11 x ~@2 x ~@14 x ~@2",
AM: "~ x ~@18 x ~ x ~@9", AN: "~@3 x ~@12", AO: "~@3 x ~@14 x ~@13", AP: "~@5 x ~@17 x ~@8", AQ: "~@5 x ~@2",
AR: "~@3 x ~@20 x ~@7", AS: "~@4 x ~@8 x ~@2", AT: "~@5 x ~@14 x ~@11", AU: "~@6 x ~@2 x ~@15 x ~@6",
AV: "~@15 x ~@2 x ~@13", AW: "~ x ~@30", AX: "~@5 x ~@20 x ~@5", AY: "~@7 x ~@14 x ~@9", AZ: "~@9 x ~@17 x ~@4",
BA: "~@31 x", BB: "~@3 x ~@28", BC: "~@7 x ~@20 x ~@3", BD: "~@9 x ~@14 x ~@7", BE: "~@11 x ~ x ~@15 x ~@2",
BF: "~ x ~@20 x ~@9", BG: "~@5 x ~@26",
})).gain(0.05)
// drums · rim
const rim = s("rim").struct(`<
~@41 A B C ~ D E F G H I J K ~ L M N O A P C ~ D E Q G H I R K ~ L M S O A P T ~ D E Q U H I R V ~ L M S W A P T ~ X E
Q U Y I R V ~ Z M S W AA P T ~ X AB Q U Y ~@3
>`.pickRestart({
A: "~@5 x ~@2", B: "~@25 x ~@6", C: "~@29 x ~@2", D: "~ x ~@30", E: "~@5 x ~@26", F: "~@5 x ~@10", G: "~@7 x ~@8",
H: "~@9 x ~@6", I: "~@11 x ~@4", J: "~@27 x ~@4", K: "~@31 x", L: "~@3 x ~@28", M: "~@7 x ~@24", N: "~@3 x ~@4",
O: "~ x", P: "~@3 x", Q: "~@9 x ~@22", R: "~@13 x ~@2", S: "~@11 x ~@20", T: "~@7 x", U: "~@13 x ~@18", V: "~@15 x",
W: "~@15 x ~@16", X: "x", Y: "~@17 x ~@14", Z: "~ x ~@14", AA: "~@19 x ~@12", AB: "~ x ~@6",
})).gain(0.38)
// drums · snare
const snare = s("sd").struct(`<
~@42 A ~@6 B ~@2 C ~ D ~@3 E ~@6 F ~ G ~@4 H D I ~ J K L ~ M ~ F ~@3 N O D P E ~@4 Q ~@2 B ~@5 A Q ~@2 R ~ S K ~ T M ~
U V ~@3
>`.pickRestart({
A: "~ x ~@6", B: "~@3 x", C: "~@5 x ~@10", D: "~@9 x ~@6", E: "~@13 x ~@2", F: "~@29 x ~@2", G: "~@7 x",
H: "~@13 x ~@18", I: "~@31 x", J: "~@15 x", K: "~@7 x ~@24", L: "~@3 x ~@4", M: "~@5 x ~@2", N: "x", O: "~@5 x ~@26",
P: "~@11 x ~@4", Q: "~ x ~@14", R: "~@21 x ~@10", S: "~@3 x ~@28", T: "~@3 x ~@12", U: "~@22 x ~@6 x ~ x",
V: "~@5 x ~@5 x ~@2 x ~@2 x ~@14",
})).gain(0.16)
// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@50 A ~@22 B ~@12 C ~@8 D E ~@8 E ~@15>".pickRestart({
A: "~ x ~@2 x ~@17 x ~@2 x ~@6", B: "~@9 x ~@22", C: "~@7 x", D: "~@11 x ~@2 x ~@14 x ~@2", E: "x",
})).gain(0.05)
// drums · low tom
const low_tom = s("lt").struct("<~@96 [~@3 x ~@28] ~@24>").gain(0.05)
// drums · hihat
const hihat = s("hh").struct(`<
~@40 A B C B D E F G F H I J I K L M N M B D O D E F H P H I K Q K L M B R B D E F E F H I S I K L M L M B D T D E F H
F H I K U K L M B M B D E V E F H I W I X ~@3
>`.pickRestart({
A: "~@25 x ~@6", B: "~@2 x ~@8 x ~@8 x ~@8 x ~@2", C: "~@6 x ~@8 x ~@9 x ~@6", D: "~@6 x ~@8 x ~@8 x ~@7",
E: "~ x ~@8 x ~@8 x ~@8 x ~@3", F: "~@5 x ~@8 x ~@8 x ~@8", G: "x ~@9 x ~@8 x ~@8 x ~@3",
H: "x ~@8 x ~@8 x ~@8 x ~@4", I: "~@4 x ~@8 x ~@8 x ~@8 x", J: "~@8 x ~@8 x ~@9 x ~@4", K: "~@8 x ~@8 x ~@8 x ~@5",
L: "~@3 x ~@8 x ~@8 x ~@8 x ~", M: "~@7 x ~@8 x ~@8 x ~@6", N: "~@2 x ~@9 x ~@8 x ~@8 x ~",
O: "~ x ~@8 x ~@8 x ~@9 x ~@2", P: "~@4 x ~@9 x ~@8 x ~@8", Q: "~@3 x ~@8 x ~@8 x ~@9 x", R: "~@6 x ~@9 x ~@8 x ~@6",
S: "~@8 x ~@9 x ~@8 x ~@4", T: "~ x ~@8 x ~@9 x ~@8 x ~@2", U: "~@3 x ~@8 x ~@9 x ~@8 x", V: "~@5 x ~@8 x ~@9 x ~@7",
W: "~@9 x ~@8 x ~@8 x ~@4", X: "~@17 x ~@14",
})).gain(0.38)
// drums · mid tom
const mid_tom = s("mt").struct("<~@49 A ~@8 B ~@8 C ~@4 D ~@3 E ~@8 F ~@8 G ~@8 H ~@4 I ~@3 J ~@8>".pickRestart({
A: "~@15 x ~@16", B: "~@17 x ~@14", C: "~@19 x ~@12", D: "~ x ~@6", E: "~@21 x ~@10", F: "~@23 x ~@8",
G: "~@25 x ~@6", H: "~@27 x ~@4", I: "~@3 x ~@4", J: "~@29 x ~@2",
})).gain(0.21)
// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@50 A ~@22 B ~@12 C ~@18 D ~@15>".pickRestart({
A: "~@19 x ~@12", B: "~@11 x ~@20", C: "~@15 x", D: "~@9 x ~@22",
})).gain(0.05)
// drums · crash
const crash = s("cr").struct("<~@49 A ~@22 B ~@13 C ~@8 D ~@8 E ~@8 F ~@3 G ~@3>".pickRestart({
A: "~@27 x ~@4", B: "~ x", C: "~@3 x ~@28", D: "~@5 x ~@26", E: "~@7 x ~@24", F: "~@9 x ~@22", G: "~@17 x ~@14",
})).gain(0.21)
// drums · ride
const ride = s("rd").struct(`<
~@40 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA K AB AC AD AE AF AG AH S AI AJ AK AL AM AN AO AP AQ AB AR
AS O AT AU AV AW AX AJ AY AZ AM AN BA BB BC BD BE BF BG BH BI BJ BK BL AJ I BM BN BO BP BQ ~@3
// … 28 more lines
More by Oscar Peterson
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.