0:00/0:00
// Disappointment — The Cranberries
// 85 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (2/4 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 96 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 30.
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 · pan flute · "Dolores"
const pan_flute = note(`<
~@4 A B@4 C@4 D@3 E@8 F G@2 H ~ I@5 J@8 K L@8 M@8 N O P@2 Q O P@2 R@4 S@4 T O P@2 U@4 S@4 ~@9
>`.pickRestart({
A: "~@18 g3@3 ~ g3@3 ~ a3@6",
B: "[~@2 d4@8 ~@12 f#4@13 ~ f#4@2 f#4@2 e4@2 e4@3 ~ e4@5 ~ d4@2 ~@2 c4@2 c4@3 ~ c4@5 ~ b3@2 b3@2 b3@2 b3@3 ~ b3@3 ~ a3@2 ~@6 c4@3 ~ c4@3 ~ c4@3 ~ b3@6 ~@6 g3@2 g3@2 g3@3 ~ a3@3 ~ g3@2, ~@5 d4@21 ~ d4@15 d4@22]/4",
C: "[~@2 d4@8 ~@12 f#4@6 ~@8 f#4@2 f#4@2 e4@2 e4@3 ~ e4@5 ~ d4@2 ~@2 c4@2 c4@3 ~ c4@3 ~ c4@3 ~ b3@3 ~ a3@3 ~ b3@3 ~ a3@2 b3@2 ~@4 f#4@3 ~ f#4@3 ~ f#4@7 ~ f#4@3 ~ g4@3 ~@9 b3@3 ~@3, ~@5 d4@21 ~ d4@30 d4@7]/4",
D: "[~@2 e4@3 ~ d4@4 ~@16 f#4@3 ~ f#4@3 ~ g4@7 ~ f#4@6 ~@2 e4@3 ~@5 e4@3 ~ f#4@3 ~ d#4@3 ~@5 b3@6 ~@2 a3@3 ~@5 a4@3 ~ a4@2, ~@5 d4@43]/3",
E: "[~@2 b4@7 ~@9 b3@6 ~@10 f#4@7 ~ f#4@3 ~@13 f#4@3 ~ f#4@3 ~ g4@7 ~ f#4@6 ~@2 e4@3 ~@5 e4@3 ~ f#4@3 ~ d#4@7 ~ b3@6 ~@2 a3@3 ~@5 c4@3 ~ c4@3 ~ b3@2 a3@2 b3@13 ~@7 c4@3 ~ c4@3 ~ b3@2 a3@2 c4@13 ~@7 c4@3 ~ c4@3 ~ b3@2 a3@2 c4@13 ~@7 c4@3 ~ c4@3 ~ b3@2 a3@2 f#3@10 ~@2 g3@3 ~@5 c4@3 ~ c4@2, ~@5 d4@8 d4@115]/8",
F: "~@2 b3@2 a3@2 b3@13 ~@7 c4@3 ~ c4@2", G: "~@2 b3@2 a3@2 c4@13 ~@7 c4@3 ~ c4@2",
H: "~@2 b3@2 a3@2 f#3@10 ~@2 g3@3 ~@11",
I: "[~@21 c4@6 ~@6 e4@3 ~@13 e4@3 ~@13 e4@3 ~@13 e4@3 ~@5 g4@3 ~ g4@3 ~ e4@3 a4@3 ~ g4@6 ~@2 e4@3 ~@5 g4@3 ~ g4@3 ~ e4@3 ~ a4@3 ~ g4@6 ~@2 e4@3 ~@9 f#4@3 ~, ~@29 d4@16 d4@16 d4@16 d4@75 d4@8]/5",
J: "[e4@7 ~@5 f#4@3 ~ e4@7 ~@4 f#4@3 ~ e4@7 ~@5 f#4@3 ~ e4@3 ~@5 g4@3 ~ f#4@3 ~ b3@3 ~ c4@9 ~@3 b3@3 ~@13 a3@3 ~ c4@6 ~@2 c4@3 b3@3 ~@5 c4@3 ~@5 e4@3 ~@13 e4@3 ~@13 e4@3 ~@13 e4@3 ~@5 g4@3 ~ g4@3 ~ e4@3 a4@3 ~ g4@6 ~@2 e4@3 ~@5 g4@3 ~ g4@3 ~ e4@3 ~ a4@3 ~ g4@6 ~@2 e4@3 ~@9 f#4@3 ~ e4@3, ~@8 d4@15 d4@16 d4@83 d4@16 d4@16 d4@16 d4@75 d4@11]/8",
K: "~@9 f#4@3 ~ e4@7 ~@4 f#4@3 ~ e4@4, ~@5 d4@16 d4@11", L: "[~@8 f#4@3 ~ e4@7 ~ d4@236, ~ d4@4 ~@59]/8",
M: "[~@20 a4@3 ~ a4@3 ~ b4@7 ~@9 b3@6 ~@10 f#4@4 f#4@4 f#4@16 f#4@4 ~@4 g4@7 ~@9 e4@3 ~@5 e4@3 ~@5 d#4@7 ~ b3@6 ~@2 a3@3 ~@5 a4@3 ~ a4@3 ~ b4@7 ~@9 b3@6 ~@10 f#4@8 f#4@16 f#4@4 ~@4 g4@7 ~@9 e4@3 ~@5 e4@3 ~@5 d#4@4, ~@18 d4@8 d4@56 d4@11 ~@35, ~@88 f#4@12 f#4@20 f#4@68 ~@28 f#4@12 f#4@23 ~@5]/8",
N: "~@4 b3@6 ~@2 a3@3 ~@5 c4@3 ~ c4@3 ~ b3@2 a3@2", O: "b3@13 ~@7 c4@3 ~ c4@3 ~ b3@2 a3@2",
P: "c4@13 ~@7 c4@3 ~ c4@3 ~ b3@2 a3@2", Q: "f#3@10 ~@2 g3@3 ~@5 c4@3 ~ c4@3 ~ b3@2 a3@2",
R: "[f#3@10 ~@2 g3@3 ~ g3@3 ~ a3@6 ~@2 a3@7 ~ d3@3 ~@9 g3@3 ~ a3@6 ~@2 b3@7 ~ d3@3 ~@9 g3@3 ~ a3@6 ~@2 b3@7 ~ e3@3 ~@25]/4",
S: "[~@16 g3@3 ~ a3@6 ~@2 a3@7 ~ d3@3 ~@9 g3@3 ~ a3@6 ~@2 b3@7 ~ d3@3 ~@9 g3@3 ~ a3@6 ~@2 b3@7 ~ e3@3 ~@25]/4",
T: "~@20 c4@3 ~ c4@3 ~ b3@2 a3@2",
U: "[f#3@15 ~ g3@3 ~ a3@6 ~@2 a3@7 ~ d3@3 ~@9 g3@3 ~ a3@6 ~@2 b3@7 ~ d3@3 ~@9 g3@3 ~ a3@6 ~@2 b3@7 ~ e3@3 ~@25]/4",
})).s("gm_pan_flute").gain(0.48)
// chords · pad poly
const pad_poly = note(`<
~@4 A B@3 C D@2 E F G H I J K L M N O P Q N P@2 R ~ S T U V W X@4 Y Z AA AB@3 AC AD@3 AE AF@8 AG@3 AH AI@2 AJ AH AK AI
AL@4 AM@4 AN AH AI@2 AO@4 AM@4 ~@9
>`.pickRestart({
A: "~@18 g4@3 ~ g4@3 ~ a4@6",
B: "[~@2 d5@7 ~ d5@10 ~@2 f#5@13 ~ f#5@2 f#5@2 e5@2 e5@3 ~ e5@5 ~ d5@2 d5@2 c5@2 c5@3 ~ c5@5 ~ b4@2 b4@2 b4@2 b4@3 ~ b4@3 ~ a4@2 d5@5 ~ c5@3 ~ c5@2]/3",
C: "~@2 c5@3 ~ b4@11 ~ g4@2 g4@2 g4@3 ~ a4@3 ~ g4@2",
D: "[~@2 d5@7 ~ d5@10 ~@2 f#5@13 ~ f#5@2 f#5@2 e5@2 e5@3 ~ e5@5 ~ d5@2 d5@2 c5@2 c5@3 ~ c5@2]/2",
E: "~@2 c5@3 ~ b4@3 ~ a4@3 ~ b4@3 ~ a4@2 b4@2 ~@4 f#5@3 ~ f#5@2", F: "~@2 f#5@7 ~ f#5@3 ~ g5@3 ~ d5@7 ~ b4@6",
G: "~@2 e5@3 ~ d5@3 ~ d5@10 ~@6 f#5@3 ~ f#5@2", H: "~@2 g5@7 ~ f#5@6 ~@2 e5@3 ~@5 e5@3 ~ f#5@2",
I: "~@2 d#5@3 ~@5 b4@6 ~@2 a4@3 ~@5 a5@3 ~ a5@2", J: "~@2 b5@7 ~ d5@7 ~ b4@6 ~@2 d5@6",
K: "~@2 f#5@7 ~ f#5@10 ~@6 f#5@3 ~ f#5@2", L: "~@2 g5@7 ~ f#5@6 ~@2 e5@6 ~@2 e5@3 ~ f#5@2",
M: "~@2 d#5@7 ~ b4@6 ~@2 a4@6 ~@2 [c5,g5]@3 ~ [c5,g5]@2", // C5
N: "~@2 [b4,f#5]@2 [a4,e5]@2 b4@13 ~@7 [c5,g5]@3 ~ [c5,g5]@2", // B5 A5 C5
O: "~@2 [b4,f#5]@2 [a4,e5]@2 c5@13 ~@7 [c5,g5]@3 ~ [c5,g5]@2", // B5 A5 C5
P: "~@2 [b4,f#5]@2 [a4,e5]@2 [c5,g5]@13 ~@7 [c5,g5]@3 ~ [c5,g5]@2", // B5 A5 C5
Q: "~@2 [b4,f#5]@2 [a4,e5]@2 [f#4,b4]@12 g4@4 ~@4 [c5,g5]@3 ~ [c5,g5]@2", R: "~ [b4,f#5] [a4,e5] [f#4,b4]@6 g4@2 ~@5",
S: "~@21 c5@6 ~@2 d5@3", T: "~ e5@10 ~@2 d5@3 ~ e5@3 ~@9 d5@3", U: "~ e5@3 ~@9 d5@3 ~ e5@7 ~ g5@3 ~ g5@3",
V: "~ e5@3 a5@3 ~ g5@6 ~@2 e5@6 ~@2 g5@3 ~ g5@3 ~", W: "e5@3 ~ a5@3 ~ g5@6 ~@2 e5@6 ~@2 d5@3 ~ f#5@3 ~",
X: "[e5@7 ~ d5@3 ~ f#5@3 ~ e5@7 d5@3 ~ f#5@3 ~ e5@7 ~ d5@3 ~ f#5@3 ~ e5@7 ~ g5@3 ~ f#5@3 ~ b4@3 ~ c5@9 ~@3 b4@13 ~@3 a4@3 ~ c5@6 ~@2 c5@3 b4@6 ~@2 c5@3 ~ d5@3 ~ e5@2]/4",
Y: "~@10 d5@3 ~ e5@3 ~@9 d5@3 ~ e5@2", Z: "~@10 d5@3 ~ e5@7 ~ g5@3 ~ g5@3 ~ e5@2",
AA: "~ a5@3 ~ g5@6 ~@2 e5@6 ~@2 g5@3 ~ g5@3 ~ e5@3",
AB: "[~ a5@3 ~ g5@6 ~@2 e5@6 ~@2 d5@3 ~ f#5@3 ~ e5@7 ~ d5@3 ~ f#5@3 ~ e5@7 ~ d5@3 f#5@3 ~ e5@7 ~ d5@3 ~ f#5@3 ~ e5@7 ~ d5@9 ~@3]/3",
AC: "g4 b4", AD: "[d5@5 b4 d5 e5@2 b4 c5@2 e5 b4 e5 d#5@6 e5 g4 a4]/3", AE: "b4 d5",
AF: "[f#5@16 f#5@4 e5@4 f#5@4 g5@8 e5@12 g5@4 e5@4 g5@4 f#5@20 ~@4 a5@4 a5@4 b5@7 ~ d5@7 ~ b4@6 ~@2 d5@6 ~@2 f#5@7 ~ f#5@10 ~@6 f#5@3 ~ f#5@3 ~ g5@7 ~ f#5@6 ~@2 e5@6 ~@2 e5@3 ~ f#5@3 ~ d#5@7 ~ b4@6 ~@2 a4@4 ~@4 a5@3 ~ a5@3 ~ b5@7 ~ d5@7 ~ b4@6 ~@2 d5@6 ~@2 f#5@4]/8",
AG: "[~@4 f#5@10 ~@6 f#5@3 ~ f#5@3 ~ g5@7 ~ f#5@6 ~@2 e5@6 ~@2 e5@3 ~ f#5@3 ~ d#5@7 ~ b4@6 ~@2 a4@4 ~@4 [c5,g5]@3 ~ [c5,g5]@3 ~ [b4,f#5]@2 [a4,e5]@2]/3", // C5 B5 A5
AH: "b4@13 ~@7 [c5,g5]@3 ~ [c5,g5]@3 ~ [b4,f#5]@2 [a4,e5]@2", // C5 B5 A5
AI: "[c5,g5]@13 ~@7 [c5,g5]@3 ~ [c5,g5]@3 ~ [b4,f#5]@2 [a4,e5]@2", // C5 B5 A5
AJ: "[f#4,b4]@12 g4@4 ~@4 [c5,g5]@3 ~ [c5,g5]@3 ~ [b4,f#5]@2 [a4,e5]@2", // B5 C5 B5 A5
AK: "c5@13 ~@7 [c5,g5]@3 ~ [c5,g5]@3 ~ [b4,f#5]@2 [a4,e5]@2", // C5 B5 A5
AL: "[[f#4,b4]@12 g4@4 g4@3 ~ a4@6 ~@2 a4@7 ~ d4@10 ~@2 g4@3 ~ a4@6 ~@2 b4@7 ~ d4@10 ~@2 g4@3 ~ a4@6 ~@2 b4@7 ~ e4@10 ~@18]/4", // B5
AM: "[~@16 g4@3 ~ a4@6 ~@2 a4@7 ~ d4@10 ~@2 g4@3 ~ a4@6 ~@2 b4@7 ~ d4@10 ~@2 g4@3 ~ a4@6 ~@2 b4@7 ~ e4@11 ~@17]/4",
AN: "~@20 [c5,g5]@3 ~ [c5,g5]@3 ~ [b4,f#5]@2 [a4,e5]@2", // C5 B5 A5
AO: "[[f#4,b4]@13 ~@3 g4@3 ~ a4@6 ~@2 a4@7 ~ d4@10 ~@2 g4@3 ~ a4@6 ~@2 b4@7 ~ d4@10 ~@2 g4@3 ~ a4@6 ~@2 b4@7 ~ e4@10 ~@18]/4", // B5
})).s("gm_pad_poly").gain(0.48)
// chords · pad poly · soft notes
const pad_poly_soft = note("<~@19 A B C D E B D@2 F ~@2 G H ~@6 I J ~@19 K L M@2 N L O M P ~@8 Q ~@19>".pickRestart({
A: "~@26 c6@3 ~ c6@2", B: "~@2 b5@2 a5@2 [f#5,b5]@13 ~@7 c6@3 ~ c6@2", C: "~@2 b5@2 a5@2 [g5,c6]@13 ~@7 c6@3 ~ c6@2",
D: "~@2 b5@2 a5@2 c6@13 ~@7 c6@3 ~ c6@2", E: "~@2 b5@2 a5@2 f#5@12 [c5,g5]@4 ~@4 c6@3 ~ c6@2",
F: "~ b5 a5 f#5@6 [c5,g5]@2 ~@5", G: "~@13 a5@3 ~ b5@3 ~@9 a5@3", H: "~ b5@3 ~@9 a5@3 ~ b5@3 ~@12",
I: "~@10 a5@3 ~ b5@3 ~@9 a5@3 ~ b5@2", J: "~@10 a5@3 ~ b5@3 ~@15", K: "~@20 c6@3 ~ c6@3 ~ b5@2 a5@2",
L: "[f#5,b5]@13 ~@7 c6@3 ~ c6@3 ~ b5@2 a5@2", M: "c6@13 ~@7 c6@3 ~ c6@3 ~ b5@2 a5@2",
N: "f#5@12 [c5,g5]@4 ~@4 c6@3 ~ c6@3 ~ b5@2 a5@2", O: "[g5,c6]@13 ~@7 c6@3 ~ c6@3 ~ b5@2 a5@2",
P: "f#5@3 [c5,g5] ~@4", Q: "f#5@13 ~@19",
})).s("gm_pad_poly").gain(0.24)
// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
~@3 A B@4 C@4 D@8 E@2 ~@6 F@5 G H I J K L@2 M@2 N O P Q R S P Q T U P Q V U P Q V U W ~@22 X ~@12
>`.pickRestart({
A: "~@10 [f#3,b3,e4]@3 ~ [f#3,b3,e4]@3 ~ [f#3,b3,e4]@3 ~ [f#3,b3,e4]@3 ~ [f#3,b3,e4]@3 ~ [f#3,b3,e4]@2", // Esus2
B: "[~@2 [g3,b3,e4]@3 ~ [g3,b3,e4]@8 [g3,b3,e4]@5 ~ [g3,b3,e4]@5 ~ [g3,b3,e4]@3 ~ [g3,b3,e4]@6 ~@2 [a3,d4,e4]@8 [a3,d4,e4]@5 ~ [a3,d4,e4]@5 ~ [a3,d4,e4]@3 ~ [a3,d4,e4]@6 ~@2 [g3,c4,e4]@8 [g3,c4,e4]@5 ~ [g3,c4,e4]@5 ~ [g3,c4,e4]@3 ~ [g3,c4,e4]@6 ~@2 [f#3,b3,e4]@8 [f#3,b3,e4]@5 ~ [f#3,b3,e4]@5 ~ [f#3,b3,e4]@3 ~ [f#3,b3,e4]@2]/4", // Em Asus4 C Esus2
C: "[~@2 [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]@8 [g3,b3,e4]@5 ~ [g3,b3,e4]@5 ~ [g3,b3,e4]@3 ~ [g3,b3,e4]@6 ~@2 [a3,d4,e4]@8 [a3,d4,e4]@5 ~ [a3,d4,e4]@5 ~ [a3,d4,e4]@3 ~ [a3,d4,e4]@6 ~@2 [g3,c4,e4]@8 [g3,c4,e4]@5 ~ [g3,c4,e4]@5 ~ [g3,c4,e4]@3 ~ [g3,c4,e4]@6 ~@2 [f#3,b3,e4]@8 [f#3,b3,e4]@5 ~ [f#3,b3,e4]@5 ~ [f#3,b3,e4]@3 ~ [f#3,b3,e4]@2]/4", // Em Asus4 C Esus2
D: "[~@2 [g3,b3,e4]@2 [g3,b3,e4]@2 [g3,b3,e4]@8 [g3,b3,e4]@5 ~ [g3,b3,e4]@5 ~ [g3,b3,e4]@3 ~ [g3,b3,e4]@6 ~@2 [a3,d4,e4]@8 [a3,d4,e4]@5 ~ [a3,d4,e4]@5 ~ [a3,d4,e4]@3 ~ [a3,d4,e4]@6 ~@2 [g3,c4,e4]@8 [g3,c4,e4]@5 ~ [g3,c4,e4]@5 ~ [g3,c4,e4]@3 ~ [g3,c4,e4]@4 [g3,c4]@3 ~ [f#3,b3,e4]@8 [f#3,b3,e4]@5 ~ [f#3,b3,e4]@5 ~ [f#3,b3,e4]@3 ~ [f#3,b3,e4]@2]/4", // Em Asus4 C C5 Esus2
E: "[~ [g3,b3,e4]!2 [g3,b3,e4]@16 ~@13]/2", // Em
F: "[~@6 [g3,c4,e4]@6 ~@2 [g3,c4,e4]@5 ~ [g3,c4,e4]@5 ~ [g3,c4,e4]@3 ~ [g3,c4,e4]@6 ~@2 [g3,c4,e4]@6 ~ [g3,c4,e4]@5 ~ [g3,c4,e4]@5 ~ [g3,c4,e4]@3 ~ [g3,c4,e4]@6 ~@2 [g3,b3,e4]@6 ~@2 [g3,b3,e4]@5 ~ [g3,b3,e4]@5 ~ [g3,b3,e4]@3 ~ [g3,b3,e4]@6 ~@2 [g3,b3,e4]@6 ~@2 [g3,b3,e4]@5 ~ [g3,b3,e4]@5 ~ [g3,b3,e4]@3 ~ [g3,b3,e4]@6 ~ [g3,c4,e4]@6 ~@2 [g3,c4,e4]@5 ~ [g3,c4,e4]@5 ~ [g3,c4,e4]@3 ~ [g3,c4,e4]@4]/5", // C Em C
G: "~@4 [g3,c4,e4]@6 ~@2 [g3,c4,e4]@5 ~ [g3,c4,e4]@5 ~ [g3,c4,e4]@3 ~ [g3,c4,e4]@4", // C
H: "~@4 [g3,b3,e4]@6 ~@2 [g3,b3,e4]@5 ~ [g3,b3,e4]@5 [g3,b3,e4]@3 ~ [g3,b3,e4]@5", // Em
I: "~@3 [g3,b3,e4]@6 ~@2 [g3,b3,e4]@5 ~ [g3,b3,e4]@5 ~ [g3,b3,e4]@3 ~ [g3,b3,e4]@5", // Em
J: "~@3 [g3,c4,e4]@6 ~@2 [g3,c4,e4]@5 ~ [g3,c4,e4]@5 ~ [g3,c4,e4]@3 ~ [g3,c4,e4]@5", // C
K: "~@3 [g3,c4,e4]@6 ~@2 [g3,c4,e4]@5 [g3,c4,e4]@5 ~ [g3,c4,e4]@3 ~ [g3,c4,e4]@6", // C
L: "~@2 [g3,b3,e4]@6 ~@2 [g3,b3,e4]@5 ~ [g3,b3,e4]@5 ~ [g3,b3,e4]@3 ~ [g3,b3,e4]@6", // Em
M: "~ [g3,c4,e4]@6 ~@2 [g3,c4,e4]@5 ~ [g3,c4,e4]@5 ~ [g3,c4,e4]@3 ~ [g3,c4,e4]@6 ~", // C
N: "~ [g3,b3,e4]@6 ~@2 [g3,b3,e4]@5 ~ [g3,b3,e4]@5 ~ [g3,b3,e4]@3 [g3,b3,e4]@6 ~@2", // Em
O: "[g3,b3,e4]@6 ~@2 [g3,b3,e4]@5 ~ [g3,b3,e4]@5 ~ [g3,b3,e4]@3 ~ [g3,b3,e4]@6 ~@2", // Em
P: "[g3,b3,e4]@8 [g3,b3,e4]@5 ~ [g3,b3,e4]@5 ~ [g3,b3,e4]@3 ~ [g3,b3,e4]@6 ~@2", // Em
Q: "[a3,d4,e4]@8 [a3,d4,e4]@5 ~ [a3,d4,e4]@5 ~ [a3,d4,e4]@3 ~ [a3,d4,e4]@6 ~@2", // Asus4
R: "[g3,c4,e4]@8 [g3,c4,e4]@5 ~ [g3,c4,e4]@5 ~ [g3,c4,e4]@3 ~ [g3,c4,e4]@4 [g3,c4,d#4]@3 ~", // C Cm
S: "[f#3,b3,d#4]@8 [f#3,b3,d#4]@5 ~ [f#3,b3,d#4]@5 ~ [f#3,b3,e4]@3 ~ [f#3,b3,e4]@3 ~ [g3,b3,e4]@2 [g3,b3,e4]@2", // B Esus2 Em
T: "[g3,c4,e4]@8 [g3,c4,e4]@5 ~ [g3,c4,e4]@5 ~ [g3,c4,e4]@3 ~ [g3,c4,e4]@4 [g3,c4,e4]@3 ~", // C
U: "[f#3,b3,e4]@8 [f#3,b3,e4]@5 ~ [f#3,b3,e4]@5 ~ [f#3,b3,e4]@3 ~ [f#3,b3,e4]@3 ~ [g3,b3,e4]@2 [g3,b3,e4]@2", // Esus2 Em
V: "[g3,c4,e4]@8 [g3,c4,e4]@5 ~ [g3,c4,e4]@5 ~ [g3,c4,e4]@3 ~ [g3,c4,e4]@4 [g3,c4]@3 ~", W: "[g3,b3,e4]",
X: "b3@13 ~@3",
})).s("gm_acoustic_guitar_nylon").gain(0.24)
// chords · acoustic guitar nylon
const acoustic_guitar_nylon_2 = note("<~@27 A B@2 C D E F G H@2 I J I K L K ~@53>".pickRestart({
A: "~@26 d5@3 ~ d5@2", B: "[~@2 d5@3 ~ d5@3 ~ c5@3 ~ b4@5 ~ [e4,g4]@15 ~@22 d5@3 ~ d5@3, ~@6 [e4,g4]@13 ~@45]/2",
C: "~ d5@3 ~ d5@3 ~ c5@3 ~ b4@5 ~ [e4,g4]@13, ~@5 [e4,g4]@13 ~@14", D: "~@25 d5@3 ~ d5@3",
E: "~ d5@3 d5@3 ~ c5@3 ~ b4@5 ~ [e4,g4]@14, ~@4 [e4,g4]@13 ~@15", F: "~@24 d5@3 ~ d5@3 ~",
G: "d5@3 ~ d5@3 ~ c5@3 ~ b4@5 ~ [e4,g4]@14, ~@4 [e4,g4]@13 ~@15", // Em
H: "[~@23 d5@3 ~ d5@3 ~ d5@3 ~ d5@3 ~ c5@3 ~ b4@5 ~ [e4,g4]@15, ~@35 [e4,g4]@13 ~@16]/2", // Em
I: "~@22 d5@3 ~ d5@3 ~ d5@2", J: "~@2 d5@3 ~ c5@3 ~ b4@5 ~ [e4,g4]@15 ~, ~@2 [e4,g4]@13 ~@17",
K: "~ d5@3 ~ c5@3 ~ b4@5 ~ [e4,g4]@15 ~@2, ~ [e4,g4]@13 ~@18", L: "~@21 d5@3 ~ d5@3 ~ d5@3",
})).s("gm_acoustic_guitar_nylon").gain(0.29)
// chords · acoustic guitar nylon · soft notes
const acoustic_guitar_nylon_3 = note("<~@44 A B C D A B C D ~@44>".pickRestart({
A: "g4@6 ~@2 g4@5 ~ g4@5 ~ g4@3 ~@5 g4@3 ~", B: "a4@6 ~@2 a4@5 ~ a4@5 ~ a4@3 ~@5 a4@3 ~",
C: "c5@6 ~@2 c5@5 ~ c5@5 ~ c5@3 ~@5 c5@3 ~", D: "b4@6 ~@2 b4@5 ~ b4@5 ~ b4@3 ~@5 d5@3 ~",
})).s("gm_acoustic_guitar_nylon").gain(0.19)
// chords · distortion guitar
const distortion_guitar = note("<~@29 A ~ B ~ C D@2 E@2 F ~ G ~ H ~@53>".pickRestart({
A: "~ [c4,e4,g4] ~@14", B: "~ [g4,b4,e5]@2 ~@29", C: "[c4,e4,g4] ~@15", D: "[~@31 [g4,b4,e5]@2 ~@31]/2",
E: "[~@31 [c4,e4,g4]@2 ~@31]/2", F: "~@15 [g4,b4,e5]", G: "~@29 [c4,e4,g4]@2 ~", H: "~@14 [g4,b4,e5] ~",
})).s("gm_distortion_guitar").gain(0.12)
// chords · string ensemble 1
const string_ensemble_1 = note("<~@4 A@16 ~@8 B@8 C@6 D@2 E F G H E F G I E F G I E F G I ~@36>".pickRestart({
A: "[~@3 [e3,g3,b3]@16 [e3,a3,d4]@16 [e3,g3,c4]@16 [e3,f#3,b3]@16 [e3,g3,b3]@16 [e3,a3,d4]@16 [e3,g3,c4]@16 [e3,f#3,b3]@13]/8", // Em Dsus2 C Esus2 Em Dsus2 C Esus2
B: "[~@6 [e3,g3,c4]@63 [e3,g3,b3]@63 [e3,g3,c4]@63 ~ [e3,g3,b3]@60]/8", // C Em C Em
C: "[~ [e3,g3,c4]@21 [e3,g3,b3]@21 [e3,g3,c4]@21]/6", D: "[~ [e3,g3,b3]@63]/2", E: "[e3,g3,b3]", F: "[e3,a3,d4]",
G: "[e3,g3,c4]", H: "d#3@19 ~ e3@10 ~@2, [f#3,b3]", I: "[e3,f#3,b3]",
})).s("gm_string_ensemble_1").gain(0.06)
// bass · acoustic bass
const bass = note(`<
~@3 A@2 B@4 C@8 D@8 E@4 F G H I J K@4 L M N@2 O P Q R S T Q U V T W X Y T Q R S T Z AA AB AC Z AA AB AD Z AA AB AC Z
AA AB AC Z AA AB AC Z AA AB AC Z AA AB AC Z AA AB AC Z AA AB AC
>`.pickRestart({
A: "[~@26 b1@3 ~ a1@6 ~@2 g1@6 ~@2 g1@5 ~ g1@5 ~ g1@3 ~ a1@2]/2",
B: "[~@2 c2@3 ~ d2@6 ~@2 d2@5 ~ a2@5 ~ g2@3 ~ e2@6 ~@2 c2@6 ~@2 c2@5 ~ g2@5 ~ f2@3 ~ d2@6 ~@2 b1@6 ~@2 b1@5 ~ b1@5 ~ c2@3 ~ d2@6 ~@2 g1@6 ~@2 g1@5 ~ g1@5 ~ g1@3 ~ a1@2]/4",
C: "[~@2 c2@3 ~ d2@6 ~@2 d2@5 ~ a2@5 ~ g2@3 ~ e2@6 ~@2 c2@6 ~@2 c2@5 ~ g2@5 ~ f2@3 ~ d2@6 ~@2 b1@6 ~@2 b1@5 ~ b1@5 ~ c2@3 ~ d2@6 ~@2 g1@6 ~@2 g1@5 ~ g1@5 ~ g1@3 ~ a1@6 ~@2 d2@6 ~@2 d2@5 ~ d2@5 ~ d2@10 ~@2 c2@6 ~@2 c2@5 ~ c2@5 ~ c2@10 ~@2 b1@6 ~@2 b1@5 ~ b1@5 ~ c2@3 ~ d2@6 ~@2 g1@6 ~@2 g1@5 ~ g1@5 ~ g1@3 ~ a1@2]/8",
D: "[~@2 c2@3 ~ d2@6 ~@2 d2@5 ~ a2@5 ~ g2@3 ~ e2@6 ~@2 c2@6 ~@2 c2@5 ~ g2@5 ~ f2@3 ~ d2@6 ~@2 b1@6 ~@2 b1@5 ~ b1@5 ~ c2@3 ~ d2@6 ~@2 g1@13 ~ g1@8 ~@2 g1@6 ~@2 d2@13 ~ d2@8 ~@2 d2@6 ~@2 c2@13 ~ c2@8 ~@2 c2@6 ~@2 b1@13 ~ b1@8 ~@2 b1@6 ~@2 g1@13 ~ g1@8 ~@2 g1@2]/8",
E: "[~@6 d2@13 ~ d2@8 ~@2 d2@6 ~@2 c2@13 ~ c2@8 ~@2 c2@6 ~@2 b1@13 ~ b1@8 ~@2 b1@6 ~@2 c2@6 ~@2 g2@5 ~ c2@5 ~ b1@3 ~ c2@2]/4",
F: "~@2 d2@3 ~ c2@6 ~ g2@5 ~ c2@5 ~ b1@3 ~ c2@3", G: "~ d2@3 ~ e2@6 ~@2 g2@5 ~ a2@5 ~ g2@3 ~ e2@3",
H: "~ d2@3 ~ e2@6 ~@2 g2@5 ~ e2@5 ~ g2@3 ~ e2@3", I: "~ d2@3 c2@6 ~@2 g2@5 ~ c2@5 ~ b1@3 ~ c2@3 ~",
J: "d2@3 ~ c2@6 ~@2 g2@5 ~ c2@5 ~ b1@3 ~ c2@3 ~",
K: "[d2@3 ~ e2@6 ~@2 g2@5 ~ a2@5 g2@3 ~ e2@3 ~ d2@3 ~ e2@6 ~@2 g2@5 ~ e2@5 ~ g2@3 ~ e2@3 ~ d2@3 ~ c2@6 ~@2 g2@5 ~ c2@5 ~ b1@3 ~ c2@3 ~ d2@3 ~ c2@6 ~@2 g2@5 c2@5 ~ b1@3 ~ c2@3 ~ d2@2]/4",
L: "~@2 e2@6 ~@2 g2@5 ~ a2@5 ~ g2@3 ~ e2@3 ~ d2@2", M: "~@2 e2@6 ~@2 g2@5 ~ e2@5 ~ g2@3 ~ e2@3 ~ d2@2",
N: "~ c2@6 ~@2 g2@5 ~ c2@5 ~ b1@3 ~ c2@3 ~ d2@3", O: "~ e2@6 ~@2 g2@5 ~ e2@5 ~ g2@3 e2@3 ~ d2@3 ~",
P: "e2@6 ~@2 g2@5 ~ a2@5 ~ g2@3 ~ e2@3 ~ d2@3 ~", Q: "g1@6 ~@2 g1@5 ~ g1@5 ~ g1@3 ~ a1@3 ~ c2@3 ~",
R: "d2@6 ~@2 d2@5 ~ a2@5 ~ g2@3 ~ e2@6 ~@2", S: "c2@6 ~@2 c2@5 ~ g2@5 ~ f2@3 ~ d2@6 ~@2",
T: "b1@6 ~@2 b1@5 ~ b1@5 ~ c2@3 ~ d2@6 ~@2", U: "d2@6 ~@2 d2@5 ~ d2@5 ~ d2@3 ~ d2@6 ~@2",
V: "c2@6 ~@2 c2@5 ~ c2@5 ~ c2@3 ~ c2@6 ~@2", W: "g1@6 ~@2 g1@5 ~ g1@5 ~ g1@3 ~ a1@6 ~@2",
X: "d2@6 ~@2 d2@5 ~ d2@5 ~ d2@10 ~@2", Y: "c2@6 ~@2 c2@5 ~ c2@5 ~ c2@10 ~@2", Z: "g1@13 ~ g1@8 ~@2 g1@6 ~@2",
AA: "d2@13 ~ d2@8 ~@2 d2@6 ~@2", AB: "c2@13 ~ c2@8 ~@2 c2@6 ~@2", AC: "b1@13 ~ b1@8 ~@2 b1@6 ~@2",
AD: "b1@13 ~ b1@5 ~ b1@10 ~@2",
})).s("gm_acoustic_bass").gain(0.48)
// drums · kick
const kick = s("bd").struct("<~ A B@26 C D E@2 F@2 G H@2 I J@2 K@3 L M@47 ~@5>".pickRestart({
A: "~@13 x ~@2", B: "~@3 x ~@6 x ~@2 x ~@2", C: "~@3 x ~@3 x ~@2 x ~@2 x ~@2", D: "~@6 x ~@6 x ~@5 x ~@5 x ~@6",
E: "~@5 x ~@7 x ~@5 x ~@5 x ~@6", F: "~@2 x ~@3 x ~@2 x ~@2 x ~@3", G: "~@4 x ~@7 x ~@5 x ~@4 x ~@8",
H: "~@3 x ~@7 x ~@5 x ~@5 x ~@8", I: "~@3 x ~@7 x ~@4 x ~@5 x ~@9", J: "~ x ~@3 x ~@2 x ~@2 x ~@4",
K: "~ x ~@7 x ~@5 x ~@5 x ~@10", L: "x ~@3 x ~@2 x ~@2 x ~@5", M: "x ~@6 x ~@2 x ~@5",
})).gain(0.14)
// drums · kick · soft notes
const kick_soft = s("bd").struct("<[~@3 x ~@6 x ~@2 x ~@2] [~@3 x ~@6 x ~@5] ~@89 [x ~@6 x ~@2 x ~@5]!5>").gain(0.05)
// drums · snare
const snare = s("sd").struct(`<
A@8 B A@7 B A@6 C B A@2 D E ~@2 F G ~@2 H ~@3 I ~@3 J K@7 L K@7 M K@7 N K@3 O K@3 M K@3 M K@3 M K@3 M K@8
>`.pickRestart({
A: "~@7 x ~@8", B: "x!2 ~@5 x ~@8", C: "~@7 x ~@5 x!2 ~", D: "~@7 x ~@4 x!2 ~ x", E: "x!3 ~@13",
F: "~@25 x ~ x ~@3 x", G: "~ x ~@30", H: "~@23 x ~ x ~@3 x ~ x", I: "~@11 x!2 ~ x!2", J: "~@10 x!2 ~ x!3",
K: "~ x ~@2", L: "~@4 x ~@4 x!2 ~@2 x!2 ~", M: "~@4 x ~@5 x!2 ~ x!3", N: "~@4 x ~@8 x!2 ~",
O: "~@4 x ~@5 x!2 ~ x!2 ~",
})).gain(0.14)
// drums · hihat
const hihat = s("hh").struct("<~ A B@26 C D E@2 F@2 G H@2 I J@2 K@2 L M@47 N ~@5>".pickRestart({
A: "~@11 x!5", B: "x ~@2 x!2 ~@2 x!9", C: "x ~ x!3 ~@2 x!9",
D: "x ~@5 x ~ x ~@4 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", E: "~@5 x ~ x ~@5 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x",
F: "~@2 x!2 ~@2 x!10", G: "~@4 x ~ x ~@5 x ~ x ~ x ~ x ~ x ~ x!2 ~ x ~ x ~ x ~@2",
H: "~@3 x ~ x ~@5 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2",
I: "~@3 x ~ x ~@5 x!2 ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@3", J: "~ x!2 ~@2 x!10 ~",
K: "~ x ~ x ~@5 x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@4", L: "~ x ~ x ~@5 x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~ x ~ x ~@5",
M: "x!2 ~@2 x!10 ~@2", N: "x!2 ~@2 x!9 ~@3",
})).gain(0.14)
// drums · hihat · soft notes
// … 50 more lines
More by The Cranberries
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.