0:00/0:00
// E Se Domani — Mina
// 66 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 57 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(66/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
const bass = note(`<
~ A B C D E F G H I J K L M N O P@2 Q G R S T U V W X Y Z M AA AB AC AD AE AF AG AH AI AJ AK@2 AL AB AM AN AO AP AQ AR
AS AT AU AV AW AX@2
>`.pickRestart({
A: "g1@4 d2 d#2 e2@4 c2 b1", B: "a1@4 c2 c#2 d2@2 d3@2 d2@2", C: "g1@7 ~ d2@2 d#2@2 e2@8 b1@2 a#1@2",
D: "a1@4 c2@4 e2@4 d2@6 d3@5 ~", E: "g1@9 ~ g1@2 d2@9 ~ d2@2", F: "g1@9 ~ g1@2 d2@10 g2@2",
G: "g1@9 ~ g1@2 d2@8 ~@2 d2@2", H: "g1@4 ~ g1 d2@4 g2 d2", I: "g1@4 ~ g1 g2@3 d2@2 ~", J: "b1@9 ~ b1@2 a#1@9 ~ a#1@2",
K: "a1@9 ~ a1@2 d2@6 ~@2 d2@2 e2@2", L: "a1@9 ~ a1@2 d2@8 ~@2 d2@2", M: "a1@9 ~ a1@2 e2@9 ~ e2@2",
N: "a1@9 ~ a1@2 e2@8 a2@2 e2@2", O: "a1@9 ~ a1@2 e2@8 d2@2 e2@2", P: "a1@9 ~ a1@2 d2@9 ~ d2@2",
Q: "a1@4 a2 a1 d2@4 ~ d2", R: "g1@9 ~ g1@2 a1@4 g1@2 b1@5 ~", S: "d2@4 ~ d2 a1@5 d2", T: "g1@9 ~ g1@2 g2@6 d2@4 g1@2",
U: "c2@5 g1 c2@3 g2 c2 g1", V: "c2@4 d#2 e2 f2@2 c3@2 f2@2", W: "b1@4 d2 d#2 e2@4 c2 e2", X: "a1@4 c2 c#2 d2@3 d3@3",
Y: "g1@8 ~@2 g1@2 d2@7 ~ d2@3 ~", Z: "g1@9 ~ g1@2 e2@4 e3@4 e2@3 ~", AA: "a1@9 ~ a1@2 e2@10 a2@2",
AB: "a1@9 ~ a1@2 e2@8 ~@2 e2@2", AC: "a1@4 ~ a1 e2@4 a2 e2", AD: "a1@4 ~ a1 a2@3 e2@2 ~",
AE: "c#2@9 ~ c#2@2 c2@9 ~ c2@2", AF: "b1@9 ~ b1@2 e2@6 ~@2 e2@2 f#2@2", AG: "b1@9 ~ b1@2 e2@8 ~@2 e2@2",
AH: "b1@9 ~ b1@2 f#2@9 ~ f#2@2", AI: "b1@9 ~ b1@2 f#2@8 b2@2 f#2@2", AJ: "b1@9 ~ b1@2 f#2@8 e2@2 f#2@2",
AK: "b1@9 ~ b1@2 e2@9 ~ e2@2", AL: "b1@4 b2 b1 e2@4 ~ e2", AM: "a1@9 ~ a1@2 b1@4 a1@2 c#2@5 ~",
AN: "e2@4 ~ e2 b1@5 e2", AO: "a1@9 ~ a1@2 a2@6 e2@4 a1@2", AP: "d2@5 a1 d2@3 a2 d2 a1",
AQ: "d2@4 f2 f#2 g2@2 d3@2 g2@2", AR: "c#2@4 e2 f2 f#2@4 d2 f#2", AS: "b1@4 d2 d#2 e2@3 e3@3",
AT: "a1@4 e2 f2 f#2@4 d2 c#2", AU: "b1@4 d2 d#2 e2@2 e3@2 e2@2", AV: "a1@7 ~ e2@2 f2@2 f#2@8 c#2@2 c2@2",
AW: "b1@4 d2@4 f#2@4 e2@6 e3@5 ~", AX: "[a1@61 ~@35]/2",
})).s("gm_acoustic_bass").gain(0.29)
// chords · piano
const piano = note(`<
~ A B C D E F@2 G@2 H@2 I J K L@2 M N O@2 P@4 Q R S T@2 U@2 V@2 W@2 X Y Z AA@2 AB AC AD@2 AE@4 AF AG AH AI AJ AK@2 ~
>`.pickRestart({
A: "f#4@12 ~@8 f#5@3 ~@13 d4@12, [g3,d4,d5,a5]@23 d4@13 ~@12, f#5@20 ~@3 [a3,b3]@25, b4@2 b4 b4@2 ~, ~ f#4 [e3,d5,f#5]@2", // Gsus2 Asus2 D
B: "~@3 [c5,e5,g5,b5] ~@8 [c5,e5]@4 ~@4 c5@4 ~@4 c5@4 ~@8 c5@8, ~@8 [e4,g4]@17 ~@11 e5@12, ~@11 b5@8 b5@5 ~@4 a#5@20, ~ g5 [a3,c4,d4,f#4]@2, ~@16 c6@9 ~@7 f#5@16", // Cmaj7 C Em D7
C: "f#4@12 ~@8 a4@4 ~ d#5 e5@2 g5@2 ~@2 g5@4 ~ a4@2 ~@5 b4@4, [d4,d5,f#5] b3, a4@16 ~@8 d5@3 ~@10 g#4 ~@2 c5@8, ~@6 f#4@6 ~@6 g4 ~@5", // D
D: "~@6 g4@6 [g3,a3,c5,e5,g5,b5]@5 ~ a#5@5 ~, g4@11 ~@23 c5@12 ~@2, ~ [d4,e4]@24 ~@10 [e5,f#5]@11 ~@2", // Cmaj7 Dsus2 Esus2
E: "[g3,d4,b4,d5,g5]@2 d4@3 ~ d5@6, ~@8 [d5,f#5]@15 [f#5,a5]@24 ~, ~@5 f#4@7", // G D F#m
F: "[d4@15 ~@5 g3@4 [g3,d4,a4]@23 ~ [b3,a4]@27 [c5,f#5,d6] [a4,e5] ~@7 [f#4,a4]@12, d5@16 d4@8 ~@23 [d4,e4,f#4]@29 ~@20, ~@15 f#4@4 d5@27 ~@37 [e5,f#5,a5]@13, ~@19 f#4@5 ~@72]/2", // Gsus2 B7 D7 A5 F#m D F#m7
G: "[~@19 f#4@11 e5@2 ~@11 d5@4 ~ [b4,d5,e5]@8 [g4,e5]@20 ~@3 e5@17, b3@32 ~@7 a4@57, f#4@8 d5@20 ~@4 d5@11 ~@33 g4@8 ~@12, [d5,f#5]@8 f#5@24 ~@3 b4@12 ~@9 [b4,d5]@40, ~ a5@7 ~@4 g5@12]/2", // E7 C D Bm
H: "[f#4@16 ~@3 f#4@5 [g#3,d4,g4]@23 ~ [g3,b3,c4]@24 ~@4 [c4,e4,g4,b4] ~@7 [c4,g4,b4]@8 ~@4, d4@24 ~@23 e4@24 ~@12 e4@8 ~@5, a3@15 ~ a3@9 ~@55 d3@5 ~@11]/2", // G Cmaj7
I: "c5 ~ d5 e5@2 ~ a5 ~ [b5,c6] ~@2 g6@2 ~@7 [b4,d5,e5,a5]@27 ~, [d4,e4]@47 ~, ~@5 g5@2 ~@3 e6@2 ~ a6@2 ~ b6@31 ~, ~@14 c7@33 ~", // Cmaj7 Bm7 Dsus2
J: "[a3,c4,e4,a4]@7 ~ c4@20 ~@15 g#4@5, ~@7 f#4@41, ~@7 g#3@18 ~@3 c4@11 c4@9, ~@8 g#4@35 ~@5, ~ e4@3 e4@2", // Am
K: "c4@4 ~@5 c4@3, [e4,g4]", // Em
L: "[~@32 a4@8 ~@9 c6@4 c6@4 ~@15 f#5@24, [c4,e4,f#4]@32 e4@34 a4 c5@2 a5@27, ~@20 a5@28 f#4@9 c6@39, ~@3 f#5@5 f#4@4, ~@7 c5 [c4,f#4]@2 a4 a6@13]/2", // F#m7b5 Cdim
M: "[g3,b3,c4,e4]@24 ~@4 [c4,e4,g4,b4] ~@3 d3 ~@3 [c4,e4,f#4,a4]@12", // Cmaj7 F#m7b5
N: "[c4,e4]@16 ~@3 e4@5 [e4,g4,b4]@8 [c4,e4,f#4,a#4]@16, [g3,b3]@25 ~@23, ~@2 c4 ~@3", // C Em C7 G
O: "[[b3,d4,f#4]@19 ~ d4@4 f#4@8 ~@8 a4@4 a4@3 ~@5 d4@3 a5@5 a5@4 a5@3 ~ b3@7 ~ a4@3 a4@4 ~ f#4@4 ~@4 [d4,a4,d5]@4, e4@67 [g3,d4,f#4,a5]@8 [g3,d4,f#4,a5] b4@8 [b3,d4,a4,d5,f#5]@4 f#4@8, a4@19 f#4 b4@27 d5 a4@7 [d4,f#4]@5 f#6@4 g6@32, ~@19 g3@25 f#5@23 f#6@29, ~@19 a5 b3@4 f#5@8 [a4,d5]@4 f#4@4 e5@56]/2", // Bm D5 D Bm7 D D5
P: "[a4@16 a4@4 a4@4 ~@12 d3@11 ~@37 [g5,g6]@12 [c3,e4]@16 ~@15 g5@14 ~@39 [d4,d#4,g4,a4]@11 ~, [c4,d4,f4]@47 a3@8 ~ d4@16 c#5@25 ~@17 g4@7 e5@20 d#3@11 [d#4,g4,a4]@16 [d#5,g5,a5,d6]@23 ~, d3@36 ~@11 [g2,f3]@50 ~@19 b4@26 d#4@6 ~@4 c5@40, ~@20 f5@28 c#4@31 d5@17 [g3,b3,d4]@46 ~@2 d5@48, ~@24 [a4,c5,e5]@25 ~@15 g4@33 ~@15 e4@7 c5@23 ~ [g4,a4]@5 c#5@44]/4", // G C Dsus4 Dm7 Am7b5 D#maj7 G7 G …
Q: "b3@16 ~@3 a4@4 [e3,a3,b3,d4,f#4]@25, [b2,d4,f#4]@25 ~@23, ~@16 b3@7 ~@25", // Bm7 Bm
R: "c4@12 ~@4 e4@4 g4@4 c4@4 c4@3 ~ [c4,e4,a4]@16, [a2,b3] d3, e4@16 ~@8 [e4,g4,b4]@9 ~@15, ~ [g3,c4] ~@2", // Am Asus2 Em C5
S: "c4@4 ~@12 b3@4 [b3,d4,f#4]@4 b3@9 ~@11 [b3,e4]@4, g2@8 ~@3 d3@5, [d4,f#4]@5 ~ e4@5 ~, ~@3 g3@3 c4@4 c4@2, ~@36 b3@7 ~@5", // Bm E5 D
T: "[~@4 d4@2 [a3,b3,d4,f#4,a4]@3 e4@3 [a3,e4,c#5,e5,a5]@2 e4@3 ~ e5@6, g2@8 e2@11 ~@13, d4@2 ~@5 [e5,g#5]@2 ~@3, ~@9 d3@16 ~@46 [g#5,b5]@24 ~, ~@12 b3@12 e3@4 ~@8 [e3,b3,d4,g#4]@21 ~@11 g#4@28]/2", // Bm7 A E G#m E7
U: "[e4@15 ~@5 a3@4 [a3,e4,b4]@23 ~ [c#4,b4]@27 [d5,g#5,e6] [b4,f#5] ~@7 [g#4,b4]@12, e5@16 e4@8 ~@23 [e4,f#4,g#4]@29 ~@20, ~@15 g#4@4 e5@27 ~@37 [f#5,g#5,b5]@13, ~@19 g#4@5 ~@72]/2", // Asus2 C#7 E7 B5 G#m E G#m7
V: "[~@19 g#4@11 f#5@2 ~@11 e5@4 ~ [c#5,e5,f#5]@8 [a4,f#5]@20 ~@3 f#5@17, c#4@32 ~@7 b4@57, g#4@8 e5@20 ~@4 e5@11 ~@33 a4@8 ~@12, [e5,g#5]@8 g#5@24 ~@3 c#5@12 ~@9 [c#5,e5]@40, ~ b5@7 ~@4 a5@12]/2", // F#7 D E C#m
W: "[g#4@16 ~@3 g#4@5 [a#3,e4,a4]@23 ~ [a3,c#4,d4]@24 ~@4 [d4,f#4,a4,c#5] ~@7 [d4,a4,c#5]@8 ~@4, e4@24 ~@23 f#4@24 ~@12 f#4@8 ~@5, b3@15 ~ b3@9 ~@55 e3@5 ~@11]/2", // A Dmaj7
X: "d5 ~ e5 f#5@2 ~ b5 ~ [c#6,d6] ~@2 a6@2 ~@7 [c#5,e5,f#5,b5]@27 ~, [e4,f#4]@47 ~, ~@5 a5@2 ~@3 f#6@2 ~ b6@2 ~ c#7@31 ~, ~@14 d7@33 ~", // Dmaj7 C#m7 Esus2
Y: "[b3,d4,f#4,b4]@7 ~ d4@20 ~@15 a#4@5, ~@7 g#4@41, ~@7 a#3@18 ~@3 d4@11 d4@9, ~@8 a#4@35 ~@5, ~ f#4@3 f#4@2", // Bm
Z: "d4@4 ~@5 d4@3, [f#4,a4]", // F#m
AA: "[~@32 b4@8 ~@9 d6@4 d6@4 ~@15 g#5@24, [d4,f#4,g#4]@32 f#4@34 b4 d5@2 b5@27, ~@20 b5@28 g#4@9 d6@39, ~@3 g#5@5 g#4@4, ~@7 d5 [d4,g#4]@2 b4 b6@13]/2", // G#m7b5 Ddim
AB: "[a3,c#4,d4,f#4]@24 ~@4 [d4,f#4,a4,c#5] ~@3 e3 ~@3 [d4,f#4,g#4,b4]@12", // Dmaj7 G#m7b5
AC: "[d4,f#4]@16 ~@3 f#4@5 [f#4,a4,c#5]@8 [d4,f#4,g#4,c5]@16, [a3,c#4]@25 ~@23, ~@2 d4 ~@3", // D F#m D7 A
AD: "[[c#4,e4,g#4]@19 ~ e4@4 g#4@8 ~@8 b4@4 b4@3 ~@5 e4@3 b5@5 b5@4 b5@3 ~ c#4@7 ~ b4@3 b4@4 ~ g#4@4 ~@4 [e4,b4,e5]@4, f#4@67 [a3,e4,g#4,b5]@8 [a3,e4,g#4,b5] c#5@8 [c#4,e4,b4,e5,g#5]@4 g#4@8, b4@19 g#4 c#5@27 e5 b4@7 [e4,g#4]@5 g#6@4 a6@32, ~@19 a3@25 g#5@23 g#6@29, ~@19 b5 c#4@4 g#5@8 [b4,e5]@4 g#4@4 f#5@56]/2", // C#m E5 E C#m7 E E5
AE: "[b4@16 b4@4 b4@4 ~@12 e3@11 ~@37 [a5,a6]@12 [d3,f#4]@16 ~@15 a5@14 ~@39 [e4,f4,a4,b4]@11 ~, [d4,e4,g4]@47 b3@8 ~ e4@16 d#5@25 ~@17 a4@7 f#5@20 f3@11 [f4,a4,b4]@16 [f5,a5,b5,e6]@23 ~, e3@36 ~@11 [a2,g3]@50 ~@19 c#5@26 f4@6 ~@4 d5@40, ~@20 g5@28 d#4@31 e5@17 [a3,c#4,e4]@46 ~@2 e5@48, ~@24 [b4,d5,f#5]@25 ~@15 a4@33 ~@15 f#4@7 d5@23 ~ [a4,b4]@5 d#5@44]/4", // A D Esus4 Em7 Bm7b5 Fmaj7 A7 A …
AF: "c#4@16 ~@3 b4@4 [f#3,b3,c#4,e4,g#4]@25, [c#3,e4,g#4]@25 ~@23, ~@16 c#4@7 ~@25", // C#m7 C#m
AG: "d4@12 ~@4 f#4@4 a4@4 d4@4 d4@3 ~ [d4,f#4,b4]@16, [b2,c#4]@24 e3@23 ~, f#4@16 ~@8 [f#4,a4,c#5]@9 ~@15, ~ [a3,d4] ~@2", // Bm Bsus2 F#m D5
AH: "g#4@12 ~@8 g#5@3 ~@13 e4@12, [a3,e4,e5,b5]@23 e4@13 ~@12, g#5@20 ~@3 [b3,c#4]@25, c#5@2 c#5 c#5@2 ~, ~ g#4 [f#3,e5,g#5]@2", // Asus2 Bsus2 C#m
AI: "~@3 [d5,f#5,a5,c#6] ~@8 [d5,f#5]@4 ~@4 d5@4 ~@4 d5@4 ~@8 d5@8, ~@8 [f#4,a4]@17 ~@11 f#5@12, ~@11 c#6@8 c#6@5 ~@4 c6@20, ~ a5 [b3,d4,e4,g#4]@2, ~@16 d6@9 ~@7 g#5@16", // Dmaj7 D F#m E7
AJ: "g#4@12 ~@8 b4@4 ~ f5 f#5@2 a5@2 ~@2 a5@4 ~ b4@2 ~@5 c#5@4, [e4,e5,g#5] c#4, b4@16 ~@8 e5@3 ~@10 a#4 ~@2 d5@8, ~@6 g#4@6 ~@6 a4 ~@5", // E
AK: "[~@6 a4@6 [a3,b3,d5,f#5,a5,c#6]@5 ~ c6@5 ~ [e5,f#5,g#5,b5]@24, a4@11 ~@23 d5@12 c#4@50, ~ [e4,f#4]@24 ~@10 [f#5,g#5]@11 ~ [g#4,c#5]@49]/2", // Dmaj7 E Esus2 F#sus2 C#5
})).s("gm_piano").gain(0.2).pan(0.4)
// chords · piano · soft notes
const piano_soft = note(`<
~ A B C D E F G H I ~ J K L M N O P Q R@2 ~ S T U ~ V W X Y Z AA AB AC ~ AD AE AF AG AH AI AJ AK AL@2 ~ AM AN AO ~ AP
AQ AR AS AT@2 ~
>`.pickRestart({
A: "b3@23 ~@17 b4@8", B: "~@4 e4 ~@11 e5@8 ~@8 c5@7 ~@9, ~ a3@23 ~@24, ~ c4@5 ~@6, ~@4 c5 ~@7",
C: "~@4 a4 ~ [e3,a3,d4]@6, g3@23 g3@25, ~ b3@23 ~@24", D: "~@15 a4@9 [d3,c4]@10 ~ a#3@11 ~@2, [a3,c4]@12 ~@5 d3@6 ~",
E: "~ [a4,b4], ~ g3@5, ~ [a4,b4]@2 ~@3, ~@2 f#4@3 d4@7, ~@7 b3@17", // Asus2
F: "~@25 b4@22 ~, b4@25 ~@23, g3@19 ~@5 f#4@22 ~@2, ~@3 b3@44 ~", G: "~@27 d4 f#4 ~@14 b4@4 ~, ~@3 [d4,c5]",
H: "a4@7 a4@21 ~ d#5@3 ~@16, b4@2 ~, ~@7 d5 ~@4", I: "~@3 g4", J: "~@6 d3 ~@5", K: "~@9 d6 ~@38, [a3,c4,g4]@47 ~",
L: "f#4@6 ~@19 g#3@23", M: "~@4 c4@5 ~@3", N: "~@4 c5@3 ~@5", O: "c4@47 ~, a4@17 ~@31", P: "~@24 d3 ~@23",
Q: "~@3 c4 ~@2", R: "[~@28 a4@4 ~@16 f#4@4 ~ b3@15 ~@8 b3@8 ~@12, ~@25 d4@27 f#4@3 ~@41]/2", S: "~ a3@5",
T: "~@14 b5@9 ~, ~@14 c4@31 ~@3, ~@8 c3@15 ~", U: "~@4 [d#4,g4,a4]@4 ~@28 [g3,a3]@11 ~",
V: "~@20 e4@4 ~@5 a#4@4 ~@15", W: "~@9 d3@16 ~@23", X: "b3 ~@3",
Y: "~ [b4,c#5], ~ a3@5, ~ [b4,c#5]@2 ~@3, ~@2 g#4@3 e4@7, ~@7 c#4@17", // Bsus2
Z: "~@25 c#5@22 ~, c#5@25 ~@23, a3@19 ~@5 g#4@22 ~@2, ~@3 c#4@44 ~", AA: "~@27 e4 g#4 ~@14 c#5@4 ~, ~@3 [e4,d5]",
AB: "b4@7 b4@21 ~ f5@3 ~@16, c#5@2 ~, ~@7 e5 ~@4", AC: "~@3 a4", AD: "~@6 e3 ~@5", AE: "~@9 e6 ~@38, [b3,d4,a4]@47 ~",
AF: "g#4@6 ~@19 a#3@23", AG: "~@4 d4@5 ~@3", AH: "~@4 d5@3 ~@5", AI: "d4@47 ~, b4@17 ~@31", AJ: "~@24 e3 ~@23",
AK: "~@3 d4 ~@2", AL: "[~@28 b4@4 ~@16 g#4@4 ~ c#4@15 ~@8 c#4@8 ~@12, ~@25 e4@27 g#4@3 ~@41]/2", AM: "~ b3@5",
AN: "~@14 c#6@9 ~, ~@14 d4@31 ~@3, ~@8 d3@15 ~", AO: "~@4 [f4,a4,b4]@4 ~@28 [a3,b3]@11 ~",
AP: "~@20 f#4@4 ~@5 c5@4 ~@15", AQ: "c#4@23 ~@17 c#5@8",
AR: "~@4 f#4 ~@11 f#5@8 ~@8 d5@7 ~@9, ~ b3@23 ~@24, ~ d4@5 ~@6, ~@4 d5 ~@7",
AS: "~@4 b4 ~ [f#3,b3,e4]@6, a3@23 a3@25, ~ c#4@23 ~@24", // Esus2
AT: "[~@15 b4@9 [e3,d4]@10 ~ c4@11 ~@2 e4@48, [b3,d4]@12 ~@5 e3@6 a3@25]/2", // E7 Bm
})).s("gm_piano").gain(0.14).pan(0.4)
// other · vibraphone
const vibraphone = note("<~@4 A B C@2 A D E F G H@2 I J K L@3 M N O P Q R S ~@16 T U V W X Y Z AA ~@5>".pickRestart({
A: "~@35 g4@3 ~@2 g4@2 ~@2 g4@2 ~@2", B: "g4@8 f#4@27 ~ g4@3 ~ g4@2 ~@2 g4@2 ~@2",
C: "[g4@7 e4@27 ~ b3@2 ~ b3 ~@2 b3 ~@2 b3@3 f#4@25 ~@24]/2", D: "g4@7 e4@27 ~ f#4@4 ~ f#4@2 ~@2 f#4@2 ~@2",
E: "f#4@7 d4@24 b3@6 ~@3 b3@2 ~@2 b3@4", F: "d4@7 ~", G: "~@32 a4@6 ~ a4@2 ~@2 a4@2 ~@3",
H: "[a4@7 g#4@23 ~ b4@7 ~ b4@2 ~@2 b4@2 ~@2 b4@8 g4@20 ~@4 c4@8 ~ e4@4 e4@3 ~]/2", I: "e4",
J: "~@31 a3@8 b3@4 ~ c4@4", K: "d4@3 ~ d4@11 ~ e4@4 f#4@2 e4@2",
L: "[d4@7 ~ d4@25 ~@2 d4@5 e4@4 f#4@8 b4@62 ~@14 b4@5 ~@3 b4@2 ~@2 b4@2 ~@2]/3",
M: "b4@8 a4@21 ~@2 d4@5 e4@2 d4@3 c#4@2 ~ d4@4", N: "f4@22 ~@9 b4@6 ~@3 b4@2 ~@2 b4@2 ~@2",
O: "b4@8 g4@23 e4@8 g4@3 ~ g4@3 ~@2", P: "g4@30 ~ a4@7 ~ a4@2 ~@2 a4@2 ~@3",
Q: "a4@7 f#4@23 ~@2 g4@6 ~ g4@2 ~@3 g4@2 ~@2", R: "g4@8 e4@16 f#4@7 ~ f#4@6 ~@2 f#4@8", S: "g4@43 ~@5",
T: "~@32 c#5@5 ~@3 c#5@2 ~@2 c#5@2 ~@2", U: "c#5@8 b4@21 ~@2 e4@5 f#4@2 e4@3 d#4@2 ~ e4@4",
V: "g4@22 ~@9 c#5@6 ~@3 c#5@2 ~@2 c#5@2 ~@2", W: "c#5@8 a4@23 f#4@8 a4@3 ~ a4@3 ~@2",
X: "a4@30 ~ b4@7 ~ b4@2 ~@2 b4@2 ~@3", Y: "b4@7 g#4@23 ~@2 a4@6 ~ a4@2 ~@3 a4@2 ~@2",
Z: "a4@8 f#4@16 g#4@7 ~ g#4@6 ~@2 g#4@8", AA: "a4@43 ~@5",
})).s("gm_vibraphone").gain(0.37)
// other · string ensemble 2
const string_ensemble_2 = note("<~@18 A@3 B@5 C D E@2 ~@12 F@3 G@5 H@5 ~@2>".pickRestart({
A: "[~@47 d4@23 ~ e4@24 f#4@12 g4@12 a4@13 b4@12, ~@47 [f#3,a3]@97]/3", // F#m
B: "[c5@45 ~@2 c#5@8 d5@16 a5@11 d6@13 e6@47 d#6@25 d6@12 c6@12 d6@28 b5@4 g5@5 d5@12]/5", C: "e5@23 f#5@25",
D: "g5 a5", E: "[b5@20 d6@2 ~ e6@72 ~, ~@11 d#6 ~@36]/2",
F: "[~@47 e4@23 ~ f#4@24 g#4@12 a4@12 b4@13 c#5@12, ~@47 [g#3,b3]@97]/3", // G#m
G: "[d5@45 ~@2 d#5@8 e5@16 b5@11 e6@13 f#6@47 f6@25 e6@12 d6@12 e6@28 c#6@4 a5@5 e5@12]/5",
H: "[f#5@23 g#5@24 a5@71 ~@14 e5@11 e6@67 ~@30]/5",
})).s("gm_string_ensemble_2").gain(0.27).pan(0.6)
// chords · pad warm
const pad_warm = note("<~@5 A@4 B C D E@4 F@8 G@5 H@4 I J K L@4 M@8 N@8 ~>".pickRestart({
A: "[~@8 f#4@40 ~@46 a4@49 g3@46 ~@3, [b3,d4]@63 ~, ~@55 e4@88 ~@49]/4", B: "~@8 e4@39 ~, [b3,d4]",
C: "f#4@22 ~ [g#3,g4]@22 ~@3", D: "[c4,e4]@23 ~@24 [e4,g4]",
E: "[~@23 [e4,b4]@20 ~@5 a4@7 g#4@39 ~@49 [c4,e4]@49, ~@47 [c4,e4]@95 ~@50]/4", // E5 C
F: "[~@47 a4@22 ~@2 b4@22 ~@74 g4@13 a4@9 ~@2 [f#4,b4]@47 ~ [a3,c4]@47 ~ f3@48 [b3,c4,e4]@44 ~@4 a#3, ~@47 [c4,e4]@92 ~@4 d4@95 ~@49 c#4@23 ~@74, ~@70 f#4@35 ~@38 f#4@24 ~@72 f4@41 ~@104, ~@144 b3@94 ~@49 a3@41 ~@56]/8", // B5 Am Cmaj7 C
G: "[d4@24 c4@20 ~@3 [a3,f#4]@24 g4@24 [c4,e4]@24 ~@49 c4@22 ~ b3@23 ~ [f#4,a4]@10 ~@2 g#4@12 ~, ~@47 d4@49 ~@23 d4@50 ~@21 d4@19 ~@31, ~@71 b3@60 a3@60 ~@24 [b3,d4]@24 ~]/5", // D C F#m Bm
H: "[~@8 g#4@40 ~@46 b4@49 a3@46 ~@3, [c#4,e4]@63 ~, ~@55 f#4@88 ~@49]/4", I: "~@8 f#4@39 ~, [c#4,e4]",
J: "g#4@22 ~ [a#3,a4]@22 ~@3", K: "[d4,f#4]@23 ~@24 [f#4,a4]",
L: "[~@23 [f#4,c#5]@20 ~@5 b4@7 a#4@39 ~@49 [d4,f#4]@49, ~@47 [d4,f#4]@95 ~@50]/4", // F#5 D
M: "[~@47 b4@22 ~@2 c#5@22 ~@74 a4@13 b4@9 ~@2 [g#4,c#5]@47 ~ [b3,d4]@47 ~ g3@48 [c#4,d4,f#4]@44 ~@4 c4, ~@47 [d4,f#4]@92 ~@4 e4@95 ~@49 d#4@23 ~@74, ~@70 g#4@35 ~@38 g#4@24 ~@72 g4@41 ~@104, ~@144 c#4@94 ~@49 b3@41 ~@56]/8", // C#5 Bm Dmaj7 D
N: "[e4@24 d4@20 ~@3 [b3,g#4]@24 a4@24 [d4,f#4]@24 ~@12 b3@12 [b3,e4]@47 ~@2 [f#3,e4]@40 ~@7 b3@20 ~@2 b3 ~ f#3@22 ~@2 [a3,b3]@23 ~ e4@13 ~@12 f#4@48, ~@47 e4@49 ~@23 e4@24 ~@192 [e4,b4]@49, ~@71 c#4@62 ~@10 a3@27 ~@21 a3@40 ~@8 [a3,e4]@47 ~ f#3@19 ~@78]/8", // E D E5 F#7 Asus2 E5 A5
})).s("gm_pad_warm").gain(0.21)
// chords · pad warm · soft notes
const pad_warm_soft = note(`<
~@6 A@2 ~@2 B@4 C@3 D@2 ~@4 E@2 ~ F@2 ~@2 G@2 ~@2 H@4 I@3 J@2 ~@4 K@2 ~@2 L M ~ N@2 ~
>`.pickRestart({
A: "[~@23 f#4@25]/2",
B: "[~@5 d4@39 ~@3 b3@10 ~@14 d4@19 ~@29 f#4@20 ~@4 f#4@48 ~, ~@59 a3@50 ~@83, ~@95 c4@45 ~@52]/4",
C: "[~@47 [f#3,a3]@86 ~@11]/3", D: "[~@71 f#4@19 ~@6, ~@47 a4@44 ~@5]/2", E: "[~@47 d#4@27 ~@22, ~@43 g3@49 ~@4]/2",
F: "[~@46 b3@25 ~@25]/2", G: "[~@23 g#4@25]/2",
H: "[~@5 e4@39 ~@3 c#4@10 ~@14 e4@19 ~@29 g#4@20 ~@4 g#4@48 ~, ~@59 b3@50 ~@83, ~@95 d4@45 ~@52]/4",
I: "[~@47 [g#3,b3]@86 ~@11]/3", J: "[~@71 g#4@19 ~@6, ~@47 b4@44 ~@5]/2", K: "[~@47 f4@27 ~@22, ~@43 a3@49 ~@4]/2",
L: "~@28 a3@17 ~@3", M: "~@22 b3@17 ~@9", N: "[~@26 b3@10 ~@11 c#4@49]/2",
})).s("gm_pad_warm").gain(0.07)
// drums · kick
const kick = s("bd").struct(`<
~ A@3 B C D E F@2 G H I J K L F M C N O P Q R L A@3 S C D E F@2 G H I J K L F M C N O P Q R L A@5 B ~@2
>`.pickRestart({
A: "x ~@4 x!2 ~@5", B: "x ~@4 x!2 ~@2 x ~@2", C: "x ~@10 x", D: "x ~@6 x ~@4", E: "x ~ x", F: "~@5 x!2 ~@5",
G: "~ x ~", H: "~@5 x ~@5 x", I: "~@11 x ~@4 x ~@7", J: "~ x", K: "~@5 x ~@6", L: "~@2 x ~@2 x", M: "x", N: "~@11 x",
O: "~@4 x ~@2 x ~@2 x ~", P: "~@5 x ~ x ~@4", Q: "~@11 x!2 ~@11", R: "~@5 x!2 ~@3 x ~", S: "x!2 ~",
})).gain(0.28)
// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@11 A ~ B ~@3 C B ~@8 A ~@7 A ~ B ~@3 C B ~@14>".pickRestart({
A: "~@5 x", B: "~@5 x ~@6", C: "~@11 x",
})).gain(0.14)
// drums · snare
const snare = s("sd").struct(`<
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 C E F G H I J K L M N O P Q R S T U V W X Y Z B C D ~@3
>`.pickRestart({
A: "~ x!2 ~", B: "x", C: "~ x ~@2", D: "x ~@17 x!3 ~@3", E: "~@3 x ~ x ~@2 x ~@2 x",
F: "x ~@5 x ~ x ~ x ~@3 x ~@6 x ~@2", G: "x ~@2 x ~ x!2 ~@2 x!2 ~", H: "x ~@2 x ~ x ~@2 x ~ x!2",
I: "x ~@3 x!3 ~ x!2 ~ x", J: "x ~@2 x!4 ~ x ~@2 x", K: "x ~@2 x ~ x ~ x!3 ~@2", L: "~ x!3 ~@3 x ~ x ~@2",
M: "~@6 x ~@7 x!3 ~@3 x ~@3", N: "~@3 x ~ x!2 ~@2 x!2 ~", O: "x ~@3 x!2 ~@2 x ~ x ~", P: "~@6 x ~@11 x ~ x!3 ~",
Q: "x ~@4 x!2 ~ x!2 ~ x", R: "x ~ x ~ x ~@2 x!5", S: "x ~@2 x ~@5 x!3", T: "x ~ x ~@2 x ~ x!2 ~@3",
U: "x ~@2 x ~ x ~@3 x ~ x", V: "~@6 x ~@5 x ~ x!3 ~ x!3 ~ x ~", W: "~@11 x", X: "x ~ x ~@4 x ~@4",
Y: "~@3 x ~ x ~ x ~ x ~ x", Z: "~ x ~ x ~ x ~ x ~@4", AA: "~@3 x ~@3 x ~@3 x",
})).gain(0.21)
// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
~@4 A B ~ C D E F ~ G H I J K L ~ M N O P ~@2 Q R O ~ B ~ C D E F ~ G H I J K L ~ M N O P ~@2 Q R ~@3 A ~@2
>`.pickRestart({
A: "x", B: "~@7 x ~@4", C: "~ x ~", D: "~ x!2 ~@3 x ~@5", E: "~ x ~@8 x ~", F: "~ x ~@4", G: "~ x ~@22",
H: "~@5 x ~@6", I: "x ~@3 x ~@3 x ~@2 x", J: "~ x", K: "x!2 ~@4", L: "~@2 x ~@4 x ~@4", M: "~@3 x!2 ~",
N: "~@2 x!2 ~@2", O: "~@4 x!2", P: "~@8 x!2 ~@14", Q: "~@2 x", R: "~@3 x",
})).gain(0.07)
// drums · clap
const clap = s("cp").struct(`<
~ A B ~ C ~ D B A E F G H G ~ I J K L M N ~ O P G ~ Q R S ~ D B A E F G H G ~ I J K L M N ~ O P G ~ Q A B ~ C ~@2
>`.pickRestart({
A: "~@3 x", B: "~@7 x ~@3 x", C: "~@5 x ~@5 x", D: "~@2 x", E: "~ x ~@2", F: "~@7 x ~ x ~@2", G: "~@11 x",
H: "~@10 x!2", I: "~ x ~ x", J: "~ x ~@10", K: "~@3 x ~@6 x ~", L: "~ x ~ x ~ x ~@6", M: "~@7 x ~@4",
N: "~ x ~ x ~@5 x!3", O: "x", P: "x!2 ~ x", Q: "~@8 x ~@2 x", R: "~@5 x ~@3 x ~@2",
// … 55 more lines
More by Mina
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.