0:00/0:00
// Baba — Alanis Morissette
// 68 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 71 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(68/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.
// other · string ensemble 1
const string_ensemble_1 = note(`<
~@12 A B C D E F ~@8 G H I J K L M@2 N@5 ~@7 O P Q R S T U V W X Y Z@6 AA@3 AB AC@4
>`.pickRestart({
A: "~@2 a#3@3 ~ a#3@3 ~ g#3@3 ~ g#3@3 ~ f#3@3 ~ f#3@3 ~ f#3 ~ f#3 ~ f#3 ~", B: "e3 ~ e3@2 ~ c#3@10 ~@17",
C: "~@2 a#4@2 ~@2 a#4@3 ~ g#4@2 ~@2 g#4@2 ~ f#4@3 ~@3 f#4@2 g#4@4 ~@3",
D: "~ a#4@3 ~ a#4@3 ~ g#4@3 ~ g#4@3 ~ f#4@3 ~ e4 ~ f#4 ~ g#4@2 ~@5",
E: "~ a#4@3 ~ a#4@3 ~ g#4@3 ~@2 g#4@3 ~ f#4@2 ~ f#4@3 ~ f#4 ~ f#4 ~ f#4 ~ e4", F: "~ e4@2 ~@2 c#4@15 ~@12",
G: "~@2 a#4@3 a#4@3 ~ g#4@3 ~ g#4@3 ~ f#4@3 ~ d#4 ~ f#4 ~ g#4@6 ~",
H: "~@2 a#4@3 ~ a#4@3 ~ g#4@2 ~@2 g#4@3 ~ f#4@3 ~ d#4 ~ f#4 ~ g#4 f#4@3 ~@2",
I: "~@2 a#4@3 ~ a#4@3 ~ g#4@3 ~ g#4@3 ~ f#4@2 ~ f#4@3 ~@2 f#4 ~ f#4!2 ~ e4", J: "~ e4@2 ~@2 c#4@21 ~@6",
K: "~@2 a#4@3 ~ a#4@3 ~ g#4@3 ~ g#4@3 ~ f#4@4 e4 f#4@3 ~@6",
L: "~ a#4@3 ~ a#4@3 ~ g#4@2 ~@2 g#4@3 ~ f#4@3 ~ d#4 ~ f#4 ~ g#4 ~ f#4@5",
M: "[~ a#4@3 ~ a#4@3 ~ g#4@2 ~@2 g#4@3 ~ f#4@3 ~ f#4@3 ~ f#4 ~ f#4 ~ f#4 ~ e4@2 ~ e4@2 ~ c#4@12 ~@15]/2",
N: "[~@24 e3@17 ~@13 e2@83 ~@23, ~@11 e4@123 ~@26, ~@6 e5@61 ~@13, ~@6 e2@7 ~@27, ~@44 e3@89 ~@27]/5",
O: "~@2 a#4@3 a#4@3 ~@2 g#4@3 ~ g#4@3 f#4@2 ~@2 f#4@3 ~ g#4@5 ~@2",
P: "~ a#4@3 ~ a#4@3 ~ g#4@3 ~ g#4@3 ~ f#4@3 ~@3 f#4@2 g#4@4 ~@3",
Q: "~ a#4@3 ~ a#4@3 ~ g#4@2 ~@2 g#4@3 ~ f#4@2 ~@2 f#4@3 ~ f#4 ~ f#4@2 ~@2 e4", R: "~ e4@2 ~@2 c#4@19 ~@8",
S: "~ a#4@3 ~ a#4@3 ~ g#4@2 ~@2 g#4@3 ~ f#4@3 ~ d#4 ~ f#4@2 g#4@6 ~",
T: "~@2 a#4@3 ~ a#4@3 ~ g#4@3 ~ g#4@2 ~ f#4@3 ~ d#4 ~ f#4 ~ g#4 ~ f#4@4 ~",
U: "~@2 a#4@3 ~ a#4@3 ~ g#4@2 ~@2 g#4@2 ~ f#4@2 ~@2 f#4@3 ~ f#4 ~ f#4 ~ f#4 ~ e4", V: "~ e4@2 ~@2 c#4@23 ~@4",
W: "~ a#4@3 ~ a#4@3 ~ g#4@2 ~@2 g#4@2 ~@2 f#4@2 ~@2 f#4@3 ~ g#4@5 ~@2",
X: "~ a#4@3 ~ a#4@3 ~ g#4@2 ~@3 g#4@2 ~ f#4@3 ~@2 f#4@2 ~@2 g#4@2 ~@4",
Y: "~@2 a#4@2 ~ a#4@3 ~ g#4@2 ~@2 g#4@3 ~ f#4@2 ~@2 f#4@3 ~ f#4 ~ f#4 ~ f#4 ~ e4",
Z: "[~ e4@2 ~@2 c#4@15 ~@11 [a#2,a#3,a#4]@12 [g#3,g#4]@13 [f#3,f#4]@3 [b3,b4]@16 [a#3,a#4]@18 ~@2 [a#3,a#4]@11 ~ g#4@12 [f#3,f#4]@4 [d4,d5]@12 [c#4,c#5]@3 ~ [c#4,c#5]@17 ~@3 [a#3,a#4]@12 [g#3,g#4]@12 [f#3,f#4]@4 [b3,b4]@5, ~@106 g#3@13 ~@73]/6", // A# G# F# B A# F# D C# …
AA: "[~@6 [a#3,a#4]@3 ~@2 [a#3,a#4]@18 ~@2 [a#3,a#4]@13 [g#3,g#4]@11 ~ f#4@4 [d4,d5]@12 [c#4,c#5]@3 [c#4,c#5]@20 ~, ~@55 f#3@4 ~@37]/3", // A# G# D C#
AB: "[a#3,a#4]@11 [g#3,g#4]@12 [f#3,f#4]@9", // A# G# F#
AC: "[~ [b3,b4]@10 [a#3,a#4]@20 [a#3,a#4]@12 [g#3,g#4]@11 ~ f#4@4 [d4,d5]@12 [c#4,c#5]@4 ~ c#4@51 ~, ~@54 f#3@5 ~@16 c#5@51 ~@2]/4", // B A# G# D C#
})).s("gm_string_ensemble_1").gain(0.36)
// other · violin
const violin = note("<~@10 A B C D E F G ~@9 H I J ~ K L M ~@13 N O P ~ Q R S ~ T U V W@6 X@3 ~@5>".pickRestart({
A: "~ c#5@2 ~@2 c#5@3 ~ b4@3 ~ b4@2 ~@2 a#4@3 ~ g#4 ~ a#4 ~ b4@6 ~",
B: "~@2 c#5@3 ~ c#5@3 ~ b4@2 ~@2 b4@3 ~ a#4@3 ~ g#4 ~ a#4 ~ b4@6",
C: "~@2 c#5@2 ~@2 c#5@3 ~ b4@2 ~@2 b4@3 ~ a#4@2 ~@2 a#4@2 ~@2 a#4 ~ a#4 ~ a#4 ~", D: "b4@2 a#4 ~@2 a#4@2 ~@25",
E: "~@2 c#5@2 ~@2 c#5@3 ~ b4@2 ~@2 b4@2 ~ a#4@3 ~ g#4 ~ a#4 ~ b4@5 ~@2",
F: "~ c#5@3 ~ c#5@3 ~ b4@2 ~@2 b4@2 ~@2 a#4@3 ~ g#4 ~ a#4 ~ b4@5 ~@2",
G: "~ c#5@2 ~@2 c#5@3 ~@2 b4@2 ~ b4@2 ~@2 a#4@2 ~@2 a#4@7 ~@4",
H: "~@2 c#5@2 ~ c#5@3 ~ b4@2 ~@2 b4@2 ~@2 a#4@3 ~ g#4 ~ a#4 ~ b4@5 ~@2",
I: "~ c#5@3 ~@2 c#5@3 ~ b4@3 ~ b4@2 ~@2 a#4@3 ~ g#4 ~ a#4@2 b4@5 ~",
J: "~@2 c#5@2 ~@2 c#5@3 ~ b4@2 ~@2 b4@2 ~@2 a#4@2 ~@2 a#4@7 ~@3",
K: "~@2 c#5@2 ~@2 c#5@3 ~ b4@2 ~@2 b4@2 ~@2 a#4@3 g#4 ~ a#4 ~ b4@5 ~@2",
L: "~ c#5@3 ~ c#5@3 ~ b4@2 ~@2 b4@2 ~@2 a#4@2 ~@2 g#4 ~ a#4 ~ b4@2 a#4@5",
M: "~ c#5@2 ~@2 c#5@3 ~ b4@2 ~@2 b4@2 ~@2 a#4@2 ~@2 a#4@11",
N: "~@2 c#5@3 ~ c#5@3 ~ b4@2 ~@2 b4@2 ~ a#4@3 ~@2 g#4 ~ a#4 b4@4 ~@3",
O: "~ c#5@3 ~ c#5@3 ~ b4@2 ~@2 b4@2 ~@2 a#4@2 ~@2 g#4 ~ a#4 ~ b4@2 a#4@4 ~",
P: "~ c#5@2 ~@2 c#5@2 ~@2 b4@2 ~@2 b4@2 ~@2 a#4@2 ~@2 a#4@6 ~@5",
Q: "~@2 c#5@2 ~@2 c#5@2 ~ b4@2 ~@2 b4@2 ~@2 a#4@3 ~ g#4 ~ a#4 ~ b4 ~ a#4@2 ~@3",
R: "~ c#5@2 ~@3 c#5@3 ~ b4@2 ~@2 b4@2 ~ a#4@2 ~@2 g#4 ~ a#4 ~ b4@2 ~ a#4@3 ~",
S: "~ c#5@2 ~@2 c#5@3 ~ b4@2 ~@3 b4@2 ~ a#4@2 ~@2 a#4@7 ~@4",
T: "~@2 c#5@2 ~ c#5@3 ~ b4@2 ~@2 b4@2 ~@2 a#4@3 ~ g#4 ~ a#4@3 ~@6",
U: "~ c#5@2 ~@2 c#5@3 ~ b4@2 ~@3 b4@2 ~ a#4@5 ~@3 b4@2 a#4@2 ~@3",
V: "~@2 c#5@2 ~@2 c#5@2 ~@2 b4@2 ~@2 b4@2 ~ a#4@2 ~@2 a#4 ~@5 a#4@2 ~@3",
W: "[~@31 a#6@12 g#6@12 f#6@8 b6@11 ~ a#6@16 ~@4 a#5@11 g#5@13 f#5@3 ~ d6@16 c#6@19 ~ a#5@12 g#5@12 f#5@3 ~ b5@5]/6",
X: "[~@11 a#5@11 ~@9 a#3@12 g#3@12 f#3@4 ~ d4@14 ~@2 c#4@11 ~@9]/3",
})).s("gm_violin").gain(0.31)
// other · overdriven guitar
const overdriven_guitar = note("<~@13 A@2 ~@14 B@2 ~@2 C@3 ~@13 D@2 ~@2 E@2 ~@2 F@6 G@3 H@5>".pickRestart({
A: "[~@12 d4@5 c#4@2 ~ a#3@6 b3@2 a#3@10 ~@26, ~@19 b3@2 ~@43]/2",
B: "[~@11 d5@6 ~@2 a#4@6 ~ b4@2 a#4@19 ~@17, ~@17 c#5@2 ~@45, ~@9 b4 ~@22]/2",
C: "[~@28 [d#3,d#4]@2 ~ e3@35 ~@30, ~@28 d#5@3 e5@19 ~@46, ~@31 e4@15 ~@50]/3", // D#
D: "[~@11 d5@6 ~@2 a#4@6 ~ b4@2 a#4@35 ~, ~@17 c#5@2 ~@45, ~@9 b4 ~@22]/2",
E: "[~@15 d5@2 c#5@2 b4@2 a#4@4 b4@2 a#4@8 ~@29]/2",
F: "[~@11 d5@6 c#5 b4 a#4@6 b4@2 a#4@32 b4@16 a#4@32 g#4@12 f#4@4 d5@12 c#5@3 c#5@21 a#4@12 g#4@12 f#4@4 b4@5]/6",
G: "[~@6 a#4@4 ~ a#4@18 ~@2 a#4@12 g#4@13 f#4@4 d5@11 c#5@3 ~ c#5@21]/3",
H: "[a#4@11 g#4@12 f#4@5 b4@15 a#4@18 ~@2 a#4@12 g#4@12 f#4@4 d5@12 c#5@3 ~ c#5@46 ~@7]/5",
})).s("gm_overdriven_guitar").gain(0.36)
// bass · electric bass finger
const bass = note(`<
~@4 A@3 B@4 C D E F G@2 H I J K L M@2 N@2 O@2 P@2 Q R S T U@2 V@2 W X@4 Y Z@2 AA AB AC AD AE@8 AF@7 AG AH AI@4
>`.pickRestart({
A: "[f#1 ~ f#1 ~ f#1 ~ f#1@2 ~@2 e1 f#1 ~ f#1@3 ~@7 g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1 ~@2 f#1@2 ~ e1@2 f#1 ~@2 f#1@2 ~@7 g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1 ~ f#1@2 ~@3 e1 f#1 ~ f#1@2 ~@8 g1 ~ g1 ~ g1 ~ g1 ~ g1]/3",
B: "[~ f#1 ~ f#1 ~ f#1@2 ~@2 e1 ~ f#1 ~ f#1@2 ~@8 g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1 ~@2 f#1@2 ~ e1 ~ f#1 ~ f#1@2 ~@8 g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1 ~ f#1@2 ~@2 e1 ~ f#1 ~ f#1 ~@9 g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1 ~ f#1@2 ~@2 e1 ~ f#1 ~@2 f#1@5 ~@5 g1 ~ g1 ~ g1 ~ g1 ~]/4",
C: "g1 ~ f#1 ~ f#1 ~ f#1@2 ~@2 e1 ~ f#1 ~ f#1@6 ~@4 g1 ~ g1 ~ g1 ~ g1 ~",
D: "g1@2 f#1 ~ f#1 ~ f#1@3 ~ e1 ~ f#1 ~ f#1@9 ~ g1 ~ g1 ~ g1!2 ~ g1",
E: "~ f#1 ~ f#1 ~@2 f#1@3 ~ e1 ~ f#1 ~ f#1@8 ~@2 g1!2 ~@2 g1 ~ g1 ~",
F: "g1 ~ f#1 ~ f#1 ~ f#1@3 ~ e1 ~ f#1 ~ f#1@8 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1",
G: "[~ f#1 ~ f#1 ~@2 f#1@2 ~@2 e1 f#1 ~@2 f#1@8 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1 ~ f#1@2 ~@3 e1 f#1 ~@2 f#1@8 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1]/2",
H: "~ f#1 ~ f#1 ~ f#1@2 ~@2 e1 ~ f#1 ~ f#1@9 ~ g1 ~ g1 ~ g1 ~@2 g1 ~",
I: "g1 ~ [f#1,g1] ~ f#1 ~ f#1@2 ~@2 e1 f#1 ~@2 f#1@9 g1 ~ g1 ~ g1 ~ g1 ~@2", // Gmaj7
J: "g1@2 f#1 ~ f#1 ~ f#1@3 ~ e1 ~ f#1 ~ f#1@8 ~@2 g1 ~ g1 ~ g1 ~ g1 ~",
K: "g1 ~ f#1 ~ f#1 ~ f#1@3 ~ e1 ~ f#1 ~ f#1@9 ~ g1 ~ g1 ~ g1!2 ~@2",
L: "g1 f#1 ~ f#1 ~@2 f#1@3 ~ e1 f#1 ~@2 f#1@7 ~@2 g1 ~ g1 ~ g1 ~ g1 ~ g1",
M: "[~ f#1 ~ f#1 ~ f#1@2 ~@2 e1 ~ f#1 ~ f#1@3 ~@7 g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1 ~ f#1@2 ~@3 e1 f#1 ~@2 f#1@2 ~@7 g1 ~@2 g1 ~ g1 ~ g1 ~]/2",
N: "[g1@2 f#1 ~ f#1 ~ f#1@2 ~@2 e1 ~ f#1 ~ f#1@2 ~@7 g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1 ~ f#1@2 ~@3 e1 ~ f#1 ~ f#1@2 ~@7 g1 ~ g1 ~ g1 ~ g1 ~ f#1]/2",
O: "[~ f#1 ~ f#1 ~ f#1@2 ~@2 e1 ~ f#1 ~ f#1@6 ~@3 g1 ~ g1 ~@2 g1!2 ~@2 g1@2 ~ f#1 ~ f#1 ~ f#1@2 ~@2 e1 f#1 ~@2 f#1@7 ~@2 g1 ~ g1 ~ g1 ~ g1 ~ g1]/2",
P: "[~ f#1 ~@2 f#1 ~ f#1@2 ~@2 e1 f#1 ~@2 f#1@8 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1 ~@2 f#1 ~ f#1@2 ~@2 e1 ~ f#1 ~ f#1@7 ~@3 g1 ~ g1 ~ g1 ~ g1 ~]/2",
Q: "g1@2 f#1 ~ f#1 ~ f#1@3 ~ e1 ~ f#1 ~ f#1@7 ~@2 g1 ~ g1 ~ g1 ~ g1 ~ g1",
R: "~ f#1 ~ f#1 ~ f#1@2 ~@2 e1 ~ f#1 ~ f#1@7 ~@3 g1 ~ g1 ~ g1 ~ g1 ~ g1",
S: "~ f#1 ~ f#1 ~ f#1@5 e1 ~ f#1 f#1@7 ~@3 g1 ~ g1 ~ g1 ~ g1 ~ g1",
T: "~ f#1 ~ f#1 ~ f#1@4 e1 ~ f#1 ~ f#1@8 ~@2 g1 ~ g1 ~ g1 ~@2 g1 ~", U: "[f#1 e1@2 ~@2 e3@3, ~@24 e2@33 ~@7]/2",
V: "[~@16 e4@8 e3@17 ~@23]/2", W: "~@7 f#1@4 ~ e1 ~ f#1@8 ~@2 g1 ~ g1 ~ g1 ~ g1 ~",
X: "[g1@2 f#1 ~ f#1 ~ f#1@3 ~ e1 ~ f#1 ~ f#1@8 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1 ~ f#1@3 ~@2 e1 f#1 ~ f#1@7 ~@3 g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1 ~ f#1@3 ~ e1 ~ f#1 ~ f#1@8 ~@2 g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1 ~ f#1@4 e1 ~ f#1 ~ f#1@8 ~@3 g1 ~ g1 ~ g1 ~ g1 ~]/4",
Y: "g1 ~ f#1!2 ~ f#1@3 ~@2 e1 f#1 ~@2 f#1@8 ~@2 g1 ~ g1 ~ g1 ~ g1 ~",
Z: "[g1@2 f#1!2 ~ f#1@3 ~@2 e1 f#1 ~ f#1@8 ~@2 g1 ~ g1 ~ g1 ~ g1 ~ f#1@2 ~@31]/2",
AA: "f#1@7 f#1@4 ~ f#1@7 f#1@3 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1",
AB: "~ f#1 ~ f#1 ~ f#1@3 ~ e1 ~ f#1 ~ f#1@8 ~@2 g1 ~ g1 ~ g1 ~ g1 ~ g1",
AC: "~ f#1 ~ f#1 ~ f#1@3 ~@2 e1 f#1 ~ f#1@8 ~ g1 ~ g1 ~@2 g1 ~ g1 ~ g1",
AD: "~ f#1 ~ f#1 ~ f#1@3 ~ e1 ~ f#1 ~ f#1@7 ~@3 g1 ~ g1 ~ g1 ~ g1 ~ g1",
AE: "[~ f#1 ~ f#1 ~ f#1@3 ~ e1 ~ f#1 ~ f#1@8 ~@3 g1!2 ~ g1 ~@2 g1 g1@2 ~ f#1 ~ f#1 ~ f#1@3 ~ e1 f#1 ~@2 f#1@8 ~@2 g1 ~ g1 ~ g1!2 ~ g1@2 ~ f#1!2 ~@2 f#1@2 ~@2 e1 f#1 ~@2 f#1@8 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1 ~ f#1@3 ~ e1 ~ f#1 ~ f#1@7 ~@3 g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1 ~ f#1@3 ~ e1 ~ f#1 ~ f#1@8 ~@2 g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1 ~ f#1@2 ~@2 e1@2 f#1 ~ f#1@8 ~@3 g1!2 ~ g1 ~ g1 ~ g1@2 ~ f#1 ~ f#1 ~ f#1@3 ~ e1 f#1 ~ f#1@7 ~@3 g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1 ~ f#1@3 ~@2 e1 ~ f#1 ~ f#1@7 ~@2 g1 ~ g1 ~@2 g1 ~ g1 ~]/8",
AF: "[g1@6 f#1@5 e1 f#1 ~ f#1@6 ~@3 g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1 ~ f#1@3 ~ e1 ~ f#1 ~ f#1@7 ~@3 g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1 ~@2 f#1@3 ~ e1 f#1 ~@2 f#1@7 ~@2 g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1 ~ f#1@4 e1 ~ f#1 ~ f#1@13 ~ f#1@2 ~@2 f#1@5 ~@2 f#1@6 ~ f#1@9 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1 ~ f#1@4 e1 ~ f#1 ~ f#1@9 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2 ~ f#1 ~ f#1 ~ f#1@4 ~@2 f#1@11 ~ g1 ~ g1 ~ g1 ~ g1 ~, ~@140 e1@2 ~@61 e1@2 ~@19]/7",
AG: "g1 ~ f#1 ~ f#1 ~ f#1@2 ~@2 e1 ~ f#1 ~ f#1@16 ~@2", AH: "f#1@11 e1 ~ f#1@9 ~ g1 ~ g1 ~ g1 ~@2 g1 ~",
AI: "[g1@4 f#1 ~ f#1@5 ~ e1 f#1@8 ~@3 g1!2 ~ g1 ~ g1 ~ g1@2 f#1 ~ f#1 ~ f#1@3 ~@3 e1@2 f#1@8 ~@3 g1 ~ g1!2 ~ g1 ~ g1@2 f#1 ~@2 f#1 ~ f#1@36 ~@22]/4",
})).s("gm_electric_bass_finger").gain(0.41)
// other · distortion guitar
const distortion_guitar = note("<A B C D E@4 F G@3 H@2 I@6 J@4 K@3 L@7 M@4 N@7 ~ O@5 P Q@8 R@6 S@5>".pickRestart({
A: "f#2!2 ~ f#2 ~ f#2@2 ~@3 e2@2 f#2 ~ f#2@2 ~@8 g2 ~ g2 ~ g2 ~ g2 ~",
B: "g2@2 f#2 ~ f#2 ~ f#2@2 ~@2 e2@2 f#2 ~ f#2@2 ~@8 f#2@2 g2 ~ g2 ~ g2 ~",
C: "g2@2 f#2 ~ f#2 ~ f#2 ~@5 f#2 ~ f#2@2 ~@8 g2 ~ g2 ~ g2 ~ g2 ~, ~@11 e2@2 ~@19",
D: "g2@2 f#2 ~ f#2 ~@2 f#2 ~@4 f#2 ~@2 f#2@2 ~@7 g2 ~ g2 ~ g2 ~ g2 ~, ~@11 e2@2 ~@19",
E: "[g2@2 f#2 ~ f#2 ~ f#2@2 ~@2 e2 ~ f#2 ~ f#2@3 ~@6 g2 ~ g2 ~ g2 ~ g2 ~ g2@2 f#2 ~ f#2 ~ f#2@2 ~@3 e2@2 f#2 ~ f#2@2 ~@7 g2 ~ g2 ~@2 g2!2 ~ g2@2 ~ f#2 ~ f#2 ~ f#2@2 ~@2 e2@2 f#2 f#2@2 ~@8 g2 ~ g2 ~ g2 ~ g2 ~ g2@2 f#2 ~ f#2 ~ f#2@2 ~@3 e2 ~ f#2 f#2@2 ~@8 g2 ~ g2 ~ g2 ~ g2 ~@2]/4",
F: "g2@2 f#2 ~ f#2 ~ f#2@2 ~@2 e2 ~ f#2 ~ f#2@2 ~@7 g2 ~ g2 ~ g2 ~ g2 ~@2",
G: "[g2 f#2 ~ f#2 ~@2 f#2@2 ~@2 e2 ~ f#2 ~ f#2@3 ~@6 g2 ~ g2 ~ g2 ~ g2 ~ [f#1,f#2]@24 [g1,g2]@8 [f#1,f#2]@25 [g1,g2]@8]/3", // F# G F# G
H: "[[f#1,f#2]@23 [g1,g2]@8 [f#1,f#2]@24 [g1,g2]@9]/2", // F# G F# G
I: "[[f#1,f#2]@23 [g1,g2]@8 [f#1,f#2]@24 [g1,g2]@8 [f#1,f#2]@24 [g1,g2]@7 [f#1,f#2]@25 [g1,g2]@8 ~ f#2@56 [g1,g2]@8, ~@127 f#1@57 ~@8]/6", // F# G F# G F# G F# G
J: "[f#1@13 ~@18 f#2@15 ~ f#2@8 [g1,g2]@8 f#2@31 ~ f#2@25 [g1,g2]@8, f#2@15 ~@49, ~@16 f#1@39 ~@8 f#1@57 ~@8]/4", // G
K: "[[f#1,f#2]@56 [g1,g2]@7 [f#1,f#2]@24 [g1,g2]@9]/3", // F# G F# G
L: "[[f#1,f#2]@27 [g1,g2]@4 [f#1,f#2]@24 [g1,g2]@8 [f#1,f#2]@25 [g1,g2]@7 [f#1,f#2]@24 [g1,g2]@8 [f#1,f#2]@24 [g1,g2]@8 [f#1,f#2]@24 [g1,g2]@7 [f#1,f#2]@25 [g1,g2]@8 [f#1,f#2]]/7", // F# G F# G F# G F# G …
M: "[~ [e1,e2]@127]/4", // E
N: "[[f#1,f#2]@56 [g1,g2]@7 [f#1,f#2]@55 ~ g1@8 [f#1,f#2]@56 [g1,g2]@8 [f#1,f#2]@32 ~, ~@118 g2@9 ~@97]/7", // F# G F# G F#
O: "[[f#1,f#2]@23 [g1,g2]@8 [f#1,f#2]@24 [g1,g2]@8 ~ f#2@23 [g1,g2]@8 [f#1,f#2]@24 [g1,g2]@8 [f#1,f#2]@24 [g1,g2]@9, ~@63 f#1@24 ~@73]/5", // F# G F# G F# G F# G
P: "[f#1,f#2]@23 [g1,g2]@8 f#1", // F# G
Q: "[f#2@23 [g1,g2]@8 [f#1,f#2]@24 [g1,g2]@8 [f#1,f#2]@24 [g1,g2]@8 [f#1,f#2]@24 [g1,g2]@8 [f#1,f#2]@24 [g1,g2]@8 [f#1,f#2]@24 [g1,g2]@8 [f#1,f#2]@24 ~ g2@7 [f#1,f#2]@24 [g1,g2]@8 [f#1,f#2], ~@215 g1@8 ~@33]/8", // G F# G F# G F# G F# …
R: "[~@23 [g1,g2]@7 [f#1,f#2]@25 [g1,g2]@8 [f#1,f#2]@24 [g1,g2]@8 [f#1,f#2]@24 [g1,g2]@8 ~ f#2@24 [g1,g2]@7 [f#1,f#2]@25 [g1,g2]@8, ~@127 f#1@25 ~@40]/6", // G F# G F# G F# G F# …
S: "[[f#1,f#2]@24 [g1,g2]@7 ~ f#2@23 [g1,g2]@8 [f#1,f#2]@25 [g1,g2]@7 f#1@54 ~@11, ~@31 f#1@24 ~@40 f#2@48 ~@17]/5", // F# G F# G
})).s("gm_distortion_guitar").gain(0.31)
// drums · kick
const kick = s("bd").struct(`<
~@4 A B C D A E A@3 F G D H I J@3 K L J@2 M N O P O Q R S T ~@4 A U V W X Y V ~ Z AA AB AC AD@2 AE AF@2 I Z N C AG AH
AA AH AI A AJ AK AL A AD ~
>`.pickRestart({
A: "x ~@2 x!2 ~@2 x", B: "x ~@11 x ~@2 x ~@12 x ~@3", C: "x ~@10 x ~@3 x ~@11 x ~@3 x", D: "~@12 x ~@2 x ~@12 x ~@3",
E: "x ~@10 x ~@3 x ~@16", F: "x ~@5 x ~ x ~@6 x", G: "x ~@11 x ~@3 x ~@10 x ~@3 x", H: "x ~@11 x ~@2 x ~@11 x ~@3 x",
I: "~@3 x!2 ~@3", J: "x ~@3 x!2 ~@2", K: "x ~@14 x ~@3 x ~@12", L: "x ~@14 x ~@4 x ~@11", M: "x ~@15 x ~@3 x ~@10 x",
N: "~@11 x ~@3 x ~@16", O: "x!2", P: "x ~@14 x ~@16", Q: "x ~@14 x ~@3 x ~@11 x", R: "~@15 x ~@3 x ~@12",
S: "~@15 x ~@3 x ~@11 x", T: "~@15 x ~@16", U: "x ~@11 x ~@3 x ~@14 x", V: "~@11 x ~@3 x ~@12 x ~@2 x",
W: "~@15 x ~@3 x ~@7 x ~ x ~ x", X: "~@12 x ~@3 x ~@11 x ~@2 x", Y: "~@12 x ~@3 x ~@10 x ~@3 x",
Z: "x ~@10 x ~@3 x ~@13 x ~ x", AA: "~@12 x ~@3 x ~@14 x", AB: "~@11 x ~@3 x ~@13 x ~ x",
AC: "~@11 x ~@3 x ~@13 x ~@2", AD: "x ~@2 x!2 ~@3", AE: "x ~@10 x ~@3 x ~@15 x", AF: "~@11 x ~@3 x ~@15 x",
AG: "~@11 x ~@3 x ~@11 x ~ x ~ x", AH: "~@11 x ~@3 x ~@11 x ~@3 x", AI: "~@11 x ~@3 x ~@14 x ~",
AJ: "x ~@5 x ~ x ~@2 x!2 ~ x!2", AK: "x ~@10 x ~@4 x ~@11 x ~@3", AL: "x ~@11 x ~@3 x ~@12 x ~@2",
})).gain(0.31)
// drums · snare
const snare = s("sd").struct(`<
~@4 A B C B@2 D B@3 E B@2 F E A E B G A B@2 H I J I K L M C A N ~@3 B L C@2 B@3 O P Q R E K S Q@3 K P J C B C T C E B
U B V F W ~
>`.pickRestart({
A: "~@7 x ~@16 x ~@7", B: "~ x ~ x", C: "~@7 x ~@15 x ~@8", D: "~@7 x ~@16 x ~ x ~ x!2 ~@2", E: "~@2 x ~@3 x!2",
F: "~@8 x ~@14 x ~@8", G: "~@7 x ~@16 x ~@2 x ~ x ~@2", H: "~@8 x ~@15 x ~ x!2 ~ x ~@2", I: "~@7 x ~@16 x ~@3 x ~@3",
J: "~@7 x ~@16 x ~ x ~ x ~ x ~", K: "~@4 x ~@7 x ~ x!2", L: "~@8 x ~@15 x ~@3 x!2 ~@2",
M: "~@7 x ~@15 x ~@3 x ~ x ~ x", N: "x", O: "~@12 x ~ x!2", P: "~@7 x ~@15 x ~@3 x ~@4",
Q: "~@7 x ~@15 x ~@3 x ~ x ~@2", R: "~@7 x ~@15 x ~@4 x ~@3", S: "~@7 x ~@16 x ~@3 x ~ x ~",
T: "~@8 x ~@14 x ~@3 x ~ x ~@2", U: "~@4 x ~@5 x ~@2 x ~@2", V: "~@8 x ~@14 x ~@3 x ~@4", W: "~ x ~@2",
})).gain(0.41)
// drums · pedal hat
const pedal_hat = s("hh").struct("<~@35 [~@11 x ~@20] ~@35>").gain(0.15)
// drums · open hat
const open_hat = s("oh").struct("<~@35 [~@23 x ~@2 x ~ x ~@3] [~ x ~@19 x ~ x!2 ~ x ~ x!2 ~ x] ~@34>").gain(0.15)
stack(string_ensemble_1, violin, overdriven_guitar, bass, distortion_guitar, kick, snare, pedal_hat, open_hat)
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.