0:00/0:00
// Not Sorry — The Cranberries
// 101 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (2/4 at bar 1, 4/4 at bar 1) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 106 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(101/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 · pad poly
const pad_poly = note(`<
~@16 A B C D A E F D A B C G A E F H@3 I@3 J@5 K@5 L@3 M@8 N@8 O@3 P@6 Q@3 R@8 S@8 T@2 ~@10
>`.pickRestart({
A: "a4@6 ~@2 a4@6 ~@2 a4@3 ~ g4@3 ~ a4@3 ~ b4@3 ~, [c4,e4]@13 ~@3", // C
B: "c5@3 ~ b4@3 ~ a4@3 ~ g4@3 ~ a4@10 ~@2 c5@3 ~, [c4,e4]@13 ~@3", // C
C: "c5@6 ~@2 c5@6 ~@2 c5@3 ~ c5@3 ~ c5@3 ~ c5@3 ~, [e4,g4]@13 ~@3", // Em
D: "b4@3 ~ b4@6 ~@2 b4@3 ~ b4@3 ~ c5@3 ~ d5@3 ~ b4@3 ~, [d4,g4]@13 ~@3", // G5
E: "c5@3 ~ b4@3 ~ a4@3 ~ g4@3 ~ a4@10 ~@2 e4@3 ~, [c4,e4]@13 ~@3", // C
F: "e4@6 ~@2 e4@6 ~@2 g4@3 ~ g4@3 ~ g4@3 ~ a4@3 ~, [g3,c4]@13 ~@3 [c4,e4]@13 ~@3", // C5 C
G: "~@4 b4@3 ~ b4@3 ~ b4@3 ~ b4@3 ~ c5@3 ~ d5@3 ~ b4@3 ~, [d4,g4]@13 ~@3", // G5
H: "[b4@3 ~ b4@6 ~@2 b4@3 ~ b4@3 ~ c5@3 ~ d5@3 ~ [e4,a4,e5]@23 ~@9 g4@7 ~ a4@3 ~ e4@3 ~ g4@7 ~ a4@10 ~@2, [d4,g4]@13 ~ c4@16 [a3,c4]@8 c4@10, ~@76 a3@17 ~@3]/3", // A5 G5 Am
I: "[e4@6 ~@2 e4@6 ~@2 g4@3 ~ g4@3 ~ g4@3 ~ a4@3 ~ b4@3 ~ b4@6 ~@2 b4@3 ~ b4@3 ~ c5@3 ~ d5@3 ~@5 [f4,f5]@26 ~@6, c4 c4@3 c4@2, g3@13 ~@3 e4@13 ~@3 [d4,g4]@26 ~@2 a4@30 ~@6]/3", // F G5
J: "[~@8 [a4,d5]@6 ~@2 [b4,e5]@6 ~@2 [c5,e5]@3 ~ [a4,e5]@7 ~ a4@3 ~ a4@3 ~ e5@7 ~ d5@3 ~ c5@3 ~ d5@7 c5@3 ~ b4@3 ~ a4@7 ~ a4@3 ~ a4@3 ~ b4@3 ~ c5@3 ~ b4@3 ~ a4@3 ~ g4@3 ~ a4@9 ~@2 b4@3 ~ c5@3 ~ b4@3 ~ a4@3 ~ g4@3 ~ a4@3 ~ a4@3 ~ a4@3 ~ [a4,d#5]@6, [c4,f4]@28 c4@47 c4@20 c4@31 c4@34, ~@28 e4@13 ~@3 [e4,a4]@13 ~@3 [e4,a4]@13 ~@2 e4@16 ~@4 f4@25 ~@6 f4@25 ~@9]/5", // D5 E5 C A5 Adim F5 A5
K: "[~@2 d#5@3 a4@3 ~ [a4,d#5]@7 ~ d#5@3 ~ a4@3 ~ c5@3 ~ a4@3 ~ c5@3 ~ a4@3 ~ c5@3 ~ a4@3 ~ c5@3 ~ b4@6 ~ [f4,a4]@25 ~@15 a4@6 ~ b4@3 ~ c5@6 ~@2 a4@7 ~ a4@3 ~ a4@3 ~ e5@7 ~ d5@3 ~ c5@3 ~ [e4,a4,d5]@7 c5@2, ~@29 c4@31 c4@32 [c4,f4]@27 c4@41, ~@29 e4@25 ~@65 e4@13 ~@3 [e4,a4]@13 ~@12]/5", // Adim F Dsus2 F5 A5
L: "[~@2 b4@3 ~ a4@7 ~ a4@3 ~ a4@3 ~ [b4,d5]@3 ~ [c5,e5]@3 ~ [b4,d5]@3 ~ [a4,c5]@3 ~ [g4,b4]@3 ~ [a4,c5]@9 ~@2 [b4,d5]@3 ~ [c5,e5]@3 ~ [b4,d5]@3 ~ [a4,c5]@3 ~ [g4,b4]@3 ~ [a4,c5]@3 ~ a4@3 ~ a4@3 ~ [a4,d#5]@7 ~ d#5@3, ~@6 c4@20 c4@31 c4@39, ~@6 e4@16 ~@4 f4@25 ~@6 f4@25 ~@14]/3", // Bm C Bm Am G Am Bm C …
M: "[a4@3 ~ [a4,d#5]@7 ~ d#5@3 ~ a4@3 ~ c5@3 ~ a4@3 ~ c5@3 ~ a4@3 ~ c5@3 ~ a4@3 ~ c5@3 ~ [b4,e5]@6 ~ a4@6 ~@2 a4@6 ~@2 a4@3 ~ g4@3 ~ a4@3 ~ b4@3 ~ c5@3 ~ b4@3 ~ a4@3 ~ g4@3 a4@9 ~@3 c5@3 ~ c5@6 ~@2 c5@6 ~@2 c5@3 ~ c5@3 ~ c5@3 ~ c5@3 ~ b4@3 ~ b4@6 ~@2 b4@3 ~ b4@3 ~ c5@3 ~ d5@3 ~ b4@3 ~ a4@6 ~@2 a4@6 ~@2 a4@3 ~ g4@3 ~ a4@3 ~ b4@3 ~ c5@3 ~ b4@3 ~ a4@3 ~ g4@3 ~ a4@10 ~@2 e4@3 ~ [g3,c4]@8 e4@2, ~@24 c4@31 c4@32 c4@95 c4@32 c4@32 ~@10, ~@24 e4@25 ~@6 e4@25 ~@7 e4@25 ~@6 [e4,g4]@26 ~@6 [d4,g4]@26 ~@6 e4@26 ~@6 e4@26 ~@6 e4@6 ~@4]/8", // Adim E5 C5 Em G5
N: "[~@6 g4@3 ~ g4@3 ~ g4@3 ~ a4@3 ~ b4@3 ~ b4@6 ~@2 b4@3 ~ b4@3 ~ c5@3 ~ d5@3 ~ b4@3 ~ a4@6 ~@2 a4@6 ~@2 a4@3 ~ g4@3 ~ a4@3 ~ b4@3 ~ c5@3 ~ b4@3 ~ a4@3 ~ g4@3 ~ a4@10 ~@2 c5@3 ~ c5@6 ~@2 c5@6 ~@2 c5@3 ~ c5@3 ~ c5@3 ~ c5@3 ~@5 b4@3 ~ b4@3 ~ b4@3 ~ b4@3 ~ c5@3 ~ d5@3 ~ b4@3 ~ a4@6 ~@2 a4@6 ~@2 a4@3 ~ g4@3 ~ a4@3 ~ b4@3 ~ c5@3 ~ b4@3 ~ a4@3 ~ g4@3 ~ a4@10 ~@2 e4@3 ~ [g3,c4]@8 e4@2, ~@3 c4@24 c4@16 c4@48 c4@16 c4@16 ~@5, ~@6 e4@13 ~@3 [d4,g4]@26 ~@6 e4@26 ~@6 e4@26 ~@6 [e4,g4]@26 ~@6 [d4,g4]@26 ~@6 e4@26 ~@6 e4@26 ~@6 e4@6 ~@4]/8", // C5 G5 Em G5
O: "[~@6 g4@3 ~ g4@3 ~ g4@3 ~ a4@3 ~ b4@3 ~ b4@6 ~@2 b4@3 ~ b4@3 ~ c5@3 ~ d5@3 ~ [e4,a4,e5]@23 ~@9 g4@7 ~ a4@3 ~ e4@2, ~@3 c4@22 c4@16 [a3,c4]@7, ~@6 e4@13 ~@3 [d4,g4]@26 ~@48]/3", // A5 Am G5
P: "[~@2 g4@7 ~ a4@10 ~@2 e4@6 ~@2 e4@6 ~@2 g4@3 ~ g4@3 ~ g4@3 ~ a4@3 ~ b4@3 ~ b4@6 ~@2 b4@3 ~ b4@3 ~ c5@3 ~ d5@3 ~@5 [f4,f5]@26 ~@14 [a4,d5]@6 ~@2 [b4,e5]@6 ~@2 [c5,e5]@3 ~ [a4,e5]@7 ~ a4@3 ~ a4@3 ~ e5@7 ~ d5@3 ~ c5@3 ~ d5@7 ~ c5@3 ~ b4@2, ~ c4@10 c4@8 c4@24 c4@16 [c4,f4]@14 c4@23, ~@2 a3@17 ~@3 g3@13 ~@3 e4@13 ~@3 [d4,g4]@26 ~@2 a4@30 ~@34 e4@14 ~@2 [e4,a4]@14 ~@2 [e4,a4]@13 ~]/6", // F D5 E5 C A5 F5 G5 A5
Q: "[~@2 a4@7 ~ a4@3 ~ a4@3 b4@3 ~ c5@3 ~ b4@3 ~ a4@3 ~ g4@3 ~ a4@9 ~@3 b4@3 ~ c5@3 ~ b4@3 ~ a4@3 ~ g4@3 a4@3 ~ a4@3 ~ a4@3 ~ [a4,d#5]@7 ~ d#5@3 ~ a4@3 ~, ~@2 c4@19 c4@32 c4@43, ~@2 e4@16 ~@3 f4@25 ~@7 f4@25 ~@18]/3", // Adim
R: "[[a4,d#5]@7 ~ d#5@3 ~ a4@3 ~ c5@3 ~ a4@3 c5@3 ~ a4@3 ~ c5@3 ~ a4@3 ~ c5@3 ~ b4@6 ~@2 [f4,a4]@25 ~@14 a4@6 ~@2 b4@3 ~ c5@6 ~@2 a4@7 ~ a4@3 ~ a4@3 e5@7 ~ d5@3 ~ c5@3 ~ d5@7 ~ c5@3 ~ b4@3 ~ a4@7 ~ a4@3 ~ a4@3 ~ [b4,d5]@3 [c5,e5]@3 ~ [b4,d5]@3 ~ [a4,c5]@3 ~ [g4,b4]@3 ~ [a4,c5]@9 ~@3 [b4,d5]@3 ~ [c5,e5]@3 ~ [b4,d5]@3 ~ [a4,c5]@3 ~ [g4,b4]@3 [a4,c5]@3 ~ a4@3 ~ a4@3 ~ [a4,d#5]@7 ~ d#5@3 ~ a4@3 ~ [a4,d#5]@5, ~@20 c4@31 c4@31 c4@28 c4@47 c4@19 c4@32 c4@48, ~@20 e4@25 ~@37 f4@25 ~@3 e4@13 ~@2 [e4,a4]@13 ~@3 [e4,a4]@13 ~@3 e4@16 ~@3 f4@25 ~@7 f4@25 ~@23]/8", // Adim F Bm C Bm Am G Am …
S: "[~@3 d#5@3 ~ a4@3 ~ c5@3 ~ a4@3 c5@3 ~ a4@3 ~ c5@3 ~ a4@3 ~ c5@3 ~ [b4,e5]@6 ~@2 a4@6 ~@2 a4@6 ~@2 a4@3 ~ g4@3 a4@3 ~ b4@3 ~ c5@3 ~ b4@3 ~ a4@3 ~ g4@3 ~ a4@15 ~ [e4,g4]@25 ~@6 [d4,g4]@26 ~@6 a4@6 ~@2 a4@6 ~@2 a4@3 ~ g4@3 ~ a4@3 ~ b4@3 ~ c5@3 ~ b4@3 ~ a4@3 ~ g4@3 ~ a4@15 ~ [e4,g4]@20, ~@15 c4@31 c4@31 c4@152 ~@27, ~@15 e4@25 ~@6 e4@25 ~@6 e4@25 ~@70 e4@26 ~@6 e4@26 ~@26]/8", // E5 Em G5 Em
T: "[~@6 [d4,g4]@13 ~@13]/2", // G5
})).s("gm_pad_poly").gain(0.35)
// chords · pad poly · soft notes
const pad_poly_soft = note(`<
~@19 A ~ B C D ~ B ~ E ~ B ~ F ~@2 G H ~@19 I J K L I J K M I J K ~ N ~ O@2 P ~@34
>`.pickRestart({
A: "~@12 d5@3 ~ d5@3 ~ e5@3 ~ f5@3 ~ d5@3 ~", B: "e5@3 ~ d5@3 ~ c5@3 ~ b4@3 ~ c5@10 ~@6", C: "~@28 c5@3 ~",
D: "d5@3 ~ d5@6 ~@2 d5@3 ~ d5@3 ~ e5@3 ~ f5@3 ~ d5@3 ~", E: "~@4 d5@3 ~ d5@3 ~ d5@3 ~ d5@3 ~ e5@3 ~ f5@3 ~ d5@3 ~",
F: "~@16 d5@3 ~ e5@3 ~ f5@3 ~@5", G: "g4@6 ~@2 g4@6 ~@2 c5@3 ~ c5@3 ~ c5@3 ~ c5@3 ~",
H: "d5@3 ~ d5@6 ~@2 d5@3 ~ d5@3 ~ e5@3 ~ f5@3 ~ e5@3 ~", I: "~@2 d5@3 ~ d5@3 ~ e5@3 ~ f5@3 ~ d5@3 ~@11",
J: "~@22 e5@3 ~ d5@3 ~ c5@2", K: "~@2 b4@3 ~ c5@10 ~@16", L: "~@18 c5@3 ~ d5@3 ~ d5@6", M: "~@26 d5@3 ~ d5@2",
N: "~@6 d5@3 ~ e5@3 ~ f5@3 ~@15", O: "[~@22 g4@6 ~@2 g4@6 ~@2 c5@3 ~ c5@3 ~ c5@3 ~ c5@3 ~ d5@3 ~ d5@6]/2",
P: "~@2 d5@3 ~ d5@3 ~ e5@3 ~ f5@3 ~ e5@3 ~@11",
})).s("gm_pad_poly").gain(0.24)
// chords · piano
const piano = note("<A B C D A B C D ~@28 E F G@6 H I J K L M N O ~@19 P@7 Q R S T U V W@4 ~@7 X@8 Y@3>".pickRestart({
A: "[a4,c5,e5]@3 ~ [a4,c5,e5]@23 ~@5", B: "[f4,a4,c5]@3 ~ [f4,a4,c5]@23 ~@5", C: "[c4,e4,g4]@3 ~ [c4,e4,g4]@23 ~@5",
D: "[g4,b4,d5]@3 ~ [g4,b4,d5]@23 ~@5", E: "[c4,e4,a4]@3 ~ [c4,e4,a4]@3 ~ [c4,e4,a4]@3 ~ [c4,e4,a4]@3 ~",
F: "[c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@4 [c4,e4,a4]@3 ~", // Am
G: "[[c5,e5,a5]@6 ~@2 [c5,e5,a5]@6 ~@2 [c5,e5,a5]@7 ~ [c5,e5,a5]@7 [c5,e5,a5]@6 ~@2 [c5,e5,a5]@6 ~@2 [c5,e5,a5]@6 ~@2 [c5,e5,a5]@4 [c5,e5,a5]@3 ~ [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~ [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@4 [c4,e4,a4]@3 ~ [c5,e5,a5]@6 ~ [c5,e5,a5]@6 ~@2 [c5,e5,a5]@7 ~ [c5,e5,a5]@7 ~ [c5,e5,a5]@6 ~@2 [c5,e5,a5]@6 ~@2 [c5,e5,a5]@6 ~@2 [c5,e5,a5]@3 [c5,e5,a5]@3 ~ [c4,e4,a4]@4]/6", // Am
H: "~@2 [c4,e4,a4]@3 ~ [c4,e4,a4]@3 ~ [c4,e4,a4]@3 ~ [c4,e4,a4]@2", // Am
I: "~@4 [c4,e4,a4]@6 ~ [c4,e4,a4]@6 ~@2 [c4,e4,a4]@4 [c4,e4,a4]@3 ~ [c5,e5,a5]@5", // Am
J: "~@3 [c5,e5,a5]@6 ~@2 [c5,e5,a5]@7 ~ [c5,e5,a5]@7 [c5,e5,a5]@6", // Am
K: "~@2 [c5,e5,a5]@6 ~@2 [c5,e5,a5]@6 ~@2 [c5,e5,a5]@4 [c5,e5,a5]@3 ~ [c4,e4,a4]@6", // Am
L: "~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~ [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~", // Am
M: "~ [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@4 [c4,e4,a4]@3 ~ [c5,e5,a5]@6 ~", // Am
N: "[c5,e5,a5]@6 ~@2 [c5,e5,a5]@7 ~ [c5,e5,a5]@7 ~ [c5,e5,a5]@6 ~@2", // Am
O: "[c5,e5,a5]@6 ~@2 [c5,e5,a5]@6 ~@2 [c5,e5,a5]@3 [c5,e5,a5]@3 ~@10", // Am
P: "[~@22 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@4 [c4,e4,a4]@3 ~ [c5,e5,a5]@6 ~@2 [c5,e5,a5]@6 ~@2 [c5,e5,a5]@7 ~ [c5,e5,a5]@7 ~ [c5,e5,a5]@6 ~@2 [c5,e5,a5]@6 ~@2 [c5,e5,a5]@6 ~@2 [c5,e5,a5]@3 [c5,e5,a5]@3 ~ [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~ [c4,e4,a4]@6 ~@2 [c4,e4,a4]@4 [c4,e4,a4]@3 ~ [c5,e5,a5]@6 ~@2 [c5,e5,a5]@4]/7", // Am
Q: "~@4 [c5,e5,a5]@7 ~ [c5,e5,a5]@7 ~ [c5,e5,a5]@6 ~ [c5,e5,a5]@5", // Am
R: "~@3 [c5,e5,a5]@6 ~@2 [c5,e5,a5]@4 [c5,e5,a5]@3 ~ [c4,e4,a4]@6 ~@2 [c4,e4,a4]@5", // Am
S: "~@3 [c4,e4,a4]@6 ~ [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6", // Am
T: "~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@4 [c4,e4,a4]@3 ~ [c5,e5,a5]@6 ~@2 [c5,e5,a5]@6", // Am
U: "~ [c5,e5,a5]@7 ~ [c5,e5,a5]@7 ~ [c5,e5,a5]@6 ~@2 [c5,e5,a5]@6 ~", // Am
V: "~ [c5,e5,a5]@6 ~@2 [c5,e5,a5]@4 [c5,e5,a5]@3 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~@2", // Am
W: "[[c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~@2 [c4,e4,a4]@6 ~ [c4,e4,a4]@6 ~@2 [c4,e4,a4]@4 [c4,e4,a4]@3 ~ [c5,e5,a5]@6 ~@2 [c5,e5,a5]@6 ~@2 [c5,e5,a5]@7 ~ [c5,e5,a5]@7 ~ [c5,e5,a5]@6 ~ [c5,e5,a5]@6 ~@2 [c5,e5,a5]@6 ~@2 [c5,e5,a5]@4 [c5,e5,a5]@3 ~@19]/4", // Am
X: "[~@12 [a4,c5,e5]@3 ~ [a4,c5,e5]@23 ~@5 [f4,a4,c5]@3 ~ [f4,a4,c5]@23 ~@5 [c4,e4,g4]@3 ~ [c4,e4,g4]@23 ~@5 [g4,b4,d5]@3 ~ [g4,b4,d5]@23 ~@5 [a4,c5,e5]@3 ~ [a4,c5,e5]@23 ~@5 [f4,a4,c5]@3 ~ [f4,a4,c5]@23 ~@5 [c4,e4,g4]@3 ~ [c4,e4,g4]@23 ~@5 [g4,b4,d5]@3 ~ [g4,b4,d5]@16]/8", // Am F C G Am F C G
Y: "[~@6 [a4,c5,e5]@29 ~@13]/3", // Am
})).s("gm_piano").gain(0.32)
// other · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
~@8 A B C D A B C D A B C D A B C D A B C D A B C D A B C D ~@15 E@3 F G H I F G H I F G H I F G H I F J ~@15 K L M N
O P Q N R ~@10
>`.pickRestart({
A: "a3@3 ~ c4@3 ~ b3@3 ~ e4@3 ~ b3@3 ~ c4@3 ~ a3@3 ~ c4@3 ~", B: "~@4 f3@3 ~ g3@3 ~ e4@7 ~ c4@3 ~ f3@3 ~ c4@3 ~",
C: "~@4 g3@3 ~ c4@3 ~ c4@3 ~ e4@3 ~ c4@3 ~ g3@6 ~@2", D: "~@4 g3@3 ~ c4@3 ~ c4@3 ~ e4@3 ~ c4@3 ~ g3@3 ~ e4@3 ~",
E: "[~@23 a3@3 ~ c4@3 ~ b3@3 ~ e4@3 ~ b3@3 ~ c4@3 ~ a3@3 ~ c4@3 ~@5 f3@3 ~ g3@3 ~ e4@7 c4@3 ~ f3@3 ~ c4@3 ~@5 g3@3 ~ c4@2]/3",
F: "~@2 c4@3 ~ e4@3 ~ c4@3 ~ g3@6 ~@6 g3@3 ~ c4@2", G: "~@2 c4@3 ~ e4@3 ~ c4@3 ~ g3@3 ~ e4@3 ~ a3@3 ~ c4@3 ~ b3@2",
H: "~@2 e4@3 ~ b3@3 ~ c4@3 ~ a3@3 ~ c4@3 ~@5 f3@3 ~ g3@2", I: "~@2 e4@7 ~ c4@3 ~ f3@3 ~ c4@3 ~@5 g3@3 ~ c4@2",
J: "~@2 c4@3 ~ e4@3 ~ c4@3 ~ g3@3 ~ e4@3 ~@11", K: "~@14 a3@3 ~ c4@3 ~ b3@3 ~ e4@3 ~ b3@2",
L: "~@2 c4@3 a3@3 ~ c4@3 ~@5 f3@3 ~ g3@3 ~ e4@7", M: "~ c4@3 ~ f3@3 ~ c4@3 ~@5 g3@3 ~ c4@3 e4@7 ~",
N: "c4@3 ~ g3@6 ~@6 g3@3 ~ c4@3 ~ e4@7 ~", O: "c4@3 ~ b3@3 ~ g3@3 ~ a3@3 ~ c4@3 ~ b3@3 ~ e4@3 ~ b3@3 ~",
P: "c4@3 ~ a3@3 ~ c4@3 ~@5 f3@3 ~ g3@3 ~ e4@7 ~", Q: "c4@3 ~ f3@3 ~ c4@3 ~@5 g3@3 ~ c4@3 ~ e4@7 ~",
R: "c4@3 ~ b3@3 ~ g3@3 ~@21",
})).s("gm_acoustic_guitar_nylon").gain(0.24)
// bass · acoustic bass
const bass = note(`<
A B C D A B C D E F G H E F G H E F I J E F G H E F I J E F G H E F I J K F L@3 M N O P Q@6 R S T U V W X Y Z W X U V
W X Y Z W X U AA AB AC AD AE AF AG AH@3 AI AJ AK AL@3 AM AN AO AP AQ AR AS AP AT@8 AU@3
>`.pickRestart({
A: "a1@3 ~ a1@23 ~@5", B: "f1@3 ~ f1@23 ~@5", C: "c2@3 ~ c2@23 ~@5", D: "g1@3 ~ g1@23 ~@5",
E: "a1@3 ~ a1@6 ~@2 a1@3 ~ a1@3 ~ a1@6 ~@2 g1@3 ~", F: "f1@3 ~ f1@6 ~@2 f1@3 ~ f1@3 ~ f1@6 ~@2 g1@3 ~",
G: "c2@3 ~ c2@6 ~@2 c2@3 ~ c2@3 ~ c2@6 ~@2 a1@3 ~", H: "g1@3 ~ g1@6 ~@2 g1@3 ~ g1@3 ~ g1@6 ~@2 g1@3 ~",
I: "c2@3 ~ c2@6 ~@2 c2@3 ~ c2@3 ~ c2@6 ~@2 c2@3 ~", J: "d2@3 ~ d2@6 ~@2 d2@3 ~ g1@3 ~ g1@6 ~@2 g1@3 ~",
K: "f1@3 ~ f1@6 ~@2 f1@3 ~ f1@3 ~ f1@6 ~@2 f1@3 ~",
L: "[a1@3 ~ a1@6 ~@2 a1@3 ~ a1@3 ~ a1@6 ~@2 a1@3 a1@3 ~ a1@6 ~@2 a1@3 ~ a1@3 ~ a1@3 ~ g1@6 ~@2 f1@3 ~ f1@6 ~@2 f1@3 ~ f1@3 f1@6 ~@2 f1@3 ~ f1@2]/3",
M: "~@2 f1@6 ~@2 f1@3 ~ f1@3 ~ f1@6 ~@2 g1@3 ~ a1@2", N: "~@2 a1@6 ~ a1@3 ~ a1@3 ~ a1@6 ~@2 a1@3 ~ a1@3",
O: "~ a1@6 ~@2 a1@3 ~ a1@3 ~ a1@3 ~ g1@6 ~ f1@3 ~", P: "f1@6 ~@2 f1@3 ~ f1@3 ~ f1@6 ~@2 f1@3 ~ f1@3 ~",
Q: "[f1@6 ~ f1@3 ~ f1@3 ~ f1@6 ~@2 g1@3 ~ a1@3 ~ a1@6 ~@2 a1@3 ~ a1@3 ~ a1@6 ~@2 a1@3 a1@3 ~ a1@6 ~@2 a1@3 ~ a1@3 ~ a1@3 ~ g1@6 ~@2 f1@3 ~ f1@6 ~@2 f1@3 ~ f1@3 f1@6 ~@2 f1@3 ~ f1@3 ~ f1@6 ~@2 f1@3 ~ f1@3 ~ f1@3 ~ g1@6 ~@2 a1@3 ~ a1@6 ~ a1@3 ~ a1@3 ~ a1@6 ~@2 a1@3 ~ a1@3 ~ a1@4]/6",
R: "~@4 a1@3 ~ a1@3 ~ a1@3 ~ a1@6 ~ a1@3 ~ a1@5", S: "~@3 a1@3 ~ a1@3 ~ a1@6 ~@2 g1@3 ~ f1@3 ~ f1@5",
T: "~@3 f1@3 f1@3 ~ f1@6 ~@2 g1@3 ~ c2@3 ~ c2@6", U: "~@2 c2@3 ~ c2@3 ~ c2@6 ~@2 c2@3 ~ d2@3 ~ d2@6",
V: "~@2 d2@3 ~ g1@3 ~ g1@6 ~@2 g1@3 ~ a1@3 ~ a1@6", W: "~@2 a1@3 ~ a1@3 ~ a1@6 ~@2 g1@3 ~ f1@3 ~ f1@6",
X: "~@2 f1@3 ~ f1@3 ~ f1@6 ~@2 g1@3 ~ c2@3 ~ c2@6", Y: "~@2 c2@3 ~ c2@3 ~ c2@6 ~@2 a1@3 ~ g1@3 ~ g1@6",
Z: "~@2 g1@3 ~ g1@3 ~ g1@6 ~@2 g1@3 ~ a1@3 ~ a1@6", AA: "~@2 d2@3 ~ g1@3 ~ g1@6 ~@2 g1@3 ~ f1@3 ~ f1@6",
AB: "~@2 f1@3 ~ f1@3 ~ f1@6 ~@2 f1@3 ~ f1@3 ~ f1@6", AC: "~@2 f1@3 ~ f1@3 ~ f1@6 ~@2 g1@3 ~ a1@3 ~ a1@6",
AD: "~@2 a1@3 ~ a1@3 ~ a1@6 ~@2 a1@3 ~ a1@3 ~ a1@6", AE: "~@2 a1@3 ~ a1@3 ~ a1@3 ~ g1@6 ~ f1@3 ~ f1@6 ~",
AF: "~ f1@3 ~ f1@3 ~ f1@6 ~@2 f1@3 ~ f1@3 ~ f1@6 ~", AG: "~ f1@3 f1@3 ~ f1@6 ~@2 g1@3 ~ a1@3 ~ a1@6 ~@2",
AH: "[a1@3 ~ a1@3 ~ a1@6 ~@2 a1@3 ~ a1@3 a1@6 ~@2 a1@3 ~ a1@3 ~ a1@3 ~ g1@6 ~@2 f1@3 ~ f1@6 ~@2 f1@3 ~ f1@3 ~ f1@6 ~ f1@3 ~ f1@3 ~ f1@6 ~@2 f1@2]/3",
AI: "~@2 f1@3 ~ f1@6 ~@2 g1@3 ~ a1@3 ~ a1@6 ~ a1@3", AJ: "~ a1@3 ~ a1@6 ~@2 a1@3 ~ a1@3 ~ a1@6 ~@2 a1@3",
AK: "~ a1@3 ~ a1@3 ~ g1@6 ~ f1@3 ~ f1@6 ~@2 f1@3 ~",
AL: "[f1@3 ~ f1@6 ~@2 f1@3 ~ f1@3 ~ f1@6 ~@2 f1@3 f1@3 ~ f1@3 ~ g1@6 ~@2 a1@3 ~ a1@6 ~@2 a1@3 ~ a1@3 ~ a1@6 ~@2 a1@3 ~ a1@3 a1@6 ~@2 a1@3 ~ a1@2]/3",
AM: "~@2 a1@3 ~ a1@6 ~@2 a1@3 ~ a1@6 ~@2 a1@3 ~ a1@2", AN: "~@2 a1@6 ~ g1@3 ~ f1@3 ~ f1@6 ~@2 f1@3 ~ f1@3",
AO: "~ f1@6 ~@2 g1@3 ~ c2@3 ~ c2@6 ~ c2@3 ~ c2@3 ~", AP: "c2@6 ~@2 c2@3 ~ d2@3 ~ d2@6 ~@2 d2@3 ~ g1@3 ~",
AQ: "g1@6 ~@2 g1@3 ~ a1@3 ~ a1@6 ~@2 a1@3 ~ a1@3 ~", AR: "a1@6 ~@2 g1@3 ~ f1@3 ~ f1@6 ~@2 f1@3 ~ f1@3 ~",
AS: "f1@6 ~@2 g1@3 ~ c2@3 ~ c2@6 ~@2 c2@3 ~ c2@3 ~",
AT: "[g1@6 ~@2 g1@3 ~ a1@3 ~ a1@23 ~@5 f1@3 ~ f1@23 ~@5 c2@3 ~ c2@23 ~@5 g1@3 ~ g1@23 ~@5 a1@3 ~ a1@23 ~@5 f1@3 ~ f1@23 ~@5 c2@3 ~ c2@23 ~@5 g1@3 ~ g1@16]/8",
AU: "[~@6 a1@29 ~@13]/3",
})).s("gm_acoustic_bass").gain(0.48)
// drums · kick
const kick = s("bd").struct(`<
A@8 B@28 C@2 D E F G H I J K L M N O P Q R S T@18 U@3 V W X Y Z AA AB AC AD D E F AE AF AG AH@5 AI AJ@7 AK ~@2
>`.pickRestart({
A: "x!2 ~@6", B: "x!2 ~ x ~ x ~ x", C: "x!2 ~ x!3 ~ x", D: "x ~@3 x ~@7 x ~@3 x ~@3 x ~@7 x ~@2 x",
E: "~@3 x ~@7 x ~@3 x ~@3 x ~@7 x ~@3 x", F: "~@3 x ~@7 x ~@3 x ~@2 x ~@7 x ~@3 x ~",
G: "~ x ~@3 x ~ x ~ x ~@3 x ~ x", H: "~@2 x ~@6 x ~@3 x ~@3 x ~@7 x ~@3 x ~@2",
I: "~ x ~@7 x ~@3 x ~@3 x ~@6 x ~@3 x ~@3", J: "x ~ x!3 ~ x!2", K: "x ~@6 x ~@3 x ~@3 x ~@7 x ~@3 x ~@3 x",
L: "~@7 x ~@3 x ~@3 x ~@7 x ~@2 x ~@3 x ~", M: "~@3 x ~ x ~ x ~@3 x ~ x ~ x",
N: "~@6 x ~@3 x ~@2 x ~@7 x ~@3 x ~@3 x ~@2", O: "~@5 x ~@3 x ~@3 x ~@7 x ~@3 x ~@3 x ~@2", P: "~ x!3 ~ x!3",
Q: "~@4 x ~@3 x ~@3 x ~@6 x ~@3 x ~@3 x ~@4", R: "~@3 x ~@7 x ~@7 x ~@3 x ~@3 x ~@4",
S: "~@3 x ~@6 x ~@7 x ~@3 x ~@3 x ~@5", T: "~ x ~@3 x ~@3 x ~ x ~ x ~@2", U: "~ x ~ x ~ x ~@3 x ~ x ~ x ~@2",
V: "~@2 x ~@3 x ~@3 x ~@6 x ~@3 x ~@3 x ~@6", W: "~ x ~@3 x ~@3 x ~@7 x ~@3 x ~@3 x ~@6",
X: "~ x ~@2 x ~@3 x ~@7 x ~@3 x ~@3 x ~@7", Y: "x ~@3 x ~@3 x ~@7 x ~@3 x ~@2 x ~@7 x",
Z: "~@3 x ~@3 x ~@7 x ~@3 x ~@3 x ~@7 x", AA: "~@3 x ~@3 x ~@6 x ~@3 x ~@3 x ~@7 x ~",
AB: "~@2 x ~@3 x ~@7 x ~@3 x ~@3 x ~@6 x ~@2", AC: "~ x ~@3 x ~@7 x ~@3 x ~@3 x ~@7 x ~@2",
AD: "~ x ~@3 x ~@7 x ~@2 x ~@3 x ~@7 x ~@3", AE: "~ x ~@3 x ~ x ~ x ~@3 x ~@2",
AF: "~@2 x ~@6 x ~@3 x ~@3 x ~@7 x ~@6", AG: "~ x ~@7 x ~@3 x ~@3 x ~@6 x ~@7", AH: "x ~ x!3 ~ x ~",
AI: "x ~ x!3 ~@3", AJ: "~@3 x!2 ~@3", AK: "~@3 x ~@4",
})).gain(0.1)
// drums · snare
const snare = s("sd").struct(`<
~@8 A@31 B@2 C D@2 E F@2 G@2 H I@2 J K@23 L M@2 N@2 O P@2 Q R S@2 T U@6 ~@11
>`.pickRestart({
A: "~ x", B: "~@15 x ~@16", C: "~@7 x ~@8", D: "~@13 x ~@18", E: "~@3 x ~@4", F: "~@11 x ~@20", G: "~@5 x ~@10",
H: "~@9 x ~@22", I: "~ x ~@2", J: "~@7 x ~@24", K: "~@3 x ~@12", L: "~@5 x ~@26", M: "~ x ~@6", N: "~@3 x ~@28",
O: "~ x ~@14", P: "~ x ~@30", Q: "x ~@30 x", R: "~@31 x", S: "~@15 x", T: "~@29 x ~@2", U: "~@7 x",
})).gain(0.14)
// drums · hihat
const hihat = s("hh").struct(`<
~@36 A@2 B C D E F G H I J K L M N O ~@19 P Q@3 R S T U V W X Y Z AA AB AC AD ~@18
>`.pickRestart({
A: "x!4 ~ x!3", B: "x ~@3 x ~@3 x ~@3 x ~@7 x ~@3 x ~@3 x ~@2 x", C: "~@3 x ~@3 x ~@3 x ~@7 x ~@3 x ~@3 x ~@3 x",
D: "~@3 x ~@3 x ~@3 x ~@6 x ~@3 x ~@3 x ~@3 x ~", E: "~ x ~ x ~ x ~@3 x ~ x ~ x ~ x",
F: "~@2 x ~@2 x ~@3 x ~@7 x ~@3 x ~@3 x ~@3 x ~@2", G: "~ x ~@3 x ~@3 x ~@7 x ~@3 x ~@2 x ~@3 x ~@3", H: "x!3 ~ x!4",
I: "x ~@3 x ~@2 x ~@7 x ~@3 x ~@3 x ~@3 x ~@3 x", J: "~@3 x ~@3 x ~@7 x ~@3 x ~@3 x ~@2 x ~@3 x ~",
K: "~ x ~ x ~@3 x ~ x ~ x ~ x ~ x", L: "~@2 x ~@3 x ~@6 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2",
M: "~ x ~@3 x ~@7 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2", N: "x!2 ~ x!5", O: "x ~@3 x ~@7 x ~@3 x ~@2 x ~@12",
P: "~@11 x ~ x ~ x", Q: "~ x ~@3 x ~ x ~ x ~ x ~ x ~ x", R: "~@2 x ~@7 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@2",
S: "~ x ~@7 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2", T: "~ x ~@6 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3",
U: "x ~@7 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x", V: "~@7 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x",
W: "~@7 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~", X: "~@6 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@2",
Y: "~@5 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2", Z: "~@5 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x ~@3", AA: "~ x!7",
AB: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4", AC: "~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@5",
AD: "~ x ~ x ~ x ~@10",
})).gain(0.14)
// drums · china
const china = s("cr").struct(`<
~@7 A ~@3 A ~@3 A ~@15 A ~@3 B C D C E ~ F G H ~ I ~ J K ~ L M ~@19 N O P Q R S T U V W X Y Z AA AB AC AD ~@15 AE ~@2
>`.pickRestart({
A: "~@7 x", B: "~@6 x!2", C: "x", D: "~@3 x", E: "~@19 x ~@3 x ~@7 x", F: "~@15 x", G: "~@29 x ~@2",
H: "~@21 x ~@6 x ~@3", I: "~@4 x ~@22 x ~@4", J: "~@9 x ~@3 x ~@2", K: "~@25 x ~@6", L: "~@2 x!2",
M: "~@12 x ~@3 x ~@2 x ~@3 x ~@8", N: "~@11 x ~@4", O: "~@9 x ~@6", P: "~@7 x ~@3 x ~@4", Q: "~@9 x ~ x ~@4",
R: "~@10 x ~@3 x ~@6 x ~@10", S: "~@13 x ~@7 x ~@10", T: "~@2 x ~ x!2 ~@2", U: "~@3 x!3 ~@2",
V: "~@7 x ~@7 x ~@3 x ~@12", W: "~@5 x ~@9 x", X: "~@7 x ~ x ~@6", Y: "~@9 x ~@19 x ~@2", Z: "~@9 x ~@6 x ~@15",
AA: "~@3 x!2 ~@3", AB: "~@11 x ~@3 x ~@16", AC: "~@7 x ~@7 x ~@16", AD: "~ x ~ x ~ x ~ x ~@8", AE: "~@3 x ~@4",
})).gain(0.14)
// drums · tambourine
const tambourine = s("tb").struct(`<
~@8 A@31 B@2 C D@2 E F@2 G@2 H I@2 J K@23 L M@2 N@2 O P@2 Q R S@2 T U@6 ~@11
>`.pickRestart({
A: "~ x", B: "~@15 x ~@16", C: "~@7 x ~@8", D: "~@13 x ~@18", E: "~@3 x ~@4", F: "~@11 x ~@20", G: "~@5 x ~@10",
H: "~@9 x ~@22", I: "~ x ~@2", J: "~@7 x ~@24", K: "~@3 x ~@12", L: "~@5 x ~@26", M: "~ x ~@6", N: "~@3 x ~@28",
O: "~ x ~@14", P: "~ x ~@30", Q: "x ~@30 x", R: "~@31 x", S: "~@15 x", T: "~@29 x ~@2", U: "~@7 x",
})).gain(0.1)
// drums · ride
const ride = s("rd").struct(`<
A B@37 C D E F G H I J K L M N B O D P F@21 Q R S T U V W N X Y D E F Z H I@13 AA ~@2
>`.pickRestart({
// … 53 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.