Strudelify

The Couch

Alanis Morissette

KeyA minorTempo110 bpm
0:00/0:00
// The Couch — Alanis Morissette
// 110 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 143 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/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 · synth strings 1
const synth_strings_1 = note(`<
  A@7 ~ B@2 C@2 D@3 E F@4 G@4 H@2 I@4 J@6 K@8 L@8 M@4 N@7 O@6 P Q R S T@2 ~ U@6 V@6 W@3 X Y@2 Z AA AB@8 AC@7 AD@4 AE@8
  AF@4 AG AH@8 AI@7
>`.pickRestart({
  A: "[~@31 a2@56 a3@8 g#3@64 a3@48 e3@8 a3@7 ~@2]/7", B: "[~@32 [f3,a3,c4]@7 ~@25, ~@31 f1@14 ~@19]/2",
  C: "[~@31 [d1,d3]@4 ~@29, ~@31 a3@2 ~@31]/2", D: "[~@31 f#1@65]/3", E: "e2@23 ~@9",
  F: "[~@31 [a1,a2,a3,c4,e4]@64 ~ e4@11 ~@21, ~@95 [a1,a2,g#3]@33, ~@95 a3@27 ~@6, ~@95 c4@19 ~@14]/4", // Am Amaj7
  G: "[~@31 [b3,c4,e4]@64 [a1,a3,c4]@33, ~@15 [a1,a2]@32 ~@17]/4", H: "[~@31 [a1,f4,g4]@33]/2",
  I: "[~@31 [d2,d3,d4,f4]@63 ~ f#1@33, ~@31 a4@9 ~@54 [f#2,a4,c#5]@34]/4", // Dm F#m
  J: "[~@63 g#4@31 ~ a1@28 a1@4 a1@31 ~ [a2,c4,e4]@32 [a1,a2,c4,e4], ~@30 e2@64 [a2,a3,c4,e4]@64 ~ a3@12 ~@21, ~@30 a4@37 ~@125, ~@31 [e1,e4]@64 ~@63 a1@32 ~@2, ~@31 b4@35 ~@126]/6", // Am E
  K: "[~@63 a1@31 [a1,a2,a3,c4,e4]@64 ~ [f2,f3,g3,a3,c4]@63 [d1,d3,f3,a3]@34, ~@15 a2@32 ~@81, ~@15 a1@16 ~@48 f1@32 ~@17, ~@31 [a3,c4,e4]@63 ~@162]/8", // Am F Dm Am
  L: "[~@31 [f#1,c#4]@64 a3@32 g#3@31 ~ [a2,c3,e3]@63 ~ [g#3,c4]@33, ~@30 [f#2,f#3,a3]@64 ~ [e1,e2,e3,b3]@63 a1@64 a1@34]/8", // F#5 Am G# F#m E5
  M: "[~@31 [a1,a2,a3,c4,e4]@63 [a1,a2,a3,c4]@34]/4", // Am
  N: "[~@30 [f1,f2,f3,g3,a3,c4]@64 ~ d1@63 ~ [f#1,f#2]@64 ~, ~@47 [d2,d3,f3,a3]@32 [f#3,a3,c#4]@32 ~]/7", // F F# Dm F#m
  O: "[~@14 a4@16 g#4@32 ~ [c4,e4]@8 ~@24 e4@24 a3@7 ~ g#3@55 ~@10, ~@31 a2@28 ~@37, ~@63 a3@14 ~@115]/6", // C
  P: "~@3 a4@4 ~@9", Q: "~@23 a4@6 ~@3", R: "~@3 g#4@5 ~@3 g#4@5", S: "~@5 g#4@10 ~@7 g#4@8 ~@2", T: "[a4,c5,e5]/2",
  U: "[~@7 d4@23 [a4,c#5]@64 ~ a4@19 ~@11 g#4@33 ~ [a3,c4]@33, ~@95 e4@64 e4@15 ~@18]/6", // A Am
  V: "[~@30 a3@9 ~@118 g#3@35, ~@5 [c4,e4]@27]/6", W: "[~@15 [g4,d5]@32 ~]/3", X: "c#5@9 ~@7", Y: "[~@11 c#5@21]/2",
  Z: "~@31 a4, ~@15 e4", AA: "~@31 [e4,g#4,b4]",
  AB: "[~@31 [a1,a2,a3,c4,e4]@63 g#3@63 ~ a3@71 ~@2 g#3@23 a3@2, ~@47 [a1,a2,c4,e4]@81]/8", // Am
  AC: "[~@19 e4@4 c4@3 a3@2 ~@3 [a3,c4]@10 ~@2 c4@13 a3@7 g3@12 f3@12 e3@8 ~@32 f3@13 ~@19 [f#1,f#2,f#3,a3,c#4]@63 c#4@2, ~@31 [f1,f2]@59 ~@5 d3@57 ~@72, ~@96 d2@57 ~@71]/7", // Am F#m F
  AD: "[~@30 c#4@16 b3@16 ~ [a1,a2]@62 ~@3, ~@15 e2@16 ~@33]/4", // A
  AE: "[~@8 g#4@56 ~ a4@57 ~@20 c5@38 ~@3 c5@3 ~ b4@4 a4@64 ~, a1, ~@127 g#4@52 ~@77]/8",
  AF: "[~@31 f4@17 ~@47 f#4@26 ~@7, ~@23 d4@20 ~@19 c#5@57 ~@9, ~@87 a4@32 ~@9]/4", AG: "[a4,b4]@31 g#4",
  AH: "[~@15 c#4@13 ~@4 a2@24 ~@19 e4@9 c#5@14 c#5@19 ~ c5@17 ~ e5@15 c5@16 b4@13 c5@10 a4@13 c5@9 a4@4 c5@12 b4@28, ~@31 a1@225, ~@31 e4@44 ~@181, ~@31 c4@37 ~@4 a3@13 ~@171, ~@31 a3@31 ~ a2@193]/8",
  AI: "[~@7 a4@14 ~@2 b4@12 ~@29 a4@39 ~@58 e4@54 ~@9, ~@35 c5@33 ~@35 g#3@40 a3@17 [a1,a3]@54 ~@10, ~@55 a2@52 ~@5, ~@152 c4@63 ~@9]/7", // A
})).s("gm_synth_strings_1").gain(0.15)

// chords · synth strings 1 · soft notes
const synth_strings_1_soft = note(`<
  ~@6 A@4 ~@10 B@7 ~ C@3 ~@7 D@3 ~ E@3 ~@5 F@3 ~ G@3 ~@7 H@8 ~@4 I@5 ~@7 J@3 K@5 ~@16 L@3 ~@12 M@2 ~@14
>`.pickRestart({
  A: "[~@31 g#3@52 ~@13 g3@6 ~@26, ~@95 f2@15 ~@18]/4", B: "[~@30 a3@64 ~ [a2,g#3,e4]@63 ~ a2@64 ~]/7",
  C: "[~@15 f#4@32 ~]/3", D: "[~@15 g#3@32 ~]/3", E: "[~@15 d2@32 ~]/3", F: "[~@31 [a2,e4]@64 ~]/3",
  G: "[~@15 [g#3,e4]@32 ~]/3", H: "[~@183 a4@10 ~@5 a4@10 ~@48, ~@31 a1@225]/8", I: "[~@30 f#4@64 ~ b4@64 ~]/5",
  J: "[~@31 d4@64 ~]/3", K: "[~ a4@16 ~@30 f#4@15 [f#4,f#5]@64 b4@33 ~, f#4@47 ~@113, ~ f#5@61 ~@98]/5",
  L: "[~@31 a3@60 ~@5]/3", M: "[e4@35 ~@29]/2",
})).s("gm_synth_strings_1").gain(0.1)

// bass · electric bass pick
const bass = note(`<
  A@3 B@5 C@8 D@8 E@3 F@6 G H@4 I@6 J@2 K@7 L@2 M@6 N@2 O@3 P@5 Q@2 R S@8 T@3 U@6 V@6 W X@7 Y@4 Z@8 AA@6 AB@4 AC AD@3
  AE@6 AF@5 ~
>`.pickRestart({
  A: "[~@31 a1@64 ~]/3", B: "[a1@63 a1@64 a1@33]/5", C: "[~@31 f2@64 d2@64 f#2@64 e2@32 ~]/8",
  D: "[e2@31 a1@64 a1@64 a1@64 a1@33]/8", E: "[~@22 a1@8 ~ f1@64 ~]/3",
  F: "[d1@63 f#1@57 f#1@7 e2@27 ~@5 e1@32 ~, ~@155 e2@37]/6", G: "a1@11 a1@16 ~ a1@4",
  H: "[a1@43 a1@8 a1@8 a1@15 ~@17 a1@4 a1@20 a1@8 ~ a1@4, ~@37 a1@8 ~@19, ~@87 a2@32 ~@9]/4",
  I: "[a1@19 a1@8 a1@4 a1@7 ~@38 a1@19 ~@12 f1@20 ~@13 f2@10 ~@4 e2@5 ~@12 d1@7 ~@13 d1, ~@38 a1@12 a1@25 ~@52 f1@32 ~@33, ~@43 a2@21 a2@24 ~@7 f2@44 ~@11 f2@9 d2@23 ~@10]/6",
  J: "[~@11 d1@16 d1@4 f#1@20 f#1@12 f#1]/2",
  K: "[~@23 f#2@8 ~@13 e1@7 ~@8 e1@4 e1@24 e1@8 ~@32 a1@8 ~@4 e2@12 ~@8 a1@7 ~@53 a1@4 a1, ~@12 f#2@11 ~@8 e2@24 e2@8 ~@56 a2@64 ~@8 a1@20 a1@8 ~@5, ~@19 f#1@13 ~@19 e1@8 ~@36 a1@28 ~@28 e2@19 ~ e2@53, ~@204 a2@11 a2@8 ~]/7",
  L: "[~@18 a1@13 a1@8 ~@16 a2@9, ~@6 a1@12 ~@21 a1@11 ~ a1@13, ~@11 a2@33 a2@11 ~@9]/2",
  M: "[~@83 f2@4 f1@8 ~@24 f2@16 d1@4 ~@33 d2@11 ~@4 d1@4 ~, a1@19 a1@12 ~ a1@19 a1@37 ~@7 f1@20 f1@23 ~@9 d1@8 ~@4 d1@20 ~@13, ~@12 a2@11 a2@21 a2@12 a2@32 ~@20 f2@11 ~@20 d2@12 d2@21 ~@11 d2@8 ~]/6",
  N: "[~@55 f#2@9, f#1@19 f#1@12 f#1@20 f#1@13, ~@11 f#2@12 f#2@20 ~ f#2@11 ~@9]/2",
  O: "[e1@7 ~@16 e2@7 ~ e1@8 ~@16 e2@8 a1@8 ~@25, ~@7 e1@12 e1@11 ~@9 e1@11 e1@13 ~@33, ~@11 e2@12 ~@20 e2@12 ~@41]/3",
  P: "[a1@11 a1@16 a1@4 a1@32 a1@12 ~ a1@11 a1@8 a1@23 a1@29 ~@9 a1@4, ~@147 a1@8 ~@5, ~@151 e2@8 ~]/5",
  Q: "[a1@11 a1@20 a1@28 ~@5]/2", R: "f1@19 f1@13",
  S: "[f1@11 ~ f1@11 f1@4 f1@12 d1@16 ~@8 d1@12 d1@20 f#1@10 f#1@21 ~ f#1@4 f#1@9 f#1@11 f#1@8 e1@4 e1@8 e1@12 e1@8 ~@10 a1@13 ~@8 a1@28 ~@6, ~@191 e1@32 ~@33]/8",
  T: "[~@31 [a1,a2]@64 ~]/3", U: "[[a1,a2]@63 ~@60 g2@4 f2@64 ~, ~@63 a1@64 ~@65, ~@120 a2@7 ~@65]/6",
  V: "[d2@55 d2@8 [f#1,f#2]@64 [e1,e2]@32 [e1,e2]@32 ~]/6", W: "a1@4 ~@19 a2@9, ~@4 a1@15 a1@13, ~@11 a2@12 ~@9",
  X: "[a1@4 ~@23 a1@4 a1@3 ~@29 a1@4 ~@28 a1@4 ~@17 a1@11 a1@4 ~@20 a2@8 a1@4 ~@28 a1@4 ~@24 g2@4 f1, ~@4 a1@15 a1@8 ~@7 a1@17 a1@12 ~@4 a1@16 a1@12 ~@4 a1@16 ~@16 a1@17 a1@11 ~@4 a1@16 a1@12 ~@4 a1@16 a1@13, ~@12 a2@11 a2@7 ~@13 a2@12 a2@20 a2@12 a2@21 a2@15 ~@16 a2@12 ~@20 a2@12 a2@20 a2@12 a2@8 ~]/7",
  Y: "[~@27 f1@4 f1@4 ~@25 f1@3 d1@4 ~@24 d1@4 d1@5 ~@23 d1@4 f#1, ~@2 f1@17 f1@8 ~@8 f1@17 f1@8 ~@7 d1@16 d1@8 ~@9 d1@15 d1@8 ~@5, ~@11 f2@12 f2@21 f2@12 f2@8 ~@11 d2@12 d2@20 ~ d2@11 d2@8 ~]/4",
  Z: "[~@30 f#1@4 ~@25 f#1@4 e1@4 ~@23 e1@4 ~@12 e2@8 ~@5 e1@8 a1@13 a1@19 a1@12 a1@8 ~@8 a1@4 a1@13 a1@19 a1@20 a1@11 ~ a1, ~@3 f#1@15 ~ f#1@11 ~@4 f#1@17 f#1@8 ~@8 e1@16 e1@7 ~@4 e1@24 ~@61 a1@8 ~@69, ~@11 f#2@12 f#2@20 f#2@12 f#2@8 ~@12 e2@12 e2@8 ~@19 e2@13 ~@56 e2@8 ~@65]/8",
  AA: "[~@3 a1@8 ~@20 e1@24 ~@4 a1@4 a1@24 a1@8 a1@12 a1@12 a1@8 f2@12 ~@20 f1@24 f1@8 d2, ~@11 a1@48 ~@80 f2@52 ~]/6",
  AB: "[~@11 d2@20 d2@24 ~@9 f#2@7 f#2@5 f#2@19 f#2@8 f#2@4 ~ f#2@12 f#2@8, ~@55 d2@64 ~@9]/4", AC: "e2",
  AD: "[~@31 a1@5 ~@23 a1@4 ~@29 a1@4, e2@2 ~, ~@36 a1@15 a1@8 ~@4 a1@20 a1@8 ~@5, ~@43 a2@12 a2@21 a2@12 a2@8]/3",
  AE: "[a1@3 ~@24 a1@4 a1@4 ~@28 a1@4 ~@25 a1@3 a1@4 ~@24 a1@4 a1@3 ~@25 a1@4 a1@4 ~@21 a2@4 a2@4, ~@3 a1@16 a1@8 ~@8 a1@16 a1@12 ~@4 a1@17 a1@8 ~@7 a1@16 a1@8 ~@7 a1@16 ~ a1@8 ~@8 a1@17 a1@12, ~@11 a2@12 ~ a2@19 a2@15 ~ a2@16 a2@12 ~ a2@19 a2@12 a2@8 ~@12 a2@12 a2@21 a2@12 ~@8]/6",
  AF: "[~@59 a1@4 a1@28 ~@4 a1@47 ~@18, a1@32 a1@19 a1@8 ~@101, ~@20 a2@23 a2@12 a2@9 ~@96]/5",
})).s("gm_electric_bass_pick").gain(0.31)

// bass · electric bass pick · soft notes
const bass_soft = note(`<
  ~@35 A@2 B@3 C ~@2 D@2 ~@4 E F G ~@5 H ~ I J ~@4 K ~@3 L@2 ~ M ~@2 N ~@4 O ~@20 P@2 ~@14 Q R@3 ~@18 S ~@3
>`.pickRestart({
  A: "[~@23 a2@32 ~@9]/2", B: "[~@24 a2@31 a2@19 ~@22]/3", C: "~@3 a2",
  D: "[~@27 d1@4 ~@4 d1@4 d1@4 ~@21, ~@9 d1@4 ~@19, ~@22 d2@41 ~]/2", E: "~@11 a2@7 a2@5 ~@4 a1@4 ~",
  F: "~@7 a1@12 a1@8 a1@4 ~", G: "~@3 a1@12 ~", H: "~@11 f#2@12 ~@9", I: "~@27 d1@4 ~", J: "~@19 d1@8 ~@5",
  K: "~@7 a1@25", L: "[~@31 e2@24 ~@9]/2", M: "~@27 a1@5", N: "~@23 d1@7 ~@2", O: "~@3 a1@6 ~@13 a1@8 ~@2",
  P: "[~@27 a2@16 ~@21]/2", Q: "~@23 e1@8 ~", R: "[~@23 e1@64 ~@9]/3", S: "~@27 a1@4 ~",
})).s("gm_electric_bass_pick").gain(0.15)

// chords · epiano2
const epiano2 = note(`<
  A@3 B@4 C@2 D@2 E@2 F@2 G@4 H@7 I@8 J@3 K@8 L@8 M@2 N@7 O@5 P@3 Q@2 R@8 S@5 T U@2 V@8 W X Y@5 Z@8 AA@2 AB@2 AC@8 AD@4
  AE AF@5 AG@8 ~@2
>`.pickRestart({
  A: "[~@31 [a1,a2,a3,c4,e4]@64 ~]/3", B: "[[a1,a2,g#3,a3,c4,e4]@63 ~ c4@64, ~@63 [a1,a2,a3,e4]@64 ~]/4",
  C: "[a1,a2,g#3,a3,c4,e4]/2", D: "[f1,f2,f3,g3,a3,c4]/2", E: "[d2,d3,a3,d4]/2", F: "[f#1,f#2,f#3,a3,c#4]/2",
  G: "[[e2,e3,b3]@32 [e2,e3,g#3,b3]@31 a2@32 ~@25 a2@8, a3@37 ~@26 a1@64 ~, ~@63 [c4,e4]@53 e4@11 ~, ~@63 a3@45 a3@19 ~, ~@96 a2@21 c4@11]/4", // E5 E C
  H: "[a2@23 ~@36 a3@4 a2@32 ~@87 a2@8 ~ [f1,f2,f3,g3,a3,c4]@33, [a1,c4]@63 [a1,c4]@64 a1@48 e4@16 ~@33, e4@44 a3@12 a2@7 a3@45 a3@19 c4@28 g#3@36 ~@33, a3@32 g#3@32 ~@31 a2@28 a2@4 [g#3,a3]@24 a2@16 c4@24 ~@33, g#3@23 a2@29 e4@11 e4@56 e4@8 e4@32 a3@32 ~@33]/7", // F Am Amaj7
  I: "[~@91 f#3@4 f#2@24 ~@32 f#2@8 e3@24 ~@4 b3@4 e2@24 e2@6 ~@30 a2@4 [a1,a3], f2@27 f2@60 d3@8 f#3@24 f#2@21 c#4@19 b3@28 ~@34 e4@35, ~@8 f3@16 f3@47 d3@8 a3@15 ~ a3@28 f#3@36 ~@24 e3@8 [e3,g#3,b3]@31 ~ a3@8 a2@17 c4@8, ~@16 c4@16 d4@7 d3@8 a3@16 d4@31 ~ c#4@33 a3@31 ~@62 c4@14 a3@20 ~, ~@32 d2@63 f#1@64 [e2,a3]@33 ~@30 a1@33 ~]/8", // A E A5
  J: "[~@26 a2@5 ~@28 a2@4 ~@8 a2@4 a2@13 ~@4 a3@4, e4@23 e4@8 ~@7 a2@17 c4@8 ~@33, ~@8 a2@18 ~@5 [a1,e4]@32 [a1,e4]@32 ~, ~@11 a3@20 g#3@12 g#3@20 ~@25 a2@7 ~, ~@17 a3@4 ~@11]/3", // A5
  K: "[a3@24 ~@31 a2@8 a2@24 ~@32 a2@8 f2@13 ~@47 d3@4 d3@8 ~@52 d3@4 ~, e4@44 e4@19 ~@32 a1@32 f1@56 f2@8 d2@64 ~, [a1,c4]@31 [a1,a3,c4]@32 [a1,e4]@33 e4@31 [f3,g3]@13 f2@19 a3@16 c4@16 ~@8 d3@24 d3@28 ~@5, a2@27 a2@12 a2@16 ~@33 a2@15 a2@16 ~@8 a3@21 f3@43 f3@12 f3@33 f3@20, ~@24 a3@7 ~@32 g#3@28 g#3@15 ~ g#3@20 c4@25 g3@39 a3@24 a3@32 a3@8 ~]/8", // Am A5 Fsus2
  L: "[f#2@23 ~@32 f#2@7 ~ e3@20 ~@8 b3@4 ~@24 e3@7 ~ a2@8 ~@52 a2@4 a2@8 ~@53 a2@3 e4, f#1@62 e2@33 [e2,g#3]@31 ~ [a1,e4]@32 a1@32 [a1,e4]@28 a2@11 ~ a2@21 ~@4, c#4@32 a3@30 b3@29 ~@20 b3@15 ~ c4@25 c4@40 ~@7 a2@16 c4@8 e4@25 e4@7 ~, a3@27 f#3@36 a3@24 a3@8 ~@32 a3@12 a3@20 e4@12 a3@20 g#3@11 ~ g#3@20 a1@33, f#3@23 f#2@20 c#4@20 ~@20 e3@12 e3@23 ~@17 a2@20 a2@5 a3@7 a2@16 e4@8 ~@20 a3@12 ~@12 g#3@20 ~]/8", // E A5
  M: "[~@7 a2, a1@31 a1@32 ~, c4@23 c4@41, a3@12 a3@27 a2@13 e4@12, ~@7 a2@20 a2@5 e4@11 a3@21]/2",
  N: "[~@55 a2@7 ~@57 c3@8 ~@12 d3@12 ~@37 f#3@3 f#3@14 ~@14 f#2@5, a1@62 c4@13 f3@13 g3@8 c4@31 d3@8 a2@24 d2@32 [f#1,c#4]@32 ~, ~@8 a2@16 a2@4 e4@12 g#3@23 f2@64 d2@24 d3@28 a3@5 d3@7 ~@14 f#3@19, ~@12 g#3@20 a2@12 e4@19 [f3,g3]@8 c3@32 f3@24 f3@41 a2@23 f#2@28 ~@5, ~@20 a3@42 a3@49 g3@16 a3@45 f3@19 a3@24 ~ a3@8]/7", // F#5 Fsus2
  O: "[~@27 e3@4 e3@20 ~@8 b3@4 ~@25 e3@7 a2@32 ~@28 a2@5, f#1@31 a3@24 a3@8 ~@32 a3@53 c4@12, c#4@15 c#4@16 b3@28 ~@21 b3@15 c4@49 e4@16, ~@7 f#3@24 e2@32 [e2,g#3]@32 a1@64 ~, ~@23 f#2@9 ~@19 e3@12 e3@24 ~@40 a2@24 a3@8 ~]/5", // E
  P: "[a2@9 ~@7 [c4,e4]@8, a1@55 e4@4 a2@37, e4@43 a3@20 [a1,a3]@33, c4@5 g#3@3 ~@4, [g#3,a3]@9 a2@3 c4@4 ~@8]/3", // C A Amaj7
  Q: "[~@59 a3@4 e4, ~@8 a2@19 a2@28 a2@9, ~@11 a3@20 [a1,c4,e4]@33, ~@16 c4@15 a3@28 ~@5, ~@23 e4@8 ~@33]/2", // Am
  R: "[~@87 f3@5 ~@3 d3@25 ~@31 d3@8 f#2@24 ~@32 f#2@8 e3@20 ~@8 b3@4 [e2,e3,g#3], ~@7 a2@17 a2@6 c4@34 g3@28 a3@51 a3@16 c#4@49 c#4@16 ~@19 e3@12 ~, ~@11 e4@20 f2@63 f3@33 f3@32 f#3@29 f#3@35 b3@28 ~@5, ~@20 c4@8 f3@3 a3@12 f3@29 a3@8 c4@15 ~@25 d3@31 ~@32 f#2@32 ~@8 e2@32 ~, ~@32 [f3,g3]@7 c3@56 d2@64 [f#1,a3]@64 a3@24 a3@8 ~]/8", // E Fsus2 F#m
  S: "[~@23 e3@5 ~@63 a2@4 a2@7 ~@54 a2@4, ~@28 e4@48 a3@19 g#3@12 g#3@52 ~, ~@29 c4@15 a3@16 a2@3 a3@8 a2@16 e4@8 e4@41 a3@24, ~@30 a3@9 a2@17 c4@40 ~@7 a2@17 a2@12 a2@16 e4@12, ~@31 a1@32 a1@32 a1@32 a1@32 ~]/5",
  T: "[a1,a3,c4,e4]", U: "[~@27 a2@4 ~@16 c4@17, a3@19 a3@12 [a1,a2,g#3,e4]@33, ~@15 e4@8 e4@8 ~@33]/2",
  V: "[~@28 f3@3 ~@124 f#3@4 f#2@32 ~@24 f#2@8 ~ e1@32, ~@8 a2@16 a2@7 [f1,a3]@32 c4@33 d2@14 a3@9 d2@16 a3@8 d4@8 d2@8 ~@32 f#2@23 ~@9 [e2,e3,a3,b3]@33, ~@12 g#3@19 f3@24 f2@41 d1@63 [f#1,a3]@64 ~@33, ~@16 c4@15 c4@28 f3@37 d4@31 d3@32 f#3@40 f#3@24 ~@33, ~@20 e4@11 f2 g3@63 e3@64 c#4@48 c#4@16 ~@33]/8", // F Esus4 F#m
  W: "[e1,e2,e3,g#3,b3]", X: "a2@2 ~@5 a3, [a1,e4], c4@5 c4@3, a3@3 a3@4 ~, ~ a2@2 a2",
  Y: "[~@27 g#3@3 ~ a2 ~@27 g#3@4 ~@45 a3@8 ~@40 g#3@3 [a2,g#3,a3,c4], a1@31 [a1,e4]@32 [a1,e4]@32 a1@25 a2@7 a1@25 a2@7 ~, e4@11 c4@12 a2@7 ~ c4@12 a3@20 a3@8 g#3@16 a2@9 [a3,e4]@8 a2@4 c4@8 a3@12 e4@8 a3@23 ~, ~@4 a2@15 e4@11 g#3@5 a2@16 c4@12 c4@12 a3@20 c4@13 e4@15 c4@8 a2@9 c4@19 ~, ~@7 a3@23 a3@9 g#3@16 a2@8 g#3@4 a2@16 c4@8 g#3@57 e4@11 ~]/5", // Am A5
  Z: "[~@27 c4@4 ~@57 f3@3 ~@160 e3@4 [e2,e3,a3,b3], [a1,e4]@31 [a1,e4]@30 a4@2 f2@5 f3@8 g3@8 a3@7 f3@4 [f2,a3]@30 a4@23 f3@3 d3@9 a3@16 f3@13 a4@42 f#2@8 f#3@4 c#4@4 f#2@7 ~@2, ~@7 a2@16 a2@8 ~@4 a2@16 c4@11 g4@58 f3@6 f4@57 d3@4 c#5@24 c#4@4 f#2@8 f#1@31 ~@2, ~@11 g#3@20 g#3@8 g#3@24 f4@45 c4@19 [d2,d4,e4]@63 f#2@9 f#3@4 a3@51 ~@2, ~@19 a3@12 ~@12 a3@12 a2@5 c5@35 [g3,c4]@5 f3@4 g3@24 ~@7 d3@4 e3@51 f#4@64 ~@2]/8", // Esus4 A5 F Dsus2 C5
  AA: "[~@22 e3@4 ~ e3@4 g#3@24 ~@5 e3@4, ~@7 e3@15 ~@9 [e2,b3]@33, ~@10 b3@8 b3@12 ~@25 g#3@8 ~, ~@11 a3@20 e3@29 ~@4]/2", // E5
  AB: "[a2@7 ~@4 a3@36 ~@13 a2@3 a2, [a1,c4]@63 ~, e4@56 e4@7 ~, a3@11 ~@37 a3@15 ~, ~@7 a2@52 ~@5]/2", // Am
  AC: "[~@59 g#3@4 ~ a2@23 ~@33 a2@7 a2@24 ~@4 g#3@4 e4@16 ~@12 a2@4 ~@56 f3@7 ~ [d2,d3,f3,a3], a1@55 a3@8 a1@64 [a1,a3,c4,e4]@32 a1@32 ~ f2@63 ~, g#3@51 c4@12 c4@28 a3@36 g#3@28 ~@4 a3@20 c4@11 ~ c4@32 g3@31 ~@2, a3@48 e4@15 e4@32 c4@32 ~@24 a2@32 a3@7 ~ a3@63 ~@2, [c4,e4]@32 a2@31 a3@24 a2@25 e4@15 ~@32 c4@16 e4@15 ~ f3 g3@23 f3@24 c4@16 ~]/8", // Dm Am C
  AD: "[~@27 f3@4 ~@25 a3@7 ~ f#2@22 ~@33 f#2@8 ~, ~@23 d3@8 d2@32 c#4@49 c#4@15 ~, ~@31 d3@8 ~ d3@24 [f#1,a3]@64, ~@32 f3@12 f3@20 f#3@31 f#3@32 ~, ~@86 f#2@33 ~@9]/4", // F#m
  AE: "[e2,e3,a3,b3]", // Esus4
  AF: "[[e2,e3,g#3,b3]@31 ~@21 a2@4 ~@4 a1@4 ~@28 g#3@3 ~ a2@7 a2@5 ~@7 a1@4 ~@12 g#3@4 ~@20 a3@4 ~, ~@31 a1@25 a2@8 a1@24 a2@7 ~ a1@12 a2@12 a1@40, ~@31 e4@9 a2@4 e4@32 a3@19 a3@40 g#3@25, ~@31 a2 a3@40 a2@12 e4@11 ~ [c4,e4]@39 c4 e4@7 a2@17, ~@32 c4@63 g#3@32 a2@9 a3@11 e4@4 c4@9]/5", // E C
  AG: "[~@7 a2@4 ~@8 a1@4 ~@36 g#3@4 ~@61 a3@3 a2@8 a2@4 ~@12 a2@8 a2@8 ~@20 a3@4 [a1,a2,a3,c4,e4]@36 ~@29, c4@63 c4@24 a2@17 c4@4 e4@11 a2@8 ~@12 a2@12 ~@16 a2@16 a2@8 ~@65, e4@35 a3@5 e4@7 a3@16 a3@52 c4@12 [c4,e4]@48 a3@12 ~@69, a3@31 a2@21 e4@11 [g#3,e4]@8 a2@4 g#3@8 e4@12 g#3@32 a3@20 a3@28 [g#3,c4,e4]@16 ~@65, a1@12 a2@11 a1@32 a2@7 ~ a1@64 a1@64 ~@65]/8", // Am C C#m G#aug
})).s("gm_epiano2").gain(0.31)

// drums · kick
const kick = s("bd").struct(`<
  ~@17 A B C A D E A F ~ G H A E A I J K L M N O P Q R M S T U V W X M T Y Z AA AB AC Y S@2 AD O AE AF M AG AH AI AJ A
  AK AL AM AL A E@2 AN AO A AP AQ AR ~@15 A M AD M@4 AS AT AU AV AW AX AF M AS AY AZ BA BB BC BD BE BF BG BH E AL BI@2
  BJ BK BL Y BM M AU BN M BM AC V AF BO BP D ~
>`.pickRestart({
  A: "~@31 x", B: "~@7 x ~@19 x ~@4", C: "x ~@6 x ~@7 x ~@16", D: "~@27 x ~@3 x", E: "~@7 x ~@23 x",
  F: "~@7 x ~@18 x ~@5", G: "x ~@4 x ~@2", H: "x ~@30 x", I: "~@23 x ~@7 x", J: "~@24 x ~@6 x",
  K: "~@3 x ~@2 x ~@5 x ~@3 x ~@3 x ~@7 x ~@3", L: "x ~@3 x ~ x ~@5 x ~@7 x ~@7 x ~@2 x",
  M: "~@3 x ~ x ~@5 x ~@7 x ~@7 x ~@3 x", N: "~@3 x ~ x ~@6 x ~@6 x ~@8 x ~@2 x", O: "~@3 x ~ x ~@6 x ~@7 x ~@7 x ~@3",
  P: "x ~@2 x ~ x ~@6 x ~@14 x ~@3 x", Q: "~@3 x ~ x ~@5 x ~@7 x ~@7 x ~@2 x ~",
  R: "~@2 x ~@2 x ~@5 x ~@7 x ~@7 x ~@3 x", S: "~@3 x ~ x ~@6 x ~@6 x ~@7 x ~@3 x",
  T: "~@3 x ~ x ~@5 x ~@7 x ~@7 x ~@4", U: "x ~@2 x ~ x ~@6 x ~@7 x ~@7 x ~@3", V: "x ~ x!2 ~@2 x ~@3 x ~@3 x ~",
  W: "x ~@3 x!2 ~@6 x ~@7 x ~@7 x ~@3", X: "x ~@3 x ~ x ~@4 x ~@7 x ~@7 x ~@3 x",
  Y: "x ~@3 x ~ x ~@5 x ~@7 x ~@6 x ~@3 x", Z: "~@3 x ~@2 x ~@4 x ~@7 x ~@7 x ~@3 x",
  AA: "~@3 x ~ x ~@5 x ~@8 x ~@7 x ~@3", AB: "x ~@3 x ~ x ~@4 x ~@8 x ~@6 x ~@3 x",
  AC: "~@3 x ~ x ~@5 x ~@7 x ~@8 x ~@3", AD: "~@3 x ~@2 x ~@5 x ~@6 x ~@7 x ~@3 x",
  AE: "x ~@3 x ~ x ~@5 x ~@6 x ~@8 x ~@3", AF: "x ~@3 x ~ x ~@5 x ~@6 x ~@7 x ~@3 x",
  AG: "~@3 x ~@2 x ~@5 x ~@6 x ~@7 x ~@4", AH: "x!4", AI: "x ~@2 x ~@4", AJ: "x ~@11 x ~@10 x ~@3 x ~@3 x",
  AK: "~@11 x ~@7 x ~@3 x ~@3 x ~@3 x", AL: "~@7 x ~@19 x ~@3 x", AM: "~@24 x ~@2 x ~@3 x",
  AN: "~@7 x ~@11 x ~@7 x ~@3 x", AO: "~@7 x ~@15 x ~@7 x", AP: "~@7 x ~@16 x ~@6 x", AQ: "~@15 x ~@15 x",
  AR: "~@7 x ~@7 x ~@15 x", AS: "~@3 x ~@7 x ~@7 x ~@7 x ~@3 x", AT: "~@3 x ~ x ~@5 x ~@6 x ~@7 x ~@4 x",
  AU: "~@3 x ~ x ~@5 x ~@7 x ~@6 x ~@3 x ~", AV: "~@2 x ~@2 x ~@5 x ~@8 x ~@6 x ~@3 x",
  AW: "~@2 x!2 ~@2 x ~@3 x ~@3 x ~", AX: "x ~@3 x ~@2 x ~@4 x ~@7 x ~@7 x ~@3", AY: "~@5 x ~@5 x ~@7 x ~@6 x ~@4 x",
  AZ: "~@6 x!2", BA: "x ~@11 x ~@7 x ~@2 x ~@3 x ~@3 x", BB: "~@3 x ~@8 x ~@7 x ~@6 x ~@3 x",
  BC: "~@3 x ~@7 x ~@8 x ~@7 x ~@3", BD: "x!2 ~ x ~ x ~ x", BE: "x ~@2 x ~ x ~ x", BF: "x ~@22 x ~@3 x ~@3 x",
  BG: "~@20 x ~@6 x ~@3 x", BH: "~@7 x ~@15 x ~@3 x ~@3 x", BI: "~@7 x ~@16 x ~@2 x ~@3 x",
  BJ: "~@7 x ~@16 x ~@3 x ~@3", BK: "x!2 ~@2", BL: "x ~@6 x", BM: "~@3 x ~ x ~@6 x ~@7 x ~@6 x ~@3 x",
  BN: "~@2 x ~ x ~@5 x ~@7 x ~@7 x ~@4 x", BO: "~@3 x ~@7 x ~@7 x ~@7 x ~@2 x ~",
  BP: "~@2 x ~@2 x ~@5 x ~@6 x ~@7 x ~@3 x ~",
})).gain(0.36)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@17 A ~ B C D E F G H I J@2 K L M ~@6 N ~@26 O ~ P Q R S R T U V W K X Y Z ~@39 N AA ~ AB AA AC ~@2 AD AE ~@12 AA ~
>`.pickRestart({
  A: "x ~@6 x ~@15 x ~@3 x ~@4", B: "~@24 x ~@6 x", C: "~@7 x ~@7 x ~@7 x ~@8", D: "~@7 x ~@11 x ~@4 x ~@7",
  E: "~@20 x ~@6 x ~@4", F: "~@7 x ~@12 x ~@6 x ~@4", G: "~@9 x ~@6", H: "~@7 x ~@15 x ~@4 x ~@3",
  I: "~@7 x ~@19 x ~@4", J: "~@7 x ~@11 x ~@7 x ~@4", K: "~@19 x ~@7 x ~@4", L: "~@7 x ~@12 x ~@7 x ~@3",
  M: "~@15 x ~@16", N: "~@19 x ~@12", O: "~@6 x!2", P: "~@12 x ~@10 x ~@3 x ~@4", Q: "~@7 x ~@24",
  R: "~@19 x ~@3 x ~@8", S: "~@7 x ~@11 x ~@12", T: "~@7 x ~@11 x ~@3 x ~@3 x ~@4", U: "~@19 x ~@3 x ~@3 x ~@4",
  V: "~@20 x ~@2 x ~@3 x ~@4", W: "~@3 x", X: "~@7 x ~@10 x ~@3 x ~@4 x ~@4", Y: "~@5 x ~ x", Z: "~@7 x ~@15 x ~@8",
  AA: "~@23 x ~@8", AB: "~@23 x ~@3 x ~@4", AC: "~@5 x ~@2", AD: "~@23 x ~@4 x ~@3", AE: "~ x ~@2",
})).gain(0.2)

// drums · snare
const snare = s("sd").struct(`<
  ~@33 A@2 B C A B@6 A@3 C B C A B C B C A B C D A@2 D B C ~@33 C D B@2 C B D E B C A C D B F B ~@16 A@2 B@2 F B A C A D
  B G H ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@7 x ~@15 x ~@8", C: "~@7 x ~@16 x ~@7", D: "~@8 x ~@14 x ~@8", E: "~@7 x ~@14 x ~@9",
  F: "~@6 x ~@16 x ~@8", G: "~@7 x ~@14 x ~@7 x ~", H: "~@31 x",
})).gain(0.41)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@17 A B C D A E A F A@3 B@2 G ~@2 H@2 I J@2 I@6 H K H I@2 J H I J I@2 K I@3 H K@2 I J ~@5 A@9 L M N ~@15 O J K I@2 J
  I K P@2 J H J K I Q R ~ S I J H@2 T A@6 T@2 U H@2 I@2 Q I H J H K I V W ~
>`.pickRestart({
  A: "~@11 x ~@20", B: "~@11 x ~@11 x ~@8", C: "~@11 x ~@15 x ~@4", D: "~@27 x ~@4", E: "~@11 x ~@12 x ~@7",
  F: "~@11 x ~@10 x ~@9", G: "~@3 x ~@2 x ~", H: "~ x ~ x", I: "~@7 x ~@15 x ~@8", J: "~@7 x ~@16 x ~@7",
  K: "~@8 x ~@14 x ~@8", L: "~@11 x ~@19 x", M: "~@15 x ~@15 x", N: "~@15 x ~@7 x ~@3 x ~@4", O: "x ~@26 x ~@4",
  P: "~@7 x ~@14 x ~@9", Q: "~@6 x ~@16 x ~@8", R: "~@7 x ~@15 x ~@6 x ~", S: "x", T: "~@3 x ~@4", U: "~@2 x!2",
  V: "~@7 x ~@14 x ~@7 x ~", W: "~@31 x",
})).gain(0.41)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@20 A ~@2 B ~@2 C@2 ~@39 D ~@28 E ~@46>".pickRestart({
  A: "~@11 x ~@20", B: "~@3 x", C: "~@23 x ~@8", D: "~@11 x ~@19 x", E: "~@7 x ~@7 x ~@3 x ~@3 x ~@8",
})).gain(0.26)

stack(synth_strings_1, synth_strings_1_soft, bass, bass_soft, epiano2, kick, kick_soft, snare, open_hat, open_hat_soft)

More by Alanis Morissette