0:00/0:00
// Don't Chain My Heart — Toto
// 107 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 126 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): DistorGui.
setcpm(107/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.
// bass · electric bass finger · "FingrdBas"
const bass = note(`<
~ A B C D A B C D A B C D A B C D A B C E F G H I J K L M@2 F N O P F Q R S A B T U A B T V W X Y Z F G H AA J AB AC
AD@2 F AE AF P F AG AH AI AJ AK AL AM AN AO AP AQ@2 A B T U A B AR AS AT X AU Z F G H AV J AW AX AY@2 AZ BA BB P AZ BC
BD BE F BF O BG AZ BH BI BJ F N O BK AZ BL BI BJ F BM BN BO ~
>`.pickRestart({
A: "b1 ~ b1 ~ b1 ~ b1@3 ~ f#1 a1", B: "b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@4 ~@2 d2@5 ~", C: "e2 ~ e2 ~ e2 ~ e2@3 ~ b1 d2",
D: "e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2@4 ~@2 d2@5 ~", E: "e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2 ~ e2@4 d2@5 ~",
F: "b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@6 b1 ~ b1@2 d2@2", G: "d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@6 d2 ~ a1@2 a1@2",
H: "a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@6 a1 ~ b1@2 d2@2", I: "e2 ~ b1 ~ e1@2 ~@2 e1@2 ~@2 e2@6 b1 ~ d2@4",
J: "b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@6 b1 ~ d1@2 d1@2", K: "d1 ~ a1 ~ d2@2 ~@2 d2@2 ~@2 d2@6 a1 ~ a1@2 e2@2",
L: "a2@2 ~@2 a1@2 ~@2 a1@2 ~@2 e2@2 a1@2 c#2@2 ~@3 [a1,a#1] [b1,c2] [c#2,d#2,e2], ~@18 d2@5 ~", // A#maj7 Cmaj7 C#m
M: "[f2 f#2@22 ~ [f#2,d3]@23 ~, f#1@22 ~ f#1@24 ~]/2", N: "d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@6 d2 ~ d2@2 e2@2",
O: "e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2@6 e2 ~ e2@2 g1@2", P: "g1 ~@3 g1@2 ~@2 g1@2 a1@2 a1 ~@3 a1@2 ~@2 a1@3 ~",
Q: "d2 ~ d2 ~ d2 ~ d2@3 f#2@3, ~@18 e2 ~@5", R: "e2 b1 e1 ~ e2 ~ e1@3 e1 f#1 g1",
S: "g1 ~@3 g1@2 ~@2 g1@2 a1@2 a1@4 a1 ~ f#1@4 a1@2", T: "e2 ~ e2 ~ e2 ~ e2@3 e1@2 f#1",
U: "g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@4 g1 ~@2 a1 ~@2 a1@2, ~@9 g1 ~@2",
V: "g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@3 ~ g1@2 a1@3 ~ a1@2", W: "b1 ~ b1 ~ b1 ~ b1@3 f#1!2 a1",
X: "b1 ~ b1 ~ b1 ~ b1@2 ~@3 e1, ~@3 d2", Y: "e1 ~ e1 ~ e1 ~ e1@3 e1@2 f#1",
Z: "g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@3 ~ g1@2 ~ a1 ~@2 a1@2, ~@9 g1 ~@2", AA: "e2@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@5 ~ f#1@6",
AB: "d1@2 ~@2 d1@2 ~@2 d1@2 ~@2 d1@6 d1 ~ d1@2 a1@2",
AC: "a1@2 ~@2 a1@2 ~@2 a1@2 ~@2 a1@5 ~ a1@2 e2@2 b1 [c2,c#2,d#2], ~@11 f#2", // Cm
AD: "[[f#1,f#2]@22 ~@2 [f#2,d3]@23 ~, [e2,f2] ~@22 f#1@24 ~]/2", AE: "d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@6 d2 f#2@5",
AF: "e2 ~ b1@2 e1@2 ~@2 e1@2 ~@2 e1@6 e1 ~ e1@2 g1@2", AG: "d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@6 d2 ~ d2@2 f#2@2",
AH: "e2 b1 e2 ~ e2 ~ e2@3 e1 f#1 g1", AI: "g1@3 ~ g1@2 ~@2 g1@2 g1@2 f#1@3 ~ f#1@2 ~@2 f#1@4",
AJ: "e1@3 ~ e1@2 ~@2 e1@2 ~@2 e1@6 e1 ~ f#1@2 a1@2", AK: "b1@3 ~ b0@2 ~@2 b0@2 ~@2 b0@6 b0@3 ~ g1@2",
AL: "a1@3 ~ a1@2 ~@2 a1@2 ~@2 a1@6 a1@3 ~ a1@2", AM: "g1@3 ~ g1@2 g1@3 ~ g1@2 g1@5 ~ a1@3 ~ d2@2",
AN: "e2 ~ b1@2 e2@2 ~@2 e2@2 ~@2 e2@6 e2 d2@4 ~", AO: "b1@2 c3 ~ c3@2 b2@2 b1 ~ b1@2 b2@5 g1 f#1@3 ~@3",
AP: "a1@2 ~@2 a1@2 ~@2 a1 ~ a1@2 a1@6 a1@2 c#2@2 b1 [c2,c#2,d2], ~@11 e2",
AQ: "[[d#2,f2] ~@11 f#2@11 ~@7 f#1@6 f#1@6 f#1@5 ~, f#2@4 ~@2 f#2@6 ~@12 [f#2,d3]@23 ~, f#1@3 ~ f#1@6 f#1@13 f#1@6 ~@19]/2", // D#sus2 D
AR: "e2 ~ b1 ~ e1@2 ~@2 e1@2 ~@2 e1@5 ~ e1 ~ e1 ~ f#1@2", AS: "g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@3 ~ g1@2 a1@2 a1@2 a1@2",
AT: "b1 ~ b1 ~ b1 ~ b1@3 b0 f#1 a1", AU: "e2 ~ b1@2 e1@2 ~@2 e1@2 ~@2 [e1,e2]@6 e1@4 f#1@2",
AV: "e2 ~ b1 ~ e1@2 ~@2 e1@2 ~@2 e1@5 ~ g1@5 ~", AW: "d1 ~ d1 ~ d1 ~ d1@3 d1@2 e2",
AX: "a2@2 ~@2 a2@2 ~@2 a2@2 ~@2 a2@4 a2@2 a1@2 c#2@2 ~ [c#2,d2,d#2], ~@11 e2",
AY: "[f2 f#2@22 ~ f#2@23 ~, f#1@22 ~ f#1@24 ~]/2", AZ: "b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@6 b1 ~ b1@2 d1@2",
BA: "d1@2 ~@2 d1@2 ~@2 d1@2 ~@2 d1@3 ~ d1@2 f#1@3 ~ f#1@2", BB: "e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@6 e1 ~ e1@2 g1@2",
BC: "[d2,a2]@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@6 a1 ~ a1@2 b1@2", BD: "a1 ~ a1 ~ a1 ~ a1@3 e1 f#1 g1",
BE: "g1 ~@3 g1@2 ~@2 g1@2 a1@2 b1 ~ b1@2 ~@3 a1@2 ~ f#1@2, ~@9 b1 ~@2",
BF: "d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@6 d2 ~ e2@2 f#2@2", BG: "g1 ~@3 g1@2 ~@2 g1@2 a1@2 a1 ~@3 a1@2 ~@2 d2@2 a1@2",
BH: "d1 ~ d1 ~ d1@2 ~@2 d1@2 ~@2 d1@6 d1@2 b1 ~ b1@2", BI: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
BJ: "g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 f#1@3 ~ e1@3 ~ d1@3 ~", BK: "g1 ~@3 g1@2 ~@2 g1@2 a1@2 a1 ~@3 a1@2 ~@2 a1@2 ~@2",
BL: "d1 ~ d1 ~ d1@2 ~@2 d1@2 ~@2 d1 ~ d1@2 ~@2 d1@2 ~@2 b1@2", BM: "d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@6 d2 ~ d2@2 g1@2",
BN: "g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@6 g1 ~ g1@2 g1@2", BO: "g1 ~@3 g1@2 ~@2 g1@2 ~@2 a1 ~@3 a1@2 ~@2 a1@2 ~@2",
})).s("gm_electric_bass_finger").gain(0.35)
// chords · piano · "Piano 2"
const piano = note(`<
~@21 A B C D A B C E F G H I J G K I L A M N O P Q R S T U V W A B C X A B C E Y G H I Z AA@2 I AB AC AD AE AF@2 AG@2
AH AI AJ AK N AL AM Q R S T AN V AO A AP C AQ AR AS C AT AU G H I Z AA@2 AV AW AX AY I AZ@3 AV BA AX AY I BB BC@2 AV
BA AX AY BD BB BE
>`.pickRestart({
A: "[b1,b2,b3,d4,f#4,b4]@11 ~", B: "[d2,d3,a3,d4,f#4,a4]@11 ~", C: "[a3,c#4,e4,a4]@23 ~, [a1,a2]@7 ~",
D: "[e2,e3,b3,d4,e4,g4]@3 ~", E: "[f#1,f#2,f#3,b3]@23 ~, [c#4,f#4]@7 ~",
F: "~@6 [b3,b4]@3 ~ [f#3,a#3,d4]@2 [d4,d5]@3 ~ [f#3,a#3,d4]@2 [e4,e5]@4 [f#3,a#3,d4]@2, [f#1,f#2]@23 ~, [f#3,a#3,d4,f#4]@3 ~@5", // B F#aug D F#aug E F#aug F# F#aug
G: "[b1,b2]@17 ~ [b1,b2]@2 a3 ~ [d4,f#4] ~, [d4,f#4]@7 ~, b3@9 ~@2 b3", // B D
H: "~@4 a3@2 ~@2 a3@3 ~ [a3,d4]@10 ~@2, [d3,f#4]@11 ~, d4 ~, a3 ~@5, ~ d2@21 ~@2", // D5 D
I: "d4@2 d4 ~ e3 d4 [e3,b3,d4]@3 ~@2 b3, [e4,g4]@11 ~, [e2,b3]@6 e2@5 ~, e3 ~@2 [e3,g3,d4]", // E7 Em E5 Em7
J: "g1@3 ~@3 [g2,a3]@5 ~ [a1,a2,e3,a3,c#4]@4 e3 ~@2 b3@5, d3@5 ~@4 [a2,a3,c#4]@3, [g2,g3,a3,d4]@6 g3 ~@11 e4@4 ~@2, ~@4 g1@6 ~@6 a1@7 ~", // Gsus2 A Gsus2
K: "~ a3@3 a3@2 ~@2 a3@3 ~ [a3,d4]@6 [a3,d4,f#4]@6, d3@7 ~, f#4@17 ~@7, d4 ~, ~ d2@21 ~@2", // D5 D
L: "g1 ~ d3 [g2,b3,b4]@2 ~ e3 ~@2 [e3,a3]@3, [g2,g3,a3,b3]@6 ~@6 [a2,a3,b3]@5 ~@7, ~ d4@2 ~@2 [d4,d5]@2 [e4,e5]@3 ~@2, ~@2 g1@3 ~@3 a2@4", // G A5 G Asus2 D E
M: "~@5 [a3,d4], ~@4 [f#3,b3] ~, ~@3 [d2,d3]", N: "[e2,e3]@23 ~, [b3,e4]@3 ~",
O: "[g1,g2]@3 [a1,a2], [g3,a3,d4]@23 ~", P: "[f#3,b3]@2 e3@2 [f#3,b3]@19 ~, [b1,b2]@23 ~, ~@2 a3 ~@21",
Q: "[b1,b2]@14 ~@6 [a3,d4]@3 ~, ~@4 [f#3,b3] ~, ~@18 [d2,d3]@5 ~", R: "[e2,e3,b3,e4]@19 ~@5",
S: "[g3,a3,d4]@5 ~ [g1,g2,d3,g3,d4]@3 [a1,a2,e3,a3,c#4]@3, [g1,g2] ~", // Gsus2 G5 A G
T: "[f#3,b3]@16 ~@2 b2@2 f#3 ~ b2@2, [b1,b2]@3 ~, ~@4 [d3,g#3,b3,d4]!2", // B5 B G#dim
U: "[b1,b2,d3,f#3,b3,d4]@2 [b1,b2] [d2,d3,a3,d4]", V: "[e2,e3]@11 ~, [b3,e4]@3 ~, g#3@2 ~",
W: "g3@3 ~ g3@3 ~ g3@3 ~ [g1,g2,g3,a3,d4]@6 ~ a3@5, [g1,g2,a3,d4]@11 ~@7 [a1,a2,c#4]@6, ~@9 g3 ~@2", // Gsus2 A
X: "~@10 [f#3,f#4]@2 [a4,a5]@3 ~ [b4,b5]@3 ~ [d5,d6]@3 ~, [e2,e3,b3,d4,e4,g4]@3 ~", // F# A B D Em7
Y: "~@3 [b3,b4]@2 d4 [d4,d5]@2 ~ [e4,e5]@2 [f#3,a#3,d4], [f#1,f#2]@23 ~, [f#3,a#3,d4,f#4]@9 ~ [f#3,a#3]@6 [f#3,a#3,d4]@5 ~@3", // B D E F#aug F# F#aug F# F#aug
Z: "g1@3 ~@3 [g2,a3]@5 ~ [a1,a2,e3,a3,c#4]@4 e3 ~@2 b3@5, d3@5 ~@4 [a2,e3,a3,c#4]@3, [g2,g3,a3,d4]@6 g3 ~@17, ~@4 g1@6 ~@6 a1@7 ~", // Gsus2 A Gsus2
AA: "[[b1,b2]@17 ~ [b1,b2]@2 a3@2 ~@6 a3@2 ~@2 a3@3 ~ [a3,d4]@6 [a3,d4,f#4]@6, [d4,f#4]@21 ~ f#4@20 ~@6, b3@18 ~@4 d4@11 ~@15, ~@22 a3@3 d2@21 ~@2, ~@8 d3@7 ~]/2", // B D5 D
AB: "g1@3 ~ d3@2 ~@2 f#4@2 a4@2 b4@2 [d4,d5] ~ [e4,e5] ~ [f#4,f#5]@2 [a4,a5] ~ [b4,b5] ~, [g2,g3,a3,b3]@3 [g2,b3]@2 ~ [a2,e3,a3]@2 a2@4, ~@4 g1@6 ~@2 b3 ~@5 [e3,a3]@6", // D E F# A B G A5
AC: "[g3,b3,d4]@6 [d4,e4,g4,a4,b4]@13 ~@5, [e2,e3]@23 ~", // G Em7 E
AD: "[b3,d4,f#4]@12 [b3,d4,f#4]@4 [b3,b4]@3 ~ b4@3 ~, [b1,b2], ~@20 b3 ~@3", AE: "[a1,a2,b3,c#4,e4,a4]@11 ~",
AF: "[[g3,a3,d4]@10 d3@2 [e3,e4] ~ [e4,e5] ~ [f#4,f#5] ~@3 a5@3 ~ [b4,e5]@11 ~@7 [b4,b5]@3 ~ [b4,b5]@2, [g1,g2]@23 ~ e2@21 ~@3, ~@10 d4 ~@7 [d3,d4]@2 ~@4 e3@15 ~ [e3,b3]@7 ~, ~@19 a4@3 ~ b5@11 ~@14]/2", // Gsus2 E F# E5 B G D E5
AG: "[[b1,b2,b3,d4,f#4]@17 ~ [b4,b5]@3 ~@3 [a1,a2]@18 [a4,a5]@5 ~, ~@22 [a4,a5]@19 ~@7]/2", // Bm B A
AH: "[f#3,c#4,f#4]@8 [a3,a4] [b3,b4] [d4,d5] ~, [f#1,f#2]@23 ~, b3@7 ~@5", // F#5 A B D F#
AI: "~@2 a3@2 [b3,b4] ~ d4@2 [e4,e5] ~ [f#4,f#5] ~ [a4,a5]@2 [b4,b5] ~ [d5,d6] ~ [e5,e6] ~ [f#5,f#6] ~ [a5,a6] ~, [f#1,f#2]@23 ~, [f#3,a#3,f#4]@9 ~ [f#3,a#3]@6 [f#3,a#3,d4]@5 ~@3, d4@3 ~@2 d4 ~@6, ~@2 a4 ~@3 d5 ~@17", // B E F# A B D E F# …
AJ: "[b5,b6]@3 ~@11 e6 f#6 a6 f#6 [f#6,a6] a6 f#6 [f#6,a6] a6 f#6, [b1,b2]@11 ~", // B F#m B
AK: "a6 [f#6,a6] f#6 f#6@2 a6 f#6 ~ [b5,d6]@2 ~@2 [b2,f#3,b3]@5 ~ [d2,d3,a3,d4]@6, ~@3 a6 ~@2 f6@2 ~@16, ~@7 e6@2 ~@15", // F#m Bm B5 D5
AL: "[g1,g2,g3,a3]@3 [a1,a2,a3,c#4], d4@2 ~", AM: "[b1,b2]@23 ~, [f#3,b3]@19 ~@5",
AN: "[b1,b2,d3,f#3,b3,d4]@6 ~@2 [f#3,b3,f#4] ~ [a3,d4,a4]@2, ~@2 [b1,b2] [d2,d3]", // Bm B5 D5 B D
AO: "~ g3@11 [g1,g2,a3,d4]@6 [a1,a2,e3,a3,c#4]@6, [g1,g2,a3,d4]@11 ~@13", // Gsus2 A Gsus2
AP: "[a3,a4]@2 a4 ~ a3@2 ~@14 a3@4, [d2,d3,d4,f#4]@11 ~", // A D
AQ: "~@16 a3@2 d5@2 d4 ~ [b4,b5] ~, [e2,e3,b3,d4,e4,g4]@18 d4 ~@3 b3@2", // B Em7
AR: "[b3,b4]@15 ~ [b3,b4]@6 ~@2, [b1,b2,d4,f#4]@11 ~", AS: "[d2,d3,a3,d4,f#4,a4]@11 [f#3,a3,d4]",
AT: "~@10 [a4,a5] ~ b5@6 ~@6, [f#1,f#2,f#3,b3]@23 ~, [c#4,f#4]@7 ~, ~@3 b4 ~@2", // A B5 F#5
AU: "~@3 [b3,b4]@2 d4 [d4,d5]@2 ~ [e4,e5]@2 b3, [f#1,f#2]@23 ~, [a#3,d4,f#4,a#4]@9 ~ [f#3,a#3]@6 [f#3,a#3,d4]@5 ~@3", // B D E F# A#aug F# F#aug
AV: "[a2,a3]@2 a2 ~ a2@2 [a1,a2,a3]@5 ~, [e3,c#4]@23 ~, a1 ~, ~@3 a3@2 ~@7", // A C#m
AW: "g1@3 ~@5 [a3,a4]@4 ~@2 [e3,a3]@2 ~@4 [e4,e5]@4, [g3,a3,d4]@3 g2@2 ~ [a2,b3,b4]@2 a2@4, g2@2 g1@3 ~@7, ~@3 f#3@4 ~@11 [e3,a3]@6, ~ f#4 ~@2 [d4,d5] ~", // A A5 E Gsus2 Asus2 A5 D
AX: "[b1,b2]@17 ~ [b1,b2]@2 a3 ~ [b3,d4]@2, [d4,f#4]@21 ~ f#4 ~, b4@15 ~@3 b4@5 ~", // B Bm D
AY: "~@4 a3@2 ~@2 a3@3 ~ [a3,d4]@10 ~@2, [d3,f#4,a4]@11 ~, d4 ~, a3 ~@5, ~ d2@21 ~@2", // D5 D
AZ: "[g1@3 ~@3 [a3,d4,d5]@6 [a1,a2,e3,a3,c#4]@4 e3 ~ [e4,e5]@3 ~@3 [b1,b2]@17 ~ [b1,b2]@2 a3@2 ~@6 a3@2 ~@2 a3@3 ~ [a3,d4]@6 [a3,d4,f#4]@6, d3@10 ~@14 d4@21 ~ d4@11 ~@15, [g2,g3,a3,d4]@6 g2@4 ~@8 [a2,e3,a3,c#4]@6 b3@18 ~@4 a3@3 d2@21 ~@2, ~@4 g1@6 ~@6 a1@7 ~@25 d3@21 ~@3, ~@6 g3 ~@15 [f#4,f#5]@23 ~ f#4@20 ~@6]/3", // D5 A E B D5 D Gsus2 A …
BA: "[g1,b3,d4,f#4]@2 g3@2 [a3,c#4,e4]@2 g3@2 [a4,a5] ~ [b4,b5]@2 e5@2 d5 ~ b4@2 e5@2 d5@2 b4@2, g2@4 g1@6 ~@2 d#5 ~@11, ~@3 g2@2 ~ a2@2 a2@4", // Gmaj7 A B
BB: "g1@3 ~@3 g2@4 e5@2 ~@4 e3 ~ d5@3 ~ e5@2, d3@5 ~@4 [a2,e3,a3,c#4]@3, [g2,g3,a3,d4]@3 [a3,d4,d5]@3 ~ b4@2 ~@3, ~@4 g1@6 ~@2 [a1,a2,e3,a3,c#4]@4 a1@7 ~, ~@6 g3 ~@17", // A Gsus2 D5 A
BC: "[[b1,b2]@17 ~ [b1,b2]@2 a3@2 ~@6 a3@2 ~@2 a3@3 ~ [a3,d4]@6 [a3,d4,f#4]@6, d4@21 ~ f#4@20 ~@6, b3@18 ~@4 d4@11 ~@15, ~@22 a3@3 d2@21 ~@2, ~@8 d3@7 ~]/2", // B D5 D
BD: "g2@6 g2@5 ~, [g3,a3,b3,d4]@11 ~", BE: "[b1,b2]@17 ~@7, d4@7 ~, b3@19 ~@5",
})).s("gm_piano").gain(0.3).pan(0.7)
// chords · distortion guitar · "DistorGui"
const distortion_guitar = note("<~@22 A B ~@2 A B ~@23 A B ~@2 A B ~@32 A B ~@2 A B ~@31>".pickRestart({
A: "f#2@23 ~", B: "e3@23 ~",
})).s("gm_distortion_guitar").gain(0.45).pan(0.7)
// chords · overdriven guitar · "OverdrGui"
const overdriven_guitar = note(`<
~@4 A B@4 ~@3 C@3 ~ D ~@3 E F G H I F G H J K L M N O L M N O ~@3 P@3 ~ Q R@2 ~@2 F G H I F G H J K L M N O L M N S T
U V@2 W X Y Z AA ~ AB AC AD AE AF AG@2 AH@2 AI AJ F G H I F G H J K L M N O L M AK O L M N O L M AK O L M N AL AM M AK
O L M AN AO ~
>`.pickRestart({
A: "~@16 [d4,a4]@2 e4@2 f4 e4 d4 b3", // D5
B: "[~@16 a3@2 b3@2 d4@2 b3@18 ~@2 [b2,e3]@2 d3@2 e3@15 ~@6 f#3 ~@2 e3@14 ~@6 [d3,f#3,d4,a4]@3 ~ [d3,b3,d4,f#4,b4]@2, ~@66 e3@2 ~@2 d3 ~@25]/4", // E5 D Bm
C: "[~@16 f#3@2 [d3,a3,d4]@3 ~ [a3,d4]@26 ~@4 b3@6 a3@2 ~@12, ~@11 d3@14 ~@11]/3", // D5
D: "~@14 [d4,a4]@2 g4@2 d4@2 e4 ~@3", E: "~@14 b3 ~ b3 ~ f#4@3 ~@3", F: "[f#3,b3]@23 ~", G: "[d3,a3]@23 ~",
H: "~ e4@23, [a3,c#4]@23 ~", I: "~ e4@22 ~, [e3,g3,b3]@11 ~", J: "~ f#4@22 ~, [f#3,b3,c#4]@11 ~",
K: "[f#3,a#3,d4,f#4]", // F#aug
L: "b2@2 ~@2 [b3,d4,f#4]@2 ~@4 b3@2 b2@8 ~@2 f#3 ~, f#2@23 ~, f#3@8 ~@4 [f#3,b3,d4,f#4]@11 ~, [b3,d4,f#4]@2 ~ b3@2 ~@7, ~ b2@3 [b2,f#3]@2 ~@4 b2@2", // Bm B5
M: "d3@2 ~@2 [a3,d4,f#4]@2 ~@4 a3@2 d3@8 ~@2 f#3 ~, f#2@23 ~, [a3,d4,f#4]@4 ~@2 a3@4 ~@2 [f#3,a3,d4,f#4]@11 ~, f#3 ~ d3@6 [d3,f#3]@4 ~@8 d3@4", // D
N: "b2@2 ~@2 [g3,b3,e4]@2 ~@4 g3@2 b2@8 ~@2 e3 ~, e2@23 ~, e3@8 ~@4 [e3,g3,b3,e4]@11 ~, [g3,b3,e4]@2 ~ g3@2 ~@7, ~ b2@3 [b2,e3]@2 ~@4 b2@2", // Em E5
O: "d3 ~ [a3,d4] [d3,g3,a3,d4,g4]@3 [a2,e3,a3,c#4,e4,a4]@3 [a2,e3,a3,c#4,e4,a4]@3, g2 ~, g3 ~@3, [a3,d4,g4] ~@5, ~ d3@2 ~@9", // D5 Dsus4 A Dsus4
P: "[~@16 f#3@2 [d3,a3,d4]@3 ~ [d3,a3,d4]@50]/3", Q: "~@12 [d4,a4]@2 ~ d3 a3 ~@3 a3 ~@3, ~@7 g4 ~@4",
R: "[b3 ~ e3 ~ a3 ~@2 [f#3,b3] ~@4 [f#3,b3]@30 ~@6]/2", // B5
S: "d3 ~ [a3,d4] [d3,g3,a3,d4,g4]@3 [f#2,d3,f#3,a3,d4,f#4]@3 [f#2,d3,f#3,a3,d4,f#4]@3, g2 ~, g3 ~@3, [a3,d4,g4] ~@5, ~ d3@2 ~@9", // D5 Dsus4 D Dsus4
T: "~@6 [d4,e4,g4,b4]@7 ~@5 d4@6", U: "b3@2 ~@2 f#3 ~@3 f#3 ~@3 [a3,d4]@12",
V: "[~@10 c#4@2 a3@2 ~@2 c#4@7 ~ [b3,d4]@24, ~@14 [a3,e4]@9 g3@24 ~]/2", W: "~@14 e3 ~ e3@2 [e4,a4]@2 g4@2 [d3,a3]@2",
X: "~@6 f#3@2 a3@2 f#3@2 [a3,d4]@7 ~ f#4@4", Y: "e4@6 d4@3 ~ c#4@14, a3", Z: "~ f#4@22 ~, [f#2,c#3,f#3,b3,c#4]@11 ~",
AA: "[f#2,a#2,f#3,a#3,d4,f#4]", AB: "~@10 e4@2 f4@2 ~@2 b3@2 e4@3 ~ d4@2, ~@7 e4 ~@4, ~@15 d4@2 ~@7",
AC: "e4@3 ~ e4@11 d4 b3 [g3,a3] e3@2 ~@4", AD: "~@4 e4@2 e4@5 ~ d4@2 b3@2 a3@2 a4@2 e4 ~ d4@2",
AE: "~@2 a4@2 e4 ~ d4 ~ b3 ~ a3@2 a4@2 e4 ~ d4 ~ b3@2 a3 ~ b3 ~", AF: "e4@2 ~@2 d4@8 b3@2 a3@2 b3@7 ~",
AG: "[b3 ~ b3 ~@3 e5@3 ~@3 e5@3 ~ d5@2 b4@9 b4@4 ~ b4@3 ~ b4@4 b4@3 ~ b4@3 ~]/2",
AH: "[b4@6 b3 ~ b3 ~ b5@8 ~@4 e5@4 d5@4 b4@4 b4@8 d5@4 ~@2]/2",
AI: "~@3 f#4 d5 b4@2 ~ b4@2 d5 ~ b4 d5 b4 ~ b4 a4 b4 a4 ~ b4 d5 b4, ~@15 a4@2 ~@3 [f#4,a4]@2 ~@2", // F#m
AJ: "a4@2 b4@2 b4@2 ~@2 e4 d4 ~ b3 a3@2 ~ e4 b3 ~ e4@2 d4@4, ~@7 f4@2 ~@15",
AK: "a2@2 ~@2 [a3,c#4,e4]@2 ~@4 a3@2 a2@8 ~@2 e3 ~, e2@23 ~, e3@8 ~@4 [e3,a3,c#4,e4]@11 ~, [a3,c#4,e4]@2 ~ a3@2 ~@7, ~ a2@3 [a2,e3]@2 ~@4 a2@2", // A A5
AL: "d3 ~ [a3,d4] [d3,g3,a3,d4,g4]@3 [f#2,c#3,f#3,a3,c#4,e4]@3 [f#2,e3,a3,c#4,e4,a4]@3, g2 ~, g3 ~@3, [a3,d4,g4] ~@5, ~ d3@2 ~@9", // D5 Dsus4 F#m7 Dsus4
AM: "b2@2 ~@2 [b3,d4,f#4]@2 ~@4 b3@2 b2@8 ~@2 f#3 ~, f#3@8 ~@4 [f#3,b3,d4,f#4]@11 ~, [b3,d4,f#4]@2 ~ b3@2 ~@7, f#2 ~ b2@6 [b2,f#3]@4 ~@8 b2@4", // Bm B5
AN: "b2@2 ~@2 [g3,b3,g4]@2 ~@4 g3@2 b2@8 ~@2 d3 ~, g2@23 ~, d3@8 ~@4 [d3,g3,b3,g4]@11 ~, [g3,b3,g4]@2 ~ g3@2 ~@7, ~ b2@3 [b2,d3]@2 ~@4 b2@2", // G Bm
AO: "d3 ~@3 [a3,d4]@2 [d3,g3,a3,d4,g4]@6 [a2,e3,a3,c#4,e4,a4]@6 [a2,e3,a3,c#4,e4,a4]@6, g2 ~, g3 ~@3, [a3,d4,g4] ~@5, ~ d3@2 ~@9", // D5 Dsus4 A Dsus4
})).s("gm_overdriven_guitar").gain(0.35).pan(0.2)
// chords · rock organ · "Organ 3"
const rock_organ = note(`<
~@5 A ~@2 B ~@16 C D E F G H I J K L I M N ~@19 O G P Q R S P Q R T U V W X Y Z W AA G AB@2 AC AD AE@2 AF@2 AB@2 AC AG
Z AH@3 Z AI@2 AA G AJ@2 AK@2 AL@3 AM AN@2 AK@2 AL@3 AO@3 AK@2 AL@3 AP AQ AR@2 AS ~
>`.pickRestart({
A: "[d5,e5,f#5,b5]@3 f5 c5 b4 ~@18", B: "~@11 f6 f#6@6 [f6,g6] ~ f#6 d6 b5 ~, ~@12 e6 ~@5 e6@2 ~ e6@2 ~",
C: "[a4,d5]@15 ~ a4@4 ~ g#4@3, ~@2 d5", D: "~ [a4,d5]@22 ~", E: "[e4,a4]", F: "[c#5,f#5,b5]@11 ~",
G: "[a#5,d6,f#6]@23 ~", H: "[f#5,b5,d6]@7 ~@5 [f#5,b5,d6]@5 ~ [f#5,b5,d6]@5 ~",
I: "[f#5,a5,d6]@4 [f#5,a5] ~@5 [f#5,a5,d6]@7 ~ [f#5,a5,d6]@5 ~", // D F#m D
J: "[g5,b5,e6]@4 [g5,b5] ~@7 [g5,b5,e6]@6 ~@2 [g5,b5,e6]@4", K: "[g5,a5,d6]@11 ~ [e5,d6]@5 ~ [e5,c#6]@6, ~ a5",
L: "[f#5,b5,d6]@4 b5 ~@7 [f#5,b5,d6]@5 ~ [f#5,b5,d6]@5 ~", // Bm
M: "[g5,b5,e6]@4 g5 ~@5 [g5,b5,e6] ~@2 [g5,b5,e6] ~@4 [g5,b5,e6]@5 ~", // Em
N: "[g5,a5,d6]@12 [e5,a5,c#6]@6 ~@3 d6 b5@2, ~@9 e6!2 ~, ~@19 f6@2 ~@3", O: "[f#5,b5,c#6]@23 ~",
P: "[f#5,b5,d6]@6 ~@8 [f#5,b5,d6] ~@3 [f#5,b5,d6]@6", Q: "[f#5,a5,d6]@6 ~@8 [f#5,a5,d6] ~@3 [f#5,a5,d6]@5 ~",
R: "[g5,b5]@14 [g5,b5,e6] ~@3 [g5,b5,e6]@5 ~, e6 ~@3", S: "[g5,a5,d6]@12 [e5,a5,d6]@5 ~ [e5,a5,c#6]@6",
T: "[b4,d5,e5,g5]@6 [b4,e5,g5]@6 [a4,f#5]@5 ~ [a4,d5,f#5]@6, ~@6 d5@11 ~@7", U: "[g5,b5,e6]",
V: "[b5,d6,f#6]@17 ~ [b5,d6,f#6]@5 ~", W: "[a5,c#6,e6]@23 ~", X: "[g5,b5,d6]@3 [g5,b5,d6]", Y: "[g5,b5,e6]@23 ~",
Z: "[f#5,b5,d6]", AA: "[b5,c#6,f#6]", AB: "[f#4@35 ~ f#4@5 ~ [a4,d5]@6, b4@41 ~@7]/2", AC: "[b4,e5]",
AD: "d5@3 c#5, a4", AE: "[[f#4,b4]@7 [a4,d5]]/2",
AF: "[e5@24 ~@11 f6 f#6@6 [f6,g6] ~ f#6 d6 b5 ~, b4@7 [a4,c#5], ~@4 d5@3 ~, ~@36 e6 ~@5 e6@2 ~ e6@2 ~]/2", // Fsus2 A
AG: "[a4,d5]@3 [a4,c#5]", // D5 A
AH: "[d6@17 ~ e6@3 f#6 e6 ~@18 e6@3 ~ [e6,f#6] ~@2 [e5,g5]@18 [e5,g5]@6, [f#5,a5]@22 d6@2 [e5,a5]@23 e6@24 ~, ~@23 e6@17 ~@6 d6@26]/3", // Esus2 Em F#m A5
AI: "[[f#5,a5,d6]@18 e6@3 f#6 [d6,e6] ~ [e5,a5]@24, ~@18 [f#5,a5]@5 e6@25]/2", // D Dsus2 A5 F#m
AJ: "[f#5@5 ~ f#5@5 ~ f#5 ~ [f#5,b5,d6]@3 ~ [f#5,b5]@6 f#5@5 ~ f#5@5 ~@3 [a5,d6]@4 [f#5,a5,d6]@6, [b5,d6]@2 ~ d6@3 ~@2, ~@24 a5@12 f#5@5 ~@7]/2", // Bm B5 D5 D Bm
AK: "[[g5,e6]@5 ~ e6@6 g5 ~ [g5,e6]@4 [g5,e6]@5 ~ [g5,d6]@6 g5@5 ~ [e5,a5]@6 [e5,a5,c#6]@6, b5@6 ~ b5@11 ~@6, ~@6 g5@5 ~@19 d6@12 ~@6]/2", // C G5 A5 A
AL: "[[f#5,b5,d6]@5 ~ [b5,d6]@6 f#5 ~ [f#5,d6]@4 ~@6 a5@5 ~ [a5,d6]@6 f#5 ~ [f#5,a5,d6]@4 [f#5,d6]@5 ~ [c#6,e6]@6 [c#6,e6]@6 ~@2 [c#6,e6]@4 [a5,c#6,e6]@6, ~@6 f#5@5 ~@3 b5@10 ~@18 a5@11 ~ a5@5 ~ a5@5 ~@7, ~@18 [f#5,d6]@11 ~ f#5@5 ~@37]/3", // Bm D D5 D C#m A D
AM: "[g5,d6]@5 ~ g5@5 ~ [f#5,a5]@12, b5, ~ d6@3", // G5 F#m
AN: "[[f#5,d6]@5 ~ [f#5,b5,d6]@6 f#5 ~ [f#5,b5,d6]@3 ~ [f#5,b5]@6 f#5@5 ~ f#5@5 ~@3 [a5,d6]@4 [f#5,a5,d6]@6, b5 ~@17 d6@18 ~@12, ~@24 a5@12 f#5@5 ~@7]/2", // D Bm B5 D5 D
AO: "[[f#5,b5,d6]@3 ~ [e5,a5,c#6]@3 ~ [d5,g5,b5]@4 ~ f6@2 ~ b5@2 ~@3 d6 b5 ~ d6@6 [f#5,b5,d6]@6 f#5 ~ [f#5,b5,d6]@3 ~ [f#5,b5]@6 f#5@5 ~ f#5@5 ~@3 [a5,d6]@4 [f#5,a5,d6]@6, ~ a6 ~@4, ~@12 e6@3 d6@3 e6@2 e6@2 ~ f#5@6 ~@19 a5@12 f#5@5 ~@7, ~@19 f6@2 ~@3 b5 ~@17 d6@18 ~@12]/3", // Bm A G Bm B5 D5 D
AP: "[f#5,b5,d6]@3 ~ [e5,a5,c#6]@3 ~ [d5,g5,b5]@4 ~ f6@2 ~ b5@2 ~@3 d6 b5@2, ~ a6, ~@12 e6@3 d6@3 e6@2 e6@2 ~@2, ~@19 f6@2 ~@3", // Bm A G
AQ: "[f#5,d6]@23 ~, b5 ~@23", AR: "[[f#5,a5]@24 [g5,b5]@23 ~, d6@47 ~]/2", AS: "[g5,a5,d6]@11 ~ [e5,a5,c#6]@12",
})).s("gm_rock_organ").gain(0.25).pan(0.6)
// chords · pad poly · "Polysynth"
const pad_poly = note("<~@38 A@2 B C A@2 D C E@2 D C ~@76>".pickRestart({
A: "[[f#3,b3]@11 [a3,d4]]/2", B: "~ [b3,e4]@23", C: "[a3,d4]@3 [a3,c#4]", D: "[b3,e4]", E: "[[f#3,b3]@7 [a3,d4]]/2",
})).s("gm_pad_poly").gain(0.4)
// drums · kick
const kick = s("bd").struct("<~ A@4 B@24 C B@28 D B@7 E B@8 F B@19 D ~ B@7 E B@7 G B@7 ~ B@4 ~>".pickRestart({
A: "x!4", B: "x!2", C: "~@2 x ~@2 x ~@2 x ~@2 x", D: "x", E: "x ~@7 x ~@2 x", F: "~@2 x ~@2 x ~@6", G: "x!4 ~@2",
})).gain(0.4)
// drums · snare
const snare = s("sd").struct(`<
~@4 A B@3 C B@20 ~ B@7 C B@20 ~ B@7 D B@8 ~ B@11 D B@7 ~@2 B@15 ~ B@7 ~ B@4 ~
>`.pickRestart({
A: "~@3 x", B: "~ x ~ x", C: "~@3 x ~@5 x!2 ~", D: "~ x ~@2",
})).gain(0.3)
// … 108 more lines
More by Toto
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.