0:00/0:00
// Dreaming of You — Selena
// 85 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 18, 4/4 at bar 19, 2/4 at bar 44, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 95 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(85/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 · piano
const piano = note("<A@6 ~@11 B@4 ~@3 C@4 D E@8 F@7 G@5 H@6 I@3 J@6 ~ K@2 L@7 M@8 N@8 O@4 ~>".pickRestart({
A: "[~@27 [c5,a5]@16 ~@5, ~@4 [d5,b5]@6 [d5,b5] [c5,a5]@15 [d5,b5]@16 ~@6, ~@5 [e5,c6]@15 [d5,b5]@4 [f#5,d6]@16 ~@8, ~@6 [f#5,d6]@2 [f#5,d6]@13 [e5,c6]@16 ~@11, ~@7 [g5,e6]@15 [f#5,d6] [g5,e6]@16 ~@9]/6", // F G F G C G D C …
B: "[~@4 e4@3 a4@3 d4@3 ~@3 [g3,c4,e4]@16, ~@4 [g4,b4]@9 [d4,g4,b4]@16 ~@3, ~@7 c#5@16 ~@9, ~@7 e4@9 ~@16, ~@5 [f#4,a4]@8 ~@3]/4", // C G F#m
C: "[~@7 [c5,a5]@9, [d5,b5]@3 [d5,b5]@5, ~ [e5,c6]@15, ~ [f#5,d6] [f#5,d6]@6, ~@3 [g5,e6]@13]/2", // F G C D C
D: "[g5,b5]@2 ~ [f#5,a5]@3 ~ [e5,g5], b4, ~ b5@3, ~@2 g5@5 ~, ~@3 [f#5,a5]", // G F#m Em F#m
E: "[~@11 g4@2 ~@18 c5@5 ~@2 d5@2 ~@19 d5@5, ~@4 [e5,g5]@16 a4@2 b4@4 g4 a4@9 c4@2 f#4@9 g3@13 [d5,b5]@2 a5@18 [d5,b5]@2 c6@10 d5@2 [c5,a5]@22 e5@12, ~@6 f#5@22 b4@14 a3 b3 c4@4 [d5,b5]@2 [e5,c6]@22 g4@12 [f#5,d6]@2 e6@18 b4@24, ~@6 d5@10 d5@20 e4@10 a3@10 [f#5,d6]@16 c5@10 e5@6 d6@16 d5@6 e5 f#5 g5@16, ~@14 a4@6 f#4@10 g4@2 [c4,e4]@2 g4@11 b3@7 [f#5,d6]@2 [g5,e6]@22 a4@10 g5@2 f#5@4 b5@22 f#5@14]/8", // Em G F G C D C D …
F: "[~@8 d4@2 [d4,g4,b4] b4@11 ~@5 g4@4 ~@3 b4 b4@2 ~@8 d5@11, g5@5 c5@16 ~ b4@10 a4@10 f#5@14, ~ f#5@5 b4@2 [f#4,a4]@16 d5@14 c5@16 ~@2, ~@2 a5@9 [d4,g4]@16 ~@4 g4@8 d5@2 g5@15, ~@3 d5@16 ~@4 c5@14 b4@6 e5@13]/7", // G F#m G5
G: "[e4@3 a4@3 d4@3 ~@11 a5@16 ~@4, [g4,b4]@9 [d4,g4,b4]@16 ~@15, ~@3 c#5@13 [c5,c6]@16 ~@8, ~@3 e4@9 [g3,c4,e4]@16 ~@12, ~@3 [f#4,a4]@6 b5@8 ~@3]/5", // G C F#m
H: "[~@12 d5 [e5,f5] a5 ~@4 [f5,g5] g5@2 d5 ~ [e5,f5] g5 e5 f5 d5 e5 c5 d5 a4 ~@3 [b3,c4] [d4,e4] [f4,g4] [a4,b4] c5@2 ~@2 a4 [b4,c5] e5 [b4,c5] g4 [g4,b4] e4 [e4,a4] [c5,d5] [a4,b4] [g4,a4] b4 d5@2 c5 d5 [g1,e5]@2 d5 a4@2 ~ g5 a5 c6@4 e6@2 ~ [c6,d6] e6@2 d6 a5 ~@4 c5!4 [d4,f4,g4,d5]@2 c5 e5 ~@2 g1@2, ~@4 d1@8 f1@3 g1@5 d1@8 f1@2 ~ g1@5 d1@8 f1@3 ~, ~@56 c5 ~@11 b5 ~@15 [d4,f4]@2 [d4,f4]@2 ~@8]/6", // Fmaj7 Fsus2 Fmaj7 Cmaj7 Dsus2 Fsus2 Asus2 Cmaj7 …
I: "[d5 c5 e5 ~ d5 c5 e5 d5 [c5,d5] [b4,c5] [a4,b4] g4 c5 ~@3 e6@4 ~ e6@2 f6 [f1,g6]@2 g1@2 a1@2 a6 g6@2 ~@7 e2@2 f#2@2 g#2@2 a2@2, ~@4 [d4,g4]@2 ~@2 d1@7 d6 a5@4 d6@4 ~@24, ~@6 f4@6 ~@3 g1@5 ~@4, ~@13 g5@11 ~@24, ~@14 e6 c6@9 ~@24]/3", // Csus2 Cmaj7 Asus2 Fsus2 G5
J: "[~@7 [e4,a4,c#5]@4 ~, [e5,c#6]@6 [e5,c#6] [d5,b5]@15 [e5,c#6]@16 ~@10, ~ [f#5,d6]@15 [e5,c#6]@4 [g#5,e6]@16 ~@12, ~@2 [g#5,e6]@2 [g#5,e6]@13 [f#5,d6]@6 [d5,b5]@16 ~@9, ~@3 [a5,f#6]@15 [g#5,e6] [a5,f#6]@16 ~@13]/6", // A C#m G C#m D C#m D G …
K: "[~@11 a4@4 a4, ~@3 c#5@5, ~@7 d5@9, ~ e5]/2",
L: "[~@3 c#5@2 ~@11 g#4@4 ~@4 f#4@3 b4@3 e4@3 a4@3 d4@4 ~@2 c#4@14, b4@9 a4@2 f#4@2 e5@11 [a4,c#5]@6 [g#4,b4]@16 ~@10, ~@2 e5@5 e5@2 a5@4 e4@3 d#4@11 f#4@6 [e4,c#5]@16 ~@7, ~@5 c#5@5 g#5@6 b4@4 c#4@16 [f#4,a4]@16 ~@4, ~@6 d5@4 g#4 f#5@9 [e4,g#4]@7 d#5@13 d4@16]/7", // A G#m C#m F#m E
M: "[~@7 [a4,f#5]@4 ~ e5@2 ~ c#5@2 ~@11 g#4@4 ~@4 f#4@3 b4@3 e4@3 a4@3 d4@4 ~@2 c#4@10, ~@4 a5@10 e5@3 c#5@5 g#5@6 b4@4 c#4@13 [e4,c#5]@16 ~@3, ~@4 e5@8 b4@9 a4@2 f#4@2 e5@11 [a4,c#5]@6 [g#4,b4]@16 ~@6, ~@11 f#5@8 e5@2 a5@4 e4@3 d#4@11 f#4@9 [f#4,a4]@16, ~@11 a4@7 d5@4 g#4 f#5@9 [e4,g#4]@7 d#5@13 d4@12]/8", // D C#m A G#m F#m E
N: "[~@5 [e4,e5] e5@2 ~@3 [a4,f#5]@4 ~ e5@2 ~ c#5@2 ~@11 g#4@4 ~@4 f#4@3 b4@3 e4@3 a4@3 d4@4 ~@2 c#4@6, ~ a4@5 e4@10 b4@9 a4@2 f#4@2 e5@11 [a4,c#5]@6 [g#4,b4]@16 ~@2, ~ a5@2 f#5@5 a5@10 e5@3 c#5@5 g#5@6 b4@4 c#4@13 [e4,c#5]@15, ~@2 [g#4,g#5]@6 e5@7 f#5@8 e5@2 a5@4 e4@3 d#4@11 f#4@9 [f#4,a4]@12, ~@3 f#4@12 a4@7 d5@4 g#4 f#5@9 [e4,g#4]@7 d#5@13 d4@8]/8", // E D A G#m C#m G# F#m E
O: "[~@18 e4@6 ~ [e4,a4]@32 ~@7, ~@5 a5@7 [g#3,c#4]@16 ~@4, ~@5 a4@4 e5@16 ~@7, ~@3 [g#4,g#5]@8 ~@5, ~@7 [f#4,f#5]@16 ~@9]/4", // A5 C#5 G# F#
})).s("gm_piano").gain(0.25)
// bass · lead 8 bass lead
const bass = note(`<
A B@2 C@3 ~@7 D@4 E@2 F G H I@2 J@2 K@2 L M N O P@2 Q@2 R S T U V W X Y Z@3 AA@2 AB@8 AC@3 ~@5 AD AE AF AG AH AI@3
AJ@5 AK@2 AL AM AN AE AF AG AH AI@3 AO@5
>`.pickRestart({
A: "~ g1", B: "[c2@3 f1@9 g1@4]/2", C: "[c2@3 f1@17 ~@4]/3", D: "[~@8 b1@6 c2@10 f#1@6 g1@10 e1@5 ~ e1@10 f#1@8]/4",
E: "[g1@8 e1@5 ~ e1@6 e1@6 b0@6]/2", F: "c1", G: "a1 b1", H: "c2@3 d2@5", I: "g3/2",
J: "[g1@3 d2 c2@3 f1@3 ~ f1 c2@2 d2@2]/2", K: "[g1@6 d2@2 c2@6 f1@8 ~@2 g1@5 ~ g1 f#1]/2", L: "e1@5 ~ b1@8 f#2@2",
M: "e2@5 ~ b1@10", N: "f#1@5 ~ g1@10", O: "e1@3 f#1@5", P: "[g1@5 ~ d2@2 c2@6 f1@9 ~ [c1,c2]@4 [d1,d2]@4]/2",
Q: "[g1@5 ~ g1 b1 c2@6 f1@9 ~ g1@8]/2", R: "e1@5 ~ b0@8 f#1@2", S: "e1@5 ~ b0@8 ~@2", T: "g1@5 ~ g1@8 b1@2",
U: "c2@5 ~ d2@10", V: "b1@5 ~ c2@8 c2@2", W: "f#1@3 g1@4 f#1", X: "e1@5 ~ e1@10", Y: "f#1 g1",
Z: "[e1@5 ~ e2@6 e1@6 [b0,b1]@6 [c1,c2]@16 a1@8]/3", AA: "[b1@4 c2@3 d2@5 g1@4]/2",
AB: "[[d1,d2] [e1,e2] [f#1,f#2] [a1,a2] d2@8 f2@3 g2@5 d2@8 f2@2 g2 g2@5 d2@8 f2@3 g2@5 d2@8 f2 g2 a2 g2]/8", // D E F# A
AC: "[~@4 e2 f#2 g#2 a2@17]/3", AD: "f#3@3 e3@2 d3 c#3 a2", AE: "c#1@3 d1@5", AF: "g#1@6 a1@9 g#1",
AG: "f#1@5 ~ f#1@10", AH: "g#1@7 ~ a1@6 g#1@2", AI: "[f#1@5 ~ f#2@6 f#1@6 [c#1,c#2]@6 d2@16 b1@8]/3",
AJ: "[c#2@8 d2@6 e2@10 c#1@6 d1@10 g#1@6 a1@9 g#1 f#1@5 ~ f#1@10 g#1@7 ~]/5",
AK: "[a1@6 g#1@2 f#1@5 ~ f#2@6 f#1@6 [c#1,c#2]@6]/2", AL: "d2", AM: "b1 c#2", AN: "d2@3 e2@5",
AO: "[c#2@8 d2@6 e2@5 ~ e2@4 a1@48 ~@8]/5",
})).s("gm_lead_8_bass_lead").gain(0.28)
// chords · pad poly · "lived..."
const pad_poly = note(`<
~ A@5 ~@7 B@6 C D E F@2 G@2 H@2 I J K ~ L@2 M@2 N@2 O P Q R@2 S T U@2 V@3 W@2 ~ X@2 Y@2 Z@3 ~@2 AA AB AC AD AE AF AG
AH AI AJ@7 AK@2 AL AM AN AO@3 AP AQ@3 AR@5
>`.pickRestart({
A: "[c5@10 ~ b4@7 ~@2, ~@5 d4@4 ~, ~@21 g4@15 ~@4]/5",
B: "[~@8 [b3,d4]@6 [e3,c4]@10 [f#3,d4]@5 ~ [g3,d4]@10 ~@12 g4@2 g4@2 ~@2 b4@2 c5@2 ~@2 [b3,f#4]@8 e3@5 ~ e3@6 e3@6 b3@6, ~@5 [g3,b3]@2 [c#4,a4] ~@4, ~@31 b4@5 ~@12]/6", // Bm C D G5 B5 G F#m
C: "c4@5 ~@2 c4, ~@5 g4@3, ~@3 d4", D: "[a3,g4] [b3,g4]", E: "[c4,e4]@3 [d4,f#4]@5", F: "[g4@7 [c4,e4,g4]@9]/2",
G: "[b3 c4 d4 e4 d4@2 b3 a3@3 ~ d3 g3@2 a3@2]/2", H: "[b3@2 c4@2 d4@2 e4@2 d4@4 b3@2 a3@10 b3@5 ~ e4 f#4]/2",
I: "g4@2 f#4 [f#4,g4] a4@2 d4@8 [c4,d4] [e4,f#4]", J: "g4@2 f#4 [c4,d4] e4@2 d4@4 b3@2 g3@4",
K: "[f#3,a3]@2 b3 [g3,b3]@5, ~@4 g3 ~@11", L: "[d4@2 e4@2 f#4@2 g4@2 f#4@4 d4@2 c4@9 ~ c4@4 d4@4]/2",
M: "[d4@2 e4@2 f#4@2 g4@2 f#4@4 d4@2 c4@9 ~@7 e4 f#4, ~@3 d4]/2",
N: "[g4 f#4 e4 ~ b3 a3 g3 ~ g4 f#4 a4 d4@2 c4 b3@2, ~@3 d4@5 ~@8, ~@7 g3@5 ~@4]/2", O: "[f#3,a3,d4]@3 [g3,a3,b3]@5",
P: "[c4,e4]@5 ~@7 b3@2 c4@2, ~@3 [d4,f#4]@5", Q: "[d4,f#4]@3 [g3,c4]@3 ~ [g3,c4]",
R: "[a3@4 b3 ~ b3@3 ~ b3@2 c4@2 ~@4 g4@2 f#4@2 e4@4 ~@2 g3@2 [g3,g5]@2, d4@14 d4@8 g3@6 g5 ~@3, ~@13 d4@3]/2", // G
S: "[a3,a5] [b3,b5] [c4,c6] ~@3 e5 f#5, a4 f#4, ~@3 b3@5, ~@3 b5@3 ~@2", // A B C
T: "g5@3 f5 e5@2 a5@4 e5@2 f#5@4, ~@12 e5 ~@3", U: "[d5@2 g5@4 d5@2 e5@16 [a3,d4,g4]@7 ~, ~@2 f#5 ~@29]/2",
V: "[[a3,b3,d4,g4]@4 [c4,e4,g4]@3 [a3,d4,f#4]@5 [d4,g4]@8 ~@4]/3", W: "[~ e5@5 ~@2]/2", X: "[~@3 a4@3 ~@2]/2",
Y: "[~@6 a4@6 ~@2 d4 ~]/2", Z: "[~@4 e3 f#3 g#3 a3@17]/3", AA: "a5@2 g#5@2 f#5@2 e5@8 b4!2",
AB: "b5 g#5 f#5 e5@2 d5 c#5@2", AC: "b4@2 c#5 c#5@5", AD: "a4@12 [g3,a3] b3 [c4,d4,e4] f4",
AE: "[e4,a4]@3 [d4,f#4]@5, g4 ~@15", AF: "[c#4,e4]@5 ~ [c#4,e4]@10", AG: "~@11 [f#5,g5] a5@2 a5@2, [a3,e4,f#4]",
AH: "b5 c#6 d6 c#6@3 f#5 g#5, ~@12 e5 ~@3", AI: "a5 [g5,g#5] f#5@2 c#6@2 b5@4 f#5@2 g#5@4",
AJ: "[b5 a5@2 e5 f#5@7 c#5 d5 e5 f#5 e5@5 d5 e5 f#5 e5@2 a5 g#5 ~ [e4,a4]@3 [d4,f#4]@5 ~@14 a5!2 b5 c#6 d6 c#6, ~@50 g#5 ~@3 a5@34 [a3,e4,f#4]@16 [g#4,b4]@8]/7", // A5 D F#m7 G#m
AK: "[~@4 f#5@2 g#5@2 a5 g#5 f#5@2 c#6@2 b5@4 f#5@2 g#5@4 b5@2 a5@4 e5@2, [e4,g#4]@8 ~@2 g5 ~@21]/2", AL: "f#5@7 c#5",
AM: "d5 e5 f#5 e5@5", AN: "d5@2 e5@2 f#5@2 e5@6 e5 f#5 a5 b5",
AO: "[[e4,a4]@3 [d4,f#4]@5 b5@3 ~@5 [a3,e4,f#4]@8, c#6@10 ~ c#6@13]/3", AP: "[g#4,b4,b5] [e4,g#4,c#6]",
AQ: "[a5@3 ~@3 g#5@3 [e5,a5]@3 f#5@8 [b3,e4,a4]@4, ~ b5@3 ~@4]/3", // A5 Esus4
AR: "[[c#4,e4,a4]@4 [f#4,a4]@3 [b3,e4,g#4]@5 [b3,e4,a4]@24 ~@4]/5", // A F#m E Esus4
})).s("gm_pad_poly").gain(0.14)
// other · flute
const flute = note("<~@3 A@3 ~@7 B@6 C D E@3 ~@34 F@2 G@2 H I J K ~@29>".pickRestart({
A: "[~@3 a5@17 ~@4]/3",
B: "[~@4 b4@2 c5@2 d5@6 g4@4 ~@4 g4@2 a4@4 b4 ~ b4@4 b4@2 c5@2 d5@8 g4@6 g5@2 g5@2 a5@2 b5@2 c6@2 b5@6 e5@2 f#5@2 g5@3 ~ e5@2 a5@4 e5@2 f#5@4 d5@2 g5@3 [e5,f5] d5@2, ~@76 f#5 ~@19]/6", // Fmaj7
C: "e5@7 g4", D: "c5 d5 e5 d5@5", E: "[c5@2 d5@2 e5@2 d5@3 ~ g5@2 f#5@2 g5@34, ~@10 f#5 ~@37]/3",
F: "[c#5 d5 e5 f#5 e5@2 c#5 b4@5 a4@2 b4@2]/2", G: "[c#5@2 d5@2 e5@2 f#5@2 e5@4 c#5@2 b4@10 ~@7 g#5]/2",
H: "a5@2 g#5@2 f#5@2 e5@6 ~@2 b4!2", I: "b5 g#5 f#5 e5@2 d5 c#5 ~", J: "b4@2 c#5 c#5@4 e4", K: "a4 b4 b4@3 ~@3",
})).s("gm_flute").gain(0.25)
// chords · pad new age
const pad_new_age = note(`<
~@5 A B@2 C D@5 ~@6 E F G@2 H@2 I@2 J@2 K L ~@4 J M N O ~@3 P Q R@2 ~@2 S@2 T@6 ~@5 U V W X ~@2 Y ~ Z@3 AA@5 AB@2 AC
AD AE AF AG AH AI Z@3 AJ@5
>`.pickRestart({
A: "~ [g3,b3,d4,g4]", B: "[[b3,c4,d4,g4]@3 [a3,c4,e4]@9 [g3,b3,d4,g4]@4]/2", C: "[b3,c4,d4,g4]@3 [a3,c4,e4]@5",
D: "[[b3,d4,g4]@8 [g3,b3,e4]@6 [f#3,b3,d4]@10 [g3,b3,e4]@6 [f#3,b3,d4]@10 [a3,d4]@5 ~ [g3,b3,d4]@10 [e3,g3,c4]@6 [f#3,a3,d4]@10 ~@8]/5", // G Em Bm Em Bm D5 G C …
E: "[c4,e4,g4]@7 ~ [b3,d4,g4]@8", F: "[c4,e4,g4]@3 [a3,d4,f#4]@5", G: "[[b3,d4,g4]@8 [c4,d4,g4]@5 ~ [f3,c4,e4]@18]/2",
H: "[[g3,b3,d4,g4]@4 [b3,c4,d4,g4]@3 [a3,c4,e4]@9]/2", // G Am
I: "[[g3,b3,d4,g4]@4 [b3,c4,d4,g4]@3 [a3,c4,e4]@5 [b3,d4,g4]@4]/2", J: "[b3,e4,g4]@5 ~ [b3,d4,f#4]@10",
K: "[f#3,a3,d4]@5 ~ [g3,b3,d4]@10", L: "[e3,g3,c4]@2 [e3,g3,c4] [f#3,a3,d4]@5", M: "[b3,e4,g4]@5 ~ [b3,d4,f#4,a4]@10",
N: "[a3,d4,g4]@3 [b3,d4,g4]@5", O: "[c4,e4,g4]@5 ~ [d4,f#4,a4]@10", P: "[c#4,f#4,a4] [d4,e4,f#4]",
Q: "[e4,g4,b4]@5 ~ [e4,a4,c#5]@6 [d4,f#4,a4]@4", R: "[~ [d4,g4,b4]@3 [g3,c4,e4]@8 ~@4]/2",
S: "[b3 c4 d4 e4 [d4,f4]@8 ~@4]/2", T: "[~ [d4,f4]@2 ~]/2", U: "[a3,c#4,f#4]@3 [g#3,c#4,e4]@5",
V: "[a3,c#4,f#4]@5 ~ [g#3,c#4,e4]@10", W: "[g#3,b3,e4]@5 ~ [a3,c#4,e4]@10", X: "[f#3,a3,d4]@5 ~ [g#3,b3,e4]@10",
Y: "~ a4 g#4 f#4 ~ e4 ~@2",
Z: "[[f#4,a4,c#5]@5 ~ [f#4,b4,d#5]@6 [e4,g#4,b4]@6 [e4,a4,c#5]@5 ~ [c#4,d4,f#4,a4]@16 [d4,f#4,a4]@7 ~]/3", // F#m B E A Dmaj7 D
AA: "[[c#4,e4,a4]@8 [d4,f#4,a4]@5 ~ [b3,e4,g#4]@10 [c#4,a4]@5 ~@9 a3@2 [b3,e4]@4 e4@2 e4@10 ~@6 f#4@4 e4@6 b4@8, ~@15 [d4,f#4]@5 ~@3 c#4 ~@5 a4@7 ~@4, ~@15 g#4@3 ~@2]/5", // A D E F#m E5 D
AB: "[g#4@8 [f#4,a4,c#5]@5 ~ [f#4,b4,d#5]@6 [e4,g#4,b4]@6 [e4,a4,c#5]@5 ~]/2", AC: "[c#4,d4,f#4,a4]",
AD: "[d4,f#4,a4]@7 ~ [c#4,e4,a4]@8", AE: "[d4,f#4,a4]@5 ~ [b3,e4,g#4]@10", AF: "[c#4,a4]@5 ~@9 a3@2, ~@3 [d4,f#4]@5",
AG: "[b3,e4]@2 e4 e4@5, ~@3 c#4 ~@4", AH: "~@3 f#4@2 e4@3, ~ a4@7, ~ g#4@3", AI: "b4 g#4",
AJ: "[[c#4,e4,a4]@8 [d4,f#4,a4]@5 ~ [b3,e4,g#4]@10 [c#4,e4,a4]@48 ~@8]/5", // A D E A
})).s("gm_pad_new_age").gain(0.07)
// other · pad bowed
const pad_bowed = note(`<
~@5 A B C B D@5 ~@10 E@2 F@2 G H I ~@8 J ~@2 K ~@3 L M@2 N@8 ~ O@2 P@2 Q@2 ~@4 R ~@22 S@4
>`.pickRestart({
A: "~ g3", B: "c4@3 f3@5", C: "e3 f#3 g3@2", D: "[g3@4 e4@3 b3@5 e4@3 b3@5 f#3@3 g3@5 e3@3 f#3@5 ~@4]/5",
E: "[g3@4 c4@3 f3@5 e3@2 f#3@2]/2", F: "[g3@4 c4@3 f3@5 g3@4]/2", G: "e3@3 f#3@5", H: "g3@3 a3@5", I: "f#3@3 g3@5",
J: "c4@3 d4@5", K: "~ g4 f#4 e4@2 d4@3", L: "~ d4", M: "[g4@4 g4@3 f#4@5 ~@4]/2", N: "[~ [d4,f4]@2 ~]/2",
O: "[a3@4 d4@3 g3@9]/2", P: "[a3@4 d4@3 g3@5 a3@4]/2", Q: "f#3@3 c#3@5", R: "~ a4 g#4 f#4 ~ e4 ~@2",
S: "[~ a2@6 ~]/4",
})).s("gm_pad_bowed").gain(0.16)
// chords · acoustic guitar steel
const acoustic_guitar_steel = note("<~@9 A@3 B@2 ~@17 C ~@6 D E ~@55>".pickRestart({
A: "[~@4 [g3,b3,e4]@3 b3@3 ~ e4 [g3,b3,e4]@3 ~@2 e4 b4 e4 a4 d4 a4 g4, ~@7 [f#3,d4]@5 ~@3 [f#3,b3,d4]@5 ~@4, ~@5 b3 ~@6]/3", // Em D Bm
B: "[d4 a4 b4 g4 [c4,e4]@3 [d4,f#4]@5 ~@4]/2", C: "~@10 a3 b3 c4 b3 a3 g3", D: "~@11 d5 e5@2 b4@2",
E: "g4@2 ~@5 b4 c5 b4 a4 g4 f#4 ~@3",
})).s("gm_acoustic_guitar_steel").gain(0.1)
// chords · synth strings 1
const synth_strings_1 = note(`<
~@13 A@6 B C D@3 ~ E ~ F G H I ~ J@2 K@2 L@2 M N O P@2 Q R S@5 T@2 U@6 V@2 W@2 X@2 ~ Y Z AA@2 AB ~@2 AC@8 AD AE AF@4
AG AH AI@7
>`.pickRestart({
A: "[~@4 b3@2 c4@2 [d4,f#4]@6 g3@8 g3@2 [a3,d4]@4 b3@2 b3@4 b3@2 c4@2 [b3,d4]@8 g3@6 [g3,g4]@2 [g3,g4]@2 [a3,a4]@2 [b3,b4]@2 [c4,c5]@2 [b3,b4]@4 ~@2 e4@2 f#4@2 g4@4 e4@2 a4@4 e4@2 f#4@4 d4@2 g4@3 f4 d4@2, ~@14 e4@10 ~@6 d4@8 ~@56 e4 ~]/6", // D D5 Bm G A B C B
B: "~@7 g4, [d4,e4]", C: "c5 d5 e5 d5@5", D: "[c5 d5 e5 d5@2 g5 f#5 g5@17]/3", E: "~ d3 g3 d3 g3 ~@3",
F: "~ d3 g3 d3 ~ d3 g3 d3", G: "g4@2 f#4@2 a4@2 d4@8 c4 [d4,e4,f#4]", H: "g4 f#4 e4 d4@2 b3 g3@2", I: "a3@2 b3 b3@5",
J: "[[g3,b3] [a3,c4] [b3,d4] [c4,e4] [b3,d4]@2 [g3,b3] [f3,a3]@5 [e3,g3,c4]@2 [f#3,a3,d4]@2]/2", // G Am Bm C Bm G F C …
K: "[[g3,b3]@2 [a3,c4]@2 [b3,d4]@2 [c4,e4]@2 [b3,d4]@4 [g3,b3]@2 [f3,a3]@10 ~@6 e4 f#4]/2", // G Am Bm C Bm G F
L: "[g4 f#4 e4 ~ b3 a3 g3 ~ g4 f#4 a4 d4@2 c4 b3@2, ~@3 d4@5 ~@8, ~@7 g3@5 ~@4]/2", M: "[f#3,a3]@2 [g3,b3] [g3,b3]@5",
N: "[g3,c4]@3 ~@3 b4 c5, ~@3 [a3,d4]@5", O: "[b4,d5,f#5]@3 g4@4 g4, ~@3 [b4,e5]@5",
P: "[a4@4 b4@2 b4@3 ~ b4@2 c5@2 d5@8 g4@6 [g4,g5]@2 [g4,g5]@2]/2", Q: "[a4,a5] [b4,b5] [c5,c6] [b4,b5]@3 e5 f#5",
R: "g5@2 e5 a5@2 e5 f#5@2", S: "[d5 g5@2 d5 e5@6 ~ g5 c6 d6 e6 d6@5 c6 d6 e6 d6@2 g6 f#6 g6@9 ~@4]/5",
T: "[~@4 [f3,a3,c4]@3 [g3,b3,d4]@5 ~@4]/2", // F G
U: "[~@4 [a3,c4] [b3,d4] [c4,e4] [g3,b3,d4]@5 d3@8 [f3,a3,c4]@3 [g3,b3,d4]@5 d3@8 [a3,c4] [b3,d4] [c4,e4] [g3,b3,d4]@5 ~@4, ~@4 f3@3 ~@29 f3@3 ~@9]/6", // Am Bm C G F G Am Bm …
V: "[[a3,c#4,e4]@7 [g3,b3,d4]@9]/2", W: "[[a3,c#4,e4]@7 [g3,b3,d4]@5 [a3,c#4,e4]@4]/2",
X: "[a3,c#4,f#4]@3 [g#3,b3,c#4,e4]@5", Y: "[f#3,a3,d4]@3 e4@3 c#4 d4, ~@3 [g#3,b3]@5",
Z: "[e4,a4]@3 a3@4 a3, ~@3 f#4@5", AA: "[b3@2 e4 c#4@2 c#4 d4 ~@2 a4 g#4 f#4@2 ~ a4!2, ~@7 e4@4 ~@2 e4@3]/2",
AB: "b4 c#5 d5 ~ e4@4, f#4 ~, ~@3 c#5@3 ~@2",
AC: "[~@6 c#4@2 d4@2 e4@2 f#4@2 e4@10 d4@2 e4@2 f#4@2 e4@4 a4@2 g#4@2 ~@2 e4@6 a3@8 a3@2 b3@4 e4@2 c#4@4 c#4@2 d4@2 ~@4 a4@2 g#4@2 f#4@4 ~@2 [a4,a5]@2 [a4,a5]@2 [b4,b5]@2 [c#5,c#6]@2 [d5,d6]@2 ~@6 f#5@2 g#5@2 a5 [g5,g#5] f#5@2 c#6@2 b5@4 f#5@2 [e5,g#5]@4 b5@2 [e5,a5]@3 ~ e5@2, ~@19 a4@9 ~@19 [c#5,c#6]@3 ~@14, ~@23 f#4@5 ~@7 e4@4 ~@2 e4@3 f#4@4 e4@4 ~@12]/8", // A B C# D G#maj7 E A5 C#
AD: "f#5@7 c#5", AE: "d5 e5 f#5 e5@5",
AF: "[d5 e5 f#5 e5@2 a5 g#5 ~ e4@3 a3@4 a3 b3@2 e4 c#4@2 c#4 d4 ~@2 a4 g#4 f#4@2 ~ [a4,a5]!2, ~@10 g#5 ~@3 a5@34 ~@16, ~@11 f#4@5 ~@7 e4@4 ~@2 e4@3]/4", // A
AG: "[b4,b5] [c#5,c#6] [d5,d6] ~@3 f#5 g#5, f#4 e4, ~@3 [c#5,c#6]@3 ~@2", // B C# D C#
AH: "a5 [g5,g#5] f#5@2 c#6@2 b5@4 f#5@2 [e5,g#5]@4", // G#maj7 E
AI: "[b5@2 [e5,a5]@3 ~ e5@2 f#5@14 c#5@2 d5@2 e5@2 f#5@2 e5@10 d5@2 e5@2 f#5@2 e5@4 a5@2 g#5@2 a5@50 ~@8, ~@50 g#5 ~@61]/7", // A5
})).s("gm_synth_strings_1").gain(0.22)
// chords · synth brass 1
const synth_brass_1 = note("<~@40 A B C D ~ E@2 F@2 G@8 H@3 ~@5 I J K ~ L ~@4 M@3 N O ~@11 P@5>".pickRestart({
A: "[b3,f#4]@3 [c4,e4]@5, d4", B: "[f#3,a3]@3 [g3,b3]@5, d4", C: "[g3,b3,d4,e4]", D: "[f#3,a3,c#4] [f#3,b3,d4,e4]",
E: "[~@20 b3@4 [a3,d4,g4]@7 ~, ~ [g3,c4,d4,e4]@2 ~]/2", F: "[[b3,d4,g4]@4 [g3,c4,e4]@3 [f#3,a3,d4]@5 ~@4]/2",
G: "[~@4 a3@8 c4@3 d4@5 a3@8 c4@2 d4 d4@5 a3@8 c4@3 d4@5 a3@8 f4 g4 a4 g4]/8", H: "[~@4 e3 f#3 g#3 a3@17]/3",
I: "[f#4,a4]@3 [e4,g#4]@5", J: "a4@3 f#4@5", K: "e4", L: "[d#4,g#4,b4]@7 ~ [c#4,g#4,b4]@8",
M: "[~@4 a4@3 f#4@5 e4@8 ~@4]/3", N: "~@8 [d#4,g#4,b4]@7 ~", O: "[c#4,g#4,b4] ~",
P: "[~@5 a5 g#5 f#5@2 e5@3 [c#4,e4,a4,e5]@24 ~@4]/5", // A
})).s("gm_synth_brass_1").gain(0.16)
// other · timpani
const timpani = note("<~@48 [~@14 d3!2] [d3!8 d3@2 ~@6] ~@15 [~@8 e3!8] [a2 ~@15] ~@28>").s("gm_timpani").gain(0.18)
// drums · kick
const kick = s("bd").struct(`<
~@13 A B@4 C D@20 E D@4 F G B@3 A B@3 H B H B I ~@8 D@4 F G B J B@5 K D L D@5 F G B J ~@4
>`.pickRestart({
A: "~@4 x ~@2 x", B: "~@3 x!2 ~@2 x", C: "~ x!2 ~@3 x!2", D: "x ~@2 x ~@3 x", E: "x ~@5 x ~@5 x!3 ~",
F: "x ~@2 x ~ x!2 ~", G: "~ x ~ x!2 ~@2 x", H: "~@3 x!2 ~ x!2", I: "~@3 x ~@4", J: "~@6 x!3 ~@5 x ~",
K: "~ x!2 ~@2 x ~ x", L: "x ~@5 x ~@7 x!2",
})).gain(0.22)
// drums · snare
const snare = s("sd").struct("<~@13 A B@25 C B@5 D B@3 E B@7 F ~@7 A B@3 G B D B@6 H I B@6 G B D B@2 ~@4>".pickRestart({
A: "~@3 x", B: "~ x ~ x", C: "~@4 x ~@7 x!3 ~", D: "~ x ~@4 x ~", E: "~@4 x!3 ~@5 x ~@3", F: "~ x ~@2",
G: "~@4 x ~@7 x ~ x!2", H: "~@4 x ~ x!2 ~@4 x ~@3", I: "~@2 x ~@2 x ~@2",
})).gain(0.22)
// drums · low tom
const low_tom = s("lt").struct(`<
~@13 A@5 B C@4 D ~@15 E ~@3 F G H ~@19 I ~@4 G H ~@6 A J ~@2 K ~@4 G H ~@6
>`.pickRestart({
A: "~@4 x ~@2 x", B: "~ x!2 ~@3 x!2", C: "x ~@2 x ~@4", D: "x ~@2 x ~@3 x", E: "~@12 x!3 ~",
F: "~@2 x!2 ~@4 x!3 ~@3 x ~", G: "x ~@2 x ~ x!2 ~", H: "~ x ~ x ~@4", I: "~@3 x", J: "~ x!2 ~@2 x ~ x", K: "~@14 x!2",
})).gain(0.22)
// drums · mid tom
const mid_tom = s("mt").struct(`<
~@23 A ~@8 B@12 C D B@3 E B@3 F B F B G ~@7 A B@4 C D B@6 H I B@2 J B@4 K D B@2 ~@4
>`.pickRestart({
// … 35 more lines
More by Selena
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.