0:00/0:00
// Thank U — Alanis Morissette
// 100 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 75 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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 B@5 C@4 D@2 E F G H@7 I@4 J@2 K@2 L@4 M N O@2 P@8 Q@3 R S@2 T@4 U@5 V W@4 X@6 Y@2 ~
>`.pickRestart({
A: "~ [d4,f#4]@5 ~ d4@5 ~@6 [e4,g4]@6 [e4,g4]@6 [e4,g4]@6 [e4,g4]@6 [e4,g4]@5 ~, d3@47 ~, ~@6 f#4@6 f#4@35 ~, ~@13 d4@35", // D Em
B: "[[d4,f#4]@6 [d4,f#4]@6 ~@5 [e4,g4]@6 [e4,g4]@6 [e4,g4]@6 [e4,g4]@6 ~@2 d4@4 ~@6 [d4,f#4]@6 ~@6 [e4,g4]@6 [e4,g4]@6 [e4,g4]@6 [e4,g4]@6 [e4,g4]@5 ~@7 [d4,f#4]@6 ~@6 [e4,g4]@6 [e4,g4]@6 [e4,g4]@6 [e4,g4]@6 [e4,g4]@6 ~@6 [d4,f#4]@6 ~@6 [e4,g4]@6 [e4,g4]@6 [e4,g4]@6 ~@6 [d3,d4,f#4]@6 [d4,f#4]@6 [d4,f#4]@6 ~@6 [e4,g4]@6 [e4,g4]@6 ~@7 [d4,f#4]@5 ~ [d3,d4]@6, g3@47 ~@48 g3@36 g3@12 ~ d3@41 ~@6 d3@43 ~@6, ~@12 [d4,f#4]@29 [e4,g4]@6 [d4,f#4]@6 ~@6 [d4,f#4]@35 ~ [d4,f#4]@6 ~@6 [d4,f#4]@36 [d4,f#4]@6 ~@6 [d4,f#4]@29 ~@19 [d4,f#4]@25 ~@5 f#4@6 ~, ~@17 g2@30 ~ [d2,d3]@47 ~@2 g2@46 ~ d2@47 d2@49, ~@42 f#4@5 ~@132 [e4,g4]@30 ~@12 [e4,g4]@18 ~]/5", // D Em D Em D Em D Em …
C: "[[a3,c#4]@5 ~ [a3,c#4]@6 a3@5 [a3,d4]@7 [a3,d4]@6 [a3,d4]@6 [a3,d4]@5 ~ a3@6 [a3,c#4]@6 [a3,c#4]@6 a3@6 [a3,d4]@5 a3@6 [a3,c#4]@6 [a3,c#4]@6 [a3,c#4]@5 ~ [d4,f#4]@6 [d4,f#4]@6 ~@6 [e4,g4]@6 [e4,g4]@6 [e4,g4]@6 [e4,g4]@6 ~@6 [d4,f#4]@6 [d4,f#4]@6 [d4,f#4]@6 [e4,g4]@6 [e4,g4]@6 ~@6 [d4,f#4]@6 ~ d4@5 ~, ~@5 a2@43 a2@35 a2@11 ~ [d2,d3]@48 [d2,d3]@48 ~, ~@12 c#4@36 ~@12 c#4@17 ~@60 [e4,g4]@24 ~@12 [e4,g4]@18 ~, ~@41 d4@24 ~@6 d4@23 ~@13 [d4,f#4]@36 ~@42 f#4@6 ~]/4", // A D5 A D5 A D Em D …
D: "[~@6 [a3,c#4]@6 [a3,c#4]@5 [b3,d4]@6 d4@6 [a3,d4]@6 [a3,d4]@6 [a3,d4]@6 [a3,c#4]@6 [a3,c#4]@6 a3@6 [a3,d4]@6 a3@6 [a3,c#4]@6 ~ a3@5 [a3,c#4]@5 ~@2, [a3,c#4]@6 ~@17 b3@24 ~@12 c#4@18 ~@6 c#4@6 ~@7, ~ a2@46 a2@47 ~@2, ~@71 d4@23 ~@2]/2", // A Bm D5 A D5 A
E: "d4@5 [d4,f#4]@7 ~@6 [e4,g4]@6 [e4,g4]@6 [e4,g4]@6 ~@6 [d3,d4,f#4]@5 ~, d2@47 ~, d3@7 ~, ~@2 [d4,f#4]@5 ~, ~@36 [e4,g4]@11 ~", // D Em D Em
F: "[d4,f#4]@6 [d4,f#4]@6 [d4,f#4]@6 [e4,g4]@6 [e4,g4]@6 ~@7 [d4,f#4]@5 [d3,d4,f#4]@4 ~@2, d2@23 ~, d3@7 ~, ~@15 [e4,g4]@8 ~", // D Em D Em
G: "~@6 [a3,c#4]@6 ~ a3@5 ~ b3@5 d4@6 [a3,d4]@6 [a3,d4]@6 [a3,b3,d4]@6, [a3,c#4] ~ c#4 d4 b3@3 ~, ~ a2@47", // A D5 Bm7 A
H: "[[a3,b3,c#4]@6 [a3,b3,c#4]@5 ~ [a3,b3]@5 ~ a3@5 ~ a3@5 [a3,c#4]@6 [a3,c#4]@6 [a3,c#4]@5 ~@7 [d4,f#4]@6 d4@6 [d4,g4]@6 [d4,g4]@6 [d4,g4]@6 [d4,e4,g4]@6 d4@6 ~@6 [d4,f#4]@6 d4@6 ~ [d4,e4]@6 [d4,e4,g4]@6 [d4,e4,g4]@5 ~ [d4,g4]@5 ~ [d4,g4]@5 ~@7 a3@5 ~ a3@5 ~ a3@5 ~ a3@5 ~ a3@6 [a3,b3,d4]@6 ~@6 a3@3 ~@3 a3@5 a3@6 [a3,d4]@6 [a3,d4]@6 ~@12 a2@5 ~@7 [d4,f#4]@6 ~ d4@5 ~ [d4,e4]@6 [d4,e4,g4]@5 ~ [d4,g4]@5 ~ d4@5 ~ d4@5 ~ [d4,e4]@5 ~ [d4,e4]@5 ~ [d4,e4]@6 ~@6 d4@5 ~ d4@5 ~ [d4,g4]@6 [d4,e4,g4]@5 ~, a2@17 [b3,d4]@6 [b3,d4]@23 ~@2 d3@48 d3@41 [d3,e4]@5 ~ [a3,c#4]@6 ~@12 [b3,d4]@6 [b3,d4]@6 [b3,d4]@7 ~@6 [a3,b3,d4]@9 ~@26 [a3,d4]@6 [a3,d4]@11 ~@2 d3@35 [d3,e4,g4]@6 ~@7 d3@19 d3@17 d3@11 ~, ~@11 c#4@18 ~@18 [d4,f#4]@6 ~@6 f#4@36 [d4,f#4]@6 ~@6 f#4@35 ~@109 f#4@36 f#4@6 f#4@6 f#4@36 ~, ~@18 a2@29 d2@48 d2@47 ~@2 a2@47 a2@30 ~ a2@11 ~@6 d2@42 [d2,d3,e4,g4]@6 ~ d2@47 ~, ~@89 [e4,g4]@24 g4@6 ~@12 e4@6 ~@12 c#4@6 c#4@36 c#4@3 ~@3 c#4@6 c#4@35 ~ [d4,f#4]@6 ~@12 g4@7 ~@5 e4@6 ~@31 [d4,e4,g4]@5 [e4,g4]@6 [e4,g4]@6 e4@7 ~@6]/7", // A Asus2 A D G5 Em7 D Dsus2 …
I: "[[a3,c#4]@5 ~ a3@5 ~ a3@5 ~ a3@5 ~ a3@6 a3@6 [a3,b3]@6 [a3,b3]@6 [a3,c#4]@6 [a3,c#4]@6 [a3,b3]@6 [a3,b3,d4]@5 ~ a3@5 [a3,b3,c#4]@6 [a3,b3,c#4]@6 [a3,b3,c#4]@6 ~@6 [d4,f#4]@6 d4@6 ~ [d4,g4]@5 ~ d4@5 [d4,e4,g4]@6 [d4,e4,g4]@6 ~ d4@5 ~@7 d4@5 ~ d4@5 [d4,e4,g4]@6 [d4,e4,g4]@6 [d4,e4]@6 ~ d4@5 ~ [d3,d4,e4]@5 ~, a2@24 a2@24 a2@18 a2@29 d2@47 ~ d2@47 ~@2, ~@5 c#4@12 c#4@6 c#4@6 ~ c#4@18 b3@12 c#4@17 ~@36 e4@6 [e4,g4]@6 ~@12 [e4,g4]@5 ~ [d4,f#4]@6 ~@24 g4@17 ~@2, ~@11 d4@54 ~@6 d4@23 ~ [d4,f#4]@6 ~@6 f#4@36 ~@6 f#4@6 f#4@24 [e4,f#4]@6 f#4@5 ~@2, ~@71 b3@6 ~@19 d3@47 ~ d3@42 ~@6]/4", // A Asus2 A Asus2 Bm7 A D G5 …
J: "[[a3,c#4]@5 ~ a3@5 ~ a3@5 [a3,b3,d4]@6 [a3,b3,d4]@6 ~ [a3,b3,d4]@5 ~ a3@5 ~ a3@6 [a3,b3,c#4]@5 ~ [a3,b3]@5 ~ a3@5 ~ [a3,d4]@6 [a3,b3,d4]@5 ~ a3@5 [a3,b3,d4]@6 ~ a3@4 ~@2, a2@48 a2@35 a2@11 ~@2, ~@5 c#4@6 c#4@36 ~@6 c#4@6 c#4@35 ~@2, ~@35 [b3,d4]@6 d4@25 ~@30, ~@41 b3@7 ~@11 b3@6 b3@6 ~@6 [b3,d4]@6 ~@6 [b3,d4]@5 ~@2]/2", // A Bm7 A Asus2 D5 Bm7 Bm
K: "[[d4,f#4]@6 d4@6 [e4,g4]@6 [e4,g4]@5 ~ [d4,e4,g4]@5 ~ [d4,e4]@5 ~ [d4,f#4]@5 ~ d3@5 ~@7 [d4,e4]@5 ~ d4@5 [d4,e4,g4]@6 ~ d4@5 ~ d4@5 ~ [d3,d4,e4]@5 ~ [d3,d4,e4]@5 ~, d2@46 ~ d2@47 ~@2, d3@23 d3@18 ~@7 d3@36 ~@12, ~@6 f#4@29 e4@6 [d4,e4,f#4]@5 ~ [d4,e4,f#4]@7 ~@5 e4@6 ~@6 [e4,g4]@6 g4@17 ~@2, ~@12 d4@11 ~@6 g4@17 ~@7 f#4@6 f#4@18 e4@6 f#4@6 f#4@5 ~@2]/2", // D Em Em7 Dsus2 D Dsus2 Em7 Dsus2 …
L: "[[a3,c#4]@6 [a3,c#4]@5 ~ a3@5 ~ [a3,d4]@5 ~ a3@5 [a3,b3,d4]@6 [a3,b3,d4]@6 ~ a3@5 ~ b3@5 [b3,c#4]@6 ~ [a3,b3]@6 [a3,b3,d4]@5 ~ a3@5 ~ [a3,c#4]@5 ~ [a3,b3]@5 ~ [a2,a3]@4 ~@8 [d4,e4]@5 ~ [d4,e4]@6 [d4,e4,g4]@5 ~ d4@5 ~ d4@6 [d4,e4,g4]@5 ~ d4@5 ~@7 d4@5 [d4,e4,f#4]@6 ~ [d4,g4]@5 ~ d4@5 ~ d4@5 ~ d4@5 ~ [d3,d4]@5 ~, a2@47 c#4@6 ~@6 c#4@18 ~@6 c#4@6 ~@7 d4@6 ~@17 [e4,g4]@6 [e4,g4]@6 ~@6 [e4,g4]@5 ~ [d4,e4,f#4]@6 [e4,f#4]@6 ~@6 e4@6 [e4,g4]@6 e4@6 e4@6 e4@5 ~@2, ~@11 c#4@36 a3@13 ~@11 b3@6 b3@7 ~@5 [b3,c#4]@5 ~@3 d3@45 ~@2 d3@42 ~@6, ~@17 b3@6 [b3,d4]@6 ~@12 d4@25 ~@5 d4@23 ~ [e4,f#4]@6 f#4@6 f#4@35 ~@31 g4@17 ~@2, ~@41 b3@7 a2@42 ~@6 d2@46 ~@2 d2@47 ~]/4", // A D5 Bm7 Bsus2 Asus2 Bm7 A Asus2 …
M: "[a3,c#4]@6 [a3,c#4]@5 ~ a3@5 ~ a3@5 ~ a3@5 [a3,b3,d4]@6 [a3,b3,d4]@6 ~ a3@5 ~, a2@47 ~, ~@11 c#4@35 ~@2, ~@17 [b3,d4]@6 [b3,d4]@6 ~@12 [b3,d4]@5 ~@2", // A Bm7 Bm
N: "[a3,b3,c#4]@6 [a3,b3,c#4]@6 [a3,b3]@6 [a3,b3,d4]@5 ~ a3@5 ~ [a2,a3]@5 ~ [a2,a3,d4]@5 ~ [a3,b3]@4 ~@2, a2@30 ~@11 [a2,d4]@5 ~@2, ~@6 c#4@17 ~, ~@23 [b3,d4]@6 [b3,d4]@6 b3@6 ~@7", // A Asus2 Bm7 A D5 Asus2 D5 Bm
O: "[[d4,f#4]@5 [d4,f#4]@7 d4@6 [d4,e4,g4]@6 [d4,e4,g4]@5 ~ d4@6 [d3,d4,f#4]@5 ~ [d3,d4]@6 [d4,f#4]@5 ~ d4@5 ~ [d3,d4,f#4]@6 [d4,e4,f#4]@6 ~ d4@5 [d4,e4,f#4]@6 [d4,e4,f#4]@6 [d3,d4,e4,f#4]@5 ~, d2@48 d2@18 d2@29 ~, d3@30 g4@65 ~, ~@12 f#4@24 ~@5 f#4@6 ~ d3@12 ~@6 d3@24 ~@6, ~@29 e4@7 e4@17 f#4@6 e4@6 ~@7 [e4,f#4]@6 ~@18]/2", // D Em7 D Esus2
P: "[[a3,c#4]@6 ~ a3@5 a3@5 [a3,b3,d4]@6 ~ a3@5 ~ a3@5 ~ a3@5 ~ a3@5 [a3,b3]@6 ~ a3@5 ~ a3@5 [a3,b3,c#4]@6 [a3,b3,c#4]@6 [a3,b3,c#4]@6 [b3,c#4,d4]@6 [b3,c#4,d4]@6 [d4,f#4]@6 [d4,f#4]@6 d4@6 [d4,e4,g4]@6 [d4,e4,g4]@6 ~@6 [d4,e4,g4]@6 ~ d4@5 [d4,e4,f#4]@6 [d4,e4,f#4]@6 [d4,e4]@6 [d4,e4,g4]@6 [d4,e4,g4]@5 ~ [d4,e4]@6 [g3,d4,e4,f#4]@6 [g3,d4,e4,f#4]@5 ~ [a3,c#4]@6 [a3,c#4]@6 a3@6 [a3,b3,d4]@7 [a3,b3,d4]@6 [a3,b3,d4]@5 ~ a3@6 [a3,b3,d4]@4 ~ [a3,b3,c#4]@6 ~ a3@5 ~ [a3,b3]@5 [a2,a3,b3,d4]@6 ~ [a3,b3,d4]@5 ~ a3@5 ~ a2@5 a2@5 ~@2 [d3,d4,e4,f#4]@11 ~ [d4,e4,f#4]@5 ~ [d4,e4]@5 ~ d4@6 d3@6 d3@5 ~ e4@6 [d4,e4,f#4]@5 ~ [d4,e4]@6 [d4,e4]@6 [d4,e4,g4]@6 [d4,e4]@6 [d3,d4,e4,f#4]@6 ~@6 a3@5 ~, a2@46 ~ a2@47 ~ d2@36 d2@12 d2@47 ~@97 d2@18 ~ d2@23 [d2,d3,d4,f#4]@7 d2@47 ~, ~@6 c#4@6 c#4@23 ~@90 [d4,e4,g4]@6 ~@6 [e4,g4]@6 ~@18 g2@29 ~ a2@18 a2@29 ~ a2@18 ~@6 a2@6 [a2,b3,d4]@6 ~ [a3,d4]@10 ~@13 d3@6 ~ d3@12 [d4,e4]@12 ~@6 d3@30 ~@6 [d3,d4,e4,f#4]@11 ~, ~@23 [b3,d4]@6 d4@17 ~@61 f#4@36 ~@12 f#4@17 g4@17 ~@14 c#4@35 ~@13 c#4@34 ~@20 f#4@6 f#4@18 ~@12 f#4@7 f#4@18 ~@11 c#4@6 ~, ~@29 b3@6 [b3,c#4]@6 [b3,c#4]@5 ~@7 b3@6 b3@6 ~@18 a3@12 d3@30 ~ d3@17 d3@12 d3@34 ~@38 [b3,d4]@6 ~@12 [b3,c#4]@6 ~@24 b3@11 ~@25 e4@6 ~ g4@36 ~@6 g4@23 ~]/8", // A Bm7 Asus2 A Bm D Em7 D …
Q: "[[a3,c#4]@6 a3@6 [a3,b3,d4]@6 [a3,b3]@5 ~ [a3,b3]@5 ~ [a3,b3]@5 ~ a3@5 [a3,b3]@6 ~ a3@6 [a3,b3]@5 ~ [a3,d4]@5 ~ a3@5 [a3,b3,c#4]@6 ~ a3@5 [a3,b3,d4]@6 [a3,b3,d4]@6 ~@6 d4@6 [d4,e4,g4]@6 ~@13 d4@6 [d3,d4]@5 ~ [d3,d4]@5 ~, a2@48 a2@23 a2@23 ~ d2@48 ~, ~@6 c#4@17 c#4@6 c#4@18 ~@7 c#4@17 ~@6 c#4@17 ~@19 [e4,g4]@19 [e4,g4]@11 ~, ~@18 d4@17 d4@24 ~@7 d4@17 ~@12 [d4,f#4]@6 f#4@18 d3@13 ~@12, ~@35 b3@5 ~@7 [b3,c#4]@6 ~@6 b3@6 b3@6 ~@6 b3@6 ~@13 d3@17 d4@13 f#4@11 f#4@6 ~]/3", // A Bm7 Asus2 D5 A Bm7 Em7 D …
R: "[d4,f#4]@5 ~ d4@5 ~ d4@5 ~@7 d4@5 ~ d4@6 [d3,d4,e4,f#4]@5 ~ [d3,d4,e4]@5 ~, d2@23 ~, d3@17 [d4,e4,g4]@6 [e4,g4]@6 g4@17 ~@2, ~@5 f#4@6 f#4@18 e4@6 ~@6 f#4@5 ~@2, ~@3 d3@3 ~@2", // D Dsus2 Em7 Em
S: "[[a3,c#4]@6 [a3,c#4]@5 ~ a3@5 [a3,b3,d4]@6 [a3,b3,d4]@6 ~ d4@6 [a3,b3,d4]@6 [a3,b3]@6 [a3,b3,c#4]@6 [a3,b3,c#4]@5 ~ [a3,b3]@5 ~ a3@5 ~ b3@5 ~ [a3,d4]@5 ~ a3@6 [a3,b3,c#4]@5 ~, a2@17 a2@78 ~, ~@11 c#4@36 ~ g2@47 ~, ~@29 [a3,b3]@7 ~@6 d4@23 [b3,d4] g3@5 [a3,d4]@6 b3@6 d4@12 ~, ~@59 c#4@24 b3 g3@11 ~]/2", // A Bm7 Asus2 A Asus2 D5 A Asus2 …
T: "[d4@12 [d4,e4,g4]@6 [d4,e4,g4]@6 ~ d4@5 [d4,e4,g4]@6 [d4,e4,g4]@6 [d4,e4]@6 [d4,e4,f#4]@6 ~ d4@5 ~ e4@5 [d4,e4,g4]@6 [d4,e4]@6 [d4,e4,f#4]@6 [d4,e4,f#4]@6 ~@6 [a3,c#4]@6 [a3,c#4]@6 [a3,c#4]@5 ~ [a3,b3,d4]@6 [a3,b3,d4]@5 ~ a3@5 ~ a3@5 ~ a3@6 [a3,b3,c#4]@6 [a3,b3,c#4]@6 [a3,b3]@6 ~ [a3,b3]@5 [a3,b3]@6 [a3,b3,c#4]@6 [a3,b3,c#4]@6 [a3,b3,c#4]@5 ~, d2@47 ~@17, d3 ~, f#4@48 ~@6 [e4,f#4]@6 f#4@18 ~@12 [d4,e4,f#4]@23 ~@12 [b3,d4]@6 [b3,d4]@6 d4@25 d4@6 d4@23 ~, ~@24 [e4,g4]@6 ~@12 g4@18 d4@6 ~@6 g4@41 ~@24 b3@7 ~@12 c#4@18 ~@18]/4", // Em7 Dsus2 D Em7 Dsus2 D A Bm7 …
U: "[[d4,e4,f#4]@6 [d4,e4,f#4]@6 [d4,e4]@6 [d4,e4,g4]@6 [d4,e4,g4]@6 [d4,e4,g4]@6 [d4,e4,g4]@6 [d4,e4]@6 [d4,e4,f#4]@6 ~ d4@5 ~ d4@5 [d4,e4,g4]@6 [d4,e4,g4]@6 [d4,e4]@6 [d4,e4,f#4]@6 ~@7 c#4@5 ~ a3@5 ~ a3@5 ~ a3@5 [a3,b3,d4]@6 [a3,b3,d4]@6 [a3,b3,d4]@5 ~ a3@5 ~ [a3,b3]@6 [a3,b3,c#4]@5 ~ a3@4 ~ [a2,a3,b3,d4]@6 [a2,a3,b3,d4]@6 [a2,a3,b3,d4]@6 [a2,a3,b3,d4]@6 [a2,a3,b3,d4]@5 ~@2 [d4,f#4]@5 ~ [d4,e4]@5 ~ g4@5 ~@6 [d4,e4,g4]@6 ~@6 [e4,g4]@6 ~ [d3,d4]@5 ~, d3@96 a3@6 c#4@6 c#4@5 ~ [b3,d4]@5 ~@18 b3@6 c#4@6 ~@6 [b3,c#4]@5 ~@32 d3@17 ~ d3@23 [e4,g4]@5 ~@2, ~@12 f#4@36 ~@6 [e4,f#4]@6 f#4@24 ~@7 d4@23 ~@23 d4@23 ~@31 e4@6 ~@6 [d4,e4]@6 [d4,e4,g4]@6 ~@6 [e4,g4] d4@12 ~@6, ~@42 g4@24 ~@12 g4@35 ~@84 f#4@41 ~@2, ~@60 e4@5 ~@25 [e4,f#4]@23 ~@31 g2@17 ~@31 d2@47 ~]/5", // D Dsus2 Em7 Dsus2 D Em7 Dsus2 D …
V: "[d4,e4,f#4]@5 ~ [d4,e4]@6 ~ d4@5 [d4,e4,g4]@6 [d4,e4,g4]@6 [d4,e4]@6 [d3,d4,e4,f#4]@5 ~ [d3,d4,e4]@5 ~, d2@23 ~, d3@3 d3@3 ~@2, ~@5 f#4@7 f#4@24 ~@5 f#4@5 ~@2, ~@12 e4@6 ~@12 g4@17 ~", // D Dsus2 Em7 Dsus2 D Dsus2
W: "[[a3,c#4]@5 ~ a3@5 ~ a3@5 [a3,b3,d4]@6 [a3,b3,d4]@6 [a3,b3,d4]@6 [a2,a3,b3,d4]@6 [a3,b3]@6 [a3,b3,c#4]@6 [a3,b3,c#4]@6 ~ a3@5 [a3,b3,d4]@6 ~ b3@5 [a3,b3]@6 [a3,b3,c#4]@6 [a3,b3,c#4]@6 ~@6 [d4,f#4]@6 d4@6 [d4,e4,g4]@6 [d4,e4,g4]@6 [d4,e4,g4]@6 [d4,e4,g4]@6 ~ [d3,d4]@6 [d4,e4,f#4]@6 [d4,e4,f#4]@6 [d4,e4,f#4]@5 ~ [d4,e4,g4]@6 ~ d4@5 [d4,e4]@6 ~ [d4,e4]@5 ~ d3@5, a2@35 ~@6 a2@54 ~ d3@41 e4@7 d3@18 d3@25 ~@5, ~@5 c#4@6 c#4@6 ~@24 d4@18 b3@6 g3@30 ~@42 g4@24 ~@13 g4@17 ~, ~@47 g2@48 d2@49 d2@47 ~, ~@59 c#4@12 [a3,d4]@6 d4@18 [d4,f#4]@6 ~@6 f#4@37 ~@24 [e4,g4]@6 ~@6 f#4@6 [d4,e4,f#4]@5 ~]/4", // A Bm7 Asus2 A Bm7 Asus2 A D …
X: "[~@43 b3@5 ~@41 d4@6 [d4,f#4]@6 [d4,f#4]@6 d4@6 [d4,e4,g4]@6 [d4,e4,g4]@6 [d4,e4,g4]@6 [d4,e4,g4]@5 ~ [d4,e4,g4]@6 [d4,e4,f#4]@2 ~@4 [d4,e4,f#4]@6 [d4,e4,f#4]@4 ~@2 [d4,e4,g4]@6 [d4,e4,g4]@6 [d4,e4]@6 ~ e4@5 [d4,e4,f#4]@5 ~@7 [a3,c#4]@6 a3@6 [a3,b3,d4]@6 ~ d4@5 [a3,b3,d4]@6 ~ a3@5 [a3,b3]@6 ~@7 [a3,b3]@5 ~ a3@5 ~ a3@5 ~@7 [b3,c#4]@5 ~ [g2,a3]@5 [g2,a3,b3,c#4]@6 ~, ~ [g3,b3]@18 [g3,b3]@23 ~ g3@12 a3@11 [g3,b3]@77 d3@16 ~@2 d3@18 d3@11 ~@2 a2@95 ~, ~@2 g2@17 g2@29 g2@96 ~@35 [d4,f#4]@6 ~@6 [a3,c#4]@6 ~@6 c#4@36 [a3,b3,c#4]@6 c#4@6 c#4@12 b3 a3@11 [b3,c#4]@6 ~@7, ~@8 c#4@22 ~@7 a2@17 c#4@23 [a3,c#4]@67 ~@29 g4@17 ~@25 [a3,b3]@6 ~@6 [b3,d4]@6 d4@18 b3@6 [b3,d4]@6 d4@23 ~@2, ~@9 a3@21 [a3,c#4]@19 b3@11 a2@23 a2@12 [d2,d3]@12 f#4@24 d3@5 d2@7 d2@47 ~@19 g2@31 g2@18 g2@18 ~@12]/6", // D Em7 D Em7 Dsus2 D A Bm7 …
Y: "[[d2,d4,e4,f#4]@5 ~@3]/2", // D
})).s("gm_piano").gain(0.31)
// bass · electric bass finger
const bass = note(`<
~@4 A@3 B@3 C D@2 E F G H@2 I J@2 E C D@2 K@2 L@2 M@3 N@6 O@3 P@8 Q@2 R@2 S T U V W@2 X@4 Y@4 Z@7 ~
>`.pickRestart({
A: "[d2@44 ~@3 d2@47 ~ a1@46 ~@3]/3", B: "[g1@38 ~@4 g1@3 ~@2 d2@43 ~@5 d2@45 ~@4]/3", C: "a1@23 ~",
D: "[g1@42 ~@5 d2@45 ~@4]/2", E: "d2@11 ~", F: "~ a1@40 ~ a1@3 ~@3", G: "g1@15 ~", H: "[d2@44 ~@3 d2@47 ~@2]/2",
I: "a1@39 ~@3 a1@4 ~@2", J: "[g1@44 ~@3 d2@45 ~@4]/2", K: "[d2@41 ~@6 a1@47 ~@2]/2",
L: "[g1@44 ~@3 [d1,d2]@45 ~@4]/2", M: "[[d1,d2]@47 a1@40 ~@2 a1@5 ~ g1@45 ~@4]/3",
N: "[d2@44 ~@3 d2@44 ~@4 a1@40 ~@2 a1@3 ~@3 g1@44 ~@4 d2@44 ~@4 d2@46 ~@2 a1]/6",
O: "[~@41 a1@5 ~ g1@42 ~@6 d2@47 ~@2]/3",
P: "[d2@46 ~ a1@45 ~@3 g1@42 ~@6 d2@46 ~@2 d2@41 ~@7 a1@40 ~@2 a1@3 ~@3 g1@39 ~@9 d2@45 ~@4]/8",
Q: "[d2@40 ~ d2@5 ~ a1@48 ~]/2", R: "[g1@46 ~ d2@46 ~@3]/2", S: "d2", T: "a1@42 ~ a1@4 ~", U: "g1@47 ~", V: "d2@15 ~",
W: "[d2@47 a1@49]/2", X: "[g1@47 d2@46 ~@2 d2@48 a1@47 ~@2]/4", Y: "[g1@41 ~@6 d2@44 ~@4 d2@50 a1@47]/4",
Z: "[g1@47 d2@44 ~@4 d2@48 a1@48 g1@48 d2@68 ~@29]/7",
})).s("gm_electric_bass_finger").gain(0.41)
// chords · piano
const piano_2 = note("<~@19 A@4 B@7 ~@5 C@2 D E@7 ~ F@7 ~@6 G@3 H@4 I J@3 ~@5>".pickRestart({
A: "[~@47 d3@36 d3@12 ~@12 d4@6 ~@20 d3@10 ~ a3@11 ~@24 a3@12 ~, ~@47 [d2,d4,e4,f#4,a4]@48 d2@48 ~@12 a3@24 ~@13, ~@95 [e4,f#4,a4]@18 ~ a4@29 ~ e4@17 ~@31, ~@95 d4@12 ~@6 [d4,e4,f#4]@30 c#4@18 [b3,c#4,e4]@30 ~, ~@102 d3@31 ~@11 a2@47 ~]/4", // D F#m7 D C#m7
B: "[g3@6 ~@30 g3@11 ~@18 d4@19 ~@5 d3@6 d3@11 ~@7 d4@11 ~@7 d3@12 ~@36 [c#4,e4]@12 g3@36 ~ g3@11 [d2,d3,d4,e4,f#4,a4]@85 ~@12, g2@47 [d2,a4]@48 d2@48 ~ a2@47 [g2,b3,d4]@47 ~@98, d4@18 b3@29 ~ e4@48 ~@11 d3@24 ~@12 a3@32 a3@16 ~@145, b3@12 a3@35 d3@12 ~ d3@24 [d4,g4]@11 d4@18 g4@30 ~@193, ~@6 g3@24 d4@17 [d4,f#4]@18 f#4@30 f#4@29 ~ [d4,f#4]@18 [c#4,e4]@36 ~@157]/7", // C#m D D5 G G5 D C#m
C: "[~@85 d3@11, ~@47 [d2,d4]@49, ~@47 d3@38 ~@11, ~@11 f#4@5, ~@79 g4@17]/2", // D
D: "~@36 d3@11 ~, d2@47 ~, f#4@29 f#4@18 ~, ~ d3@2 ~, ~@17 g4@30 ~",
E: "[a3@11 ~@54 g3@18 g3@10 ~@2 d3@12 ~@6 d4@12 ~@55 d3@11 a3@37 a3@11 ~@37 c#4@60, a2@94 ~@13 d3@24 d3@49 ~@11 [a2,c#4]@49 g2@96, ~@11 a3@24 a3@24 g2@34 ~@2 d2@48 d2@47 ~@146, ~@18 b3@76 ~ d4@18 g4@30 ~@115 [g3,c4]@78, ~@29 c#4@64 ~@2 f#4@30 [d4,f#4]@65 ~@49 [g3,b3]@20 ~@77]/7", // A C5 D G
F: "[~@17 a2@6 ~@19 a2@5 ~@18 g2@7 ~@17 g2@5 ~@19 d2@6 ~@18 d2@7 ~@23 [d4,d5]@6 ~@43 [a3,a4]@6 ~@5 a2@7 ~@30 [g3,g4]@6 ~@5 g2@11 ~ d2@17 ~@32, a2@17 ~@6 a2@18 ~@6 g2@18 ~@7 g2@17 ~@6 d2@17 ~@7 d2@18 ~@7 d2@17 d2@18 d2@58 ~@3 g2@18 g2@17 ~@61, ~@11 a3@24 a3@59 ~@13 d4@23 ~ d4@24 [d4,d5]@12 ~@6 [d4,d5]@13 [d4,d5]@51 ~@99, ~@59 g3@24 g3@11 ~@98 a2@19 a2@16 ~@7 [g3,g4]@19 [g3,g4]@11 ~@6 [g3,g4]@16 ~@50, ~@68 [a3,a4]@4 ~@2 [a3,a4]@5 ~@33]/7", // D A G D G A
G: "[~@47 [d2,d3,d4,f#4,a4]@96 ~]/3", // D
H: "[[a2,a3,c#4,e4]@46 ~ [g2,g3,b3,d4]@48 [d2,d3,d4,f#4,a4]@47 [d2,d3,d4,f#4,a4]@50]/4", I: "[a2,a3,c#4,e4]",
J: "[[g2,g3,b3,d4]@45 ~@2 d4@72 ~@25, ~@46 [d2,d3,f#4,a4]@73 ~@25]/3", // G D
})).s("gm_piano").gain(0.31)
// chords · synth strings 1
const synth_strings_1 = note("<~@19 A@6 B@6 C@4 D@8 E@3 F@6 ~@7 G@3 H I@7 J@5>".pickRestart({
A: "[~@46 a4@21 ~@17 a4@10 d3@48 ~ [a2,e4]@48 [g2,g3,b3,d4]@47 [d2,d4,a4]@50, ~@23 [d2,d4]@48 ~@73, ~@46 d3@43 ~@53 [a3,c#4]@49 ~@97]/6", // A5 G D5 D A
B: "[~@46 [a2,a3,c#4,e4]@48 ~ [g2,d4]@48 [d2,f#4]@89 ~@7 [a2,c#4]@41 ~@7 g2, ~@94 b3@50 ~@95 a3@47 b3@2]/6", // A G5 D A
C: "[~@47 [d2,d4,f#4]@88 ~@8 a3@46 ~ g2@2, ~@142 c#4@30 ~@17 [g3,b3]@3, ~@143 a2@40 ~@9]/4", // D G
D: "[~@47 a4@96 [a2,a3,c#4,e4]@46 ~ [g2,b3,d4]@47 ~@49 d3@49 [a2,a3,c#4,e4]@47 ~ [g2,d4], ~@46 [d2,d3]@96 ~@95 [d2,d4,f#4,a4]@96 ~@51, ~@47 e4@39 ~@103 g3@50 ~@143 b3@2]/8", // A G A G5 D
E: "[~@131 d4@11 a2@2, ~@47 d2@95 ~@2, ~@59 d3@25 ~@28 d5@30 ~@2, ~@65 d4@66 ~@13, ~@125 d3@17 ~@2]/3",
F: "[~@35 a3@11 ~@13 g3@24 g3@11 ~@48 d3@49 a4@36 ~@6 a4@6 [g2,g3,g4]@49, ~@11 a3@24 ~@12 g2@48 d5@97 ~@35 d5@12 ~@49, ~@16 a4@30 g4@48 d3@47 ~@50 [a2,a3]@48 ~@49, ~@130 d4@61 ~@97]/6", // G A
G: "[~@23 [d3,e4,a4]@48 ~, ~@15 d2@32 ~]/3", H: "~ a2@45 ~ [g2,f#4], [a3,c#4]@23 g3",
I: "[~@16 g4@12 f#4@12 ~@55 d3@48 [a2,a3,c#4]@47 ~ g2@46 ~ d3@37 ~@48 d3@11 [a2,a3,c#4]@2, ~@40 f#4@96 ~@101 f#4@49 ~@50, ~@46 d2@96 ~@96 [d2,d4]@48 [d2,d4,f#4]@49 ~, ~@82 d4@64 ~@44 [g3,b3]@49 ~@36 d3@47 ~@14]/7", // A D G
J: "[~@46 [g2,g3,b3]@49 ~ e4@88 ~@56, ~@19 d2@22 ~@7, ~@19 d3@19 ~@10, ~@6 a4@2 ~@7]/5", // G
})).s("gm_synth_strings_1").gain(0.2)
// chords · synth strings 1 · soft notes
const synth_strings_1_soft = note(`<
~@14 A@5 B@3 ~ C@3 D@4 E@2 F@2 ~ G@3 ~ H@2 ~ I@2 ~@4 J ~@10 K@3 L ~@8 M@3 ~
>`.pickRestart({
A: "[~@47 f#5@18 g5@11 f#5@10 ~@3 f#5@102 d5@26 ~@23]/5", B: "[~@23 f#4@48 ~]/3", C: "[~@23 [d3,f#4]@48 ~]/3",
D: "[~@46 g3@49 [d3,d4]@89 ~@8]/4", E: "[~@46 g3@43 ~@7]/2", F: "[d3@29 ~@3]/2",
G: "[~@95 e4@48 ~, ~@23 f#4@48 ~, ~@47 d4@96 ~]/3", H: "[~@23 d3@23 ~@2]/2", I: "[~@23 g3@24 ~]/2",
J: "~@11 d4@23 ~@14", K: "[~@23 [d4,f#4]@48 ~]/3", L: "e4@47 ~", M: "[~@47 d4@95 ~@2, ~@47 f#4@68 ~@29]/3",
})).s("gm_synth_strings_1").gain(0.1)
// drums · kick
const kick = s("bd").struct(`<
~@20 A B C D E F G H I J K L M@2 N M N O P M Q R S T U M V W M X O Y Z ~@6 U O AA T O M R AB AC AD AE AF AA AG AH ~
>`.pickRestart({
A: "x ~@8 x ~@4 x!2 ~@8", B: "x ~@18 x ~@8 x ~@2 x ~@16", C: "x ~@8 x ~@4 x ~@6 x ~@2",
D: "x ~@18 x ~@8 x ~@13 x ~@5", E: "~ x ~@17 x ~@9 x ~@13 x ~@4", F: "~ x ~@15 x ~@11 x ~@17 x",
G: "~@17 x ~@11 x ~@12 x ~@5", H: "x ~@18 x ~@9 x ~@18", I: "x ~@17 x ~@11 x ~@16 x", J: "~@18 x ~@10 x ~@18",
K: "x ~@16 x ~@11 x ~@17 x", L: "~@8 x ~@5 x ~@8 x", M: "~@17 x ~@11 x ~@17 x", N: "~@17 x ~@10 x ~@18 x",
O: "~@18 x ~@10 x ~@17 x", P: "~@17 x ~@12 x ~@16 x", Q: "~@17 x ~@11 x ~@16 x ~", R: "~@17 x ~@11 x ~@18",
S: "x ~@16 x ~@11 x ~@18", T: "x ~@17 x ~@10 x ~@17 x", U: "~@47 x", V: "~@18 x ~@12 x ~@10 x ~@5",
W: "~@7 x ~@10 x ~@11 x ~@16 x", X: "~@16 x ~@11 x ~@18 x", Y: "~@18 x ~@11 x ~@10 x ~@6", Z: "x",
AA: "~@17 x ~@12 x ~@17", AB: "~ x ~@17 x ~@11 x ~@16", AC: "~ x ~@17 x ~@10 x ~@17", AD: "x ~@2 x ~ x ~@2",
AE: "~ x ~@16 x ~@9 x ~@17 x ~", AF: "~@16 x ~@10 x ~@18 x ~", AG: "x ~@16 x ~@12 x ~@17", AH: "~ x ~@46",
})).gain(0.36)
// drums · snare
const snare = s("sd").struct(`<
~@20 A B C D@2 E A F B G E H E I E@3 G A E@2 J A B K A B@2 L M E A ~@7 N E O B A P J F Q A K R L O ~@2
>`.pickRestart({
A: "~@11 x ~@24 x ~@11", B: "~ x ~ x", C: "~@12 x ~@22 x ~@12", D: "~@13 x ~@22 x ~@11", E: "~@11 x ~@23 x ~@12",
F: "~@13 x ~@23 x ~@10", G: "~@11 x!2 ~@22 x ~@12", H: "~@5 x ~@11 x ~@6", I: "~@11 x ~@22 x!2 ~@12",
J: "~@5 x ~@12 x ~@5", K: "~@6 x ~@10 x ~@6", L: "~@11 x ~@23 x!2 ~@11", M: "~@10 x ~@24 x ~@12",
N: "~@29 x ~@9 x ~@8", O: "~@11 x ~@25 x ~@10", P: "~@10 x!2 ~@23 x ~@12", Q: "~@13 x ~@22 x!2 ~@10",
R: "~@10 x ~@22 x ~@14",
})).gain(0.31)
stack(piano, bass, piano_2, synth_strings_1, synth_strings_1_soft, kick, snare)
More by Alanis Morissette
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.