0:00/0:00
// Mustang Sally — The Commitments
// 115 bpm, 4/4, key C 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 115 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(115/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 · electric bass finger
const bass = note(`<
A@4 B@8 C D@2 E F G@2 H@2 I J ~ K L M N@2 O P@3 Q R S@2 T@3 U V@2 W X Y Z ~ AA AB@2 AC AD AE@2 AF@2 AG@2 AH AI AJ AK
AL AM AN AO@4 AP ~ AQ AR AS@3 AT AU AV AU AW@3 AX AY@3 AZ BA@2 BB BC BD BE ~ BF@3 BG@3 BH@4 BI@5 BJ@3 BK
>`.pickRestart({
A: "~ c2@8 ~@4 f#1@2 ~@6 g1@2 ~@6 a#1@3",
B: "[~ c2@8 ~@4 f#1@2 ~@7 g1@2 ~@6 a#1@4 c2@8 ~@4 f#1@2 ~@6 g1@2 ~@6 a#1@4 c2@8 ~@4 f#1@2 ~@6 g1@2 ~@6 a#1@4 c2@8 ~@4 f#1@2 ~@6 g1@2 ~@6 a#1@4 c2@8 ~@5 f#1@2 ~@6 g1@2 ~@6 a#1@4 c2@8 ~@4 f#1@2 ~@6 g1@2 ~@6 a#1@4 c2@8 ~@4 f#1@2 ~@6 g1@2 ~@6 a#1@4 c2@8 ~@4 f#1@2 ~@6 g1@2 ~@7]/8",
C: "f#1@2 f1@4 ~@2 b1 ~@3 c2 ~@3", D: "d#2@2 f1@4 ~@2 b1 ~@3 c2 ~@3", E: "d#2@4 f1@8 ~@5 a1@2 ~@6 a#1@2 ~@5",
F: "~ b1@4 c2@8 ~@4 f#1@2 ~@6 g1@2 ~@5", G: "~ a#1@4 c2@8 ~@4 f#1@2 ~@6 g1@2 ~@5",
H: "[~ a#1@4 ~ c2@8 ~@4 f#1@2 ~@6 g1@2 ~@2 c2@6 ~@2 g2@8 ~@4 c#2@4 d2@4 f2@2 ~@4]/2",
I: "~ f#2@2 g2@4 ~@2 c#2@2 d2@2 g1 ~@2", J: "~ f#1@2 f1 ~@12", K: "~@7 c2@8 ~@4 f#1@2 ~@6 g1@2 ~@3",
L: "~@3 a#1@4 c2@8 ~@4 f#1@2 ~@6 g1@2 ~@3", M: "~@3 a#1@4 c2@8 ~@5 f#1@2 ~@6 g1@2 ~@2",
N: "[~@4 a#1@4 c2@8 e2@3 ~@3 e1@2 f1@2 ~@2 f#1@7 ~ g1@2 ~@2 c2@8 ~@4 f#1@2 ~@6 g1@2 ~@2]/2",
O: "~@2 a#1@2 c2@4 ~@2 f#1 ~@3 g1 ~", P: "~@5 a#1@4 c2@8 ~@4 f#1@2 ~@6 g1@2 ~",
Q: "~@5 a#1@4 c2@8 ~@5 f#1@2 ~@6 g1@2", R: "~@3 a#1@2 c2@4 ~@2 f#1 ~@3 g1",
S: "[~@3 a#1@2 c2@4 ~@2 f#1@2 g1 ~ c2@2 ~@2 f#1@2 f1@4 ~@2 b1 ~@3 c2]/2",
T: "[~@6 d#2@4 ~ f1@8 ~@4 b1@2 ~@6 c2@2 ~@6 d#2@4 f1@8 ~@4 b1@2 ~@6 c2@2 ~@6 d#2@4 f1@8 ~@8 a#1@3 ~ a#2]/3",
U: "~ a#1@4 ~@2 a#2 ~ b1@2 c2@8 ~@4 f#1@2 ~@7", V: "g1 ~@3 a#1@2 c2@4 ~@2 f#1 ~@3",
W: "g1 ~@3 a#1@2 c2@4 ~@2 f#1@2 g1@2", X: "c2@4 f1@4 f#1@4 g2@8 ~@5 c#2@4 d2@3",
Y: "~ f2@2 ~@6 f#2@4 g2@8 ~@4 c#2@4 d2@3", Z: "~ g1@2 ~@6 f#1@4 f1@2 ~@17", AA: "~@7 c2@4 ~@2 f#1 ~@2",
AB: "~ g1 ~@3 a#1@2 c2@4 ~@2 f#1 ~@2", AC: "~@2 g1@2 ~@6 a#1@4 c2@8 ~@5 f#1@2 ~@3",
AD: "~@3 g1@2 ~@6 a#1@4 c2@8 ~@4 f#1@2 ~@3",
AE: "[~@3 g1@2 ~@6 a#1@4 c2@3 ~ e1@8 f1@8 f#1@8 g1@2 ~@2 c2@8 ~@4 f#1@2 ~@3]/2",
AF: "[~@3 g1@2 ~@6 a#1@4 ~ c2@4 e1@8 f1@8 f#1@8 g1@2 ~@2 c2@8 ~@4 f#1@2 ~@2]/2",
AG: "~@2 g1 ~@3 a#1@2 c2@4 ~@2 f#1 ~", AH: "~@5 g1@2 ~@6 a#1@4 c2@8 ~@4 f#1@3",
AI: "~ g1@4 c2@4 ~@4 f#1@4 f1@8 ~@4 b1@2 ~", AJ: "~@5 c2@2 ~@6 d#2@4 f1@8 ~@4 b1@2 ~",
AK: "~@5 c2@2 ~@6 d#2@4 f1@8 ~@5 b1@2", AL: "~@3 c2 ~@3 d#2@2 f1@4 ~@3",
AM: "~@2 a#1@3 ~ a#2 ~ a#1@4 ~@2 a#2 ~ b1@2 c2@8 ~@4 f#1@2", AN: "~@3 g1 ~@3 a#1@2 c2@4 ~@2 f#1",
AO: "[~@6 g1@2 ~@7 a#1@4 c2@8 ~@4 f#1@2 ~@6 g1@2 ~@6 a#1@4 c2@8 ~@4 f#1@4 g1@4 c2@4 f1@4 f#1@4 g2@8 ~@4 c#2@4 d2@4 f2@2 ~@6 f#2@4 g1@4 ~@2 b1@3 ~@2 g1@2]/4",
AP: "b1@3 ~ g1@2 f1@2 g1@2 f1@2 g1@2 f#1@4 ~@2 f1@2 ~@10", AQ: "~@5 c2@2 ~", AR: "f#1@2 ~@6 g1@2 ~@7 a#1@4 c2@8 ~@3",
AS: "~ f#1@2 ~@6 g1@2 ~@6 a#1@4 c2@8 ~@3", AT: "~ f#1@2 ~@7 g1@2 ~@6 a#1@4 c2@3 ~ e1@6",
AU: "~ f1@4 f#1@4 g1 ~ c2@4 ~", AV: "~ f#1 ~@3 g1 ~@3 a#1@2 c2@2 e1@3", AW: "~@3 f#1@2 ~@6 g1@2 ~@6 a#1@4 c2@8 ~",
AX: "~@3 f#1@4 g1@4 c2@4 ~@5 f#1@4 f1@8", AY: "~@2 b1 ~@3 c2 ~@3 d#2@2 f1@4",
AZ: "~@9 a#1@3 ~ a#2 ~ a#1@4 ~@2 a#2 ~ b1@2 c2@7", BA: "~@5 f#1@2 ~@6 g1@2 ~@6 a#1@4 c2@7",
BB: "~@5 f#1@2 ~@6 g1@2 ~@7 a#1@4 c2@6", BC: "~@3 f#1@2 g1@2 c2@2 f1@2 f#1@2 g2@3",
BD: "~@3 c#2@2 d2@2 f2 ~@3 f#2@2 g2@3", BE: "~@3 c#2@2 d2@2 g1 ~@3 f#1@2 f1 ~@2",
BF: "[~@27 c2@8 ~@4 f#1@2 ~@6 g1@2 ~@6 a#1@4 c2@8 ~@4 f#1@2 ~@6 g1@2 ~@6 a#1@4 c2@5]/3",
BG: "[~@4 f#1 ~@3 g1 ~@3 a#1@2 c2@4 ~@2 f#1 ~@3 g1 ~@3 a#1@2 c2@4 ~@2 f#1 ~@3 g1 ~@3 a#1@2 c2@2]/3",
BH: "[~@8 f#1@2 ~@6 g1@2 ~@7 a#1@4 c2@8 ~@4 f#1@2 ~@6 g1@2 ~@6 a#1@4 c2@8 ~@4 f#1@2 ~@6 g1@2 ~@6 a#1@4 c2@8 ~@4 f#1@2 ~@6 g1@2 ~@6 a#1@4 c2@3]/4",
BI: "[~@10 f#1@2 ~@6 g1@2 ~@6 a#1@4 c2@8 ~@4 f#1@2 ~@6 g1@2 ~@6 a#1@4 c2@8 ~@4 f#1@2 ~@6 g1@2 ~@6 a#1@4 c2@8 ~@4 f#1@2 ~@6 g1@2 ~@7 a#1@4 c2@8 ~@4 f#1@2 ~@6 g1@3 ~@6 a#1@4]/5",
BJ: "c1!2 ~ c1!3 ~ c1!3 ~ c1!3 ~ c1!3 ~ c1!3 ~ c1!3 ~ c1!3 ~ c1", BK: "~@9 c1@12 ~@11",
})).s("gm_electric_bass_finger").gain(0.45)
// chords · piano
const piano = note(`<
~@4 A@2 ~@2 B C@2 ~ D E F G H I ~ J ~@7 K L ~@2 M N ~@2 O P Q R S T ~@2 U V ~@2 W@2 X Y@3 ~@2 Z AA ~ AB AC AD@2 AE AF
AG AH AI@3 ~ AJ ~ AK AL AM AN AO ~@2 AP AQ ~@2 AR@2 ~@2 AS AT ~@2 AU AV ~@4 AW AX AY ~ AZ BA BB ~ BC BD BE ~ BF ~@5
>`.pickRestart({
A: "[~@15 [c5,d#5]@2 e5@2 g5 ~@12]/2", B: "~@12 g5@6 ~ [c5,d#5]@2 ~ c5@2 ~@8, ~@11 f#5@2 ~@8 d5@2 ~@9",
C: "[~@23 a#4@4 c5@2 ~@2 a#4@4 c5@2 ~@27]/2", D: "~@2 [f4,a4]@2 ~@2 [f4,a#4] ~@3 [f4,a4] ~@3 [f4,a#4] ~",
E: "[f4,a4] ~@3 [f4,a4] ~ [f4,a#4] ~@3 [f4,a4] ~@3 [f4,a#4] ~", // F A#5 F A#5
F: "~@4 [f4,a4]@2 ~@7 [f4,a#4]@2 ~@6 [f4,a4]@2 ~@6 [f4,a#4]@2 ~", // F A#5 F A#5
G: "~ [f4,a4]@2 ~@6 [f4,a4]@2 ~@2 a#4@2 ~@5 [g4,a#4]@2 ~@3 [g4,a#4]@7, ~@6 f4 ~@9", H: "~@7 [f4,a4]",
I: "~ [e4,g4]@4 ~@27", // Em
J: "~ e5 ~@4 g5 [d5,f5]@2 [c5,e5] ~@6, ~ g5@2 ~ g5@2 g5@2 g5@2 g5@2 ~@20, ~@5 e5@2 e5@2 e5@2 e5@2 ~@19", // Dm C
K: "~@8 [g3,c4]@2 ~ [g3,a#3] c4 ~ [g3,c4]@2", L: "~ [g3,a#3] ~@6",
M: "~@13 [c6,g6]@2 ~@2 [c6,g6]@2 ~@2 [c6,g6]@2 ~@2 f#6 f6@2 ~ c6@2 ~, ~@13 f#6 ~@11 c6@2 ~@5", // C5
N: "~ d#6@4 ~ c6@2 ~@24",
O: "~@12 [d#5,f#5]@2 ~@2 [d#5,f#5]@2 [d#5,f#5]@2 ~ [d#5,f#5]@2 ~ [d#5,f#5]@2 [d#5,f#5]@2 ~ [d#5,f#5]@2 ~", // D#m
P: "[d#5,f#5]@2 ~ [d#5,f#5]@2 ~@5 [f4,a4]@4 ~@4 a#4@4 ~@4 [f4,a4]@4 ~@2", // D#m F
Q: "~@2 a#4@4 ~ [f4,d#5,f5]@3 ~@5 [f4,a4]@4 a#4@4 ~@4 [f4,a4]@4 ~", // F7 F
R: "~@3 a#4@4 ~@4 [f4,a4]@4 ~@4 a#4@4 ~@4 [f4,a4]@4 ~", // F
S: "~@3 a#4@4 [f4,a4]@2 ~@2 g5@4 [c5,e5]@2 g5@4 [c5,e5]@2 [g5,a#5]@4 [c5,e5]@2 [g5,a#5]@3, ~@11 a#5@2 ~@4 a#5@2 ~@13", // F C Gm C Gm
T: "~ [c5,e5]@2 [g5,a#5]@2 ~@27", U: "~@16 [c4,c5]@4 [d#4,d#5]@4 [f4,f5]@4 ~ [g4,g5]@2 ~, ~@14 [f#4,f#5] ~",
V: "[a#4,a#5]@2 [c5,c6]@2 [g5,g6] ~@11", // A# C G
W: "[~@35 a#5@2 ~@8 g5@2 ~@3 c5@3 g#5 ~ e5@6 ~ g5@2, ~@13 a#5@2 a#5@2 a#5@2 a#5@2 a#5@2 a#5@2 a#5@2 a#5@2 a#5@2 a#5@2 a#5@2 ~@3 a#5@2 a#5@2 a#5@2 a#5@2 ~@8 a5@6 ~@4, ~@14 g5@2 g5@2 g5@2 g5@2 g5@2 g5@2 g5@2 g5@2 g5@2 g5@2 g5@2 ~ g5@2 g5@2 g5@2 g5@2 ~@19]/2",
X: "~@2 c5@3 g#5 [e5,a5]@4 g5@2 ~@6 c5@4 f5@4 e5@2 ~@4, ~@22 f#5 ~@9", // A5
Y: "[~@2 d#5 d5@3 c5@4 ~@4 e4@4 ~@4 f4@4 ~@4 [e4,g4]@4 ~@4 a4@4 ~@4 [g4,a#4]@4 ~@4 [a4,c5]@2 ~@14 a#4 [a4,c5]@4 [g4,a#4]@2 ~@19, ~@14 c4@2 ~@6 d4@2 ~@14 f4@2 ~@23 d5@2 d5@2 d5@2 d5@2 ~@25, ~@32 a#4!3 ~@13]/3", // Em Gm Am Gm
Z: "~@10 c5@2 [g4,e5] ~ [g4,e5] ~, ~@10 f5 ~@5", AA: "d5 ~ c5@2 a4@2 g4 ~@9, d#5 ~@31",
AB: "c5@2 ~ c5@2 ~ c5@2 ~ c5@2 ~ d5@2 d#5@2 e5@2 ~@14", AC: "~@21 c6@3 ~ d#6@2 ~@2 f6@2 ~",
AD: "[~ g6@2 ~@3 a#6@2 ~@2 c7@4 ~ c7@2 ~@2 c7@2 ~ c7@2 ~@2 c7@2 c7@2 c7@4 ~@3 [f4,a4]@4 a#4@4 f4@4 a4@2 ~@6 [f4,a#4]@2 ~@5, ~@17 [f4,a4]@4 ~@3 c7@2 ~@38, ~@25 a#4@4 ~@35, ~@25 f4@2 ~@37]/2", // F A#5 F
AE: "~@5 [f4,a4]@4 ~@2 [c5,f5]@2 f4@4 [a4,c5,f5]@3 ~ d#5@2 ~@3 [f4,a#4]@2 ~@4, ~@9 a#4@4 ~@19", // F F5 F A#5
AF: "~@3 [f4,a4]@2 a#4@2 f4@2 [f4,a4] ~@3 [f4,a#4]@2 ~, ~@13 [c5,f5] ~@2", // F A#5 F5
AG: "~@3 [f4,a4]@2 ~@4 c4 ~ [c5,e5] ~ c4 [c5,e5] ~", // F C
AH: "c4 [c5,e5] ~ c4 [c5,e5] ~ c4 [c5,e5] ~ c4 ~ [c5,e5] ~ c4 [c5,e5] ~", // C
AI: "[c4@2 [c5,e5]@2 ~@2 c4@2 ~ [c5,e5]@2 ~@4 [c5,e5]@2 ~@2 [a#4,d5]@2 ~@2 [a#4,d5]@2 ~@2 [a#4,d5]@2 ~@2 [a#4,d5]@2 ~@2 [a4,c5]@2 ~@2 [g4,a#4]@4 ~@16 [a#4,d5]@2 ~@2 [c5,e5]@2 ~@31]/3", // C A# Am Gm A# C
AJ: "~@2 d5 e5 f5 f#5 g5 ~@3 [c5,f5]@2 ~@4", AK: "~ [g#3,b3,c#4,f4,g#4,b4]@4 ~@3",
AL: "~@8 c5@4 [e5,a5]@4 ~ [e5,g5]@2 ~@13", // A5 Em
AM: "~ c5@4 [c5,e5,a5]@4 ~@2 [c5,e5,a5]@4 ~@2 [c5,g5]@2 ~@2 c3@2 [e4,a4]@2 ~@2 c3@2 [e4,g4]@3", // Am C5 A5 Em
AN: "~ c3@2 [c4,d#4]@4 ~@2 [a#3,d4]@4 c3@2 [g3,c4]@4 ~@2 c2@2 [e3,a3]@2 ~@4 [e3,g3]@3, ~@7 c3@4 ~@21", // Cm A# C5 A5 Em
AO: "~ c2@2 [c3,d#3]@4 c2@2 [a#2,d3]@4 ~@2 [g2,c3]@2 ~@15", AP: "~@25 [a#5,c6,f6]@2 ~ [a#5,c6,f6]@2 [a#5,c6,f6]@2",
AQ: "~ [a#5,c6,f6]@2 ~ [a#5,c6,f6]@2 [a#5,c6,f6]@4 ~@22", // A#sus2
AR: "[~@26 [c6,g6]@2 ~ [c6,g6]@2 [c6,g6]@2 ~ [c6,g6]@2 ~ [c6,g6]@2 [c6,g6]@2 ~ [c6,g6]@2 ~ [c6,g6]@2 ~ [c6,g6]@2 [c6,g6]@2 ~ g#6@2 ~ [f6,a6]@2 ~@6]/2", // C5 F
AS: "~@27 [f4,g#4]@2 ~ [f4,g#4]@2", // Fm
AT: "~ [f4,g#4]@2 [f4,g#4]@2 ~ [f4,g#4]@2 ~ [f4,g#4]@2 [f4,g#4]@2 ~ [f4,g#4]@2 ~ [f4,g#4]@2 [f4,g#4]@2 ~ [f4,g#4]@2 ~ [e4,g4]@4 ~@3", // Fm Em
AU: "~@7 c4, ~@13 c2@3", AV: "~@2 [c4,e4]@3 ~ [c4,f4]@3 ~ f#4@3 ~@3, ~ e2@4 f2@4 f#2@4 ~@3",
AW: "~@11 [e4,g4]@4 ~@4 [d4,f4]@4 [c4,e4]@2 ~@7", AX: "[e4,g4]@2 ~@4 [e4,g4]@2 ~@3 [e4,g4]@2 ~@6 [d4,f4]@4 c4@2 ~@7",
AY: "[g4,c5] ~@2 [g4,c5] ~@2 [g4,c5] ~@3 [e4,a4]@2 g4 ~@3", AZ: "~@6 [e4,g4]@2 ~@2 [d4,f4]@2 [c4,e4] ~@3",
BA: "~ [e4,g4]@2 ~@4 [e4,g4]@2 ~@3 [e4,g4]@2 ~@7 [d4,f4]@4 c4@2 ~@5", // Em Dm
BB: "~ [g4,c5]@2 ~@4 [g4,c5]@2 ~@4 [g4,c5]@2 ~@6 [e4,a4]@4 g4@2 ~@5", // C5 A5
BC: "~@13 [e4,g4]@4 ~@4 [d4,f4]@4 [c4,e4]@2 ~@5", BD: "~ [e4,g4] ~@2 [e4,g4] ~@2 [e4,g4] ~@3 [d4,f4]@2 c4 ~@2",
BE: "~ [g4,c5] ~@2 [g4,c5] ~@2 [g4,c5] ~@3 [e4,a4]@2 g4 ~@2", BF: "~@18 c5@4 [e5,a5]@4 ~ [e5,g5]@2 ~@3",
})).s("gm_piano").gain(0.4)
// chords · rock organ
const rock_organ = note(`<
~@4 A@2 B@2 C@4 D@6 E@2 F@3 ~@5 G@2 H@4 I@2 J@6 K@2 L@3 ~ M@6 N@2 O@4 P@6 Q@5 ~ R@5 ~ S T U ~@6 V W ~@5 X ~ Y@2 Z@4
AA@4 AB@5 AC@3 AD
>`.pickRestart({
A: "[~@9 [a#5,c6,e6]@40 ~@15]/2", B: "[~@5 [a#5,c6,e6]@20 ~@7]/2", C: "[~@11 [a#5,c6,e6]@40 ~@13]/2",
D: "[~@4 a5@28 ~@36 a4@65 ~@8 [a#5,c6,e6]@40 ~@11, ~@4 [c5,f5]@129 ~@59]/6", E: "[~@13 [a#5,c6,e6]@40 ~@11]/2",
F: "[~@3 [b4,g5]@30 f#5@2 [c5,f5] ~@12, ~@6 d5@65 ~@25]/3", G: "[~@2 [a#5,c6,e6]@5 ~]/2",
H: "[~@17 [a#5,c6,e6]@40 ~@7]/2", I: "[~@9 [a#5,c6,e6]@20 ~@3]/2",
J: "[~@10 a5@28 ~@37 a4@65 ~@7 [a#5,c6,e6]@40 ~@5, ~@10 [c5,f5]@129 ~@53]/6", K: "[~@5 [a#5,c6,e6]@10 ~]/2",
L: "[~@12 [b4,g5]@61 f#5@4 [c5,f5]@2 ~@17, ~@12 d5@65 ~@19]/3", // Em F5
M: "[~@14 e5@32 a#5@28 [g6,a#6]@69 ~@8 [a#5,c6,e6]@40 ~, ~@14 g5@61 ~@117]/6", N: "[~@23 [a#5,c6,e6]@40 ~]/2",
O: "[~@3 [a#5,c6,e6]@5]/2", P: "[~@17 a5@28 ~@36 a4@65 ~@8 [a#5,c6,e6]@38, ~@17 [c5,f5]@129 ~@46]/6",
Q: "[~@27 [a#5,c6,e6]@40 ~@16 [b4,g5]@61 f#5@4 [c5,f5]@2 ~@10, ~@83 d5@65 ~@12]/5", // C7 Em F5
R: "[~@20 e5@32 ~ a#5@28 [g6,a#6]@69 ~@10, ~@20 g5@61 ~@79]/5", S: "~@3 [e6,g6]@2 [b5,e6] ~@10",
T: "~@30 [a#5,c6,f6] ~", U: "~ [a#5,c6] ~@2 [a#5,c6] ~ [a#5,c6,f6]@4 ~@22, ~ f6@2 ~ f6@2 ~@26",
V: "~@27 [f5,g#5] ~@2 [f5,g#5] ~", // Fm
W: "~ [f5,g#5] ~@2 [f5,g#5] ~ [f5,g#5] ~@2 [f5,g#5] ~ [f5,g#5] ~ [f5,g#5] ~@2 [f5,g#5] ~ [f5,g#5] ~@2 [f5,g#5] ~@3 [e5,g5]@3 ~@4", // Fm Em
X: "~@2 a#6 g#6 g6 ~@5 a6 g6 f6 ~@5 g6 f6 e6 ~@5 [a6,c7]@4 ~@2", Y: "[~@27 e5@32 a#5@5, ~@27 g5@37]/2",
Z: "[~@23 [g6,a#6]@69 e5@32 a#5@4, ~@23 g5@9]/4", AA: "[~@25 [g6,a#6]@68 e5@32 a#5@3, ~@93 g5@35]/4",
AB: "[~@26 [g6,a#6]@68 e5@32 ~ a#5@29 ~@4, ~@47 g5@31 ~@2]/5", AC: "[[a#5,c6,e6,g6]@95 ~]/3",
AD: "~@9 c6@3 c6 ~@4 c4@3 ~@12, ~@9 [a#5,e6,g6]@4 [g5,a5,b5]@2 [g4,a4,b4]@3 ~@14, ~@14 [c5,d5,e5,f5]@2 [d4,e4,f4]@3 ~@13", // Edim G Dm7 Dm
})).s("gm_rock_organ").gain(0.4)
// chords · distortion guitar
const distortion_guitar = note(`<
A@3 B C@4 D@4 E F@2 G H I J K ~@4 L@3 M N O P@2 Q R S@2 T U V@2 W X Y@2 Z ~@3 AA AB@2 AC@2 ~@19 AD AE AF AG@2 ~@19
AH@4 AI@2 AJ@7 AK@2 AL AM ~@2
>`.pickRestart({
A: "~ [c3,g3]@8 ~@8 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@2 [c3,g3]@3", B: "~ [c3,g3]@8 ~@8 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@5",
C: "[~ [c3,g3]@8 ~@8 [g3,a#3]@2 ~@7 [g3,a#3]@2 ~@2 [c3,g3]@4 [c3,g3]@4 [c4,g4]@4 ~@8 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@2 [c3,g3]@4 [c3,g3]@8 ~@8 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@2 [c3,g3]@4 [c3,g3]@8 ~@8 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@4]/4", // C5 Gm C5 Gm C5 Gm C5 Gm
D: "[~@2 [c3,g3]@8 ~@9 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@2 [c3,g3]@4 [c3,g3]@4 [c4,g4]@4 ~@8 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@2 [c3,g3]@4 [c3,g3]@8 ~@8 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@2 [c3,g3]@4 [c3,g3]@8 ~@8 [g3,a#3]@2 ~@7 [g3,a#3]@2 ~@2]/4", // C5 Gm C5 Gm C5 Gm C5 Gm
E: "~@2 [c3,f3]@4 ~@4 [c4,d#4] ~@3 [c4,d#4] ~", F: "~@2 [c3,f3]@2 [f4,c5]@3 ~@3 [c4,d#4] ~@3 [c4,d#4] ~",
G: "~@4 [c3,f3]@4 [f4,c5]@6 ~@7 [c4,d#4]@2 ~@6 [c4,d#4]@2 ~", H: "~@5 [c3,g3]@8 ~@8 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~",
I: "~ [c3,g3]@4 [c3,g3]@4 [c4,g4]@6 ~@6 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~", // C5 Gm
J: "~ [c3,g3]@4 [c3,g3]@8 ~@8 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~", // C5 Gm
K: "~ [c3,g3]@4 ~ [c3,g3]@8 ~@8 [g3,a#3]@2 ~@6 [g3,a#3]@2", // C5 Gm
L: "[~@7 [c3,g3]@8 ~@8 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@2 [c3,g3]@4 [c3,g3]@8 ~@8 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@2 [c3,g3]@4 [c3,g3]@8 ~@9 [g3,a#3]@2 ~@6]/3", // C5 Gm C5 Gm C5 Gm
M: "[g3,a#3] ~ [c3,g3]@2 [c3,g3]@4 ~@4 [g3,a#3] ~@3", N: "[g3,a#3] ~@3 [c3,g3]@4 ~@4 [g3,a#3] ~@3",
O: "[g3,a#3] ~ [c3,g3]@2 [c3,g3]@2 [c4,g4]@2 ~@4 [g3,a#3] ~@3", // Gm C5 Gm
P: "~ [g3,a#3]@2 ~@2 [c3,g3]@4 [c3,g3]@8 ~@8 [g3,a#3]@2 ~@5", Q: "~ [g3,a#3]@2 ~@6 [c3,g3]@8 ~@8 [g3,a#3]@2 ~@5",
R: "~ [g3,a#3]@2 ~@2 [c3,g3]@4 [c3,g3]@4 [c4,g4]@4 ~@9 [g3,a#3]@2 ~@4", // Gm C5 Gm
S: "~ [g3,a#3] ~ [c3,g3]@2 [c3,g3]@4 ~@4 [g3,a#3] ~@2", T: "~ [g3,a#3] ~@3 [c3,f3]@4 ~@4 [c4,d#4] ~@2",
U: "~@3 d#4@2 ~@6 [c3,f3]@4 [f4,c5]@6 ~@6 [c4,d#4]@2 ~@3, ~ c4 ~@14", // F5 Cm
V: "~@3 [c4,d#4]@2 ~@6 [c3,f3]@4 [f4,c5]@6 ~@6 [c4,d#4]@2 ~@3", W: "~@3 [c4,d#4]@2 ~@6 [c3,g3]@8 ~@8 [g3,a#3]@2 ~@3",
X: "~@2 [g3,a#3] ~ [c3,g3]@2 [c3,g3]@2 [c4,g4]@3 ~@3 [g3,a#3] ~", // Gm C5 Gm
Y: "~@2 [g3,a#3] ~ [c3,g3]@2 [c3,g3]@4 ~@4 [g3,a#3] ~", Z: "~@2 [g3,a#3] ~@13", AA: "~@7 [c3,g3]@4 ~@4 [g3,a#3]",
AB: "~@3 [g3,a#3] ~ [c3,g3]@2 [c3,g3]@4 ~@4 [g3,a#3]", // Gm C5 Gm
AC: "[~@6 [g3,a#3]@2 ~@2 [c3,g3]@4 [c3,g3]@8 g4@6 ~@3 g4@2 ~@2 g4@4 f4@4 e4@2 ~@19]/2", AD: "~@5 [c3,g3]@2 ~",
AE: "~@4 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@3 [c3,g3]@4 [c3,g3]@8 ~@3", // Gm C5
AF: "~@5 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@2 [c3,g3]@4 [c3,g3]@8 ~@3", // Gm C5
AG: "[~@5 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@2 [c3,g3]@4 [c3,g3]@8 g4@6 ~@2 g4@2 ~@2 g4@4 f4@4 e4@2 ~@13]/2", // Gm C5
AH: "[~@27 [c3,g3]@8 ~@8 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@2 [c3,g3]@4 [c3,g3]@8 ~@8 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@2 [c3,g3]@4 [c3,g3]@8 ~@9 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@2 [c3,g3]@4 [d4,g4]@2 [d4,g4]@2]/4", // C5 Gm C5 Gm C5 Gm C5 G5
AI: "[~@2 [d4,g4] ~ [d4,g4]@2 ~@2 [d4,g4] ~ [d4,g4]@2 ~@2 [d4,g4] ~ [d4,g4]@4 [c4,f4]@4 e4 ~@3 [c3,g3]@8 ~@8 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@2 [c3,g3]@4 [c3,g3]@4]/2", // G5 F5 C5 Gm C5
AJ: "[~@12 [g3,a#3]@2 ~@7 [g3,a#3]@2 ~@2 [c3,g3]@4 [c3,g3]@8 ~@8 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@2 [c3,g3]@4 [c3,g3]@8 ~@24 [c3,g3]@8 ~@8 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@2 [c3,g3]@4 [c3,g3]@8 ~@9 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@2 [c3,g3]@4 [c3,g3]@8 ~@8 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@2 [c3,g3]@4 [c3,g3]@8 ~@24 c3@2]/7", // Gm C5 Gm C5 Gm C5 Gm C5 …
AK: "[~@14 [g3,a#3]@2 ~@6 [g3,a#3]@2 ~@3 [c3,g3]@4 [c3,g3]@8 ~@8 [g3,a#3]@2 ~@7 [g3,a#3]@2 ~@2 [c3,g3]@4]/2", // Gm C5 Gm C5
AL: "[c3,g3]@4 ~@4 [g3,a#3] ~@3 [g3,a#3] ~ [c3,g3]@2", AM: "[c3,g3] ~@3",
})).s("gm_distortion_guitar").gain(0.35)
// other · soprano sax
const soprano_sax = note(`<
~@25 A B C@3 D@4 E F@3 G@2 H@2 I@2 J@3 ~ K@5 L M N O P O Q R S T U V W X Y Z@3 ~ AA@5 AB ~ AC ~ AD ~ AD ~ AE ~ AE ~ AF
~ AG AH@3 ~ AI@4 AJ@4 AK@7 AL@3 AM
>`.pickRestart({
A: "~@25 d#4 ~ d#4@2 ~@3", B: "~@2 [a3,f#4]@9 ~ [a#3,g4]@2 ~@18",
C: "[~@14 [f#4,a4]@4 [g4,a#4] ~@5 [g4,a#4]@12 ~@12]/3", D: "[~@17 [g4,a#4]@24 ~@23]/2",
E: "~@3 [d4,d5]@2 [c4,c5] ~@5 [a#3,a#4]@2 [g3,g4] ~@2", F: "[~@9 [b4,d5]@10 [b4,d5] ~@5 a4@12 ~@11]/3",
G: "[~@19 a4@24 ~@21]/2", H: "[~@19 [g4,a#4]@24 ~@21]/2", I: "[~@5 [g4,a#4]@6 ~@5]/2",
J: "[~@12 [b4,d5]@60 ~ [a#4,c#5]@4 [a4,c5]@2 ~@17]/3", K: "[~@14 e5@32 d5@32 a#4@61 ~@16 g4 ~@4]/5",
L: "~@3 g4 ~@7 g#4@4 g4 ~@16", M: "~@27 g4 ~@4", N: "~@3 g4 ~@7 g#4@4 ~ g4 ~@15", O: "~@28 g4 ~@3",
P: "~@4 g4 ~@7 g#4@4 g4 ~@15", Q: "~@5 g4 ~@7 g#4@4 g4 ~@14", R: "~@29 c5 ~@2", S: "~@5 c5 ~@7 c#5@4 c5 ~@14",
T: "~@30 c5 ~", U: "~@6 c5 ~@7 c#5@4 c5 ~@13", V: "~@30 g4 ~", W: "~@6 g4 ~@7 g#4@4 g4 ~@13", X: "~@31 g4",
Y: "~@7 g4 ~@7 g#4@4 g4 ~@12", Z: "[~@34 d5 e5 f5 f#5 g5 e5@3 a4 ~@5, ~@19 b4@60 ~@17]/3",
AA: "[~@20 e5@32 ~ d5@32 a#4@61 ~@14]/5", AB: "~ g4 ~@8 g4 ~@7 g#4@4 g4 ~@9", AC: "~@2 g4 ~@7 g4 ~@7 g#4@4 g4 ~@9",
AD: "~@3 g4 ~@7 g4 ~@7 g#4@4 g4 ~@8", AE: "~@4 c5 ~@7 c5 ~@7 c#5@4 c5 ~@7", AF: "~@5 g4 ~@7 g4 ~@7 g#4@4 g4 ~@6",
AG: "~@5 g4 ~@7 g4 ~@8 g#4@4 ~@6", AH: "[~@13 b4@30 ~@2 a4 ~@2]/3", AI: "[~@27 e5@32 d5@32 a#4@37]/4",
AJ: "[~@28 e5@32 d5@32 ~ a#4@35]/4", AK: "[~@29 e5@32 d5@32 ~ a#4@61 ~@3 e5@32 ~ d5@33]/7", AL: "a#4/3",
AM: "~@9 a#4@6 ~@17",
})).s("gm_soprano_sax").gain(0.36)
// other · alto sax
const alto_sax = note(`<
~@24 A B C D@3 E@4 F G@3 H@2 I@2 J@2 K@3 ~ L@5 M N O P Q P R S T U V W X Y Z AA@3 ~ AB@5 AC ~ AD ~ AE ~ AE ~ AF ~ AF ~
AG ~ AH ~@4 AI@4 AJ@4 AK@7 AL@3 AM
>`.pickRestart({
A: "~@15 e4@8 d4@4 e4@2 ~@3", B: "~@15 g4@4 d#4@2 c4@2 f4@2 d#4 ~ d#4@2 ~@3", C: "~@2 [a3,f#4]@9 ~@21",
D: "[~@14 [f#4,a4]@4 [g4,a#4] ~@5 [g4,a#4]@12 ~@12]/3", E: "[~@17 [g4,a#4]@24 ~@23]/2",
F: "~@3 [d4,d5]@2 [c4,c5] ~@5 [a#3,a#4]@2 [g3,g4] ~@2", G: "[~@9 [b4,d5]@10 [b4,d5] ~@5 [f4,a4]@12 ~@11]/3",
H: "[~@19 [f4,a4]@24 ~@21]/2", I: "[~@19 [g4,a#4]@24 ~@21]/2", J: "[~@5 [g4,a#4]@6 ~@5]/2",
K: "[~@12 [b4,d5]@61 [a#4,c#5]@4 [a4,c5]@2 ~@17]/3", L: "[~@14 [e4,e5]@32 [d4,d5]@32 [a#3,a#4]@60 ~@17 e4 ~@4]/5",
M: "~@3 e4 ~@7 f4@4 e4 ~@16", N: "~@27 e4 ~@4", O: "~@3 e4 ~@7 f4@4 ~ e4 ~@15", P: "~@28 e4 ~@3",
Q: "~@4 e4 ~@7 f4@4 e4 ~@15", R: "~@5 e4 ~@7 f4@4 e4 ~@14", S: "~@29 a4 ~@2", T: "~@5 a4 ~@7 a#4@4 a4 ~@14",
U: "~@30 a4 ~", V: "~@6 a4 ~@7 a#4@4 a4 ~@13", W: "~@30 e4 ~", X: "~@6 e4 ~@7 f4@4 e4 ~@13", Y: "~@31 e4",
Z: "~@7 e4 ~@7 f4@4 e4 ~@12", AA: "[~@19 [b4,d5]@48 ~@17 [c4,c5]@2 ~@10]/3",
AB: "[~@20 [e4,e5]@32 ~ [d4,d5]@32 [a#3,a#4]@60 ~@15]/5", AC: "~ e4 ~@8 e4 ~@7 f4@4 e4 ~@9",
// … 169 more lines
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.