0:00/0:00
// Witchcraft — Oscar Peterson
// 120 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 89 bars on a 24-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 · "Bas"
const bass = note(`<
~ A B C D E F G D H I J K L M N O P Q R S T U V W H X Y Z H AA AB AC AD AE AF AG L AH AI AJ H AK AL AM AN AO AP AQ Y
AR R AS AT AU AV AW H O AX AY AZ BA BB BC BD BE BF BG BH BI BJ@2 BK BL BM BN@2 BO BP@3 BQ BR BS BT BU@3
>`.pickRestart({
A: "c2@3 ~@2 c1 ab2@5 ~ db2@6 ab2@4 db2@2", B: "db2@6 b1@6 bb1@6 db2@5 ~", C: "c2@3 g1@2 c2 b1@3 gb2@2 b1",
D: "b1@5 ~ b1@4 ~@2 bb1@6 f2@4 bb1@2", E: "eb2@6 bb1@4 eb2@2 db2@2 eb3 ~ e3 ~ [f3,b3]@4 ~@2",
F: "db2@4 db1 ~ f2@6 gb2@5 ~ db2@3 ~@3", G: "c2@5 ~ c2@4 ~@2 b1@6 gb2@4 b1@2", H: "eb2@6 f2@6 g2@5 ~ e2@4 ~@2",
I: "eb2@5 ~ eb2@4 ~@2 eb2@3 ~@2 eb1 eb2@5 ~", J: "a3@5 ~ a3@5 ~ ab3@4 gb1 ~ g3@5 ~",
K: "gb3@2 c3 ~ a2 ~ ab2@6 gb2@6 gb2@5 ~", L: "f2@4 f1 ~ ab2@6 bb2@5 ~ f2@3 ~@3",
M: "bb1@3 ~@2 f2@7 c2@4 f2@2 bb1@5 ~", N: "eb2@3 ~ eb2@5 ~@2 eb1 eb2@5 ~ eb2@4 ~@2",
O: "eb2@4 eb1 ~ g2@6 ab2@5 ~ eb2@3 ~@3", P: "c4@5 ~ b3@5 ~ bb3@4 ab1 ~ a3@5 ~",
Q: "ab3@2 eb3 ~ c3 ~ bb2@6 ab2@6 d2@5 ~", R: "db2@6 b1@6 bb1@6 a2@5 ~", S: "ab2@3 ~ db2@7 ~ db2@4 ~@2 db2@5 ~",
T: "gb2@6 ab2@6 bb2@5 ~ gb2@4 ~@2", U: "f2@5 ~ f2@4 ~@2 f2@3 ~@2 f1 bb1@5 ~", V: "bb1@4 bb0 ~ eb2@5 ~ e2@5 ~ f2@5 ~",
W: "gb2@3 ~ db2 ~ bb1@6 ~ bb1@5 e2@4 ~@2", X: "eb2@5 ~ eb2@4 ~@2 eb2@5 ~ eb2@4 ~@2",
Y: "~@6 c3@4 ab1 ~ eb3@5 ~ ab3@4 ~@2, ab2@5 ~@7", Z: "ab2@6 gb2@6 f2@6 e2@5 ~",
AA: "eb2@5 ~ d2@5 ~ c2@3 ~@2 c1 bb1@3 ~@2 bb0", AB: "a1@6 d2@6 eb2@5 ~ eb2@4 ~@2",
AC: "d2@5 ~ d2@4 ~@2 d2@5 ~ d2@3 ~@2 d1", AD: "g2@6 f2@6 e2@6 e2@5 ~", AE: "g2@6 g2@4 g1 ~ bb2@5 ~ g3@4 ~@2",
AF: "~@6 bb2@4 g1 ~ d3@5 ~ g3@4 ~@2, g2@5 ~@7", AG: "g2@6 g2@4 g2@2 g2@5 ~ g2@5 ~",
AH: "f2@6 f2@4 f2@2 f2@5 ~ f2@4 ~@2", AI: "bb1@6 d2@6 eb2@5 ~ e2@6", AJ: "f2@6 a2@6 bb2@5 ~ bb1@4 ~@2",
AK: "eb2@6 bb2@4 eb2@2 eb2@3 ~@2 eb1 eb2@5 ~", AL: "gb3@5 ~ c3@5 gb2 d3@5 gb2 a2@5 ~",
AM: "c3@3 ~ ab2 ~ f2@5 ~ gb2@4 ~ c2 gb2@5 ~", AN: "f2@5 ~ f2@4 ~@2 f2@5 ~ b1@3 ~@2 b0",
AO: "b1@3 ~ bb1@5 ~@2 bb0 eb2@6 eb2@4 ~@2", AP: "~ bb1@3", AQ: "~@8 bb2 eb2@3",
AR: "ab2@6 eb2@4 ab2@2 ab2@5 ~ ab2@3 ~@2 ab1", AS: "db2@6 db2@4 db2@2 db2@5 ~ db2@3 ~@2 db1",
AT: "gb2@6 db2@4 gb2@2 gb2@5 ~ gb2@3 ~@2 gb1", AU: "f2@3 ~@2 f1 b1@5 ~ b1@6 gb1@4 b1@2",
AV: "bb1@5 ~ bb1@5 ~ bb1@3 ~@2 bb0 bb1@5 ~", AW: "~@6 d2@4 bb0 ~ f2@5 ~ bb2@4 ~@2, bb1@5 ~@7",
AX: "ab2@6 bb2@6 c3@5 ~ a2@4 ~@2", AY: "ab2@5 ~ ab2@4 ~@2 ab2@2 bb3 ~ b3 ~ [c4,gb4]@4 ~@2",
AZ: "eb2@6 d2@6 c2@6 e2@5 ~", BA: "eb2@3 bb2@2 eb2 eb2@3 bb1@2 eb2", BB: "a1@6 bb1@6 c2@5 ~ eb2@4 ~@2",
BC: "d2@6 a2@4 d2@2 d2@3 ~@2 d1 ab2@3 ~@2 ab1", BD: "g2@6 bb2@5 g2 c3@5 ~ db3@5 ~",
BE: "d3@5 g2 gb3@5 g2 g3@2 ~@2 d3 ~@2 g2@3 ~@2", BF: "g2@6 bb2@6 c3@5 ~ db3@6", BG: "d3@6 gb3@6 g3@5 ~ g2@4 ~@2",
BH: "f2@6 ab2@6 bb2@5 ~ b2@6", BI: "c3@6 e3@6 f3@5 ~ f2@4 ~@2",
BJ: "[~@4 bb1@8 b1@9 ~ c2@8 db2@9 ~ d2@2 ~@5 eb1, ~@23 eb2]/2", BK: "eb2@4 eb1 ~ f2@6 g2@5 ~ ab2@4 eb1 ~",
BL: "bb2@6 c3@5 eb1 d3@5 eb1 eb3@3 ~@3", BM: "gb2@6 e2@6 d2@6 c2@5 ~",
BN: "[gb2@5 ~ a2@5 ~ b2@6 c3@4 f2@7 ~ f2@4 ~@2 f2@3 ~@2 f1 b1@5 ~]/2", BO: "b1@2 bb1 ~@2 bb1@4 bb1@2 eb2",
BP: "[~@6 eb2@2 ~@4 db2@4 db2@2 ~@4 c2@8 c2@2 ~@4 b1@4 b1@2 ~@4 e2@11 b1 e2@2 e1@9 ~ b1@2]/3",
BQ: "e2@2 e2 e1@3 e2@2 e2@4", BR: "eb2 ~@11", BS: "f2@2 b1 e2", BT: "a1@8 ab1@8 ~ db2@7",
BU: "[~ gb2@8 eb2@50 ~@13]/3",
})).s("gm_acoustic_bass").gain(0.46)
// chords · piano
const piano = note(`<
~ A@2 B C D E F G H I J K L M N O P Q R S T U V@2 W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL O AM AN AO AP AQ AR@2 AS
AT AU AV AW AX AY AZ BA BB BC BD BA BE BF BG BH BI BJ BK BL@2 BM@2 BN BO@2 BP BQ ~ BR@3 BS BT ~@2 BU@3
>`.pickRestart({
A: "[g4@2 e4 c4 ~ g3 [c4,gb4,bb4,f5]@4 ~@6 bb5@2 [f5,gb5]@4 ~@2 eb5@4 ~@16 g4@2 ab4 ~, ~@6 [g3,b3,g4,ab4,eb5]@5 [f5,gb5]@3 eb5@8 ~@2, ~@24 [g4,ab4]@18 b3@5 ~, ~@24 b3@15 ~ g3@7 ~, ~@4 g3 f5@3]/2", // Fsus4 Gbmaj7 Abm Gbmaj7 Abmaj7
B: "[eb3,bb3,eb4,g4,c5]@11 ~@2 b2@4 [bb3,eb4,gb4,db5]@2 ~@5", // Cm7 Ebm7
C: "~ b2@4 ~ ab5@2 bb5@2 db6@2 db6@2 bb5@2 db6@8, ~@5 [bb3,eb4,gb4,db5]@2 ~@5 [d3,ab3,d4,gb4,b4]@11 ~", // Ebm7 Abm7b5
D: "~@4 [g3,c4,eb4,bb4]@2 ~@7 [b3,g4,ab4,g5,eb6]@4 ~@7, ~@3 ab5 ~@2", // Cm7 Abm
E: "~@4 bb4@2 db5@2 ~@2 f5@2 db5@4 ~@2 bb4@2 g4@2 ab4 ~, eb5 ab4@8 b3@2 ~, ab4 g3@7 eb5@12 ~@4, ~ g4@18 ~@5, ~ b3@15 g3@6 ~@2",
F: "~ c3@4 [eb3,bb3,d4,g4]@2 ~@9 [bb3,db4,eb4,gb4]@2 ~@6", // Ebmaj7 Ebm7
G: "db6@4 c6 b5 bb5@4 ~@5 e5 eb5 d5 db5@6, [eb3,bb3,eb4,gb4,db5]@10 f5@5 ~@9, ~@12 [d3,ab3,d4,f4,b4]@11 ~", // Ebm7 Ddim
H: "~@4 [g3,eb4,bb4] ~@7 [g3,eb4,bb4]@11 ~", I: "~@4 [g3,eb4,bb4]@2 ~@6 [g3,eb4,bb4]@4 ~@2 g4@2 eb4 b3 ~ g3",
J: "~@13 [eb3,a3,eb4,gb4]@3 ~@8, ~@3 c5 ~@2", // Ebdim
K: "[eb3,a3,eb4,gb4,c5]@7 ~@4 [eb3,a3,eb4,c5]@6 gb2 [eb3,a3,eb4,gb4,c5]@3 ~@3, ~@5 gb4@3 ~@4", // Ebdim Adim Ebdim
L: "ab3@15 ~@5 eb4@2 g4 ~, [eb4,g4,c5]@18 ab3@5 ~, eb3@12 ~@4 eb3@7 ~", // Cm
M: "[ab3,d4,g4,c5]@3 ~@2 [eb3,ab3,eb4,g4,c5]@13 [ab3,c4,d4,g4]@4 ~@2", // Abmaj7
N: "[gb3,c4,eb4,a4]@3 ~@2 [g3,c4,eb4,bb4]@6 ~@5 [g3,bb3,c4,eb4]@2 ~@6", // Gbdim Cm7
O: "~@4 [g3,c4,eb4,bb4] ~@7 [g3,c4,eb4,bb4]@11 ~", P: "~@4 [g3,c4,eb4,bb4] ~@6 ab2 [g3,c4,eb4,bb4]@11 ab2",
Q: "~ [g3,c4,eb4,bb4]@4 [g3,c4,eb4,bb4] ~@5 [g3,c4,eb4,bb4]@6 ab2 [g3,c4,eb4,bb4]@2 ~@4", // Cm7
R: "~@4 [g3,bb3,b3,eb4] ~@7 [g3,bb3,b3,eb4]@11 ~", // Eb
S: "[gb3,b3,eb4,bb4]@3 ~@4 [a3,d4,gb4,d5,b5]@4 ~@7 [b3,f4,bb4,eb5]@4 ~@2, ~@3 gb5@2 ~@7", // Bmaj7 Bm7 Bmaj7
T: "~@12 [bb3,eb4,gb4,db5]@3 ~@2 [bb3,eb4,gb4,db5]@2 ~@5", // Ebm7
U: "[eb3,a3,eb4,gb4,b4]@11 ~ [a3,eb4,gb4,db5]@4 ~@2 [a3,eb4,gb4,db5]@4 ~@2", // B7 Ebm7b5
V: "[~@12 [a3,eb4,ab4,db5]@3 ~@2 [a3,eb4,ab4,db5]@2 ~@3 [a3,eb4,ab4,db5]@13 ~ [a3,eb4,ab4,db5]@4 ~ bb2 [a3,eb4,ab4,db5]@2 ~@4]/2", // Amaj7
W: "~@12 [d4,g4,bb4,f5]@3 ~@2 [d4,g4,bb4,f5]@2 ~@5", // Gm7
X: "~@4 [d4,g4,bb4,f5]@2 ~@7 [g3,c4,eb4,c5,bb5]@4 ~@7, ~@3 eb5 ~@2", // Gm7 Cm7
Y: "~@5 gb4 bb4@4 ~ eb5@5 ~ ab2 [d4,gb4,bb4,eb5]@3 ~@3, d4@2 ~", Z: "~@4 [d4,gb4,bb4,f5] ~@7 [d4,gb4,bb4,f5]@11 ~",
AA: "g3@15 ~@5 d4@2 f4 ~, [d4,f4,bb4]@18 g3@5 ~, d3@12 ~@4 d3@7 ~", // Bb
AB: "[c4,g4,bb4,eb5]@4 ~@5 [bb3,d4,f4,a4]@2 ~ g4@2 eb4 d4 ~ bb3 ~@3 [eb4,g4,c5]@2 ~", // Cm7 Bbmaj7 Cm
AC: "~@12 [eb4,g4,c5]@3 ~@2 [eb4,g4,c5]@2 ~@5", // Cm
AD: "[gb3,c4,gb4,ab4,eb5]@11 ~ [c4,gb4,bb4,eb5]@4 ~@2 [c4,eb4,gb4,bb4]@4 ~@2", // Ab7 Cm7b5
AE: "~@12 [bb3,g4,d5]@3 ~@2 [bb3,g4,d5]@2 ~@5", // Gm
AF: "bb3@15 ~@5 eb4@2 g4 ~, [eb4,g4,eb5]@18 bb3@5 ~, eb3@12 ~@4 eb3@7 ~", // Eb
AG: "~@12 [e3,bb3,d4,g4]@3 ~@2 [e3,bb3,d4,g4]@2 ~@5", // Em7b5
AH: "~ g2@4 [g3,eb4,bb4]@2 ~@8 [g3,eb4,bb4]@2 ~ [bb3,d4,g4]@4 ~@2", AI: "~@12 [f3,ab3,c4]@3 ~@2 [f3,ab3,c4]@2 ~@5",
AJ: "~ [ab3,f4,ab4,f5,db6]@4 ~@7 [d3,ab3,d4,f4,c5]@11 ~, ab5 ~@5", // Db Dm7b5
AK: "~@4 [ab3,d4,f4,c5] ~@6 bb2 [ab3,d4,f4,c5]@11 bb2", // Dm7b5
AL: "~ [ab3,d4,f4,c5]@4 [ab3,d4,f4,c5] ~@5 [ab3,d4,f4,c5]@6 bb2 [ab3,d4,f4,c5]@2 ~@4", // Dm7b5
AM: "~ eb3@4 [g3,c4,eb4,bb4]@2 ~@8 [g3,c4,eb4,bb4]@2 ~ [g3,b3,eb4]@4 ~@2", AN: "[eb3,gb3,a3,c4]@23 ~",
AO: "[eb3,gb3,a3,c4]@3 ~@2 [eb3,gb3,a3,c4]@2 ~@4 [eb3,gb3,a3,c4]@5 gb2 ~ [eb3,gb3,a3,c4]@3 ~@3", // Ebdim
AP: "~ f3@4 [eb3,ab3,c4,g4]@2 ~@5 [eb3,ab3,c4,g4]@4 ~@2 [a3,eb4,gb4,d5]@4 ~@2", // Abmaj7 D
AQ: "[a3,eb4,g4,c5]@3 ~@2 [ab3,eb4,g4,c5]@6 ~ [d3,ab3,d4,f4,b4]@11 ~", AR: "[~ [g3,g4]@7]/2",
AS: "~ c4@15 ~@4 f4@2 ab4 ~, [ab4,eb5]@9 c4@2 ~, ~ f4@18 ~@5, ~ f3@14 ~ f3@6 ~@2", // Ab5
AT: "~@4 [c4,g4,bb4,eb5]@2 ~@6 [c4,eb4,g4,bb4]@4 ~@5 [c4,eb4,f4,ab4]@2 ~", // Cm7 Fm7
AU: "~@12 [b3,f4,bb4,eb5]@3 ~@2 [b3,f4,bb4,eb5]@2 ~@5", // Bmaj7
AV: "~@4 [b3,gb4,bb4,eb5]@2 ~@6 [b3,gb4,bb4,eb5]@4 ~@5 [b3,f4,a4,d5]@2 ~", // Bmaj7 Bm7b5
AW: "[eb3,bb3,eb4,gb4,db5]@11 ~@4 [bb3,eb4,gb4,db5]@2 ~ [bb3,f4,ab4,db5]@4 ~@2", // Ebm7 Bbm7
AX: "[a3,eb4,gb4,d5]@4 ~@2 [a3,eb4,ab4,db5]@4 ~@3 [a3,eb4,ab4,eb5,db6]@4 ~@7, ~@3 ab5 ~@2", // D Amaj7
AY: "g4@2 d4 c4 ~ ab3 [gb3,c4,eb4,a4]@4 ~@2 [f3,ab3,c4,eb4]@4 ~@2 [ab3,d4,g4,c5]@4 ~@2", // Gbdim Fm7 Abmaj7
AZ: "~@4 [ab3,c4,d4,g4] ~@7 [ab3,c4,d4,g4]@11 ~", BA: "~@12 [g3,d4,f4,bb4]@3 ~@2 [g3,d4,f4,bb4]@2 ~@5",
BB: "~@4 [g3,bb3,d4,f4] ~@7 [g3,bb3,d4,f4]@11 ~", BC: "~@4 [gb3,bb3,d4,f4] ~@7 [gb3,bb3,d4,f4]@11 ~",
BD: "~ [d4,gb4,bb4,gb5,eb6]@4 ~@8 [c4,gb4,bb4,gb5,f6]@4 ~@7, bb5 ~@2 bb5 ~@2", // Ebm Fsus4
BE: "~@4 [g3,bb3,d4,f4]@2 ~@6 [c3,g3,c4,eb4,bb4]@11 ~", BF: "~@12 [g3,a3,c4,eb4]@3 ~@2 [g3,a3,c4,eb4]@2 ~@5",
BG: "~ [c4,gb4,bb4,gb5,d6]@4 ~@7 [gb3,c4,d4,bb4]@4 ~@5 [gb3,c4,f4,bb4]@2 ~, bb5 ~@5", // Daug Gbaug Gbmaj7
BH: "[g3,d4,g4,bb4,g5]@3 ~@2 g2 [g4,bb4,g5]@10 ~@2 g4@2 bb4@2 g5 ~, ~@6 g3@17 ~, ~@3 d4@4 ~ d4@3 ~", // Gm
BI: "[g3,d4,g4,g5]@4 [g3,d4,g4,bb4] ~@5 [d4,g4,g5]@6 g2 ~ [g3,d4,g4,bb4]@3 ~@3, ~@10 g3@5 ~@9", // G5 Gm G5 Gm
BJ: "~@13 [g3,d4,g4,bb4]@3 ~@8, ~@3 g5 ~@2", // Gm
BK: "[g3,d4,g4,bb4,g5]@7 ~@4 [g3,d4,g4,g5]@6 g2 [g3,d4,g4,bb4,g5]@3 ~@3, ~@5 bb4@3 ~@4", // Gm G5 Gm
BL: "[~@12 [f3,ab3,c4]@3 ~@2 [f3,ab3,c4]@2 ~@3 [f3,ab3,c4]@13 ~ [f3,ab3,c4]@4 ~ f3 [f3,ab3,c4]@2 ~@4]/2", // Fm
BM: "[~@4 [bb1,d3]@8 [b1,eb3]@9 ~ [c2,e3]@8 [db2,f3]@9 ~ [d2,gb3]@2 ~@4 [eb2,g3]@2]/2", BN: "~@11 c7",
BO: "[bb6@4 ~ [eb4,g4,bb4] ~@2 eb6@4 ~ [eb4,g4,bb4]@3 ~ eb3 ~ [eb4,g4,bb4]@2 ~@16 [eb3,a3,eb4,gb4]@3 ~@8, ~@4 g6@4 ~@4 c6@4 bb5@3 ~@3 a5@26, ~@9 c5 ~@2]/2", // Eb Ebdim
BP: "~@4 ab5@2 a5@2 b5@2 ~@2 d6@2 eb6@2 ~ gb2 [eb3,a3,eb4,gb4,c5,gb6]@2 a6@2 c7@2, [eb3,a3,eb4,gb4,c5]@7 ~@3 gb4@6 ~@8, ~@5 c6 ~@2 f6 ~@3, ~@11 [eb3,a3,eb4,c5]@6 ~@7", // Ebdim Adim
BQ: "~ f3@4 [ab3,c4,eb4,g4]@2 ~@17, bb6 ~@7", // Abmaj7
BR: "[~@6 [db2,ab2,eb3,f3,bb3]@2 [db2,ab2,eb3,f3,bb3] ~@2 [c2,g2,eb3,f3,bb3]@4 [c2,g2,eb3,f3,bb3] ~@2 [b1,ab2,eb3,ab3,bb3]@2 [b1,ab2,eb3,ab3,bb3] ~@2 [e2,b2,ab3,bb3,eb4]@13]/3", // Bbm7 Cm7 Abm Emaj7
BS: "~@2 [e2,b2,ab3,bb3]", BT: "[eb2,bb2,g3,bb3] ~@11", BU: "[~@11 [db4,f4,c5]@48 ~@13, ~@5 a3@24 ~@7]/3",
})).s("gm_piano").gain(0.38).pan(0.6)
// other · alto sax
const alto_sax = note(`<
A B ~@2 C D@2 E@2 ~ F G H I ~ J K@2 L M N@2 O P Q R@2 S@3 T@3 ~ U@3 V ~ W X Y Z I AA AB AC AD@2 AE AF AG AH AI AJ@2 AK
AL@6 AM@3 AN AO AP@2 AQ AR@2 ~@4 AS AT ~ AU@3 AV AW AX@4
>`.pickRestart({
A: "~@21 [eb4,e4] d4 [c4,db4]", B: "bb3 ~@11, b3 ~@23", C: "f4 db4", D: "[bb3@8 b3 c4 db4 d4 eb4@34 ~@2]/2",
E: "[f4@6 bb4@17 ~]/2", F: "~@12 bb3@2 ~@4 b3@4 ~ g3", G: "c4@2 c5 ~@9", H: "~@16 c5@4 db5 c5 bb4@2",
I: "c5@2 c4 ~@9", J: "~@18 c4@3 ~ eb4@2, ~@17 bb3@2 ~@5", K: "[g4@3 g4@3 g4@2 bb4 g4@2 eb4@12 ~]/2",
L: "~@4 d4@2 eb4@4 eb5@8 db5 c5 bb4 ab4 g4 f4", M: "eb4@2 eb4 ~@9",
N: "[~@16 bb3@2 db4@4 ab4@18 g4 gb4 f4 e4 eb4 d4 db4 c4]/2", O: "b3@6 c4@5 ~",
P: "f4 e4 f4 e4 g4 f4 g4 f4 g4 f4 ab4 g4", Q: "bb4 ~@11", R: "[~@4 f4@2 ~@6 f4@2 ~@8 f4@6 gb4 f4 eb4@4 bb3@2 ~@12]/2",
S: "[~@4 d4@2 ~@6 d4@2 ~@8 d4@6 eb4 d4 bb3@4 b3@2 c4@4 eb4@2 f4@4 bb4@6 f4@4 bb4@4 f4@3 ~@3 bb4@4 eb4@2]/3",
T: "[~@4 f4@8 g4@5 ab4 bb4@4 c5@48 ~@2, ~@18 a4 ~@53]/3",
U: "[~@10 eb4@2 gb4@2 g4@2 bb4@2 c5@2 bb4@2 c5@30 ~@7 db4 d4@3 ~@2 db4 d4@4 g3@2, ~@29 g3 ~@6]/3", V: "bb3@2 ab3 ~@9",
W: "~@3 c5@2 f5 bb4@3 bb4@2 eb5", X: "ab4@6 ab4@4 c5@2 e4@4 f4@2 ~@5 b3", Y: "c4 ~@7", Z: "~@2 bb3 c4@2 c5@4 c5@2 ~",
AA: "~@16 c4@4 db4 c4 bb3@2", AB: "c4 ~@11", AC: "d4@4 eb4@2 ~@4 eb4@6 e4 eb4 d4@4 eb4@2",
AD: "[~@5 a3 bb3@2 c4@3 db4@3 gb4@3 g4@7, ~@9 bb3@2 ~@37]/2", AE: "~@2 eb4@4 eb4 ~@2 f4 ~@2",
AF: "f4@3 ~@3 g4@4 g4@6 gb4@2 f4@2 ~@4", AG: "~@2 eb4 ~@3 eb4@2 eb4 ~@3", AH: "eb4@2 eb4 ~@2 eb4@3 f4 e4 ~@2",
AI: "~@4 eb4@3 ~@3 eb4@8 f4@2 ~@4", AJ: "[eb4@3 ~@3 gb4@2 ~@4 gb4@4 f4@2 eb4@4 f4@8 eb4@4 c4@2 f4@4 bb3@2 ~@6]/2",
AK: "~@5 bb3@4 c4 ~@2",
AL: "[bb4@10 f4@26 ~@4 bb4@2 f4@4 bb4@12 f4@26 ~@4 bb3@2 c4@4 bb4@6 f4@4 gb4 f4 eb4@2 f4@4 gb4 f4 eb4@4 f4@18 ~@8]/6",
AM: "[~@2 b3 c4@2 d4 eb4@2 g4 c5@2 f5@6 eb5 d5 bb4 f4 eb4@2 d4@12 ~]/3", AN: "~@6 eb4@2 bb4 ~@3",
AO: "~@6 e4@2 bb4 ~@3", AP: "[~@6 d4@2 bb4 db4@2 c4@13]/2", AQ: "db4 d4",
AR: "[~@2 e4 f4@2 bb4 f4@2 db5@3 gb4@3 g4 c5@2 b4 bb4@2 gb4 f4@2 eb4]/2", AS: "~@2 c4@4 c4 ~@2 d4 ~@2",
AT: "d4@4 eb4@2 ~@4 eb4@6 f4 eb4 d4@4 eb4@2", AU: "[~@3 eb4 ~@2 f4@2 bb4@24 bb4@4]/3", AV: "bb4 ~@5 eb4@6",
AW: "c5@8 [bb4,b4] [g4,ab4,a4] gb4 [e4,f4] d4@12, ~@12 eb4 ~@11", AX: "[eb4@7 ~]/4",
})).s("gm_alto_sax").gain(0.56).pan(0.4)
// other · alto sax
const alto_sax_2 = note(`<
A B ~@14 C@2 D E ~@5 F@2 G@3 H@3 ~@7 I J ~@2 K L M N@2 O P Q R S T@2 ~@7 U@3 ~@11 V W ~@3 X Y Z AA AB@3
>`.pickRestart({
A: "~@21 [c4,db4] b3 [a3,bb3]", B: "g3 ~@11, ab3 ~@23", C: "[f4@3 f4@3 f4@2 g4 f4@2 c4@12 ~]/2",
D: "~@10 ab4@8 ab4 g4 f4 eb4 db4 c4", E: "b3@2 b3 ~@9", F: "[~@4 d4@2 ~@6 d4@2 ~@8 d4@6 eb4 d4 c4@4 g3@2 ~@12]/2",
G: "[~@4 c4@2 ~@6 c4@2 ~@8 c4@6 ~@18 f4@6 d4@4 f4@4 d4@3 ~@3 f4@4 c4@2]/3",
H: "[~@4 bb3@8 eb4@6 eb4@4 g4@23 ~ ab4@24 ~@2]/3", I: "~@23 a3", J: "bb3 ~@7", K: "~@8 a3@3 ~", L: "ab3 ~@11",
M: "~@4 c4@2 ~@4 c4@6 db4 c4 b3@4 bb3@2", N: "[~@8 gb3@3 ab3@3 db4@3 e4@7]/2", O: "~@2 c4@4 c4 ~@2 c4 ~@2",
P: "c4@3 ~@3 eb4@4 eb4@6 db4@2 c4@2 ~@4", Q: "~@2 b3 ~@3 b3@2 b3 ~@3", R: "b3@2 b3 ~@2 b3@3 d4 db4 ~@2",
S: "~@4 bb3@3 ~@3 bb3@8 bb3@2 ~@4", T: "[d4@3 ~@3 db4@2 ~@4 db4@6 db4@4 c4@8 c4@4 a3@2 eb4@4 ~@8]/2",
U: "[~@11 d5@6 b4 bb4 f4 d4 bb3@2 bb3@12 ~]/3", V: "~@2 ab3@4 ab3 ~@2 b3 ~@2",
W: "d4@4 c4@2 ~@4 c4@6 db4 c4 b3@4 bb3@2", X: "~@2 eb4", Y: "f4 ~@5 bb3@6", Z: "g4 gb4 a3 bb3",
AA: "c4@8 b3@8 ~ b3@7", AB: "[~ c4@59 ~@12]/3",
})).s("gm_alto_sax").gain(0.56).pan(0.4)
// other · alto sax · soft notes
const alto_sax_soft = note("<~@4 A B@2 C@2 ~@80>".pickRestart({
A: "db4 ab3", B: "[g3@10 ab3 a3 bb3@34 ~@2]/2", C: "[eb4@6 db4@12 gb4@5 ~]/2",
})).s("gm_alto_sax").gain(0.32).pan(0.4)
// other · tenor sax
const tenor_sax = note(`<
A B ~@14 C@2 D E ~@5 F@2 G@3 H@3 ~@6 I J K ~@2 L M N O@2 P Q R S T U@2 ~@7 V@3 ~@11 W N ~@3 X Y Z AA AB@3
>`.pickRestart({
A: "~@21 [eb3,e3] d3 [c3,db3]", B: "bb2 ~@11, b2 ~@23", C: "[c4@3 c4@3 c4@2 eb4 c4@2 ab3@12 ~]/2",
D: "~@4 d3@2 eb3@4 eb4@8 db4 c4 bb3 ab3 g3 f3", E: "eb3@2 eb3 ~@9", F: "[~@2 g3 ~@3 g3 ~@4 g3@4 g3@2 c3 ~@6]/2",
G: "[~@4 gb3@2 ~@6 gb3@2 ~@8 gb3@6 g3 ab3 bb3@4 b3@2 c4@4 eb3@2 f3@4 bb3@6 g3@4 bb3@4 g3@3 ~@3 bb3@4 g3@2]/3",
H: "[~@4 f3@8 bb3@5 a3 g3@4 g3@23 ~ gb3@24 ~@2, ~@18 ab3 ~@53]/3", I: "~@6 d4@2 db4 c4@3",
J: "b3@4 bb3@2 a3@6 ab3@4 ~@7 e3", K: "f3 ~@7", L: "~@16 eb3@4 f3 g3 bb3@2", M: "eb3 ~@11",
N: "eb3@2 eb3 ~@2 g3@4 f3@2 eb3", O: "[~@8 c3@3 db3@3 ab3@3 g3@7]/2", P: "~@2 f3@4 f3 ~@2 ab3 ~@2",
Q: "ab3@3 ~@3 ab3@4 ab3@6 a3@2 ab3@2 ~@4", R: "~@2 f3 ~@9", S: "g3@2 gb3 ~@2 gb3@3 gb3 f3 ~@2",
T: "~@4 eb3@3 ~@3 eb3@8 eb3@2 ~@4", U: "[eb3@3 ~@3 eb3@2 ~@4 eb3@6 eb3@4 d3@8 gb3@4 eb3@2 f3@4 bb2@2 ~@6]/2",
V: "[~@9 c4@2 gb4@6 db4 c4 gb3 eb3 c3@2 d3@12 ~]/3", W: "~@2 c3@4 c3 ~@2 eb3 ~@2", X: "~@2 ab3", Y: "g3 ~@5 e3@6",
Z: "a3@2 eb3 d3", AA: "db3@8 c3@8 ~ f3@7", AB: "[~ e3@8 db3@50 ~@13]/3",
})).s("gm_tenor_sax").gain(0.56).pan(0.4)
// other · tenor sax · soft notes
const tenor_sax_soft = note("<~@4 A B@2 C@2 ~@80>".pickRestart({
A: "eb3 d3", B: "[eb3@6 f3@17 ~]/2", C: "[g3@6 eb3@12 ab3@5 ~]/2",
})).s("gm_tenor_sax").gain(0.32).pan(0.4)
// other · baritone sax · "Bari Sax"
const baritone_sax = note(`<
A B ~@2 C D@2 E@2 ~@6 F G@2 H I ~@4 J@2 K@4 L@3 M N O P Q R S T U ~@2 V W X Y@2 ~ Z AA AB AC AD@2 AE AF@6 AG@3 N O P Q
R AH@2 AI AJ AK@2 AL X AM@4 AN@2 AO AP@3
>`.pickRestart({
A: "~@21 [ab3,a3] g3 [f3,gb3]", B: "eb3 ~@11, e3 ~@23", C: "b3 bb3", D: "[eb3@6 db4@17 ~]/2",
E: "[c4@6 b3@12 d4@5 ~]/2", F: "~@18 c4@3 ~ eb4@2, ~@17 bb3@2 ~@5", G: "[bb4@3 bb4@3 bb4@2 c5 bb4@2 f4@12 ~]/2",
H: "~@4 d4@2 eb4@4 c5@8 bb4 ab4 g4 f4 eb4 db4", I: "f4@2 f4 ~@9",
J: "[~@12 eb3@2 eb3 ~@2 eb3 ~@3 eb3@3, ~@23 bb3@2 ~@23]/2",
K: "[e3 f3 gb3 g3 ab3 a3 bb3@4 eb3@2 ~@12 ab3@4 ab3@2 ~@4 ab3@2 ~@6 ab3@12 bb3@4 b3@2 c4@4 eb4@2 f4@4 g4@6 f4@4 g4@4 f4@3 ~@3 g4@4 eb4@2, ~@23 eb3@2 ~@71]/4",
L: "[~@4 d4@8 c4@5 db4 bb3@4 a3@23 ~ d3@24 ~@2, ~@18 c4 ~@53]/3", M: "~@10 gb3@2 g3@3 ~@7 gb3@2",
N: "g3@3 ~@7 gb3@2 g3@4 g3@2 ~@4 gb3@2", O: "g3@3 ~@6 gb3@2 g3@3 ~@8 gb3@2",
// … 250 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.