0:00/0:00
// And When I Die — Blood, Sweat & Tears
// 252 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 216, 4/4 at bar 218) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 248 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(252/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 · "Bass"
const bass = note(`<
~@17 A B C D E F G H@4 A I C J K F L M@4 N@4 O P Q R@3 S T U R V W X Y Z AA AB@3 AC AD AC AD S R AE AF S R AG AH AI AJ
AK AL AM U AC AD AC AD AC AD AC AN ~@3 AO@2 AP I C J K AQ AR@4 AS AP AT AU AV AW G AX AY AZ BA BB BC BD@3 BE BF BG BD
BH BI BJ BK BL BM BN@3 BD BO BD BO BE BP BQ BR BE BS BT BU BE BV BW BX BY BZ BD BO BD BO BD BO BD BO ~ CA@4 B C D E F
G CB@4 CC CD CE CF CG CH CI CJ@3 CK@2 CL@14 CM ~@40 CN CO CN CO CN CO CN CO
>`.pickRestart({
A: "~@5 a1@3", B: "~@9 d2@6 ~", C: "~@7 a1@6 ~@3", D: "~@3 d2@3 ~@2", E: "~@5 a1@6 ~@5", F: "~@3 d2@6 ~@7",
G: "~ a1@3 ~@4", H: "[d2@6 ~@9 a1@6 ~@9 d2@6 ~@8 a1@6 ~@9 d2@5]/4", I: "~@4 d2@3 ~", J: "~@5 d2@6 ~@5",
K: "~@2 a1@3 ~@3", L: "~ a1@6 ~@9", M: "[d2@6 ~@8 e2@6 ~@9 d2@6 ~@9 a1@6 ~@8 a1@6]/4",
N: "[~@9 g2@3 ~@3 g2@8 ~@2 d2@3 ~@3 d2@8 ~@2 g2@3 ~@3 d2@8 ~@2 e2@6 ~]/4", O: "~ e2@6 ~@2 b1@6 ~",
P: "~ c#2@6 ~@2 d2@6 ~", Q: "~ e2@6 ~@2 a1@3 ~@4", R: "~ d2@3 ~@5 a1@3 ~@4", S: "~ a1@3 ~@5 d2@3 ~@4",
T: "~ c#2@3 ~@5 b1@3 ~@4", U: "~ e2@3 ~@5 a1@3 ~@4", V: "~ d2@3 ~ a1@3 ~ b1@6 ~", W: "~ b1@6 ~@2 c#2@6 ~",
X: "~ c#2@3 ~ e2@3 ~ f#2@6 ~", Y: "~ f#2@3 ~ c#2@3 ~ a1@6 ~", Z: "~ a1@6 ~@6 d2@3", AA: "~@5 c#2@3 ~@5 b1@3",
AB: "[~ e2@32 ~@8 a1@3 ~@4]/3", AC: "~ d2@3 ~@9 d2@3", AD: "~ a1@3 ~@5 a1@3 ~@4", AE: "~ a1@3 ~@5 d2@3 ~ e1@3",
AF: "~ f#1@3 ~ g#1@3 ~ a1@3 ~@4", AG: "~ a1@3 ~@5 d2@3 ~ d2@3", AH: "~ e2@3 ~ f#2@3 ~ g2@3 ~@4",
AI: "~ g2@3 ~@5 d2@3 ~@4", AJ: "~ d2@3 ~@5 g2@3 ~@4", AK: "~ d2@3 ~@5 e2@3 ~@4", AL: "~ e2@3 ~@5 b1@3 ~@4",
AM: "~ c#2@3 ~@5 d2@3 ~@4", AN: "~ a1@3 ~@12", AO: "[~@12 a1@6 ~@9 d2@5]/2", AP: "~@9 a1@6 ~", AQ: "~ d2@3 ~@4",
AR: "[~ a1@6 ~@8 d2@6 ~@9 a1@6 ~@9 d2@6 ~@8 a1@5]/4", AS: "~@5 d2@3", AT: "~@7 d2@6 ~@3", AU: "~@3 e2@3 ~@2",
AV: "~@2 d2@3 ~@3", AW: "~@3 a1@6 ~@7", AX: "g2@3 ~@3 g2@8 ~@2", AY: "d2@3 ~@3 d2@8 ~@2", AZ: "g2@3 ~@3 d2@8 ~@2",
BA: "e2@3 ~ e2@3 ~", BB: "b1@3 ~ c#2@3 ~", BC: "d2@3 ~ e2@3 ~", BD: "a1@3 ~@5 d2@3 ~@5", BE: "a1@3 ~@5 a1@3 ~@5",
BF: "d2@3 ~@5 c#2@3 ~@5", BG: "b1@3 ~@5 e2@3 ~@5", BH: "a1@3 ~@5 d2@3 ~ a1@3 ~", BI: "b1@3 ~ b1@3 ~",
BJ: "c#2@6 ~@2 c#2@3 ~ e2@3 ~", BK: "f#2@6 ~@2 f#2@3 ~ c#2@3 ~", BL: "a1@3 ~ a1@3 ~", BM: "~@4 d2@3 ~@5 c#2@3 ~",
BN: "[~@4 b1@3 ~ e2@32 ~@8]/3", BO: "~@4 d2@3 ~ a1@3 ~@5", BP: "b1@3 ~@5 b1@3 ~@5", BQ: "c#2@3 ~@5 g#1@3 ~ c#2@3 ~",
BR: "b1@3 ~@5 f#1@3 ~ b1@3 ~", BS: "f#1@3 ~@5 f#2@3 ~@5", BT: "b1@3 ~@5 b2@3 ~ f2@3 ~", BU: "e2@3 ~@5 b1@3 ~ e2@3 ~",
BV: "c#2@3 ~@5 c#2@3 ~@5", BW: "d2@3 ~@5 d2@3 ~@5", BX: "f2@3 ~@5 f2@3 ~@5", BY: "a#2@3 ~ f2@3 ~",
BZ: "b2@3 ~ e2@3 ~", CA: "[a1@6 ~@9 d2@6 ~@8 a1@6 ~@9 d2@6 ~@8 a1@6]/4",
CB: "[~ d2@6 ~@8 e2@6 ~@9 d2@6 ~@8 a1@6 ~@9 a1@5]/4", CC: "~@10 g2@3 ~@3", CD: "g2@8 ~@2 d2@3 ~@3",
CE: "d2@8 ~@2 g2@3 ~@3", CF: "d2@4 ~ e2@3", CG: "~ e2@3 ~ b1@3", CH: "~ c#2@3 ~ d2@3", CI: "~@2 e2@6 ~@2 a1@3 ~@3",
CJ: "~@2 d2@3 ~@5 a1@3 ~@3", CK: "[~@2 c#2@2 c#2 ~ e2@3 ~ a1@3 ~ e2@5 ~ c#2@5 ~ d2 ~ d2 ~ d#2@2]/2",
CL: "[~@2 e2 ~ e2 ~ g2 ~ e2 ~ a1@3 ~ e2@5 ~ c#2@5 ~ d2 ~ d2 ~ d#2@2]/2", CM: "~@2 e2 ~ e2 ~ g2 ~ e2 ~@7",
CN: "~@2 a1@3 ~@5 d2@3 ~@3", CO: "~@6 d2@3 ~ a1@3 ~@3",
})).s("gm_electric_bass_finger").gain(0.4)
// chords · piano
const piano = note(`<
~@18 A B@3 C D E F G H I J@2 K@3 L M N O P Q@4 R S T U@3 V W U@2 X Y Z AA AB W AC@3 AD AE AD AF@2 AG@4 AH@3 AI AJ@2 AK
AL AM@5 AD AE AD AN ~@4 AO AP AQ@2 AR@3 L M AS O AT AU AV@2 AW@2 AX AY AZ BA BB BC BD BE@3 BF BG BH BE BI BJ BK BL BM
BG BN@3 BE BO BE BO BF BP BQ BP BF@2 BH BR BF BS BH BT BU BV BE BO BE BO BE BO BE BO ~ BW BX BY BZ CA CB@3 CC CD CE CF
CG CH CI CJ CK CL@4 CM@3 CN CO CP CO CP CO CP CO CP CO CP CO CP CO CP CO CP ~@40 CQ CR CS CR CQ CR CQ CR
>`.pickRestart({
A: "~ [c#4,e4,f#4,a4]@3 ~ [c#4,e4,f#4,a4]@3 ~@8", // F#m7
B: "[[b3,d4,f#4,a4]@6 ~@9 [c#4,e4,f#4,a4]@3 [c#4,e4,f#4,a4]@3 ~@8 [b3,d4,f#4,a4]@6 ~@9 [c#4,e4,f#4,a4]@3 ~]/3", // Bm7 F#m7 Bm7 F#m7
C: "[c#4,e4,f#4,a4]@3 ~@8 [b3,d4,f#4,a4]@5", D: "~@9 [c#4,e4,f#4,a4]@3 ~ [c#4,e4,f#4,a4]@3",
E: "~@4 [b3,d4,f#4,a4]@3 ~", F: "~@6 [c#4,e4,f#4,a4]@3 ~ [c#4,e4,f#4,a4]@3 ~@3", G: "~@5 [b3,d4,f#4,a4]@6 ~@5",
H: "~@4 [c#4,e4,f#4,a4]@3 [c#4,e4,f#4,a4]@3 ~@6", I: "~ [b3,d4,f#4,a4]@3 ~@4",
J: "[~ [c#4,e4,f#4,a4]@3 [c#4,e4,f#4,a4]@3 ~@8 [b3,d4,f#4,a4]@6 ~@9 [c#4,e4,f#4,a4]@2]/2", // F#m7 Bm7 F#m7
K: "[~@2 [c#4,e4,f#4,a4]@3 ~@8 [b3,d4,f#4,a4]@6 ~@8 [c#4,e4,f#4,a4]@3 ~ [c#4,e4,f#4,a4]@3 ~@8 [b3,d4,f#4,a4]@6]/3", // F#m7 Bm7 F#m7 Bm7
L: "~@8 [c#4,e4,f#4,a4]@3 ~ [c#4,e4,f#4,a4]@3 ~", M: "~@7 [b3,d4,f#4,a4]@6 ~@3",
N: "~@6 [b3,d4,f#4,a4]@3 [b3,d4,f#4,a4]@3 ~@4", O: "~@2 [b3,d4,f#4,a4]@3 ~@3",
P: "~@3 [c#4,e4,f#4,a4]@3 ~ [c#4,e4,f#4,a4]@3 ~@6", // F#m7
Q: "[~ [c#4,e4,f#4,a4]@6 ~@2 [b3,d4,g4]@2 [b3,d4,g4] ~@3 [b3,d4,g4]@3 ~@3 [b3,d4,g4]@2 ~@2 [a3,d4,f#4]@2 [a3,d4,f#4] ~@3 [a3,d4,f#4]@3 ~@3 [a3,d4,f#4]@2 ~@2 [b3,d4,g4]@2 [b3,d4,g4]@2 ~@2 [a3,d4,f#4]@5 ~ [a3,d4,f#4]@3 ~ [a3,d4,e4]@7]/4", // F#m7 G D G D Asus4
R: "~ [a3,d4,e4]@8 [a3,d4,f#4]@7", S: "~ [b3,e4,g#4]@8 [a3,d4,f#4]@7", T: "~ [a3,d4,f#4]@8 ~@4 [a3,c#4,e4]@3",
U: "~@5 [a3,d4,f#4]@3 ~@5 [a3,c#4,e4]@3", V: "~@5 [a3,c#4,e4]@3 ~@5 [c#4,f#4,a4]@3",
W: "~@5 [b3,e4,g#4]@3 ~@5 [a3,d4,f#4]@3", X: "~ [a3,d4,f#4]@3 ~ [a3,c#4,e4]@3 ~ [a3,d4,f#4]@6 ~",
Y: "~ [a3,d4,f#4]@6 ~@2 [b3,e4,g#4]@6 ~", Z: "~ [b3,e4,g#4]@6 ~@2 [a3,c#4,e4,f#4]@6 ~",
AA: "~ [a3,c#4,e4,f#4]@6 ~@2 [a3,c#4,e4,g4]@6 ~", AB: "~ [a3,c#4,e4,g4]@6 ~@6 [c#4,f#4,a4]@3",
AC: "[~ [d4,f#4,a4]@32 ~@12 [a3,c#4,e4]@3]/3", AD: "~@5 [a3,d4,f#4]@3 ~@5 [a3,d4,f#4]@3",
AE: "~ [a3,c#4,e4]@3 ~@9 [a3,c#4,e4]@3", // A
AF: "[~ [a3,c#4,e4]@3 ~@5 [a5,c#6,e6]@3 ~ [a3,c#4,e4,e5]@2 [a5,c#6,e6]@5 ~ [a3,c#4,e4,d5,d6]@3 ~ c6@3 ~ [a3,d4,f#4,c5,d5,f#5,a5]@3]/2", // A D7
AG: "[~ [c5,d5,f#5,a5]@3 ~ [a3,d4,f#4,f#5,a5,c6]@3 ~ [a5,c#6,e6]@3 ~ [a3,c#4,e4]@2 [a5,c#6,e6]@5 ~ [a3,c#4,e4,d5,d6]@3 ~ [d5,f#5,a5,c6]@3 ~@12 [d5,f#5] [a5,c#6,e6]@3 ~ [a3,c#4,e4]@2 [a5,c#6,e6]@5 ~ [a3,c#4,e4,d5,d6]@3 ~ c6@3 ~ [a3,d4,f#4,c5,d5,f#5,a5]@3, ~@13 e5 ~@15 [a3,d4,f#4,a5,c6]@2 [a5,c6]@2 [a5,c6]@2 [a5,c6]@2 [a3,d4,f#4,a5,c6]@2 [a5,c6]@2 ~@23, ~@30 [d5,f#5]@2 [d5,f#5]@2 [d5,f#5]@2 [d5,f#5]@2 [d5,f#5]@2 ~@5 e5 ~@18]/4", // D7 A D7 D A D7 Am D7 …
AH: "[~ [c5,d5,f#5,a5]@3 ~ [a3,d4,f#4,f#5,a5,c6]@3 ~ [a5,c#6,e6]@3 ~ [a3,c#4,e4]@2 [a5,c#6,e6]@5 ~ [a3,c#4,e4,d5,d6]@3 ~ [d5,f#5,a5,c6]@3 ~ [a5,c6] ~@3 [d5,f#5] a5 ~@6 [g5,b5,d6]@3 ~ [b3,d4,g4]@2 d6, ~@13 e5 ~@15 [a3,d4,f#4,d5,f#5]@2 [d5,f#5]@2 ~ [d5,f#5]@2 [d5,f#5]@2 [d5,f#5]@2 [d5,f#5]@2 ~@3 d5 ~@2, ~@30 [a5,c6]@2 [a5,c6]@2 ~ [a5,c6]@2 [a3,d4,f#4,a5,c6]@2 [a5,c6]@2 ~@7]/3", // D7 A D7 Am D G D Am …
AI: "~ [g5,d6]@3 ~ [b3,d4,g4,g5,d6]@3 ~ c6@3 ~ [a3,c4,f#4,c5,d5,f#5,a5]@3", // G5 G D7
AJ: "[~ [c5,d5,f#5,a5]@3 ~ [a3,c4,f#4,c6]@3 ~ [g5,b5,d6]@3 ~ [b3,d4,g4]@2 [g5,d6]@5 ~ [a3,c4,f#4,c5,c6]@3 ~ [a3,d4,e4,a4,a5]@6 ~, ~@13 d5 ~@18]/2", // D7 F#dim G G5 F#dim Asus4
AK: "~ [a5,a6]@3 ~ [a5,a6]@3 ~ [a3,d4,f#4,d6,d7]@6 ~, ~ [a3,d4,e4]@6 ~@9", // A D Asus4
AL: "~ [b3,e4,g#4,c#6,c#7]@6 ~@2 [a5,a6]@3 ~ [e5,e6]@3, ~@9 [a3,d4,f#4]@6 ~", // C#m7 A E D
AM: "[~ [f#5,f#6]@3 ~ [a5,a6]@3 ~ [a5,a6]@3 ~@56 a5@2 ~@7 [a3,c#4,e4]@3, ~ [a3,d4,f#4]@6 ~@6 [a3,c#4,e4,a6]@2 a6@2 a6@2 a6@2 [a3,d4,f#4,a6]@2 a6@2 a6@2 a6@2 [a3,d4,f#4,a6]@2 a6@2 [a3,c#4,e4,a6]@2 a6@2 a6@2 a6@2 a6@2 a6@2 [a3,c#4,e4,a6]@2 a6@2 a6@2 a6@2 [a3,d4,f#4,a6]@2 a6@2 a6@2 a6@2 [a3,d4,f#4,a6]@2 a6@2 [a3,c#4,e4,a6]@2 a6@2 ~@11, ~@7 a5 a5!8 a5!8 a5!8 a5!2 ~@6]/5", // F# A D A D A D A
AN: "~ [a3,c#4,e4]@3 ~@12", AO: "~@3 [c#4,e4,f#4,a4]@2 ~@2 [c#4,e4,f#4,a4]@2 ~@7", AP: "~ [b3,d4,f#4,a4]@2 ~@5",
AQ: "[[c#4,e4,f#4,a4]@2 ~@2 [c#4,e4,f#4,a4]@2 ~@9 [b3,d4,f#4,a4]@4 ~@11 [c#4,e4,f#4,a4]@2]/2", // F#m7 Bm7 F#m7
AR: "[~ [c#4,e4,f#4,a4]@3 ~@8 [b3,d4,f#4,a4]@6 ~@9 [c#4,e4,f#4,a4]@3 ~ [c#4,e4,f#4,a4]@3 ~@8 [b3,d4,f#4,a4]@6]/3", // F#m7 Bm7 F#m7 Bm7
AS: "~@5 [c#4,e4,f#4,a4]@3 ~ [c#4,e4,f#4,a4]@3 ~@4", AT: "~@3 [c#4,e4,f#4,a4]@3 [c#4,e4,f#4,a4]@3 ~@7",
AU: "~ [b3,d4,f#4,a4]@6 ~@9", // Bm7
AV: "[[c#4,e4,f#4,a4]@3 [c#4,e4,f#4,a4]@3 ~@8 [b3,d4,f#4,a4]@6 ~@9 [c#4,e4,f#4,a4]@3]/2", // F#m7 Bm7 F#m7
AW: "[~ [c#4,e4,f#4,a4]@3 ~@8 [b3,d4,f#4,a4]@6 ~@8 [c#4,e4,f#4,a4]@3 ~ [c#4,e4,f#4,a4]@2]/2", // F#m7 Bm7 F#m7
AX: "~@9 [b3,d4,f#4,a4]@6 ~", AY: "[b3,d4,g4]@2 [b3,d4,g4] ~@3 [b3,d4,g4]@3 ~@3 [b3,d4,g4]@2 ~@2",
AZ: "[a3,d4,f#4]@2 [a3,d4,f#4] ~@3 [a3,d4,f#4]@3 ~@3 [a3,d4,f#4]@2 ~@2", // D
BA: "[b3,d4,g4]!2 ~ [a3,d4,f#4]@3 [a3,d4,f#4]@2", BB: "[a3,d4,e4]!2", BC: "[a3,d4,f#4] [b3,e4,g#4]",
BD: "[a3,d4,f#4]!2", BE: "~@4 [a3,c#4,e4]@3 ~@5 [a3,d4,f#4]@3 ~", BF: "~@4 [a3,c#4,e4]@3 ~@5 [a3,c#4,e4]@3 ~",
BG: "~@4 [c#4,f#4,a4]@3 ~@5 [b3,e4,g#4]@3 ~", BH: "~@4 [a3,d4,f#4]@3 ~@5 [a3,d4,f#4]@3 ~",
BI: "~@4 [a3,c#4,e4]@3 ~ [a3,d4,f#4]@3 ~ [a3,c#4,e4]@3 ~", BJ: "[a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~",
BK: "[b3,e4,g#4]@3 ~ [b3,e4,g#4]@3 ~", BL: "[a3,c#4,e4,f#4]@3 ~ [a3,c#4,e4,f#4]@3 ~",
BM: "[a3,c#4,e4,g4]@3 ~ [a3,c#4,e4,g4]@3 ~", BN: "[~@4 [a3,d4,f#4]@3 ~ [d4,f#4,a4]@32 ~@8]/3",
BO: "~@4 [a3,d4,f#4]@3 ~ [a3,c#4,e4]@3 ~@5", BP: "~@4 [b3,d4,f#4]@3 ~@5 [b3,d4,f#4]@3 ~",
BQ: "~@4 [c#4,e4,g#4]@3 ~@5 [c#4,e4,g#4]@3 ~", BR: "~@4 [g#3,d4,e4]@3 ~@5 [g#3,d4,e4]@3 ~",
BS: "~@4 [g3,c#4,e4]@3 ~@5 [g3,c#4,e4]@3 ~", BT: "~@4 [a3,c4,f4]@3 ~@5 [a3,c4,f4]@3 ~",
BU: "[a#3,d4,f4]@3 ~ [a#3,c#4,f#4]@3 ~", BV: "[b3,d4,f#4]@3 ~ [g#3,b3,e4]@3 ~",
BW: "~@7 [c#4,e4,f#4,a4]@2 ~@2 [c#4,e4,f#4,a4]@2 ~@3", BX: "~@3 [b3,d4,f#4,a4]@2 ~@3",
BY: "~@5 [c#4,e4,f#4,a4]@2 ~ [c#4,e4,f#4,a4]@2 ~@6", BZ: "~@3 [b3,d4,f#4,a4]@4 ~@9",
CA: "~@2 [c#4,e4,f#4,a4]@2 ~ [c#4,e4,f#4,a4]@2 ~@9", // F#m7
CB: "[[b3,d4,f#4,a4]@4 ~@11 [c#4,e4,f#4,a4]@2 ~@2 [c#4,e4,f#4,a4]@2 ~@9 [b3,d4,f#4,a4]@4 ~@10 [c#4,e4,f#4,a4]@2 ~@2]/3", // Bm7 F#m7 Bm7 F#m7
CC: "[c#4,e4,f#4,a4]@2 ~@9 [b3,d4,f#4,a4]@4 ~", CD: "~@9 [c#4,e4,f#4,a4]@2 ~@2 [c#4,e4,f#4,a4]@2 ~",
CE: "~@2 [b3,d4,f#4,a4] ~", CF: "~@7 [b3,d4,f#4,a4]@2 ~ [b3,d4,f#4,a4]@2 ~@4", CG: "~@5 [b3,d4,f#4,a4]@4 ~@7",
CH: "~@4 [c#4,e4,f#4,a4]@2 ~ [c#4,e4,f#4,a4]@2 ~@7", CI: "~@2 [c#4,e4,f#4,a4]@4 ~@4 [b3,d4,g4]@2 [b3,d4,g4] ~@3",
CJ: "[b3,d4,g4]@3 ~@3 [b3,d4,g4]@2 ~@2 [a3,d4,f#4] ~ [a3,d4,f#4] ~@3", // G D
CK: "[a3,d4,f#4]@3 ~@3 [a3,d4,f#4]@2 ~@2 [b3,d4,g4]@2 [b3,d4,g4] ~@3", // D G
CL: "[[a3,d4,f#4]@3 ~@3 [a3,d4,f#4]@2 ~@2 [a3,d4,e4]@8 [a3,d4,e4]@8 [a3,d4,f#4]@8 [b3,e4,g#4]@8 [a3,d4,f#4]@8 [a3,d4,f#4]@8 ~@4 [a3,c#4,e4]@2]/4", // D Asus4 D E D A
CM: "~@6 [a3,d4,f#4]@3 ~@5 [a3,c#4,e4]@2", CN: "~@6 [a3,c#4,e4]@3 ~@7",
CO: "~@2 [a3,e4,g4] ~ [a3,e4,g4]@3 ~ [a3,e4,g4]@5 ~ [a3,d4,f#4]@2", CP: "~@2 [a3,c#4,e4]@3 ~ [a3,b3,d4]@3 ~@7",
CQ: "~@6 [a3,c#4,e4]@3 ~@5 [a3,d4,f#4]@2", CR: "~@6 [a3,d4,f#4]@3 ~ [a3,c#4,e4]@3 ~@3",
CS: "~@2 [a3,c#4,e4]@3 ~@5 [a3,d4,f#4]@3 ~@3", // A D
})).s("gm_piano").gain(0.28)
// other · trumpet · "Trumpet2"
const trumpet = note(`<
~@18 A B@2 C D E F ~@28 G@5 H I ~@23 J K L K M ~@4 N O P@2 Q R@2 S T U V W X Y@2 Q Z AA AB@3 AC AD AE AF@3 AG AH AI AJ
~ AK AL AM AN AO AP@3 ~@3 AQ AR@2 AS@2 AT@2 AU@2 AV AW AX@2 AY AZ BA@4 BB BC BB BD ~@33 BE@2 BF@7 ~@48
>`.pickRestart({
A: "~ f#4@2 ~@2 f#4@2 ~@9", B: "[f#4@4 ~@10 f#4 f#4@2 ~ f#4@2 ~@9 f#4@3]/2", C: "~@12 f#4@2 ~ f#4",
D: "f#4@2 ~@8 f#4 f#4@4 ~", E: "~@9 f#4@2 ~ f#4 f#4@2 ~", F: "~@7 f#4 f#4@4 ~@4",
G: "[~@9 f#4@16 g#4@16 f#4@16 g4@16 ~@4 f#4@2 ~]/5", H: "~@5 e4@2 ~@6 d4@2 ~", I: "~ f#4@15", J: "~@13 c#5@2 ~",
K: "~@5 d5@2 ~@6 d5@2 ~", L: "~ c#5@2 ~@10 c#5@2 ~", M: "~ c#5@2 ~@13", N: "~@3 f#4@2 ~@2 f#4@2 ~@7",
O: "~ f#4@2 ~@5", P: "[f#4 ~@3 f#4 ~@10 f#4@4 ~@11 f#4@2]/2", Q: "~ f#4@2 ~@9 f#4@4",
R: "[~@11 f#4@2 ~@2 f#4@2 ~@9 f#4@4 ~@2]/2", S: "~@4 f#4 ~ f#4 ~", T: "~@7 f#4@4 ~@5", U: "~@5 f#4@2 ~@2 f#4@2 ~@5",
V: "~ f#4 ~@2", W: "~@3 f#4@2 ~ f#4@2 ~@8", X: "~ f#4@4 ~@11", Y: "[f#4 ~@3 f#4 ~@10 f#4@4 ~@10 f#4@2 ~]/2",
Z: "~@5 f#4 ~ f#4", AA: "~@9 f#4@4 ~@3", AB: "d4@2 d4 ~@3 d4@3 ~@3 d4@2 ~@2", AC: "d4@3 ~@5", AD: "d4 e4",
AE: "f#4 d4", AF: "~@2 e4 ~@3 f#4 ~", AG: "~@2 e4 ~ e4@4", AH: "f#4 e4", AI: "d4 f#4", AJ: "e4 ~", AK: "~ f#4",
AL: "g#4@15 ~", AM: "a4 b4 c#5 a4", AN: "f#4 ~", AO: "~@2 f#4 ~@3 e4 ~", AP: "[~@4 d4@2 ~@2 f#4@39 ~]/3",
AQ: "~@8 c#4@3 e4@4 ~", AR: "[f#4@11 ~ f#4@8 e4@4 c#4@4 b3@4]/2", AS: "[c#4@3 ~ e4@16 ~@4 c#4@4 e4@3 ~]/2",
AT: "[f#4@11 ~ f#4@8 e4@2 ~@2 c#4@8]/2", AU: "[b3@19 ~@5 c#4@4 e4@3 ~]/2", AV: "f#4@7 ~ f#4@8",
AW: "e4@6 f#4@6 e4@3 ~", AX: "[c#4@4 a3@2 ~@2 a3@4 f#3@2 ~ a3@9 a3@3 ~ a3@3 ~]/2", AY: "d4@8 c#4@7 ~",
AZ: "a3@4 e4@3 ~ f#4@4 a4@3 ~", BA: "[a4@7 ~]/4", BB: "~@2 c#5 ~@3 d5 ~", BC: "~@4 d5 ~@3 c#5@2 ~@6",
BD: "~@4 d5 ~@3 e5@2 ~@6", BE: "[~@3 e4@2 a4@11]/2",
BF: "[~@2 e4@4 d4@2 ~@2 a4@23 ~ e4@4 d4@2 ~@2 a4@23 ~ e4@4 d4@2 ~@2 a4@23 ~ e4@4 e4@2 ~@8]/7",
})).s("gm_trumpet").gain(0.59)
// chords · harmonica · "Harmonic"
const harmonica = note(`<
A@6 B@5 C@4 D@2 E@5 ~@39 F G H G I ~@29 J@4 K@3 L@4 ~@26 M N M N ~@14 O P O P O P O P ~@3 Q R@8 ~@14 S T U@2 S T U@2 S
T U@2 S T V@2 W@5 X W Y@2 ~@31 Z AA AB AA Z AA Z AA
>`.pickRestart({
A: "[~@5 a4@8 c#5@8 ~ e5@8 ~ f#5@42 ~ a4@8 c#5@7 ~ c#5@6]/6", B: "[~@3 a4@40 ~ f#4@8 a4@10 c#5@7 e5@11]/5",
C: "[~@2 c#5@5 a4@22 ~ f#4@9 ~ a4@22 ~@2]/4", D: "[f#4@9 c#5@9 ~@2 a4@8 ~@4]/2", E: "[~ a4@65 ~@14]/5",
F: "~@13 [c#4,e4,a4]@3", G: "~@5 [d4,f#4,a4]@4 ~@4 [d4,f#4,a4]@3", H: "~ [c#4,e4,a4]@4 ~@8 [c#4,e4,a4]@3",
I: "~ [c#4,e4,a4]@4 ~@11", J: "[~@6 c#5@7 ~ e5@35 e5@8 f#5@7]/4", K: "[~ a5@44 c5@3]/3", L: "[b4@4 a4@7 a4@51 ~@2]/4",
M: "~ [c#4,e4,a4] ~ [d4,f#4,a4]", N: "~ [d4,f#4,a4] [c#4,e4,a4] ~", O: "~ [a3,c#4,e4] ~ [a3,d4,f#4]",
P: "~ [a3,d4,f#4] [a3,c#4,e4] ~", Q: "~@3 a4", R: "[~@3 c#5@4 a4@3 ~ d5@4 e5@36 ~ e5@2 d#5@7 a4@8 a4@46 ~@13]/8",
S: "~@2 a4@2 a4@3 ~ a4@2 g4@3 ~ e4@2", T: "~@2 e4@7 ~@7", U: "[~@2 a4@2 a4@3 ~ a4@6 a4@4 c#5@7 ~@7]/2",
V: "[~@2 a4@2 a4@3 ~ a4@6 a4@4 c#5@7 ~@5 [c#4,e4,a4]@2]/2", W: "~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4]",
X: "~@5 [c#4,e4,a4]@2 ~@7 [c#4,e4,a4]@2", Y: "[~@5 [c#4,e4]@2 ~@25, ~@5 a4@18 ~@9]/2",
Z: "~@3 [a4,c#5,e5] ~@3 [a4,d5,f#5]", AA: "~@7 [a4,f#5]@2 ~@2 [a4,c#5,e5]@2 ~@3, ~@7 d5 ~@8",
AB: "~@7 [c#5,e5]@2 ~@5 [a4,d5] ~, ~@7 a4 ~@6 f#5@2", // C#m D5
})).s("gm_harmonica").gain(0.48)
// other · trombone
const trombone = note(`<
~@18 A B@2 C D E F ~@28 G@5 H I ~@23 J K L M N ~@3 O P J Q R S T U V@3 W X Y Z AA AB AC AD AE AF AG AH AI AJ@2 AK AL
AM AN AO AP ~ AQ AR AS AT AU AV@3 ~@3 AW AX@2 AY@2 AZ@2 BA@2 BB BC BD@2 BE BF BG@4 AK BH AK BH ~@34 BI BJ BK BJ BL BJ
BL BJ ~@16 BM@2 BN@2 BO@8 BP@5 BQ@5 ~@6 BR BS BR BS
>`.pickRestart({
A: "~ e3 ~ e3 ~@4", B: "[d3@4 ~@11 e3@2 ~ e3@2 ~@9 d3@3]/2", C: "~@13 e3@2 ~", D: "e3@2 ~@9 d3@3 ~@2",
E: "~@9 e3@2 ~@2 e3@2 ~", F: "~@4 d3 ~@3", G: "[~@9 b2@16 c#3@16 c#3@16 c#3@16 ~@4 c#3@2 ~]/5",
H: "~@5 b2@2 ~@6 a2@2 ~", I: "~ d3@15", J: "~@9 a1@3 ~@4", K: "~ d2@3 ~@9 d2@2 ~", L: "~ a1@3 ~@5 a1@2 ~@5",
M: "~ d2@2 ~@9 d2@3 ~", N: "~ a1@3 ~@12", O: "~@3 a1", P: "~@11 d2@4 ~", Q: "~@2 d2 ~", R: "~@3 a1@2 ~@3",
S: "~@5 d2@4 ~@7", T: "~ a1 ~@2", U: "~ d2@2 ~@5", V: "[~ a1@5 ~@9 d2@4 ~@11 a1@5 ~@9 d2@4]/3", W: "~@11 a1@5",
X: "~@10 d2@5 ~", Y: "~@9 a1@4 ~@3", Z: "~@7 d2@6 ~@3", AA: "~@5 e2@5 ~@6", AB: "~ d2 ~@2", AC: "~@3 a1@5 ~@8",
AD: "~ a1@6 ~@9", AE: "g2 ~ g2@2 ~@3 g2@4 ~@5", AF: "d2 ~@2 d2 ~@2 d2@3 ~@3 d2@2 ~@2",
AG: "g2 ~@2 g2@2 ~@2 d2@3 ~@2 d2@4", AH: "~ e2@5 ~@10", AI: "b1 c#2", AJ: "[d2@7 ~ e2@6 ~ a1@3 ~@7 d2@3 ~@4]/2",
AK: "a1 ~@3 d2 ~@3", AL: "a1@3 ~@5 d2@3 ~@5", AM: "a1@3 ~@5 a1@7 ~", AN: "d2 c#2", AO: "~ b1@7 e2@8", AP: "a1 ~",
AQ: "~ a2", AR: "b2", AS: "c#3@8 e3@7 ~", AT: "f#3@3 ~", AU: "~@2 e3 ~@3 d3 ~", AV: "[~@2 a2 ~ d3@20]/3",
AW: "~@8 c#3@4 e3@3 ~", AX: "[f#3@11 ~ f#3@8 e3@3 ~ c#3@4 b2@2 ~@2]/2", AY: "[c#3@2 e3@18 ~@4 c#3@4 e3@3 ~]/2",
AZ: "[f#3@11 ~ f#3@8 e3@3 ~ c#3@8]/2", BA: "[b2@20 ~@4 c#3@4 e3@3 ~]/2", BB: "f#3@7 ~ f#3@7 ~",
BC: "e3@5 f#3@6 ~ e3@3 ~", BD: "[c#3@4 a2@3 ~ a2@4 f#2@2 a2@9 ~ a2@2 ~@2 a2@2 ~@2]/2", BE: "d3 c#3",
BF: "a2@4 e2@3 ~ f#2@4 a2@2 ~@2", BG: "[a2@27 ~@5]/4", BH: "~@4 d2@3 ~ a1@3 ~@5", BI: "~@2 e3@2 ~ e3@2 ~@2 e3@5 d3@2",
BJ: "~@2 c#3@3 ~ b2@3 ~@7", BK: "~@3 e3 ~ e3@2 ~@2 e3@4 ~ d3@2", BL: "~@2 e3 ~ e3@2 ~@2 e3@5 ~ d3@2",
BM: "[~ b2@7]/2", BN: "[~@3 c#3@13]/2", BO: "[~@7 d3@33 ~ e3@32 ~@2 f3@50 ~@3]/8", BP: "[~@14 d3@33 c#3@33]/5",
BQ: "[~ d3@67 ~@12]/5", BR: "~ a1 ~@3 d2 ~@2", BS: "~@6 d2@3 ~@2 a1@3 ~@2",
})).s("gm_trombone").gain(0.58)
// other · alto sax · "Sax"
const alto_sax = note(`<
~@18 A B@2 C D E ~@29 F@5 G H@3 ~@21 I J K J L ~@4 M N O@2 P Q@2 R S T U V W X@2 P Y Z AA AB AC ~ AD AE AF@2 ~@10 AG
AH@3 ~@22 AI AJ AI AJ ~@34 AK AL AM AL AK AL AM AL ~@44 AN AO AN AP
>`.pickRestart({
A: "~ c#5@2 ~@2 c#5@2 ~@9", B: "[b4@4 ~@11 c#5@2 ~ c#5@2 ~@9 b4@3]/2", C: "~@6 c#5 ~", D: "c#5@2 ~@9 b4@4 ~",
E: "~@9 c#5@2 ~@2 c#5@2 ~", F: "[~@9 d5@16 e5@16 e5@32 ~@4 e5@2 ~]/5", G: "~@5 c#5@2 ~@6 c#5@2 ~",
H: "[~ a4@39 ~@8]/3", I: "~@13 a5@2 ~", J: "~@5 a5@2 ~@6 a5@2 ~", K: "~ a5@2 ~@10 a5@2 ~", L: "~ c#6@2 ~@13",
M: "~@3 e5@2 ~@2 e5@2 ~@7", N: "~ d5@2 ~@5", O: "[e5 ~@3 e5 ~@10 d5@4 ~@11 e5@2]/2", P: "~ e5@2 ~@9 d5@4",
Q: "[~@11 e5@2 ~@2 e5@2 ~@9 d5@4 ~@2]/2", R: "~@4 e5 ~ e5 ~", S: "~@7 d5@4 ~@5", T: "~@5 e5@2 ~@2 e5@2 ~@5",
U: "~ d5 ~@2", V: "~@3 e5@2 ~ e5@2 ~@8", W: "~ d5@4 ~@11", X: "[e5 ~@3 e5 ~@10 d5@4 ~@10 e5@2 ~]/2", Y: "~@5 e5 ~ e5",
Z: "~@9 e5@4 ~@3", AA: "b4@2 b4 ~@3 b4@3 ~@3 b4@2 ~@2", AB: "a4@2 a4 ~@3 a4@3 ~@3 a4@2 ~@2",
AC: "b4@2 b4 ~@3 a4@3 ~@3 a4@2 ~@2", AD: "a4 b4", AE: "d5 a4", AF: "~@2 c#5 ~@3 d5 ~", AG: "~@2 e5 ~@3 c#5 ~",
AH: "[~@4 c#5@2 ~@2 a4@39 ~]/3", AI: "~@2 a6 ~@3 a6 ~", AJ: "~@2 a6 ~ a6 ~@3", AK: "~ g5 g5@2 g5@3 f#5",
AL: "~ e5@2 d5 ~@4", AM: "~@2 g5@2 g5@2 ~@2 g5@5 ~ f#5@2", AN: "~@7 a5@2 ~@5 a5@2", AO: "~@3 a5 ~ a5 ~@2",
AP: "~@7 a5@2 ~ c#6@2 ~@4",
})).s("gm_alto_sax").gain(0.57)
// other · trumpet · "Trumpt1"
const trumpet_2 = note(`<
// … 111 more lines
More by Blood, Sweat & Tears
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.