0:00/0:00
// Our Love Is Here to Stay — Oscar Peterson
// 122 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 107 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(122/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 · "A.PIANO 1"
const piano = note(`<
A B C@3 D E F G H I J K L@3 M N O@3 P Q@3 R S T U V W@4 X@3 Y@4 Z AA AB AC AD AE AF@3 AG AH AI AJ AK AL AM AN AO AP@2
AQ AR AS AT@4 AU AV AW@3 AX AY AZ BA@3 BB BC BD BE@3 BF BG@2 BH BI BJ BK BL BM BN@2 BO BP BQ BR@3 BS@4 ~
>`.pickRestart({
A: "~@10 [bb3,bb4] ~ [c4,c5]@2 ~@4 [g4,g5]@2 ~@4", B: "~ bb3@11 [bb3,eb4,ab4]@12, eb5, [bb4,c5] ~",
C: "[~@8 eb5@4 db5 d5@5 c5@4 ~@6 [f4,bb4] ~@7 [gb3,c4,f4,bb4]@12 ~@10 [bb3,eb4,bb4] ~ [bb3,eb4,c5]@2 ~@4 [bb3,eb4,bb5]@3 ~@3, c5@11 ~@61, eb5@8 ~@14 eb5@37 ~@13, ~ [eb3,ab3]@11 ~@60, ~@4 f5@7 ~ f5@5 ~@55]/3", // Bb5 Gbmaj7 Eb5 Cm7 Eb5 Ab5
D: "db5 ~ d5@14 ~ [eb3,d4,g4]@7, [g4,g5]@2 ~", E: "eb5@3 ~@5 eb5@4 ~@6 eb5@5 gb5, ~ f5@2 [gb3,c5,f5]@3",
F: "~@5 [f3,b3,eb4] ~@6 [bb3,eb4]@12, g5", G: "~@10 eb6 eb5 ~ [d5,d6]@2 ~@3 [gb3,f4,c5,c6]@3 ~@3",
H: "~ [bb4,bb5]@4 ~@2 bb5@4 gb5@2 g5@4 [e3,bb3,eb4]@6 f5, ~@11 c6@6 ~@7", // Bb Eb
I: "[eb3,ab3,c4,ab5] ~ bb5 ab5 ~ f5 ab5@4 ~ [gb5,bb5]@2 g5 ~@3 [d3,b3]@2 ~@4 bb3, ~@17 ab3 ~@6", // Ab Gb G
J: "g5@4 d4 gb5 [d4,g5]@4 ~ [c4,f4,f5,bb5] ~@5 gb3@7, ~@2 [c4,f4,eb5,ab5]", // G5 Fsus4 Fm7
K: "~@4 [gb3,ab4]@6 ~ ab5 ~@2 g5@2 ~ ab5 ~@3 f5 g5@2, f5@11 b3@9 ~@4", // Gbsus2
L: "[~ eb3@2 ~@3 [eb3,bb3]@3 ~@2 f5@2 ~@2 d5@2 ~@8 [eb3,bb3]@4 f5 ~@3 g5@3 ~ [d3,e5]@6 [eb3,a3]@6 [gb3,c4,f4,c5,ab5,c6]@12 ~ g5@10, ~ eb5@7 ~@11 eb5@9 ~@15 f5@18 [g3,db4,gb4,c5,c6]@11, ~@61 gb5@2 ~@9]/3", // Eb5 Dsus2 Ebdim Fm
M: "~@2 g5@2 ~@7 [bb3,bb4] ~ [c4,c5]@2 ~@4 [eb4,g5]@3 ~@2, [ab3,d4,g4,gb5] ~@7, ~ [c5,c6]@3 ~@20", // Bb C Eb Abm7b5 C
N: "~ bb3@11 ~ bb3@10 ~, eb5@23 ~, eb3@11 ~ eb4@11 ~",
O: "[~ [eb3,eb5]@2 ~@2 f5@2 eb5@4 db5@2 d5@4 ab3 c5@3 ~ eb5@6 ~@4 bb4@2 ab4 ~ gb3@2 eb4@3 ~ eb4@4 ~ eb4@11 bb4 bb3 ~ [bb3,eb4] ~@4 [e3,bb3,eb4,gb5,c6]@2 g5@2 ~@2, ab3@2 ~@9 f5@7 ~@11 db4@5 ~@2 gb4 ~@23 c5@2 ~@10]/3", // Eb Eb5 Cm7b5
P: "~ eb3@2 ~@9 eb3@10 ~@2, ~ g5@22 ~",
Q: "[[d3,ab3,c4,eb5]@4 ~ [d3,ab3,c4] ~ [d3,ab3,c4,eb5]@4 [f3,b3,eb4]@6 ~ [b3,eb4,eb5]@4 ~ gb4 g4@12 [ab3,bb3,eb4]@12 [eb3,a3]@10 ~ [db4,f4,eb5,eb6]@3 ~ [d5,d6]@2 c4 [c5,c6]@5 ~, ~@5 f5@2 ~@4 [b4,f5]@7 ~@4 gb5@2 g5@28 ~@20, ~@23 e4@13 ~@29 gb3@2 ~@5]/3", // Ab Dm7b5 Ab Fm7b5 B Absus2 Ebdim Db …
R: "[f3,b3,eb4]@2 ~@5 bb5@4 gb5@2 ~@4 eb4 ~@6, [bb4,bb5]@4 ~@7 c6@11 ~@2, ~@13 g5@10 ~, ~@8 bb3 ~@3", // Fm7b5 Bb
S: "[eb3,ab3,c4,ab5] ~ bb5 ab5 f5 ~ ab5@4 ~ [gb5,bb5]@2 g5 ~@3 [d3,b3]@2 ~@4 [bb3,eb5], ~@17 ab3 ~@6", // Ab Gb G Eb5
T: "~ g5@4 ~@2 g5@4 [f3,b3,bb5] ~@5 [f3,b3,eb4,eb5,ab5]@7", // Bb Fm7b5
U: "[c5,f5]@10 [db4,f4,eb5,eb6] g3 db4 [d5,d6] ~@2 [db4,d5,d6] f4 [c5,c6] ~@3 [gb3,c4,f4,c5,c6] ~", // F5 Db D Dmaj7 C F
V: "~@4 gb5 g5@6 ~ [bb3,eb4,c5,c6]@2 ~@4 gb5 g5@2 ~@3, ~@4 [f3,b3,eb4,bb5]@7 ~@7 [bb3,eb4]@2 ~@4, ~@2 bb4 ~@9", // Cm7 Ebsus2 Eb5
W: "[[eb3,ab3,bb4,bb5]@11 ~ [d3,ab3,g4,g5]@10 ~ [g3,c4,bb4,eb5]@2 ~@3 bb4 ~@3 g5 ~ c6@2 ~ bb5@3 ~@2 ab5@2 ~@2 bb5 ~ g5 ~@3 eb5 ~ bb4@4 bb3 eb4 eb5@3 ~@2 eb4 [ab4,eb5]@4 ~@2 gb4 ~@4 eb4 ~ eb4@3 ~@3 e3@2 ~@3 eb4@4 ~@2, ~@12 db5 ~@34 ab5@2 ~@5 eb5@2 ~@4 ab4 ~@10 eb4@2 ~@11 [bb3,eb4]@3 ~@9]/4", // Ebsus4 G Cm7 Ab5 Eb5
X: "[~ [eb3,ab3,eb4]@2 ~@3 eb4@4 ~ [d3,ab3,b3] ~ eb4@3 ~@3 g4@4 eb4@6 ~@7 [gb3,c4]@2 ~@8 b3 f3@2 f6@2 ~ eb6@2 ~ d6@3 bb3 ~ eb6@4 bb5@6 bb3 ~]/3", // Ab5 Abdim Gbdim
Y: "[~ ab5@2 ~ gb5@2 ~@2 eb5 ~ bb4 ~ ab4@4 ~ bb3 gb4@2 g4@3 eb4@6 ~@8 bb4@3 ~ [gb3,ab4] bb4@2 ~@2 [b3,ab4] f3@2 gb4 ~@3 ab4 ~ bb4 ~@2 [bb3,eb4,c5] e3 ~ db5@2 b4 c5@6 ~@2 f4@3 ~ g4 ~@3 ab4 ~ bb4 ~ b4 ~ ab4 ~ bb4@5 ~ ab4 ~, ~@71 eb3@2 ~@23]/4", // Gbsus2 E Cm7
Z: "g4@2 ~@2 b3 f3 db5 ~@2 db5@2 b4 ~ c5@3 ~ [e3,bb3]@6 ~, ~@4 eb5 ~@7", // Edim
AA: "[eb3,ab3]@2 ~@3 [e5,f5] ~ ab5 ~ f5 ~ ab5 ~ c6 ~ ab5 c6 ~ eb6 ~ c6 ~ eb6 ~, ~@11 ab3@2 ~@11, ~@6 d3 ~@5", // Ab5 Fmaj7
AB: "gb6 ~ g6 ~ ab6 ~ g6 ~ eb6 ~ bb5 c4 eb6@2 ~@2 [a5,eb6] ~ ab5@2 eb5 ~ eb6@2, ~@11 gb3@2 ~@11, ~@12 ab5 ~@5 eb6 ~@3 ab5 ~", // Adim
AC: "gb5@2 g5 ~ gb3@2 b5 ~ a5 bb5 ~ ab5 g5 ~ gb5 f5 ~ e5 eb5 ~ b4 bb4 ~ ab4, ~@4 c4 ~@19",
AD: "g4 ~@2 g4 ~ gb4 g4 ~@2 c5 d5 ~ eb5 ~@2 eb5@2 ~ eb5 ~@2 d5 ~ eb5, ~@10 f5 ~",
AE: "c5@4 ~@7 d6@2 c6@3 g5 ~ eb5@4 ~ c4",
AF: "[gb3@2 ~@3 f5@2 ~ db5 d5 ~ f5 ~ bb4@3 ~ [db4,gb4] ~ bb4@4 bb4@6 [ab3,eb4,g4]@7 ~ [ab3,d4,g4] ~@3 [ab3,d4,g4,c6] ~@5 [bb3,gb6]@2 g6 ~@3 [e3,eb4,eb6]@3 ~ eb6 ~ c6 ~ [bb3,eb4,eb6]@2 ~@4 c6@3 ~@2, ~@37 bb5@2 ~@4 [ab3,g4,eb6]@6 ~@4 bb3 ~@18, ~@23 eb4 ~@12]/3", // Gb5 Abmaj7 G Abmaj7 Ebm Emaj7 Eb5 Abmaj7
AG: "~ eb3@10 [d3,ab3,b3,gb6]@2 g6 ~@3 [d3,ab3] bb5 ~@2 c6 ~ eb6, eb6 ~, ab3@10 ~@7 b3@2 ~@5", // Abm7b5 Ddim
AH: "[g3,db4,f4] gb6 ~@3 g6 ~ [ab6,bb6]@2 ~@2 gb6 g6@2 ~ eb6@2 bb5 ~ eb6@4 eb5, ~@11 [gb3,c4,bb6]@4 ~@4 ab5@2 ~@3", // Gm7b5 Absus2 Cm7b5
AI: "~ [ab5,eb6]@2 ~@4 eb5@2 ~ gb5 g5@2 ~ eb5@2 ~ bb4 ~ ab4 ~@3 eb4, ~@5 [bb5,eb6]@2 ~@3 bb5@2 ~@2 bb5 ~@9, ~@6 ab5@2 ~@10 eb5@3 ~@3", // Ab5 Eb5
AJ: "gb4@2 ~@2 eb3 f5@2 eb5@3 ~@2 d5@4 ~@2 c5@4 ~ ab3", AK: "[d4,bb4]@5 ~ [db4,a4]@5 ~ ab4@5 ~ bb4@4 gb4@2",
AL: "g4@2 ~@3 [f3,b3]@2 ~@4 eb4@2 ~@4 bb3 ~@6, ~@2 db4 ~@9", // Fdim
AM: "[eb3,a3]@2 ~@4 f6 eb6@2 d6 c6 ~ b5 ~ a5 bb5 ~ gb5 f5 ~ eb5 d5 ~ c5, ~@11 [gb3,c4]@2 ~@11", // Ebdim Gbdim
AN: "bb4 ~@3 bb3 ~@8 [e3,bb3]@2 ~@2 g4 ~@3 e5 ~ [eb4,g5]", // Edim Eb
AO: "ab3 bb5@2 g5 ~ ab5 ~ c5 ~ eb5 ~ g5@2 ~ c5 ~ eb5 ~ d5@2 b4 ~ bb4 ~, ~@13 f5@2 ~@9",
AP: "[~@5 ab4@2 g4@2 ~@2 f4 ~ eb4@2 ~@2 f4 ~ g4@4 eb4@3 ~@4 c4@3 ~@2 bb3 eb4@4 ~ f4 [gb3,c4,g4]@4 [f3,b3,eb4]@2, ~@5 bb4 ~@23 eb4@2 ~@5 db4@2 ~@10]/2", // C Fm7b5
AQ: "~@3 eb4 ~@2 eb4@4 f4 ~ [gb4,bb4]@2 ~@2 bb3 e3@2 ~@2 eb4 ~@2, ~@8 eb4 ~@3", // Gb
AR: "[eb3,a3]@2 ~@5 bb4@2 ~ ab3 eb4@2 f4@2 eb4 ~@2 eb4@4 f4 ~, eb4@2 ~ ab4 ~ d3 ~@6", // Ebdim
AS: "gb4 ~@3 bb4 ~ c5 ~ bb4 ~ eb5@2 ~ eb4@3 ~ eb4 ~@6",
AT: "[bb3 ~@10 [f3,b3,e4] ~ a5@2 ~@2 c6 [f3,b3,e4,eb6]@4 ~ db6@2 d6@5 [e3,bb3,eb4,f6]@4 [e3,bb3,eb4,eb6]@4 db6 d6@3 [e3,bb3,eb4]@3 ~@2 [eb3,c4]@12 [d3,ab3,b3,bb5]@12 [f5,bb5] b5 ~@4 [g3,db4,f4,eb5,eb6] ~@5 [c4,f4,d5,bb5,d6] ~ [gb3,c5,c6]@3 ~@3 [bb4,bb5] b5@2 ~@2, ~@11 c6@2 ~@10 [e3,bb3,eb4,g5,g6]@7 ~@8 [e3,bb3,eb4]@3 ~ c6@4 [ab3,bb5]@12 ~@13 [g3,db4,f4,f6]@2 ~@18 gb3@3 ~@2]/4", // E Fm7b5 Ebsus2 Eb Cm Abdim Bb5 Gm7b5 …
AU: "~ [eb4,bb4,bb5]@3 ~ ab3 ~ [f3,b3,eb4,ab5]@3 ~ [e3,bb3,eb4,g4,g5] ~@4 [bb3,eb4,eb5,eb6] [e3,db6] [e3,bb3,eb4,c6]@3 ~@3, ~@2 ab4 ~@5", // Eb5 Fm7b5 Eb Eb5 Dbm C7
AV: "eb3@2 ~@4 [g4,g5]@2 ~@4 [eb3,db4,g4,g5]@2 ~@4 [g4,g5]@3 ~@3", // G Eb7 G
AW: "[[d3,ab3,c4,g4,g5]@3 ~@3 g5@5 [d3,ab3,c4] ~ g5@3 ~@2 bb5@3 ~ gb5@2 g5@5 ~ bb4@4 ~@2 [bb3,eb4]@13 d4@2 ~@2 g6 ~ d6 ~ c6 b5 a5 ~ [gb3,bb5] gb5 ~ f5 eb5 ~ d5 c5 b4 ~ a4, ~@6 g4@3 ~@13 [f3,b3,eb4]@12 ~@2 c5@5 ~@8 ab3 ~@3 f6@2 ~@17, ~@27 eb6 ~@8]/3", // Csus2 Dm7b5 Eb5 Gb Fm7b5
AX: "bb4 ~@2 gb4 ~@2 g4 ~@2 f4 ~ [e3,bb3] e4 ~ g4 ~ bb4 c5 eb5 ~ db5 c5 ~ bb4, ~@5 a4@2 ~ d4@2 ~@14", // Edim
AY: "ab4 ~@2 eb4 ~ g4 f4 g4 f4 c4 ~ eb4 d4 ~ db4 c4 ~ b3 bb3 ~ gb3 d3 ~ b2",
AZ: "f3 ~@2 eb3 ~ f3 g3 ~ eb3 ~@2 g3 ~ ab3 ~ g3 ~ ab3 bb3 ~ eb3 ~@2 [c2,d2]", // Csus2
BA: "[~@2 g3 [ab3,bb3] b3 db4 eb4 f4 g4 ab4 bb4 b4 [f3,b3,eb4,db5] eb5 f5 g5 ab5 bb5 c6 db6 eb6 gb6 ~@2 [eb3,bb3,d4]@10 ~ f6@2 eb6 ~@2 eb6 c6 g5 d6@2 g5 ~ c6@2 g5 ~ f5 eb5 ~@3 f5@2 d5 ~ eb5@2 g4@2 bb4 ~ d5@2 ~ bb4 c5@2, ~@23 g6@2 ~@10 g6 ~@3 f6@2 ~@2 g6 ~@3 g6 ~@24]/3", // Absus2 Fm7b5 Ebmaj7
BB: "~ g4 f4 ~@2 d4 [c4,eb4] gb3 ~@3 eb4@2 ~@2 eb4@2 ~ [db4,eb4] ~ e4 ~ f4@2, ~@9 g3 ~@2", // Cm Dbsus2
BC: "~ [ab3,d4] f4@2 ~ e4 f4@2 e4 ~ f4@2 ~ a4 bb4@2 a4 ~ bb4 ~ d5 ~ eb5 ~, e4 ~@11", // Abdim
BD: "[bb3,d5] e3 eb5 ~ g5 ~@2 gb5 ~@2 gb5 ~ g5 ~ c6 ~ b5 ~ c6 ~ b5 ~ c6 ~, ~@9 g5@2 ~@13", // Bb
BE: "[d6 ~ eb6 ~ c6 ~ ab5 ~@4 d5 db5@2 d5@2 d4 ab3 bb5@3 ~@3 g5 ~@4 [db4,gb4] ~@3 eb5 ~ c5 [c4,eb5]@6 [gb3,c5]@4 ~ [b3,e4]@11 [bb3,eb4] [e3,bb4] [e3,bb3,eb4,c5]@3 ~@3 gb5 g5@2 ~@3, ~@22 bb5@2 ~@22 eb5@13 ~@13, ~@23 gb5@2 ~@3 eb5@2 ~@6 [gb3,f4]@4 ~@2 f4@3 ~ f3@7 ~@13 [e3,bb3,eb4,c6]@3 ~@3]/3", // Gb5 Cm Gbdim E5 Eb5 Edim C7 Gbmaj7 …
BF: "~ [eb3,g3,a3,d4,c5]@11 ~ [eb3,a3,db4,db5]@11, ~ g5@23", // Am7b5 Ebm7b5
BG: "[~ d3@3 [d3,ab3,c4]@4 [d3,ab3,c4,c5,eb5]@4 [b3,eb4,b4,f5]@6 [b3,eb4,eb5]@5 db5 d5@12 [e3,bb3,eb4,ab4,db5]@12, [c5,eb5]@8 ~@4 f3@5 ~ f3@4 ~ [f3,b3,e4]@14 ~@11, [ab3,c4]@4 [d5,f5]@9 ~@10 g5@25]/2", // Dm7b5 Ab Fm7b5 B Bbm7b5 Cm E Ab …
BH: "~ [eb3,c5]@9 [db4,f4,eb5,eb6] g3 ~ [g3,d5,d6]@2 ~@3 [gb3,c4,f4,c5,c6]@3 ~@2 bb3, ~@4 [db4,f4] ~@3", // Cm Db G5 F Db
BI: "[f3,b3,bb5]@2 c6@2 ~ g5 ~ bb5@4 gb5 ~@5 [e3,bb3,eb4] ~@5 f5, eb4 ~@3 bb5@2 ~@5 c6@4 ~@9, ~@3 g5@2 ~", // Bb Eb
BJ: "[eb3,a3] ab5 bb5@2 ab5 f5 ab5@4 ~ gb5@2 ~@3 [ab3,b3] ~@5 bb3 ~, ~@11 bb5@7 ~@6, ~@13 g5@5 ~@6, ~@8 d3@3 ~", // Ebdim Abm
BK: "[c4,f4,g5]@4 c4 gb5 [c4,f4,g5]@3 ~ [eb5,bb5] eb4 ~@5 [b3,eb4,db5]@7, ~@16 [f3,ab5]@7 ~", // Csus4 Eb5 B Fm
BL: "[c5,f5]@6 ~@4 [g3,db4,f4,eb5,eb6]@3 ~ [g3,db4,f4,d5,d6]@4 [gb3,c4,f4,c5,c6]@5 ~", // F5 Gm7b5 G7 F
BM: "~@4 [f3,b3,eb4,bb4,bb5]@8 ~ bb3@2 ~@3 gb5 g5@2 ~@3, ~@12 [eb4,c5,c6]@2 ~@4 [bb3,eb4]@3 ~@3", // Ebsus2 Cm Eb5
BN: "[~ [eb3,eb5]@9 ~ b4@16 ~ [f3,b3,eb4,bb4,bb5]@7 ~ [e3,bb3,eb4,eb5,eb6]@2 ~@4 [bb3,eb4,bb5,bb6]@2 ~@4, [ab3,bb4,bb5]@5 [d3,ab3,b3,g4,d5,g5]@9 ~@10, ~@5 bb4 ~@18]/2", // Eb Ebsus2 Eb Eb5 Absus2 G
BO: "gb6 [g5,g6]@10 ab3@13, ab3@5 ~@7, ~ gb5 ~@9 bb5@7 ~@6", // G
BP: "~@4 [f3,b3,eb4,bb4,bb5]@7 ~ gb5 [bb3,g5] ~@4 [bb3,eb4,g5]@2 ~@4, ~@12 [eb4,c5,c6]@2 ~@4 g4 ~@5", // Ebsus2 Eb Cm
BQ: "[eb3,ab3,c4,bb4,eb5,bb5]@12 [ab3,g4,b4,d5,g5]@10 ~ gb3, ~@11 f3", // Ab G
BR: "[eb4@4 ~@3 eb4@4 eb4@5 ~@2 eb4@4 eb4@6 f4@2 eb4@4 eb4@6 f4@2 eb4@4 ~@7 eb4@5 eb4@5 f4@2 ~ eb4@4 [g3,c4,d4,bb4] ~, [g3,db4]@11 [gb3,b3]@12 ~@23 eb4@7 ~@19, ~@5 f4@7 ~@4 f4@6 [f3,bb3]@12 [e3,a3]@11 ~ [eb3,ab3,c4]@12 [e2,b2,ab3,b3]@12 ~@2, ~@51 f4@7 ~@14]/3", // Gm Gdim B5 Bb5 A5 Ab E
BS: "[~@10 d4@10 ~@19 a7@48 ~@9, ~@10 [eb2,bb2,g3,a3]@16 g5@7 c7@48 ~@15, ~@11 g4@3 c6@5 g7@24 ~@5, ~@23 c5@8 a6@8 d4@2 ~@55, ~@3 d5 d7@6 ~@2]/4", // Eb
})).s("gm_piano").gain(0.4).pan(0.8)
// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
~ A B C D E F G H I ~ J K L M ~ N O P Q R S T@2 U V ~ W X Y Z AA AB AC AD ~ AE AF AG AH ~ AI AJ AK ~ AL AM AN AO@2 AP
AQ AR AS AT AU ~ AV ~ AW@2 AX AY AZ BA ~@2 BB BC BD BE BF@2 ~@2 BG BH BI BJ BK AG ~ BL BM ~@4 BN ~ BO BP BQ Y BR BS BT
BU BV ~@3 BW@5
>`.pickRestart({
A: "~ eb4@11 ~ e3@11, [c4,f4,g4]@11 ~@13", B: "c4@11 ~ [d3,ab3,c4]@11 ~", C: "~@4 [g3,c4] ~@19",
D: "~ [f3,b3,g4]@10 e3 e3@2 ~@4 e3@2 ~@4, [eb4,bb4]@5 ~@7", E: "~ [eb3,a3,d4]@15 ~ a3@7",
F: "~ [d3,ab3,c4]@11 [c4,f4]@11 ~", G: "~@13 [e3,c5]@11", H: "~ [eb3,a3,d4]@11 ~@6 c4@2 ~@4",
I: "~ [f3,b3,eb4]@2 ~@2 g5 ~@18", J: "~ g3@4 f4 f4@3 ~@2 gb3 ~@12, [d4,f4]@4 ~ g3@5 ~@14",
K: "~@4 [c4,f4,c5]@7 [f3,eb4]@10 ~@3", L: "~ [bb3,d4] ~@5 d4@3 ~@3 [eb3,bb3,d4]@3 ~@3 [bb3,d4]@3 ~@2, ~@9 eb3 ~@2",
M: "~ d4@4 ~ [eb3,bb3,d4]@3 ~@4 [ab3,db4]@6 d4@5", N: "~@19 [f3,b3]@2 ~@3", O: "~ d4@11 ~ e3@10 c5",
P: "c4@3 ~@14 b3@2 ~@5, ~@17 d3 ~@6", Q: "~@5 g3@5 ~@3 g4 ~@10, ~@6 c4 ~@5",
R: "~@5 f3@6 eb4 ~ e3@2 ~@9, ~@4 b3@7 ~@13", S: "~ [a3,d4]@2 ~@10 [a3,db4]@10 ~",
T: "[~@18 f3@4 ~ [f3,b3]@13 ~ e3@11]/2", U: "d4@10 ~ g3@2 ~@4 f4 ~@3 bb3 ~@2", V: "~@5 g5 ~@11 e3@5 f5 ~",
W: "~ [g3,d4,f4]@3 ~ [g3,d4] ~ [g3,d4,f4]@4 e4 ~@12", X: "[g3,c4,f4]@11 ~@2 f4 ~@3 g3 ~ f4 ~@4",
Y: "~@11 ab3 ~ e3@2 ~@3 e3@2 ~@4", Z: "c4@11 ~@3 d5@9 ~, ~@6 b3@5 ~", AA: "~@7 eb5 ~@8 g5 ~@7", AB: "~@15 a4 bb3 ~@7",
AC: "bb3 [g4,eb5]@2 ~@21", AD: "~@17 f4 ~@6", AE: "~@10 e3 c6 ~@11 eb3", AF: "~@5 g5@3 ~@8 f4@2 ~@6",
AG: "~@11 [ab3,d4] ~@12", AH: "~@2 g4 ~@20 a3", AI: "f3 ~@23", AJ: "~@23 c4", AK: "g3 ~@12 a5@2 ~@9",
AL: "[eb3,bb3] ~@23", AM: "~@11 [a3,d4] ~@11 c5", AN: "f4 db5 ~ d5 ~@13 g3 ~@6",
AO: "[~@17 b5 ~@5 e3@2 ~@7 f6 ~@4 e3@2 ~@9, ~@19 d4@6 ~@23]/2", AP: "c4 ~", AQ: "~@11 f4@3 ~@7 a5@2 [f3,b3,eb4]",
AR: "~@21 a4@2 ab3", AS: "~@3 g4 a3 ~@6 [eb3,a3,d4] ~@4 eb3 [a3,d4] ~@6", AT: "~@12 c4@6 b3@5 ~",
AU: "~@18 e3 ~@5, ~@7 c4@5", AV: "~@5 f3 ~@18", AW: "[~@23 g3@2 ~@2 f4@2 ~@7 g3@2 ~@10, ~@23 c4 ~@24]/2",
AX: "~@2 f4@2 ~ c4 ~@6 eb4 ~@6 f4@2 ~@2 c4", AY: "~@5 f4 f4@2 ~@9 c4 ~@6", AZ: "g3 ~ g4 ~@21", BA: "f3 ~@11",
BB: "~@13 [c4,f4]@3 ~@4 [f4,b4] ~@3, ~@19 b3@2 ~@3", BC: "~ [f3,b3]@3 ~@15 d5 ~@4, ~@9 c5 ~@2",
BD: "[a3,d4] ~@5 a3 ~@5", BE: "~@17 ab5 ~@6", BF: "[~@13 e3@13 ~@10 c4 ~@11]/2", BG: "~@2 d3 ~@7 f3 ~@3 f3 ~@9",
BH: "~ f3 ~@22", BI: "~@10 g3 ~@3 g6@2 ~@8", BJ: "~@7 d5 ~@16", BK: "~@13 d4 ~@3 d4 ~@6", BL: "~@9 f5 ~@7 g4 ~@6",
BM: "~@5 g3 ~ f5@2 ~@9 c4@3 ~@3", BN: "~ [a3,d4,g4]@10 ~@13", BO: "~ c4 ~@22",
BP: "g3@4 ~ [g3,f4] g3@3 ~@2 [f3,b3] ~@12", BQ: "[c4,f4]@5 ~@7, g3@5 ~@19", BR: "~ c4@10 ~@13", BS: "~@19 e3 ~@4",
BT: "~ c4@10 d3@13, eb3@11 bb4@7 ~@6", BU: "~@13 e3 ~@4 e3@2 ~@4", BV: "~@12 [d3,b3]@11 ~",
BW: "[~@26 d4 d4@2 ~ d4 d4@2 d4@2 d4@2 d4@2 ~@2 d4@2 d4@2 d4@2 d4@2 d4@3 d4@48 ~@20, ~@21 d4@5 ~ a5@48 ~@45, ~@23 a4@48 ~@49, ~@41 c8@48 ~@31]/5",
})).s("gm_piano").gain(0.24).pan(0.8)
// bass · fretless bass · "FRETLESS"
const bass = note(`<
~ A B C D E F G H I J K L M N O P Q B R S T U V W X Y Z AA AB AC ~@2 AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS
AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW BX BY BZ CA CB CC CD CE CF
CG CH CI CJ CK CL CM CN CO CP CQ CR CS CT CU@4 ~
>`.pickRestart({
A: "~ gb2, c3@7 ~@5", B: "f2 bb2", C: "eb2@8 bb2 ~ a2@2 ab2@6 c2@6", D: "g2@2 c2 gb2", E: "f2 b2", F: "bb2 ab2",
G: "g2@10 db3 ~ c3@6 c2@6", H: "f2@8 g2 ~ ab2 ~ a2@6 d2@6", I: "g2 c2", J: "f2@12 bb2@5 ~ d2@6", K: "eb2 ab2",
L: "d2@5 d3 g2@3 b2@3", M: "c3 c2", N: "f2@2 e2 f2", O: "ab2 a2", P: "bb2 ~@11 d2@6 db2@6",
Q: "c2@10 c3 ~ gb2@6 c2@6", R: "a2@8 bb2 ~ a2 ~ ab2@12", S: "g2@10 db2 ~ c2@6 e2@6", T: "f2@5 f2 b1@6", U: "bb1 ab1",
V: "g1@2 c2 e2", W: "f2@6 ab2@5 ~ a2@6 d2@6", X: "g2@12 c2@10 gb2 ~", Y: "f2@3 a2@2 ~ bb2@3 d2@3",
Z: "eb2@8 f2 ~ gb2 ~ g2@12", AA: "ab2@2 a2 d3", AB: "~@2 g2@4 c2 ~@2 e2 ~@2", AC: "f2@12 bb2@10 eb3 ~",
AD: "c3@6 c2@6 c3@6 gb2@5 ~", AE: "f2 b2 bb2 d2", AF: "a2 ~ ab1 ab2, ~@3 a1@4 ~@5", AG: "g2 g1 g2 gb2",
AH: "f2 c3 f3 b2", AI: "bb2@6 bb1@6 ab2@6 ab1@5 ~", AJ: "g1@2 g2 db2@3 c2@3 e2@3", AK: "a2 eb2 d2 gb2",
AL: "g2@5 ~ db2@6 c2@6 e2@6", AM: "f2 b1 bb1 d2", AN: "eb2 g2 ab2 eb3", AO: "d3 d2 g2 b2",
AP: "c3@2 g2 c2@3 d2@3 eb2@3", AQ: "f2 g2 ab2 a2", AR: "bb2 f2", AS: "bb1@7 ~@3 f2 ~ d2@6 db2@6",
AT: "c2@3 ~@2 d3 c3@3 gb2@3", AU: "f2@4 ~ b2 bb2@3 d2@3", AV: "a2@3 ~@3 a2@5 ~ ab2@3 ~@3 ab2@4 d2 ~, ~@12 d2 ~@11",
AW: "g2@3 ~@3 g2@4 c2 ~ gb2@3 ~@3 gb2@4 c2 ~", AX: "f2@10 gb2 ~ b1@4 gb2 ~ eb3@6", AY: "d3 bb2 f2 ab2",
AZ: "g2@6 c2@5 bb1", BA: "a1 eb2 d2 gb2", BB: "g2@2 c2 e2", BC: "f2@7 ~@3 b2@2 bb2@6 d2@6",
BD: "eb2@5 eb3 ~@3 eb3@3, ~@3 g2@2 ~", BE: "~@6 eb3@5 ~ a2@6 d3@6, ab2@11 ~@13", BF: "g2 db2 c2 e2",
BG: "f2@6 b2@6 bb2@6 d2@5 ~", BH: "eb2 ~@3 eb2 ~ g1@6 ab1@6 a1@6", BI: "bb1@6 c2@6 d2@6 db2@5 ~",
BJ: "c2@3 c3@2 c2 gb2@3 c3@3", BK: "f2 b2 bb2 d2, ~@12 gb2 ~@11", BL: "a2 eb2 bb2 ab2",
BM: "g2@6 db2@6 c2@6 gb2@4 eb2 ~", BN: "f2 a1 c2 b1", BO: "bb1 bb2 ab2 ab1", BP: "g1@2 db2 g2@3 c2@3 gb2@3",
BQ: "f2 ab2 a2 d3", BR: "g2 db3 c3 e3", BS: "f3 b2 bb2 d3", BT: "eb3 ~ bb2 ~ g2@2 eb2@6 ab2@6 c2@6",
BU: "d2 gb2 g2 b2", BV: "c3 g2 c3 g2", BW: "c3 f2 e2 f2", BX: "ab2@6 ab1@6 a1@5 ~ db3@6", BY: "d3 f2 bb1 db2",
BZ: "c2@7 ~ g2 ~ c3@2 gb2@7 ~@3 gb2@2", CA: "f2@2 bb2 d2", CB: "~@4 a2 ~ a2@5 ~ ab2@6 ab1@6",
CC: "g1@5 ~ g2@6 gb2@6 c3@6", CD: "f2@6 b2@5 f2", CE: "bb2@8 ~@2 f2 ~ ab2@6 ab1@6", CF: "g1 db2 c2 e2",
CG: "f2 ab2 a2 d2", CH: "g2@7 ~ d2 ~ db2 ~ c2@7 ~ eb2 ~ e2 ~", CI: "f2@8 ab2 ~ a2 ~ bb2 ~@3 bb2 ~ d2@6",
CJ: "eb2 eb3 g2@2", CK: "ab2@10 a2 ~@5 d2@7 ~", CL: "g2@10 gb2 ~ c2@6 c3@6",
CM: "f2@10 bb2 ~@5 f2@2 bb2 ~ [a2,b2] ~ ab2 ~", CN: "g2 ~@3 db2@8 c2@2 ~@4 e1@2 ~@4",
CO: "f1@10 bb1@2 ~@4 bb2@2 ab2@3 ~ g2@2", CP: "~@4 db3@7 ~ c3@2 ~@4 gb2@3 ~@3", CQ: "f2@5 a2 bb2@5 ~, ~@10 ab2 ~@13",
CR: "a2 ~@3 a2 ~ a2@3 ~ ab2 ~@5 ab2 ~ ab2@4 g2 ~", CS: "~@4 g2 ~ g2@3 ~ gb2 ~@5 gb2 ~ gb2@4 f2@2",
CT: "~@4 f2 ~ f2@3 ~ e2@2 ~@4 e2@2 e2@2 ~@4", CU: "[~@4 bb2 ~ a2@4 eb2@67 ~@19]/4",
})).s("gm_fretless_bass").gain(0.45).pan(0.1)
// drums · kick
const kick = s("bd").struct("<~@101 [~@23 x] [~@11 x ~@12] ~@4>").gain(0.3)
// drums · rim
const rim = s("rim").struct("<~ [~@3 x]!15 ~ [~@3 x]!14 ~@2 [~@3 x]!68 ~@6>").gain(0.52)
// drums · snare
const snare = s("sd").struct("<~@15 A B@2 ~@11 C D ~@2 B ~@14 E ~@15 E ~@27 F G H G I C ~ J K L M ~@4>".pickRestart({
A: "x!2", B: "x", C: "~@2 x ~@3 x ~@2 x ~@2", D: "x ~@5 x ~@4 x", E: "~@11 x", F: "~@23 x",
G: "x ~ x ~@3 x ~@2 x ~@2", H: "x ~@4 x ~@2 x!2 ~ x", I: "x ~@4 x ~@3 x ~ x", J: "x ~@4 x ~@5 x", K: "~@5 x ~@5 x",
L: "~@10 x ~@7 x ~@4 x", M: "~@5 x ~@6",
})).gain(0.3)
// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@15 [~@4 x!2 ~@6] [~@10 x!2] ~@75 [~@11 x] ~ [~@5 x] ~@12>").gain(0.15)
// drums · hihat
const hihat = s("hh").struct("<~ [~ x ~ x]!30 ~@2 [~ x ~ x]!69 ~@5>").gain(0.52)
// drums · crash
const crash = s("cr").struct("<~@17 A ~@12 B ~@2 C ~@14 B ~@15 B ~@16 A ~@19 B D ~@4>".pickRestart({
A: "x", B: "~@23 x", C: "~ x ~@22", D: "~@11 x ~@12",
})).gain(0.37)
// drums · ride
const ride = s("rd").struct(`<
~ A@16 B A@12 C ~ D B A@14 C B A@14 C B A@14 C B A@10 C E F E G H A@3 I ~@5
>`.pickRestart({
A: "x ~@5 x ~@4 x!2 ~@5 x ~@4 x", B: "~@6 x ~@4 x!2 ~@5 x ~@4 x", C: "x ~@5 x ~@4 x!2 ~@5 x ~@5", D: "~@23 x",
E: "~@2 x ~@3 x ~@2 x ~@2", F: "x ~@9 x ~@5 x ~ x ~@4 x", G: "x ~@5 x ~@3 x ~@5 x ~ x ~@4 x",
H: "~@4 x ~@7 x ~@5 x ~@4 x", I: "x ~ x!2 ~ x ~@2 x!2 ~@2",
})).gain(0.44)
stack(piano, piano_soft, bass, kick, rim, snare, snare_soft, hihat, crash, ride)
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.