0:00/0:00
// You've Made Me So Very Happy — Blood, Sweat & Tears
// 90 bpm, 4/4, key unknown. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 113 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(90/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 · brass section · "Unnamed Track"
const brass_section = note(`<
A@2 B@2 ~@5 C D@2 E F G H I J ~@7 C D@2 E F G H I J ~@2 K@3 L M N O@2 P Q O R S T ~@5 U@5 V W X Y V Z@2 AA@6 AB@7 ~@11
AC@3 AD@2 AE@2 AF@3 AG@2 AC@3 AD@2 AE@2 AF@3
>`.pickRestart({
A: "[g2@15 g#2, g3]/2", B: "[g2,g3]/2", C: "~@7 [d#3,f#4,a#4,c#5]",
D: "[d3,f4,a4,c5]@5 ~@3 [d3,f4,a4,c5]@5 ~@3 [d3,f4,a4,c5]@5 ~@3 [d3,f4,a4,c5]@3 ~ [d#3,f#4,a#4,c#5]@4", // Dm7 D#m7
E: "[d3,f4,a4,c5]@5 ~@3 [d3,f4,a4,c5]@5 ~@3 [d3,f4,a4,c5]@5 ~@3 [d3,f4,a4,c5]@3 ~ [d3,f#4,a#4,c#5]@4", // Dm7 F#
F: "[g2,f4,a4,c5]", G: "~@12 f4 e4 c4@2", H: "d4 g3@7", I: "~@10 g3@2 f4 e4 c4@2", J: "c4 d4@7",
K: "[d3,f5] [e3,e5] ~ [f3,c5] ~ f#3@2 g3, ~@5 g4@3", L: "f5 [e3,e5] ~ [f3,c5] ~ f#3@2 g3, ~@5 d5@3",
M: "e5 d5 e5@14, [c4,g4,b4]", N: "[c#4,g4,e5,a5] ~", O: "[f4,a#4,d5]@3 [f4,a#4,d5] [f4,a#4,d5]@2 ~@10",
P: "[f4,a4,c5]@3 [f4,a4,c5] [f4,a4,c5]@2 ~@2 [f4,a4,c5] [f4,a4,c5]@2 [f4,a4,c5]@2 [f4,a4,c5] [f4,a4,c5]@2", // F
Q: "[e4,g4,c5]@3 [e4,g4,c5] [e4,g4,c5]@2 ~@2 [e4,e5] [e4,e5]@2 [e4,e5]@2 [f4,f5] [g4,g5]@2", // C E F G
R: "[f4,a#4,d5]@3 [f4,a#4,d5] [f4,a#4,d5]@2 ~@8 [d#3,f#4,a#4,c#5]@2", S: "[d3,f4,a4,c5]@4 ~@9 [g#3,c4,d#4]@3",
T: "[g3,a#3,d4] ~@3", U: "[~@7 [g2,g3]@7 [d3,d4] [a2,a3]@8 [a#2,a#3]@7 [d3,d4] [c3,c4]@9]/5",
V: "[d3,d4]@3 [d3,d4]@2 [c3,c4] [a2,a3]@2", W: "[g2,g3] [a2,a3] [c3,c4] [a2,a3]@5",
X: "[d#3,d#4]@3 [d#3,d#4]@2 [c#3,c#4] [a#2,a#3]@2", Y: "[g#2,g#3] [a#2,a#3] [c#3,c#4] [a#2,a#3]@5",
Z: "[[a#2,a#3] [c#3,c#4] [d#3,d#4] [f3,f4]@9 ~@4]/2", // A# C# D# F
AA: "[~@4 [d#3,f#4,a#4,c#5]@8 [d#3,f#4,a#4,c#5]@8 [d#3,f#4,a#4,c#5]@7 [a#4,c#5]@5 [c5,d#5]@2 [a#4,c#5]@2 [c#3,f4,g#4,c5]@8 [f3,f4] [f#3,f#4] [g#3,g#4] [a#3,a#4], ~@9 [d#3,f#4]@3 ~@4]/6", // D#m7 A#m Cm A#m C#maj7 F F# G# …
AB: "[[b3,b4] [c#4,c#5] [d4,d5] [f4,f5] [d#3,a#3,c#4,g#4]@8 [b2,a3,c#4,g#4]@8 [f3,g#3,d#4,g#4]@8 [a#2,g#3,b3,d4]@8 [d#3,a#3,c#4,f#4]@8 [f#3,g#3,c4,d4]@11 ~]/7", // B C# D F D#sus4 C#7 Fm7 G#dim …
AC: "[~@22 [f#3,f#4,f#5]@43 ~@31]/3", AD: "[~@3 [f#3,f#4,f#5]@43 ~@18]/2", AE: "[~@16 [f#3,f#4,f#5]@43 ~@5]/2",
AF: "[~@28 [f#3,f#4,f#5]@43 ~@25]/3", AG: "[~@9 [f#3,f#4,f#5]@43 ~@12]/2",
})).s("gm_brass_section").gain(0.31)
// chords · brass section · "Unnamed Track" · soft notes
const brass_section_soft = note("<~@19 A B C D E F G ~@87>".pickRestart({
A: "~@20 e5@4 e5@3 c5@2 a4@3", B: "c5", C: "~@11 g4@2 a4@3 b4@4 d5@8 d5@2 g4@2", D: "b4@6 g4 a4@3 e4@6",
E: "~@5 b3@2 d4", F: "e4@4 f4@4 g4@4 a4 b4 ~ c5 d5@4 e5@8 d5@2 c5@2", G: "b4 g4 a4 e4 g4@2 ~@2",
})).s("gm_brass_section").gain(0.09)
// chords · piano · "Unnamed Track"
const piano = note("<~@81 A@6 B@6 A@6 B@6 A@6 C@2>".pickRestart({
A: "[~ [g#3,a#3,c#4]@10 [g#3,a#3,c#4]@9 [g#3,a#3,c#4]@10 ~@5 f#2@5 [g#3,a#3,d#4]@9 [g#3,a#3,d#4]@10 [g#3,a#3,d#4]@9 ~@5 b2@5 [g#3,a#3,c#4]@10 [g#3,a#3,c#4]@9 [g#3,a#3,c#4]@10 ~@5 f#2@4 [g#3,a#3,d#4]@10 [g#3,a#3,d#4]@10 [g#3,a#3,d#4]@9 ~@5 b2@5 [g#3,a#3,c#4]@9 [g#3,a#3,c#4]@10 [g#3,a#3,c#4]@10 ~@4 f#2@4, ~ f#2@29 [g#3,a#3,c#4]@10 b2@28 [g#3,a#3,d#4]@10 f#2@29 [g#3,a#3,c#4]@9 b2@29 [g#3,a#3,d#4]@10 f#2@29 [g#3,a#3,c#4]@8]/6", // A#m7 G#sus2 A#m7 G#sus2 A#m7 G#sus2 A#m7 G#sus2 …
B: "[~ [g#3,a#3,d#4]@10 [g#3,a#3,d#4]@9 [g#3,a#3,d#4]@10 ~@5 b2@5 [g#3,a#3,c#4]@9 [g#3,a#3,c#4]@10 [g#3,a#3,c#4]@9 ~@5 f#2@5 [g#3,a#3,d#4]@10 [g#3,a#3,d#4]@9 [g#3,a#3,d#4]@10 ~@5 b2@4 [g#3,a#3,c#4]@10 [g#3,a#3,c#4]@10 [g#3,a#3,c#4]@9 ~@5 f#2@5 [g#3,a#3,d#4]@9 [g#3,a#3,d#4]@10 [g#3,a#3,d#4]@10 ~@4 b2@4, ~ b2@29 [g#3,a#3,d#4]@10 f#2@28 [g#3,a#3,c#4]@10 b2@29 [g#3,a#3,d#4]@9 f#2@29 [g#3,a#3,c#4]@10 b2@29 [g#3,a#3,d#4]@8]/6", // G#sus2 A#m7 G#sus2 A#m7 G#sus2 A#m7 G#sus2 A#m7 …
C: "[~ [g#3,a#3,d#4]@10 [g#3,a#3,d#4]@9 [g#3,a#3,d#4]@10 ~@5 b2@5 ~@24, ~ b2@29 [g#3,a#3,d#4]@10 ~@24]/2", // G#sus2
})).s("gm_piano").gain(0.36).pan(0.1)
// bass · fretless bass · "Unnamed Track"
const bass = note(`<
A@2 B@2 C D C D E F G@2 H I J K L M N O P Q P Q P R S@2 T I K U K V W X Y@3 Z AA AB AC@2 AD AE AC AF AG AH AI@2 AJ@2
AK@6 AL AM AN AO AP AQ@3 AR AS AT AU@2 AV@2 AW@2 AX@3 ~@5 AY@3 AZ@6 BA BB@5 AZ@6 BA BB@5 BC
>`.pickRestart({
A: "[g1@15 g#1]/2", B: "g1/2", C: "d2@7 a1 d2@2 d2@4 a1@2", D: "c2@8 a2 g2@2 e2@2 d2@2 c2", E: "d2@4 d2 d2@2 a1",
F: "c2@8 a2 g2@2 e2@2 a1 d#2@2", G: "d2 a1 d2 a1 d2 a1 d2 d#2", H: "d2@2 a1@2 d2@2 a1@2 d2@2 a1 d2@2 a1 g#1@2",
I: "g1@4 g1@3 g1@2 d2 g2@2 d2 g2@2 d2", J: "g1@2 g1@4 g1@4 g1@3 d2@2 g2", K: "g1 g1@2 g1@2 e1 f1 f#1",
L: "g1@2 g1@4 g1@4 g1@3 d2 g2@2", M: "g1@2 g1@2 d2@2 g1@4 g1@2 g1 a1 c2@2",
N: "c2@2 c2@3 c2@2 e2!2 e2@2 f2@2 g2@2 g2", O: "a2 e2 ~ a2 e2@2 d#2@2", P: "d2@2 ~ a1@2 g1@2 a1",
Q: "c2@2 ~ a1@2 g1@2 a1", R: "c2@2 ~ a1@2 g1@2 d#2", S: "d2@2 a1!2 d2@2 a1!2 d2@2 a1!2 d2@2 d#2@2",
T: "d2@2 a1!2 d2@2 a1!2 d2@2 a1 d2@2 c2@2 g#1", U: "g1@2 g1@4 g1@3 g1 d2 g2@2 d2@2 d2",
V: "g1@2 g1@2 d2@2 g2@3 g1@2 d2 g1 a1 c2@2", W: "c2@2 c2@3 c2@2 c2 e2 e2@2 f2@2 g2@2 g2",
X: "a2@2 a2@2 e2@2 a1@3 e2@2 a2@2 e2 d#2@2", Y: "d2@2 e2@2 ~@2 f2@2 ~@2 f#2@2 g2 a2 d3 a2",
Z: "d2@2 e2@2 ~@2 f2@3 f#2 g2@2 g1@2 b1@2", AA: "c2@5 c2@2 c2 e2 e2@2 f2@2 g2@2 g2", AB: "a2!2 e2 a1@2 ~@3",
AC: "a#1@3 a#1 a#1@2 a#1!2 d2 d2@2 d#2@2 e2 f2@2", AD: "f2@3 c2 f1 f1@2 f1 a1 a1@2 a#1@2 a#1 b1@2",
AE: "c2@3 c2 c2@2 c2!2 e2 e2@2 e2@2 f2 g2@2", AF: "a#1@3 a#1 a#1@2 a#1!2 d2 d2@2 d#2@2 f2 d#2@2", AG: "d2@4 ~@11 g#2",
AH: "g2 ~@3", AI: "[d2@6 c2 d2@6 c2@2 d2]/2", AJ: "[e2@6 a2 e2@6 d2@2 e2]/2",
AK: "[f2@6 f2 f#2@8 g2@7 d3 a2@8 a#2@7 d3 c3@9]/6", AL: "d3@3 d3@2 c3 a2@2",
AM: "g2@2 a2@2 c3@2 a2@3 a2 g2 e2 d2 c2 a1@2", AN: "d#3@3 d#3@2 c#3 a#2@2",
AO: "g#2@2 a#2@2 c#3@2 a#2@3 a#2 g#2 f2 d#2 c#2 a#1@2", AP: "d3 ~@5 d3@4 c3@2 a2@4",
AQ: "[a#2@2 c#3@2 d#3@2 c#2@4 f1@5 f#1@2 g1@2 g1 g#1 a#1 c#2@2 c#2@2 f1@5 f#1@2 g1@2 g1 g#1 a#1 c#2@2 d#2@7 a#2]/3",
AR: "d#3@2 a#2@2 d#3 a#2@2 a#2 d#2@2 d#2@2 a#2@3 a#2", AS: "d#3 c#3@2 a#2@2 g#2 f#2@2 d#2@7 d#2",
AT: "f#1 g#1@2 a#1@3 d#2@4 c#2@4 a#1@2",
AU: "[g#1@2 d#2@2 g#2 d#2@2 g#1 c#2@2 c#2@2 f2 f#2@2 g#2@2 a2@2 a#2@3 f2@2 a#2@2 f2@2 a#1@2 f2@2]/2",
AV: "[~ a#2@2 f2 a#2 f2 e2@2 d#2@3 a#2 d#3 a#2@2 d#2@2 d#2@2 a#2@2 d#2 g#2@2 f#2@4 f#2@3 c#2]/2",
AW: "[f#2 c#2@2 f#2@2 c#2 f#2@2 c#2@2 c#2@2 c3@3 f2@2 c2 d#2 e2 f2 f#2@2 g#2 a#2@2 f2@2 a#1@2 f2@2]/2",
AX: "[~ a#2@2 f2 a#2 f2 e2@2 d#2@2 f2@4 f#2@4 g2@6 g#2@22 ~@2]/3",
AY: "[~@27 f#2@9 f#2@7 ~ c#2@2 f#2@10 f#2@2 c#2@5 c#2@2 b1@10 b1@7 f2@2 ~@5 b1@7]/3",
AZ: "[b1@5 c#2@2 ~ f#2@9 f#2@7 c#2@2 ~ f#2@9 f#2@2 ~ c#2@5 c#2@2 b1@10 b1@7 f2@2 ~@5 b1@7 b1@5 c#2@2 f#2@10 f#2@7 c#2@2 ~ f#2@9 f#2@2 ~ c#2@4 c#2@2 ~ b1@9 b1@7 ~ f2@2 ~@5 b1@7 b1@5 c#2@2 f#2@10 f#2@7 c#2@2 f#2@10 f#2@2]/6",
BA: "c#2@5 c#2@2 ~ b1@9 b1@7 f2@2 ~@6",
BB: "[b1@7 b1@5 c#2@2 f#2@10 f#2@7 c#2@2 f#2@10 f#2@2 c#2@5 c#2@2 b1@10 b1@7 f2@2 ~@5 b1@7 ~ b1@4 c#2@2 ~ f#2@9 f#2@7 ~ c#2@2 f#2@10 f#2@2 c#2@5 c#2@2 b1@10 b1@7 f2@2 ~@5 b1@7]/5",
BC: "b1@5 c#2@2 ~@25",
})).s("gm_fretless_bass").gain(0.72)
// chords · drawbar organ · "Unnamed Track"
const drawbar_organ = note(`<
A B A C D E D E D E F@3 G H@2 I@2 J K L M L M L M F@3 G H@2 I@2 J N O@2 P@2 Q R S@2 T U S@2 V W X@2 Y@2 Z@6 AA AB AC
AD AA AE AF AG@3 AH@8 AI@2 ~@4 AJ@6 AK@3 AL AM AN@2 AO@8 AL AM AN@2 AP@4
>`.pickRestart({
A: "~@4 f5 e5@2 c5", B: "d5 ~ g4@4 ~@2", C: "c5 ~ d5@4 ~@2", D: "[f4,a4,c5]", E: "[e4,g4,b4]", F: "d3!4", G: "g2",
H: "[c4,d4,f4,g4]/2", I: "[[c4,d4,f4,g4] [c4,d4,f4,g4]@15]/2", J: "[b3,e4,g4]", K: "[c#4,e4,g4]",
L: "e4 d4 c4 [b3,g4], f4@3 ~", M: "d4 c4 b3 c4, e4", N: "[a4,c#5,e5,g5]", O: "[c5,d5,f5,g5]/2",
P: "[[c5,d5,f5,g5] [c5,d5,f5,g5]@15]/2", Q: "[b4,e5,g5]",
R: "[a4,c#5,e5,g5]@16 [a4,b4] [e4,f4,g4] [b3,c4,d4] [f3,g3,a3] [c3,d3,e3] [f2,g2,a2,b2] ~@10", S: "[f4,a#4,d5]@3 ~@5",
T: "[f4,a4,c5]@3 ~@5", U: "[e4,g4,c5]@3 ~@5", V: "[f4,a4,c5] ~@3", W: "[g3,a#3,d4] ~@3",
X: "[[e4,f4,a4]!6 [c3,e4,f4,a4] [e4,f4,a4] [e4,f4,a4]!7 [d3,e4,f4,a4], d3@6 ~ d3@6 c3@2 ~]/2", // Fmaj7 Dm
Y: "[[f#4,g4,b4]!6 [a3,f#4,g4,b4] [f#4,g4,b4] [f#4,g4,b4]!7 [e3,f#4,g4,b4], e3@6 ~ e3@6 d3@2 ~]/2", // Gmaj7 Em
Z: "[[e4,f4,a4,c5]!6 [f3,e4,f4,a4,c5] [e4,f4,a4,c5] [d#4,f#4,a4,c5]!7 [a#3,d4,f4]@8 [a3,c4,e4,g4]@8 [d4,f4,a4]@8 [f4,g4]@5 [e4,g4]@4, f3@6 ~ f#3@8 g3@7 ~@9 a#3@7 ~ c4@9]/6", // Fmaj7 D#dim A# Am7 Dm Fsus2 Em
AA: "[f4,a4,d5]@3 [f4,a4,d5]@5", AB: "[e4,g4,c5]@3 [f4,a4,d5]@5", AC: "[f#4,a#4,d#5]@3 [f#4,a#4,d#5]@5",
AD: "[e4,g#4,c#5]@3 [f#4,a#4,d#5]@5", AE: "[d#4,f#4,a#4]@2 a#4 [f4,g#4]@3 [d#4,g#4]@2",
AF: "[f4,g#4]@4 [d#4,g#4]@4 d#4 f4 g#4 d#4 f4 g#4 f4@2", // Fm G#5
AG: "[d#4@2 c#4@2 d#4 f4@3 [c#4,d#4,f#4,a#4]@16 [c#4,d#4,f#4,a#4]@16 [c#4,d#4,f#4,a#4]@8]/3", // D#m7
AH: "[~@3 [c#4,d#4,f#4,a#4]@9 [c4,c#4,f4,g#4]@8 [d4,e4,f4,g#4,a#4]@8 [c#4,d#4,f#4,a#4]@8 [c#4,d#4,f#4,a4]@8 [g#3,c4,d#4,g#4]@8 [a#3,d4,e4,g#4]@8 [a#3,c#4,d#4,f#4]@4]/8", // D#m7 C#maj7 A#7 D#m7 D#m7b5 G# A#7 D#m7
AI: "[~@4 [f#4,c5,d5,g#5]@11 ~]/2", // D7
AJ: "[~@11 f#4@9 f#5@19 ~ b5@2 a#5@5 f#5@2 ~@5 [d#5,f#5]@5 [c#5,f#5]@29 d#5@2 f#5@5 d#5@2 f#5@12 d#5@2 ~ f#5@2 a#5@2 b5@5 a#5@5 f#5@5 d#5@5 [c#5,f#5]@28 d#5@2 ~ f#5@5 d#5@2 f#5@12 d#5@2 f#5@2 ~ a#5]/6", // D#m F#5
AK: "[~ b5@5 a#5@5 f#5@5 d#5@4 [c#5,f#5]@29 d#5@2 ~ f#5@4 d#5@2 ~ f#5@12 d#5@2 f#5@2 ~ a#5@2 b5@5 a#5@5 f#5@4 d#5@4]/3", // F#5
AL: "~ [c#5,f#5]@29 d#5@2", AM: "f#5@5 d#5@2 ~ f#5@12 d#5@2 f#5@2 a#5@2 ~ b5@5",
AN: "[a#5@4 f#5@5 d#5@5 [c#5,f#5]@29 d#5@2 f#5@5 d#5@2 f#5@12]/2", // F#5
AO: "[d#5@2 ~ f#5@2 a#5@2 ~ b5@4 a#5@5 f#5@5 d#5@5 [c#5,f#5]@29 d#5@2 f#5@5 d#5@2 f#5@12 d#5@2 ~ f#5@2 a#5@2 b5@5 a#5@5 f#5@5 d#5@5 [c#5,f#5]@28 d#5@2 ~ f#5@5 d#5@2 f#5@12 d#5@2 f#5@2 ~ a#5@2 b5@5 a#5@5 f#5@5 d#5@4 [c#5,f#5]@29 d#5@2 ~ f#5@4 d#5@2 ~ f#5@12 d#5@2 f#5@2 ~ a#5@2 b5@5 a#5@5 f#5@4 d#5@4]/8", // F#5
AP: "[d#5@2 ~ f#5@2 a#5@2 ~ b5@4 a#5@5 f#5@5 d#5@5 [c#5,f#5]@29 d#5@2 f#5@5 d#5@2 f#5@12 d#5@2 ~ f#5@2 a#5@2 b5@5 a#5@5 f#5@5 d#5@5 ~@24]/4", // F#5
})).s("gm_drawbar_organ").gain(0.24).pan(0.9)
// chords · electric guitar jazz · "Unnamed Track"
const electric_guitar_jazz = note(`<
~@4 A B A B A B C@3 D E@2 F@2 G H I G I G I G J@3 D E@2 F@2 G H K@4 L M N@2 O P N@2 ~@2 Q R S T U V@5 W X Y Z W AA@5
AB@8 AC@2 ~@6 AD AE@2 AF AG AH AI AJ@2 AK AL@2 AD AE@2 AF AG AH AI AJ@2 AK AL@2 AD AM@2
>`.pickRestart({
A: "~@5 d4@27, d5, ~ a4@31, ~@3 f4@29", B: "~@3 b3@13, c3, ~ e3@15, ~ g3@7", C: "[f3,a3,c4]!4", D: "[g2,d3,f3,a3,c4]",
E: "[g2,d3,f3,a3,c4]/2", F: "[[g2,d3,f3,a3,c4] [g2,d3,f3,a3,c4]@15]/2", G: "~ [c3,e3,g3,b3] ~ [c3,e3,g3,b3]",
H: "[a2,e3,g3,a3,c#4]", I: "~ [d3,f3,a3,c4] ~ [d3,f3,a3,c4]", J: "[d3,f3,a3,c4]!4", K: "[d3,f3,a3,c4,d4]",
L: "[c3,e3,g3,b3,c4,e4]", M: "[g2,a2,e3,g3,a3,c#4,e4] ~", N: "a#2@3 a#2 a#2@2 a#2!2 d3 d3@2 d#3@2 e3 f3@2",
O: "f3@3 f3 f3@2 f3!2 a2 a2@2 a#2@2 a#2 b2@2", P: "c3@3 c3 c3@2 c3!2 e3 e3@2 e3@2 f3 g3@2", Q: "d3 ~@5 c3 d3",
R: "~@5 c3 ~ d3", S: "e3 ~@5 a3 e3", T: "~@5 d3 ~ e3", U: "f3 ~@5 f3 f#3",
V: "[~@6 f#3 g3@7 d4 a3@8 a#3@7 d4 c4@9]/5", W: "[d3,f3,a3,d4]", X: "[c3,d#3,g3,c4]@3 [d3,f3,a3,d4]@5",
Y: "[d#3,f#3,a#3,d#4]", Z: "[c#3,e3,g#3,c#4]@3 [d#3,f#3,a#3,d#4]@5",
AA: "[[d#3,f#3,a#3,d#4] [c#3,f3,g#3,c#4]@4 [d#3,f#3,a#3,c#4]@2 [d#3,f#3,a#3,c#4]@2 [d#3,f#3,a#3,c#4]]/5", // D#m C# D#m7
AB: "[~@3 [d#3,f#3,a#3,c#4]@9 [c#3,f3,g#3,c4]@8 [d3,f3,g#3,a#3]@8 [d#3,f#3,a#3,c#4]@8 [c#3,d#3,f#3,a3]@8 [c3,d#3,f3,g#3]@8 [d3,e3,g#3,a#3]@8 [d#3,f#3,a#3,c#4]@4]/8", // D#m7 C#maj7 A#7 D#m7 D#m7b5 Fm7 E7 D#m7
AC: "[~@4 [c3,d3,f#3,g#3]@11 ~]/2", AD: "b4@2 a#4@2 b4@2 ~ a#4@2 f#4@5 b4@2 a#4@2 ~ b4@2 a#4@2 ~ f#4@8",
AE: "[~@6 [d#3,f#3,a#3,b3]@5 [d#3,f#3,a#3,b3]@9 [d#3,f#3,a#3,b3]@5 [d#3,f#3,a#3,b3]@14 ~@5 b4@2 ~ a#4@2 b4@2 ~ a#4@2 f#4@5 b4@2 a#4@2 ~]/2", // Bmaj7
AF: "b4@2 a#4@2 f#4@10 ~@5 [d#3,f#3,a#3,b3]@5 [d#3,f#3,a#3,b3]@8", // Bmaj7
AG: "~ [d#3,f#3,a#3,b3]@5 [d#3,f#3,a#3,b3]@14 ~@5 b4@2 ~ a#4@2 b4@2", // Bmaj7
AH: "a#4@2 ~ f#4@5 b4@2 a#4@2 b4@2 ~ a#4@2 f#4@10 ~@5",
AI: "[d#3,f#3,a#3,b3]@4 [d#3,f#3,a#3,b3]@10 [d#3,f#3,a#3,b3]@5 [d#3,f#3,a#3,b3]@13", // Bmaj7
AJ: "[~@6 b4@2 a#4@2 ~ b4@2 a#4@2 ~ f#4@4 b4@2 ~ a#4@2 b4@2 ~ a#4@2 f#4@10 ~@4 [d#3,f#3,a#3,b3]@5 [d#3,f#3,a#3,b3]@10 [d#3,f#3,a#3,b3]@5]/2", // Bmaj7
AK: "[d#3,f#3,a#3,b3]@14 ~@5 b4@2 a#4@2 ~ b4@2 a#4@2 f#4@4", // Bmaj7
AL: "[~ b4@2 ~ a#4@2 b4@2 a#4@2 ~ f#4@10 ~@4 [d#3,f#3,a#3,b3]@5 [d#3,f#3,a#3,b3]@10 [d#3,f#3,a#3,b3]@4 [d#3,f#3,a#3,b3]@14 ~@6]/2", // Bmaj7
AM: "[~@6 [d#3,f#3,a#3,b3]@5 [d#3,f#3,a#3,b3]@9 [d#3,f#3,a#3,b3]@5 [d#3,f#3,a#3,b3]@14 ~@25]/2", // Bmaj7
})).s("gm_electric_guitar_jazz").gain(0.13).pan(0.1)
// other · alto sax · "Unnamed Track"
const alto_sax = note(`<
A@4 ~@5 B C@3 D ~@11 B C@3 D ~@6 E@3 F G H I@2 J K I L M N ~@5 O@5 P Q R S P T@2 U@6 V@7 ~@11 W@3 X@2 Y@2 Z@3 AA@2 W@3
X@2 Y@2 Z@3
>`.pickRestart({
A: "g3/2", B: "~@7 f#3", C: "f3@2 f3@2 f3@2 f3 f#3", D: "f3", E: "f4 e4 ~ c4 ~ g3@3", F: "f4 e4 ~ c4 ~ d4@3", G: "g4",
H: "g4 ~", I: "f4@3 f4 f4@2 ~@10", J: "f4@3 f4 f4@2 ~@2 f4 f4@2 f4@2 f4 f4@2",
K: "e4@3 e4 e4@2 ~@2 e4 e4@2 e4@2 f4 g4@2", L: "f4@3 f4 f4@2 ~@8 f#4@2", M: "f4@4 ~@9 g#3@3", N: "g3 ~@3",
O: "[~@7 g3@7 d4 a3@8 a#3@7 d4 c4@9]/5", P: "d4@3 d4@2 c4 a3@2", Q: "g3 a3 c4 a3@5", R: "d#4@3 d#4@2 c#4 a#3@2",
S: "g#3 a#3 c#4 a#3@5", T: "[a#3 c#4 d#4 f4@9 ~@4]/2", U: "[~@4 f#4@8 f#4@8 f#4@7 f#4@9 f4@8 f3 f#3 g#3 a#3]/6",
V: "[b3 c#4 d4 f#4 a#3@8 a3@8 g#3@8 g#3@8 a#3@8 g#3@11 ~]/7", W: "[~@22 f#4@43 ~@31]/3", X: "[~@3 f#4@43 ~@18]/2",
Y: "[~@16 f#4@43 ~@5]/2", Z: "[~@28 f#4@43 ~@25]/3", AA: "[~@9 f#4@43 ~@12]/2",
})).s("gm_alto_sax").gain(0.4).pan(0.8)
// other · trumpet · "Unnamed Track"
const trumpet = note(`<
~@9 A B@3 C D E F G ~@7 A B@3 C D E F G ~@2 H@3 I J K L@2 M N L O P Q ~@5 R@5 S T U V S W@2 X@4 Y@2 Z@7 ~@11 AA@3 AB@2
AC@2 AD@3 AE@2 AA@3 AB@2 AC@2 AD@3
>`.pickRestart({
A: "~@7 a#4", B: "a4@2 a4@2 a4@2 a4 a#4", C: "a4", D: "~@12 f4 e4 c4@2", E: "d4 g3@7", F: "~@10 g3@2 f4 e4 c4@2",
G: "c4 d4@7", H: "f5 e5 ~ c5 ~ g4@3", I: "f5 e5 ~ c5 ~ d5@3", J: "b4", K: "e5 ~", L: "a#4@3 a#4 a#4@2 ~@10",
M: "a4@3 a4 a4@2 ~@2 a4 a4@2 a4@2 a4 a4@2", N: "g4@3 g4 g4@2 ~@2 e4 e4@2 e4@2 f4 g4@2",
O: "a#4@3 a#4 a#4@2 ~@8 a#4@2", P: "a4@4 ~@9 c4@3", Q: "a#3 ~@3", R: "[~@7 g3@7 d4 a3@8 a#3@7 d4 c4@9]/5",
S: "d4@3 d4@2 c4 a3@2", T: "g3 a3 c4 a3@5", U: "d#4@3 d#4@2 c#4 a#3@2", V: "g#3 a#3 c#4 a#3@5",
W: "[a#3 c#4 d#4 f4@9 ~@4]/2", X: "[~@4 a#4@8 a#4@8 a#4@7 a#4@5]/4", Y: "[c5@2 a#4@2 g#4@8 f4 f#4 g#4 a#4]/2",
Z: "[b4 c#5 d5 f5 c#4@8 d#4@8 d#4@8 b3@8 c#4@8 c4@11 ~]/7", AA: "[~@22 f#4@43 ~@31]/3", AB: "[~@3 f#4@43 ~@18]/2",
AC: "[~@16 f#4@43 ~@5]/2", AD: "[~@28 f#4@43 ~@25]/3", AE: "[~@9 f#4@43 ~@12]/2",
})).s("gm_trumpet").gain(0.45).pan(0.4)
// other · trombone · "Unnamed Track"
const trombone = note(`<
A@4 ~@5 B C@2 D E ~@11 B C@2 D E ~@6 F@4 G H I@2 J K I L M N ~@5 O@5 P Q R S P T@2 U@6 V@7 ~@11 W@3 X@2 Y@2 Z@3 AA@2
W@3 X@2 Y@2 Z@3
>`.pickRestart({
A: "g2/2", B: "~@7 d#3", C: "d3@2 d3@2 d3@2 d3 d#3", D: "d3@2 d3@2 d3@2 d3!2", E: "g2", F: "d3 e3 ~ f3 ~ f#3@2 g3",
G: "c4", H: "c#4 ~", I: "f4@3 f4 f4@2 ~@10", J: "f4@3 f4 f4@2 ~@2 f4 f4@2 f4@2 f4 f4@2",
K: "e4@3 e4 e4@2 ~@2 e4 e4@2 e4@2 f4 f4@2", L: "f4@3 f4 f4@2 ~@8 d#3@2", M: "d3@2 ~@5 g#3", N: "g3 ~@3",
O: "[~@7 g2@7 d3 a2@8 a#2@7 d3 c3@9]/5", P: "d3@3 d3@2 c3 a2@2", Q: "g2 a2 c3 a2@5", R: "d#3@3 d#3@2 c#3 a#2@2",
S: "g#2 a#2 c#3 a#2@5", T: "[a#2 c#3 d#3 f3@9 ~@4]/2", U: "[~@4 d#3@8 d#3@8 d#3@7 d#3@9 c#3@8 f3 f#3 g#3 a#3]/6",
V: "[b3 c#4 d4 f4 d#3@8 b2@8 f3@8 a#2@8 d#3@8 f#3@11 ~]/7", W: "[~@22 f#3@43 ~@31]/3", X: "[~@3 f#3@43 ~@18]/2",
Y: "[~@16 f#3@43 ~@5]/2", Z: "[~@28 f#3@43 ~@25]/3", AA: "[~@9 f#3@43 ~@12]/2",
})).s("gm_trombone").gain(0.4).pan(0.3)
// drums · kick
const kick = s("bd").struct(`<
~@4 A@5 B A@3 C A@3 D A@3 B A B A@5 B A@3 B A@5 D A ~ A B A@4 E F G H G H G I A B A B J C B D A K L M A@5 N A@2 O P Q
~@5 R S T U V W X V T X V T Y Z T X V AA AB AC AD X V T X Z AE AF ~
>`.pickRestart({
A: "x ~@2 x!2 ~@2 x", B: "x ~@2 x!3 ~ x", C: "x ~@6 x ~@3 x ~@4", D: "x ~@4 x ~@8 x ~", E: "x", F: "x ~@6 x",
G: "x ~@5 x!2", H: "~@5 x ~ x", I: "~@4 x!2 ~ x", J: "x ~@4 x ~@5 x ~@4", K: "x ~@5 x ~ x ~@4 x ~@2",
L: "~@3 x!2 ~@2 x", M: "~@4 x ~@2 x", N: "x!2 ~ x!2 ~@2 x", O: "x ~@5 x ~ x ~@6 x", P: "~@3 x ~@4 x ~@5 x ~",
Q: "x ~@2 x ~@4", R: "~@5 x ~@2", S: "~@3 x ~@4 x ~@3 x ~@9 x ~@4 x ~@4", T: "~@9 x ~@4 x ~@13 x ~@3",
U: "~ x ~@14 x ~@3 x ~@4 x ~@6", V: "~@3 x ~@4 x ~@13 x ~@4 x ~@4", W: "x ~@8 x ~@4 x ~@13 x ~@3",
X: "~ x ~@14 x ~@3 x ~@11", Y: "~ x ~@4 x ~@9 x ~@3 x ~@11", Z: "x ~@14 x ~@11 x ~@4", AA: "~@9 x ~@4 x ~@11 x ~@5",
AB: "~@2 x ~@2 x ~@2", AC: "~@3 x ~@4 x ~@18 x ~@4", AD: "~@9 x ~@22", AE: "~@9 x ~@4 x ~@17", AF: "~ x ~@14 x ~@15",
})).gain(0.31)
// drums · rim
const rim = s("rim").struct(`<
~@4 A@9 ~ A@3 ~ A@11 B A@3 B A B A@3 ~ A ~@8 C ~@6 A@3 B ~@2 B ~ B@2 ~ C A@3 C A C@3 B C B ~@5 D ~ E F G C F G E H G E
H ~ E F G I ~@3 F G E H ~@4
>`.pickRestart({
A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x", D: "~@15 x", E: "~ x ~@4 x ~", F: "~@11 x ~@18 x ~", G: "~@17 x ~@14",
// … 91 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.