0:00/0:00
// Never Knew Love Like This Before — Stephanie Mills
// 111 bpm, 4/4, key B major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 98 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(111/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 · "ACOU BASS"
const bass = note(`<
~@7 A B C D E F G H I J K L M N O P Q R S T U V 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 V AW AX AQ AY AZ AU BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW BX BY BZ CA CB CC CD CE
AB CF ~@2
>`.pickRestart({
A: "~@16 e2@6 ~@2 f#2@7 ~", B: "b2@6 ~@2 b2@5 ~@3 b2@2 ~@2 b2@6 ~@2 b2@4", C: "e3@6 ~@2 e3@5 ~@3 e3@2 ~@2 e3@8 b2@4",
D: "a#2@5 ~@3 a#2@6 ~@2 a#2@2 ~@2 a#2@5 ~@3 a#2@4", E: "d#3@3 ~ d#3@2 ~@2 d#3 ~ d#3@3 ~ d#3@2",
F: "g#2@6 ~@2 g#2@6 ~@2 g#2@2 ~@2 g#2@5 ~@3 g#2@4", G: "c#3@6 ~@2 c#3@6 ~@2 c#3@3 ~ c#3@4 ~@4 c#3@4",
H: "f#2@6 ~@2 f#2@5 ~@3 f#2@2 ~@2 f#2@5 ~@3 f#2@4", I: "f#2@5 ~@3 f#2@5 ~@3 f#2@2 ~@2 f#2@5 ~@3 f#2@4",
J: "b2@4 ~@4 b2@5 ~@3 b2@2 ~@2 b2@5 ~@3 b2@4", K: "e3@5 ~@3 e3@5 ~@3 e3@2 ~@2 e3@6 ~@2 g#3@2 b2@2",
L: "a#2@6 ~@2 a#2@5 ~@3 a#2@2 ~@2 a#2@2 ~@2 a#2@2 ~@2 a#2@4", M: "d#3@6 ~@2 d#3@5 ~@3 d#3 ~@3 d#3@7 ~ f#2@4",
N: "g#2@6 ~@2 g#2@6 ~@2 g#2 ~@3 g#2@5 ~@3 g#2@4", O: "c#3@6 ~@2 c#3@5 ~@3 c#3 ~@3 c#3@5 ~@3 c#3@4",
P: "f#2@4 ~@4 f#2@6 ~@2 f#2 ~@3 f#2@5 ~@3 f#2@4", Q: "f#2@4 ~@4 f#2@5 ~@3 f#2@2 ~@2 f#2@5 ~@3 f#2@4",
R: "b2@5 ~@3 b2@5 ~@3 b2 ~@3 b2@2 ~@4 b2@6", S: "e3@4 ~@4 e3@6 ~@2 e3 ~@3 e3@7 ~ g#2@4",
T: "a#2@6 ~@2 a#2@5 ~@3 a#2@2 ~@2 a#2@2 ~@2 a#2 ~@3 a#2@4", U: "d#3@6 ~@2 d#3@4 ~@4 d#3 ~@3 d#3@8 f#2@4",
V: "g#2@6 ~@2 g#2@6 ~@2 g#2 ~@3 g#2@6 ~@2 g#2@4", W: "c#3@5 ~@3 c#3@5 ~@3 c#3@2 ~@2 c#3@5 ~@3 c#3@4",
X: "f#2@4 ~@4 f#2@5 ~@3 f#2 ~@3 f#2@5 ~@3 f#2@4", Y: "f#2@5 ~@3 f#2@5 ~@3 f#2 ~@3 c#3@8 d#3@4",
Z: "e3@3 ~@5 e3@5 ~@3 e3@8 ~@4 c#3@2 d#3@2", AA: "d#3 ~ d#3 g#2@4 ~", AB: "c#3@5 ~@3 c#3@5 ~@3 c#3@9 ~@3 f#3@2 e3@2",
AC: "d#3@2 ~@2 d#3@3 ~@5 d#3@5 ~@3 c#3@3 ~ d#3@6 ~@2", AD: "e3@5 ~@3 e3@5 ~@3 e3@9 ~@3 c#3 ~ d#3 ~",
AE: "d#3@5 ~@3 d#3@4 g#2@12 ~@8", AF: "c#3@4 ~@4 c#3@4 ~@4 c#3@9 ~@3 f#3@2 e3@2",
AG: "d#3@2 ~@2 d#3@3 ~@5 d#3@7 ~ c#3@4 d#3@5 ~@3", AH: "e3@4 ~@4 e3@4 ~@4 e3@8 ~@4 c#3@2 d#3 ~",
AI: "d#3 ~ d#3 ~ d#3@2 g#2@8 ~@2", AJ: "[c#3@8 ~@4 c#3@13 ~@3 f#2@21 ~@15]/2",
AK: "b2@5 ~@3 b2@5 ~@3 b2 ~@3 b2@6 ~@2 b2@4", AL: "e3@6 ~@2 e3@5 ~@3 e3 ~@3 e3@8 g#2@4",
AM: "a#2@6 ~@2 a#2@5 ~@3 a#2@2 ~@2 a#2@6 ~@2 a#2@4", AN: "d#3@5 ~@3 d#3@4 ~@4 d#3@2 ~@2 d#3@7 ~ f#2@4",
AO: "g#2@6 ~@2 g#2@5 ~@3 g#2@2 ~@2 g#2@6 ~@2 g#2@4", AP: "c#3@5 ~@3 c#3@5 ~@3 c#3 ~@3 c#3@6 ~@2 c#3@4",
AQ: "f#2@6 ~@2 f#2@5 ~@3 f#2 ~@3 f#2@5 ~@3 f#2@4", AR: "f#2@6 ~@2 f#2@6 ~@2 f#2 ~@3 f#2@3 ~@5 f#2@4",
AS: "b2@6 ~@2 b2@5 ~@3 b2 ~@3 b2@6 ~@2 b2@4", AT: "e3@6 ~@2 e3@5 ~@3 e3 ~@3 e3@7 ~ g#2@4",
AU: "a#2@6 ~@2 a#2@6 ~@2 a#2 ~@3 a#2@6 ~@2 a#2@4", AV: "d#3@5 ~@3 d#3@6 ~@2 d#3@2 ~@2 d#3@8 f#2@4",
AW: "c#3@5 ~@3 c#3@7 ~ c#3 ~@3 c#3@5 ~@3 c#3@4", AX: "f#2@5 ~@3 f#2@6 ~@2 f#2 ~@3 f#2@6 ~@2 f#2@4",
AY: "b2@4 ~@4 b2@5 ~@3 b2 ~@3 b2@4 ~@4 b2@4", AZ: "e3@4 ~@4 e3@3 ~@5 e3 ~@11 e2@4, ~@20 e3@11 ~",
BA: "d#3@5 ~@3 d#3@5 ~@3 d#3 ~@3 d#3@8 f#2@4", BB: "g#2@6 ~@2 g#2@7 ~ g#2 ~@3 g#2@5 ~@3 g#2@4",
BC: "c#3@5 ~@3 c#3@6 ~@2 c#3@2 ~@2 c#3@5 ~@3 c#3@4", BD: "f#2@5 ~@3 f#2@4 ~@4 f#2 ~@3 f#2@5 ~@3 f#2@4",
BE: "f#2@4 ~@4 f#2@4 ~@4 f#2@2 ~@2 c#3@7 ~ d#3@4", BF: "e3@3 ~@5 e3@4 ~@4 e3@8 ~@4 c#3@2 d#3@2",
BG: "d#3 ~@3 d#3 ~@3 d#3 ~@3 g#2@17 ~@3", BH: "c#3@5 ~@3 c#3@4 ~@4 c#3@9 ~@3 f#3@2 e3@2",
BI: "d#3 ~@3 d#3@3 ~@5 d#3@6 ~@2 c#3@3 ~ d#3@6 ~@2", BJ: "e3@5 ~@3 e3@5 ~@3 e3@8 ~@4 c#3@2 d#3@2",
BK: "d#3 ~@3 d#3 ~@3 d#3@3 ~ g#2@15 ~@5", BL: "c#3@2 ~@2 c#3@2 ~@2 c#3@3 ~@3 f#3 e3",
BM: "d#3 ~@3 d#3 ~@3 d#3@8 ~@4 c#3@3 ~ d#3@6 ~@2", BN: "e3@5 ~@3 e3@6 ~@2 e3@8 ~@4 c#3@2 d#3@2",
BO: "d#3 ~@3 d#3 ~@3 d#3@3 ~ g#2@16 ~@4", BP: "c#3@4 ~@4 c#3@5 ~@3 c#3@6 ~@6 f#3@2 e3@2",
BQ: "d#3 ~@3 d#3@2 ~@6 d#3@5 ~@3 c#3@3 ~ d#3@6 ~@2", BR: "e3@4 ~@4 e3@5 ~@3 e3@8 ~@4 c#3@2 d#3@2",
BS: "d#3 ~@3 d#3 ~@3 d#3@4 g#2@14 ~@6", BT: "c#3@5 ~@3 c#3@4 ~@4 c#3@12 f#3@2 e3@2",
BU: "d#3 ~@3 d#3@2 ~@6 d#3@7 ~ c#3@2 ~@2 d#3@7 ~", BV: "e3@4 ~@4 e3@4 ~@4 e3@9 ~@3 c#3@2 d#3@2",
BW: "d#3 ~@3 d#3 ~@3 d#3@4 g#2@18 ~@2", BX: "c#3@4 ~@4 c#3@5 ~@3 c#3@12 f#3@2 e3@2",
BY: "d#3@2 ~@2 d#3 ~@3 d#3 ~@3 d#3@5 ~@3 c#3@3 ~ d#3@6 ~@2", BZ: "e3@5 ~@3 e3@4 ~@4 e3@9 ~@3 c#3@2 d#3@2",
CA: "d#3 ~@3 d#3@2 ~@2 d#3@4 g#2@16 ~@4", CB: "c#3@4 ~@4 c#3@5 ~@3 c#3@9 ~@3 f#3@2 e3@2",
CC: "d#3 ~@3 d#3@3 ~@5 d#3@7 ~ c#3@3 ~ d#3@5 ~@3", CD: "e3@4 ~@4 e3@5 ~@3 e3@11 ~ c#3@2 d#3@2",
CE: "d#3 ~@3 d#3 ~@3 d#3@4 g#2@19 ~", CF: "d#3 ~@3 d#3@2 ~@6 d#3@7 ~ c#3@4 d#3@3 ~@5",
})).s("gm_acoustic_bass").gain(0.52)
// chords · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note(`<
~@30 A B C D E F G H I J K L M@2 ~@22 N B C D E F G H I J G H I J G H I J G H I O G H I J ~@6
>`.pickRestart({
A: "[g#4,b4,e5] ~@3 [g#4,b4,e5] ~@3 [g#4,b4,e5] ~ [g#4,b4,e5] ~@2 [g#4,b4,e5] ~ [g#4,b4,e5] ~@16", // E
B: "[g#4,b4,e5] ~@3 [g#4,b4,e5] ~@3 [g#4,b4,e5]!2 ~@3 [g#4,b4,e5] ~ [g#4,e5] ~@8 [f#4,b4]@5 ~@3, ~@15 b4@2 ~@15", // E C#m B5
C: "[g#4,b4]@7 ~@25", D: "[a#4,c#5]@10 ~@2 [b4,d#5]@15 ~@5", E: "[b4,e5]@7 ~", F: "[c#5,f#5] ~", G: "[g#4,b4]@11 ~@5",
H: "[a#4,c#5]@11 ~ [b4,d#5]@17 ~@3", I: "[b4,e5]@25 ~@7", J: "[c#5,f#5]@13 ~@3", K: "[b4,e5]@13 ~@3",
L: "[a#4,c#5]@12 [b4,d#5]@17 ~@3", M: "[[c#5,f#5,g#5]@11 ~ [c#5,f5,g#5]@15 ~ [b4,e5,g#5]@28 ~@8]/2",
N: "[g#4,b4,e5] ~@3 [g#4,b4,e5] ~@3 [g#4,b4,e5] ~ [g#4,b4,e5] ~@2 [g#4,b4] e5 [g#4,b4,e5] ~@16", // E G#m E
O: "[c#5,f#5]@25 ~@7", // F#5
})).s("gm_synth_brass_1").gain(0.41)
// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
~@7 A B C D E F G H I B J D K F J@2 L B J D K F J@2 L M ~ N O P ~ Q R S ~@3 B J D K F J@2 L B J D K F J@2 L B J D K F
J@2 L T ~ U V W ~ X Y Z ~ AA Y AB ~ AA AC AA ~ AA Y AB ~ AD AE AA ~ AA Y ~@2
>`.pickRestart({
A: "~@16 [g#4,b4,f#5]@5 ~@3 [g#4,b4,e5]@6 ~@2", B: "~@4 [d#4,f#4,b4] ~@5 [d#4,f#4,b4] ~@5 [d#4,f#4,b4] ~@15",
C: "~@4 [e4,g#4,b4] ~@5 [e4,g#4,b4] ~@5 [e4,g#4,b4] ~@3 [e4,g#4,b4] ~@11", // E
D: "~@4 [c#4,f#4,a#4] ~@5 [c#4,f#4,a#4] ~@5 [c#4,f#4,a#4] ~@15", // F#
E: "~@4 [d#4,f#4,a#4] ~@5 [d#4,f#4,a#4] ~@5 [d#4,f#4,g#4,a#4] ~@15", // D#m
F: "~@4 [d#4,g#4,b4] ~@5 [d#4,g#4,b4] ~@5 [d#4,g#4,b4] ~@15", // G#m
G: "[e4,g#4]@3 ~@3 [e4,g#4] ~@5 [e4,g#4] ~@19, b3@5 ~@27", // E
H: "~@4 [b3,e4,g#4] ~@5 [b3,e4,g#4] ~@5 [b3,e4,g#4] ~ [b3,e4,g#4] ~@13", // E
I: "~@4 [b3,e4,g#4] ~@5 [b3,e4,g#4] ~@9 [b3,e4,g#4] ~ [b3,e4,g#4] ~@9", // E
J: "~@4 [e4,g#4,b4] ~@5 [e4,g#4,b4] ~@5 [e4,g#4,b4] ~@15", // E
K: "~@4 [d#4,f#4,a#4] ~@5 [d#4,f#4,a#4] ~@5 [d#4,f#4,a#4] ~@15", // D#m
L: "~@4 [e4,g#4,b4] ~@5 [e4,g#4,b4] ~@5 [e4,g#4,b4] ~ [e4,g#4,b4] ~@13", // E
M: "~@4 g#4 ~@3 f#4@2 ~@10 g#4 ~ f#4@2 ~@4 f#4 ~ f#4 ~", N: "~@4 g#4 ~@3 f#4 ~@11 g#4 ~ f#4 ~@5 f#4 ~ f#4 ~",
O: "~@12 f#4 ~ g#4 ~ f#4 ~@15", P: "~@4 g#4 ~@3 f#4 ~@11 g#4 ~ g#4 ~@5 f#4 ~ g#4 ~",
Q: "~@4 g#4 ~@3 f#4@2 ~@10 g#4 ~ f#4 ~@5 f#4 ~ f#4 ~", R: "~@16 f#4 ~ g#4@3 ~@11",
S: "~@4 g#4 ~@3 f#4@2 ~@10 g#4 ~@3 g#4 ~@3 f#4 ~ g#4 ~", T: "~@4 g#4 ~@3 f#4@3 ~@9 g#4 ~@3 g#4@2 ~@2 f#4 ~ f#4 ~",
U: "~@4 g#4 ~@3 f#4@3 ~@5 g#4 ~@3 g#4 ~@3 g#4@2 ~@2 f#4 ~ f#4 ~", V: "~@14 d#4 ~ f#4 ~ g#4@5 ~@9",
W: "~@4 g#4 ~@3 f#4@3 ~@7 g#4 ~@5 g#4@3 ~ f#4 ~ f#4 ~", X: "~@4 g#4@2 ~@2 f#4@4 ~@8 g#4 ~@3 g#4@3 ~ f#4 ~ f#4 ~",
Y: "~@14 d#4 ~ f#4 ~ g#4@4 ~@10", Z: "~@4 g#4 ~@3 f#4@4 ~@6 g#4@3 ~@3 g#4@3 ~ f#4 ~ f#4 ~",
AA: "~@4 g#4 ~@3 f#4@6 ~@6 g#4 ~@3 g#4@3 ~ f#4 ~ f#4 ~", AB: "~@4 g#4 ~@3 f#4@5 ~@7 g#4 ~@3 g#4@3 ~ f#4 ~ f#4 ~",
AC: "~@14 d#4 ~ f#4 ~ g#4@6 ~@8", AD: "~@4 g#4 ~@3 f#4@7 ~@5 g#4 ~@3 g#4@3 ~ f#4 ~ f#4 ~",
AE: "~@14 d#4 ~ f#4 ~ g#4@3 ~@11",
})).s("gm_electric_guitar_muted").gain(0.38)
// chords · epiano2 · "E.PIANO 2"
const epiano2 = note("<A B C D@7 E@8 F@6 G@8 H@8 I@3 J@8 K@3 L@8 M@8 N@8 O@5 P@4 Q@8 R@3>".pickRestart({
A: "[f#4,b4,d#5]@17 ~@11 f#5@4, b3, ~@17 [b4,d#5]@15, ~@11 e5@5", // B
B: "b4@3 [b4,e5,g#5] [b4,e5,g#5]@4, e4, [d#5,f#5] ~", C: "[f#4,a#4,c#5]@4 ~@3 e5, a#3, ~ [f#4,a#4,c#5], ~@11 d#5@5",
D: "[~@8 f#5@8 d#4@8 ~@8 g#4@3 g#4@16 ~@16 c#4@2 ~@16 c#5@16 [e4,g#4,b4]@17 [b4,e5,g#5]@15 [e5,g#5,b5]@16 ~@8 e5@8 [f#4,b4,d#5]@16 ~@11 f#5@5 b4@12 [b4,e5,g#5]@3 ~ [b4,e5,g#5]@11, [d#4,a#4,c#5,g#5]@16 [f#4,a#4,d#5]@19 f#4@24 f#4@12 ~@30 f#4@32 ~@16 [g#4,b4,f#5]@16 ~@16 [f#4,b4,d#5]@16 ~@27, ~@24 [d#4,c#5]@11 d#4@36 ~@153, ~@32 b4@35 [e4,b4]@34 ~@86 e5@10 [d#5,f#5]@15 ~@12, ~@51 g#4@18 [c#4,g#4]@32 ~@123]/7", // E B E D#sus4 D#m G#m7 B D#7 …
E: "[~@5 [f#4,a#4,c#5]@16 ~@12 e5@4 ~@8 f#5@8 ~@8 c#5@8 [d#4,f#4,g#4,b4]@31 ~ b4@32 ~@28 e6@35 ~ [f#4,b4,d#5]@15 ~@13 f#5@4 [b4,d#5,f#5]@12 [b4,e5,g#5] ~@3 [b4,e5,g#5]@11, ~@21 [f#4,a#4,c#5]@16 [a#4,c#5,g#5]@16 [f#4,a#4,d#5]@16 ~@32 [c#4,e4,g#4]@52 b5@43 ~@60, ~@27 d#5@10 ~@96 b4@63 ~@17 [f#4,b4,d#5]@16 ~@27, ~@137 e5@59 ~@23 e5@10 ~@27, ~@73 g#5@25 ~@30]/8", // F# G#m7 B E F# A#m7 D#m C#m …
F: "[~@5 [f#4,a#4,c#5]@15 ~@9 d#5@7 ~@9 f#5@8 ~@8 c#5@7 ~ [d#4,f#4,g#4,b4]@32 [c#4,e4,g#4,b4]@31 ~@33 b5@16 [e5,g#5,b5]@11, ~@21 [f#4,a#4,c#5]@15 ~ [a#4,c#5,g#5]@16 [f#4,a#4,d#5]@15 ~@65 [e4,g#4,b4]@48 ~@11, ~@154 e5@27 ~@11]/6", // F# G#m7 C#m7 E F# A#m7 D#m E
G: "[~@5 [f#4,b4,d#5]@15 ~@12 f#5@5 b4@12 [b4,e5,g#5]@3 ~ [b4,e5,g#5]@16 [f#4,a#4,c#5]@15 ~@12 e5@5 ~@8 f#5@8 ~@8 c#5@8 [d#4,f#4,g#4,b4]@32 [c#4,e4,g#4,b4]@31 ~ [g#4,b4]@20 [g#4,b4,e5]@12 [e5,g#5,b5]@27, ~@21 [f#4,b4,d#5]@16 ~@48 [f#4,a#4,c#5]@16 [a#4,c#5,g#5]@16 [f#4,a#4,d#5]@16 ~@64 e4@33 ~@26, ~@27 e5@10 [d#5,f#5]@15 ~@38 d#5@11 ~@155]/8", // B E F# G#m7 C#m7 G#m E B …
H: "[~@5 [d#4,g#4,b4]@32 [c#4,f#4,a#4]@12 [d#4,g#4,b4]@20 [e4,g#4,b4]@16 [b4,e5,g#5,b5]@16 [c#4,f#4,a#4]@32 [d#4,g#4,b4]@32 [c#4,f#4,a#4]@12 [d#4,g#4,b4]@20 [e4,g#4,b4]@16 [b4,e5,g#5,b5]@16 [c#4,f#4,a#4]@27]/8", // G#m F# G#m E F# G#m F# G#m …
I: "[~@5 [d#4,g#4,b4]@16 [d#5,g#5,b5]@15 ~ [c#4,f#4,a#4]@12 [d#4,g#4,b4]@20 [c#4,f#4,g#4]@12 [c#4,f4,g#4]@15]/3", // G#m F# G#m C#sus4 C#
J: "[~@37 [f#4,b4,d#5]@16 ~@12 f#5@4 b4@12 [b4,e5,g#5]@4 [b4,e5,g#5]@16 [f#4,a#4,c#5]@16 ~@8 d#5@8 ~@8 f#5@8 ~@8 c#5@8 [d#4,f#4,g#4,b4]@32 [c#4,e4,g#4,b4]@32 [e4,g#4,b4]@16 [e5,g#5,b5]@11, ~ [b3,e4,g#4]@52 [f#4,b4,d#5]@16 ~@48 [f#4,a#4,c#5]@17 ~@15 [f#4,a#4,d#5]@16 ~@91, ~@59 e5@10 [d#5,f#5]@16 ~@48 [a#4,c#5,g#5]@17 ~@106]/8", // B E F# G#m7 C#m7 E B F# …
K: "[~@5 [b5,e6,g#6]@32 [f#4,b4,d#5]@16 ~@11 f#5@5 b4@12 [b4,e5,g#5]@4 [b4,e5,g#5]@11, ~@53 [f#4,b4,d#5]@16 ~@27, ~@59 e5@10 [d#5,f#5]@16 ~@11]/3", // E B E B D#m
L: "[~@5 [f#4,a#4,c#5]@16 ~@8 d#5@8 ~@8 f#5@8 ~@8 c#5@8 [d#4,f#4,g#4,b4]@32 [c#4,e4,g#4,b4]@32 ~@48 g#6@16 [f#4,b4,d#5]@16 ~@11 f#5@5 b4@12 [b4,e5,g#5]@4 [b4,e5,g#5]@11, ~@21 [f#4,a#4,c#5]@16 [a#4,c#5,g#5]@16 [f#4,a#4,d#5]@16 ~@64 [e4,g#4,b4]@63 ~@17 [f#4,b4,d#5]@16 ~@27, ~@153 e5@43 ~@23 e5@10 [d#5,f#5]@16 ~@11, ~@161 b5@35 ~@60]/8", // F# G#m7 C#m7 B E F# A#m7 D#m …
M: "[~@5 [f#4,a#4,c#5]@16 ~@8 d#5@8 ~@8 f#5@8 ~@8 c#5@8 [d#4,f#4,g#4,b4]@32 [c#4,e4,g#4,b4]@16 [b4,e5,g#5]@16 [g#4,b4]@24 [g#4,b4,e5]@8 ~@24 [c#4,f#4,a#4]@8 [d#4,g#4,b4]@32 [c#4,f#4,a#4]@12 [d#4,g#4,b4]@15, ~@21 [f#4,a#4,c#5]@16 [a#4,c#5,g#5]@16 [f#4,a#4,d#5]@16 ~@64 e4@32 [e5,g#5,b5]@32 ~@59]/8", // F# G#m7 C#m7 E G#m E F# G#m …
N: "[~@5 [e4,g#4,b4]@32 [c#4,f#4,a#4]@32 [d#4,g#4,b4]@32 [c#4,f#4,a#4]@12 [d#4,g#4,b4]@20 [e4,g#4,b4]@32 [c#4,f#4,a#4]@32 [d#4,g#4,b4]@32 [c#4,f#4,a#4]@12 [d#4,g#4,b4]@15]/8", // E F# G#m F# G#m E F# G#m …
O: "[~@5 [e4,g#4,b4]@32 [c#4,f#4,a#4]@32 [d#4,g#4,b4]@32 [c#4,f#4,a#4]@12 [d#4,g#4,b4]@20 [e4,g#4,b4]@27]/5", // E F# G#m F# G#m E
P: "[~@5 [c#4,f#4,a#4]@32 [d#4,g#4,b4]@32 [c#4,f#4,a#4]@12 [d#4,g#4,b4]@20 [e4,g#4,b4]@27]/4", // F# G#m F# G#m E
Q: "[~@5 [c#4,f#4,a#4]@32 [d#4,g#4,b4]@32 [c#4,f#4,a#4]@12 [d#4,g#4,b4]@20 [e4,g#4,b4]@32 [c#4,f#4,a#4]@32 [d#4,g#4,b4]@32 [c#4,f#4,a#4]@12 [d#4,g#4,b4]@20 [e4,g#4,b4]@27]/8", // F# G#m F# G#m E F# G#m F# …
R: "[~@5 [c#4,f#4,a#4]@64 ~@27]/3", // F#
})).s("gm_epiano2").gain(0.47)
// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@8 A B@8 C@2 D@6 E@7 ~@12 F G@8 H I@7 J@7 ~@30>".pickRestart({
A: "~@31 [g#4,b4,e5]", // E
B: "[~@31 c#5@32 ~@64 [e5,g#5]@32 ~@32 e5@32 [f#4,d#5]@32 [g#4,e5], ~@31 f#4@97 ~@31 g#4@64 ~@33, ~@31 a#4@64 b4@161, ~@63 d#5@64 ~@129]/8", // E D#m C#m
C: "[~@31 [f#4,a#4,c#5]@33]/2", // F#
D: "[~@63 [e5,g#5]@32 ~@32 e5@32 [f#4,d#5]@32 [g#4,e5], d#5@64 ~@31 g#4@64 ~@33, ~@31 b4@161]/6", // E D#m C#m
E: "[~@31 c#5@32 ~@64 g#5@32 g#4@64 ~, ~@31 f#4@96 ~@97, ~@31 a#4@64 b4@127 ~@2, ~@63 d#5@64 e5@96 ~]/7",
F: "[f#4,b4,d#5]@31 [g#4,e5]", // B C#m
G: "[~@127 [e5,g#5]@32 ~@32 e5@32 [f#4,d#5]@32 [g#4,e5], ~@30 a#4@65 b4@161, ~@30 c#5@33 ~ d#5@64 ~@128, ~@31 f#4@98 ~@30 g#4@63 ~@34]/8", // E D#m C#m
H: "~@31 c#5",
I: "[~@95 [e5,g#5]@33 ~@31 e5@31 ~ [f#4,d#5]@32 [g#4,e5], f#4@97 ~@31 g#4@63 ~@33, a#4@9 b4@23, ~@31 d#5@64 ~@129]/7", // E D#m C#m
J: "[~@31 c#5@32 ~@64 g#5@33 g#4@64, ~@31 f#4@96 ~@97, ~@31 a#4@64 b4@128 ~, ~@63 d#5@64 e5@96 ~]/7",
})).s("gm_string_ensemble_1").gain(0.2)
// other · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
~@14 A B ~@5 C@2 D E F@6 G@3 H@2 I@3 J K@2 L@2 ~@5 M@2 N ~@5 O@3 P@8 Q@4 R S@3 T@5 U@3 V@4 W X Y@2 Z@2 AA AB ~@2
>`.pickRestart({
A: "[e5,e6]@23 ~@2 [c#5,c#6]@2 [b4,b5]@2 [c#5,c#6]@2 ~, ~@23 d#5@2 ~@7, ~@12 d#6 ~@3", // E C# B C#
B: "[d#5,d#6]@7 [b4,b5]@8 [g#4,g#5]@8 [e4,e5]@8 ~", // D# B G# E
C: "[~@31 [e5,e6]@25 [d#5,d#6]@2 [c#5,c#6]@2 [b4,b5]@2 [c#5,c#6]@2]/2", // E D# C# B C#
D: "[d#5,d#6]@8 [b4,b5]@7 [g#4,g#5]@8 ~ [e4,e5]@8", E: "[b3,b4]@12 [f#4,f#5]@4 [b4,b5]@5 [a#4,a#5]@6 ~ [g#4,g#5]@4",
F: "[[f#4,f#5]@16 [g#4,g#5]@47 [c#5,c#6]@21 [a#4,a#5]@4 [g#4,g#5]@4 [f#4,f#5]@3 [f#4,f#5]@4 ~ [b4,b5]@4 [g#4,g#5]@3 [f#4,f#5]@8 ~ [d#5,d#6]@3 [c#5,c#6]@4 [e4,e5]@9 f#4@8 g#4@3 b3@15 ~ [e4,e5]@2 [f#4,f#5]@2 [g#4,g#5]@2 ~@3 [f#4,f#5]@2 [g#4,g#5]@2 [a#4,a#5]@3 ~ [g#4,g#5]@2 ~ [b4,b5]@2 ~@4 [b4,b5]@2 [c#5,c#6]@2 ~@3, ~@89 [a#4,a#5] ~@2 [a#4,a#5] ~@3]/6", // F# G# C# A# G# F# B G# …
G: "[~ [c#5,c#6]@2 [d#5,d#6]@3 ~ [c#5,c#6]@2 [d#5,d#6]@2 [e5,e6]@2 ~@4 [e5,e6]@2 [f#5,f#6]@12 [d#5,d#6]@25 [b4,b5]@2 [c#5,c#6]@2 ~ [e5,e6]@2 [f#5,f#6]@32 ~, [b4,b5] ~@7 [d#5,d#6] ~@21 [d#5,d#6] ~@17]/3", // C# D# C# D# E F# D# B …
H: "[[g#5,g#6]@24 ~ [e5,e6]@2 [d#5,d#6] ~@2 [d#5,d#6] [c#5,c#6]@9 [a#5,a#6]@7 ~ [f#5,f#6]@15 ~, ~@24 [f#5,f#6]@2 ~@3 [e5,e6]@2 ~@33]/2", // G# E D# C# A# F# E
I: "[[f#5,f#6]@20 ~@4 [g#5,g#6]@2 [f#5,f#6]@2 ~ [d#5,d#6]@2 ~ c#5@16 [f#5,f#6]@8 [b4,b5]@7 [g#5,g#6]@25 [b4,b5]@8, ~@28 [e5,e6]@2 ~ c#6@16 ~@49]/3", // F# G# F# D# F# B G# B …
J: "[a#5,a#6]@31 ~", // A#
K: "[[b5,b6]@17 [a#5,a#6]@3 ~ [a#5,a#6]@2 [g#5,g#6]@2 [f#5,f#6]@2 [e5,e6]@2 [d#5,d#6]@2 [c#5,c#6]@31 ~@2, ~@10 [b5,b6] ~@21]/2", // B A# G# F# E D# C# B
L: "[[f#5,f#6]@11 [f5,f6]@11 ~@5 [e5,e6]@24 ~@6 [c#4,c#5]@2 ~@2 [e4,e5]@2 ~, ~@28 [b3,b4] ~ [d#4,d#5] ~]/2", // F# F E C# E B D#
M: "[~@16 e5@12 [d#5,d#6] [c#5,c#6] [b4,b5] [c#5,c#6], ~@31 e6@25 ~@8]/2", // D# C# B C#
N: "[d#5,d#6]@7 [b4,b5]@8 ~ [g#4,g#5]@7 ~ e4@8, ~@23 e5@8 ~", // D# B G#
O: "[~@16 [d#4,d#5]@15 [e4,e5]@24 ~@2 [c#4,c#5]@2 [b3,b4]@2 [c#4,c#5]@2 [d#4,d#5]@8 [b3,b4]@8 [g#3,g#4]@9 [e3,e4]@8, ~@28 [d#4,d#5] ~@19]/3", // D# E C# B C# D# B G# …
P: "[[d#3,d#4]@11 [f#3,f#4]@4 ~ [b3,b4]@4 [a#3,a#4]@7 [g#3,g#4]@4 [f#3,f#4]@16 [g#3,g#4]@48 [c#4,c#5]@21 [a#3,a#4]@4 [g#3,g#4]@4 [f#3,f#4]@3 [f#3,f#4]@4 ~ [b3,b4]@4 [g#3,g#4]@4 [f#3,f#4]@8 [d#4,d#5]@3 [c#4,c#5]@4 [e3,e4]@8 [f#3,f#4]@4 [g#3,g#4]@4 [b2,b3]@13 ~@7 [e3,e4]@2 [f#3,f#4]@3 [g#3,g#4]@2 ~@2 [f#3,f#4]@2 [g#3,g#4]@2 [a#3,a#4]@2 ~@3 [a#3,a#4]@2 [b3,b4]@2 ~@4 [b3,b4]@2 [c#4,c#5]@2 ~@2 [b3,b4]@2 [c#4,c#5]@2 ~ [d#4,d#5]@2 ~@3 [d#4,d#5]@2 ~ [e4,e5]@2 ~@2 [d#4,d#5]@2 ~ [f#4,f#5]@12 ~, ~@104 [g#3,g#4] ~@3 [a#3,a#4] ~@7 [c#4,c#5] ~@4 [e4,e5] ~@6]/8", // D# F# B A# G# F# G# C# …
Q: "[[d#4,d#5]@10 ~@5 [e3,e4]@2 [f#3,f#4]@2 [g#3,g#4]@2 [a#3,a#4]@2 [b3,b4]@2 [c#4,c#5]@2 [d#4,d#5]@2 [e4,e5]@2 [f#4,f#5]@28 ~@4 [g#4,g#5]@25 ~ [e4,e5]@2 ~ [e4,e5]@2 [d#4,d#5] [c#4,c#5]@8 [a#4,a#5]@8 [f#4,f#5]@13 ~@4, ~@88 [f#4,f#5]@2 ~ [d#4,d#5]@2 ~@35]/4", // D# E F# G# A# B C# D# …
R: "[f#4,f#5]@18 ~@7 [f#4,f#5]@2 [e4,e5]@2 [d#4,d#5]@2 ~, ~@12 [g#4,g#5] ~@3", // F# E D# G#
S: "[[c#4,c#5]@15 [f#4,f#5]@8 [b3,b4]@8 [g#4,g#5]@25 [b3,b4]@7 [a#4,a#5]@31 ~@2]/3", // C# F# B G# B A#
T: "[~@11 [e3,e4]@2 [d#3,d#4]@2 [e3,e4]@2 ~ [f#3,f#4]@2 ~ [a#3,a#4]@2 [b3,b4]@2 [c#4,c#5]@2 [d#4,d#5]@2 [e4,e5]@2 [f#4,f#5]@32 [g#4,g#5]@25 ~ [e4,e5] [d#4,d#5]@2 ~ [d#4,d#5]@2 [c#4,c#5]@9 [a#4,a#5]@7 [f#4,f#5]@14 ~@2 [f#4,f#5]@22 ~@3 [g#4,g#5]@2 [f#4,f#5]@2 [e4,e5]@2 [d#4,d#5]@2, ~@10 [g#3,g#4] ~@33 [f#4,f#5] ~ [e4,e5] ~@33]/5", // E D# E F# A# B C# D# …
U: "[[c#4,c#5]@16 [f#4,f#5]@8 [b3,b4]@7 [g#4,g#5]@24 ~ [b3,b4]@7 [a#4,a#5]@29 ~@4]/3", // C# F# B G# B A#
V: "[~@12 [e3,e4]@2 ~ [e3,e4]@2 [f#3,f#4]@2 [g#3,g#4]@2 [a#3,a#4]@2 [b3,b4]@2 [c#4,c#5]@2 [d#4,d#5]@2 [e4,e5]@2 [f#4,f#5]@32 [g#4,g#5]@25 ~@2 [d#4,d#5]@2 ~ [d#4,d#5]@2 [c#4,c#5]@8 [a#4,a#5]@8 [f#4,f#5]@15 ~@2, ~@7 [d#3,d#4] ~@36 [f#4,f#5] ~@19, ~@89 [e4,e5]@2 ~ [e4,e5]@2 ~@34]/4", // E F# G# A# B C# D# E …
W: "[f#4,f#5]@19 ~@5 [g#4,g#5]@2 [f#4,f#5]@2 [e4,e5]@2 [d#4,d#5]@2", X: "[c#4,c#5]@15 [f#4,f#5]@8 [b3,b4]@8 ~",
Y: "[[g#4,g#5]@24 [b3,b4]@7 [a#4,a#5]@32 ~]/2", // G# B A#
Z: "[~@12 [e3,e4]@2 [d#3,d#4]@2 [e3,e4]@2 [f#3,f#4]@2 [g#3,g#4]@2 [a#3,a#4]@2 [b3,b4]@2 [c#4,c#5]@2 [d#4,d#5]@2 ~ [f#4,f#5]@33, ~@15 [e4,e5] ~@16]/2", // E D# E F# G# A# B C# …
AA: "[g#4,g#5]@24 ~ [e4,e5]@2 ~ [f#4,f#5]@2 ~ [d#4,d#5], ~@24 [f#4,f#5]@2 ~ [d#4,d#5]@2 ~ [e4,e5]@2", // G# E F# D# F# D# E
AB: "[c#4,c#5]@7 ~ [a#4,a#5]@8 [f#4,f#5]@12 ~@4", // C# A# F#
})).s("gm_synth_strings_1").gain(0.35)
// drums · kick
const kick = s("bd").struct("<~@7 [~@2 x!2] [x!2]!34 [x ~@2 x ~@3 x] x [x!2]!52 ~@2>").gain(0.64)
// drums · snare
const snare = s("sd").struct("<~@8 A@34 B C A@28 D A@11 E A@11 ~@2>".pickRestart({
A: "~ x ~ x", B: "~@2 x ~@2 x!2 ~", C: "~@4 x ~@3 x ~@2 x!2 ~@3", D: "~@4 x ~@2 x ~@2 x ~ x ~@3",
E: "~@4 x ~@2 x ~@4 x ~@3",
})).gain(0.64)
// drums · low tom
const low_tom = s("lt").struct("<~@43 [~@7 x] ~@54>").gain(0.57)
// drums · hihat
const hihat = s("hh").struct("<~@8 [x!8]!88 ~@2>").gain(0.64)
// drums · open hat
const open_hat = s("oh").struct(`<
~@17 A ~@5 A ~@8 B ~ B ~ B ~ B ~ B ~ C D ~@7 A ~@7 A ~@8 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@3
>`.pickRestart({
A: "~@7 x", B: "~@3 x", C: "x ~@2 x ~@3 x", D: "~ x ~@2",
})).gain(0.64)
// drums · crash
const crash = s("cr").struct("<~@8 A ~@7 A ~@7 A ~@6 B A ~@11 A ~@22 B A ~@7 A ~@7 A ~@7 A ~@5>".pickRestart({
A: "x", B: "~@3 x",
})).gain(0.64)
// drums · tambourine
const tambourine = s("tb").struct("<~@8 A@23 B C@11 D A@23 B C@12 E C@14 F ~@2>".pickRestart({
A: "~ x ~ x", B: "~@2 x ~@2 x!2 ~", C: "x!16", D: "x!5 ~@7 x!3 ~", E: "x!12 ~ x!3", F: "x!15 ~",
})).gain(0.36)
// drums · tambourine · soft notes
// … 14 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.