Strudelify

Uninvited

Alanis Morissette

KeyD majorTempo125 bpm
0:00/0:00
// Uninvited — Alanis Morissette
// 125 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 144 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(125/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 · "Piano Riff"
const piano = note(`<
  A@4 B@6 C@8 D@8 E@8 F G@8 H@8 I@4 J@8 K@4 L@7 M@2 N@8 O@2 P@7 Q@8 R@4 S@8 T@2 U@7 V@2 W@8 X@2 Y@8 ~@2
>`.pickRestart({
  A: "[~@58 a#5@15 ~@31 a5@15 a#5@9, ~@26 d5@54 ~@9 d5@39, ~@42 a5@19 ~@12 a5@22 ~@33]/4",
  B: "[~@27 a#5@8 ~@54 a#5@7, ~@7 a5@18 ~@13 a5@25 ~@7 a5@24 ~@7 a5@23 ~@8 a5@20 ~@11 a5@23 ~@6, ~@22 d5@57 ~@6 d5@55 ~@7 d5@45, ~@39 a#5@11 ~@14]/6",
  C: "[~@175 a#5@15 ~@46 a#5@14 a5@6, ~ a5@25 ~@6 a5@25 ~@8 a5@21 ~@10 a5@26 ~@6 a5@23 ~@8 a5@20 ~@11 a5@25 ~@6 a5@18 ~@17, ~@17 d5@56 ~@7 d5@56 ~@7 d5@56 ~@6 d5@51, ~@48 a#5@36 ~@29 a#5@40 ~@103]/8",
  D: "[~@41 a#5@17 ~@47 a#5@15 ~@32 a5@16 a#5@15 ~@32 a5@16 a#5@15 a5@10, ~@10 d5@57 ~@7 d5@55 ~@6 d5@55 ~@8 d5@57 ~, ~@26 a5@21 ~@11 a5@24 ~@8 a5@18 ~@12 a5@24 ~@39 a5@25 ~@48]/8",
  E: "[~@22 a5@16 a#5@15 ~@31 a5@16 a#5@15 ~@32 a5@16 a#5@14 ~@64 a5@15, ~@6 d5@56 ~@7 d5@55 ~@7 d5@57 ~@6 d5@57 ~@5, ~@53 a5@25 ~@37 a5@25 ~@37 a5@26 ~@7 a5@21 ~@25, ~@113 a#5@9 ~@6]/8",
  F: "~ a5, ~ d5@31",
  G: "[a#5@15 ~@46 a#5@15 ~@174 a#5@6, ~@15 a5@25 ~@6 a5@18 ~@12 a5@24 ~@9 a5@24 ~@7 a5@25 ~@7 a5@25 ~@7 a5@24 ~@6 a5@22, ~@30 d5@55 ~@7 d5@57 ~@7 d5@56 ~@7 d5@37, ~@125 a#5@40 ~@23 a#5@39 ~@29]/8",
  H: "[~@56 a#5@16 ~@31 a5@16 ~@62 a#5@16 ~@47 a#5@12, ~@10 a5@25 ~@6 a5@18 ~@13 a5@24 ~@23 a#5@35 ~@102, ~@24 d5@57 ~@6 d5@55 ~@8 d5@56 ~@6 d5@44, ~@134 a5@23 ~@8 a5@19 ~@13 a5@25 ~@7 a5@20 ~@7]/8",
  I: "[~@35 a5@16 a#5@15 ~@31 a5@16 a#5@15, ~@3 a5@24 ~@39 a5@24 ~@38, ~@19 d5@56 ~@6 d5@47]/4",
  J: "[~@32 a5@16 a#5@14 ~@31 a5@15 a#5@15 ~@32 a5@15 a#5@15 ~@31 a5@15 a#5@15 a5@10, a5@24 ~@38 a5@26 ~@35 a5@25 ~@37 a5@24 ~@47, ~@16 d5@56 ~@5 d5@55 ~@7 d5@55 ~@7 d5@54 ~]/8",
  K: "[~@36 a#5@15 ~@46 a#5@15 a5@16, ~@5 d5@55 ~@7 d5@54 ~@7, ~@21 a5@18 ~@12 a5@26 ~@7 a5@17 ~@27]/4",
  L: "[~@91 a#5@15 ~@47 a#5@15 ~@31 a5@16 a#5@9, d5@53 ~@8 d5@54 ~@6 d5@54 ~@8 d5@41, ~@15 a5@25 ~@6 a5@20 ~@10 a5@23 ~@7 a5@24 ~@7 a5@19 ~@12 a5@22 ~@34, ~@31 a#5@21 ~@172]/7",
  M: "[~@35 a5@15 a#5@14, ~@2 a5@11 ~@19, ~@5 d5@11]/2",
  N: "[~@32 a5@16 a#5@15 ~@30 a5@15 a#5@15 ~@47 a#5@15 ~@31 a5@15 a#5@15 a5@10, a5@25 ~@38 a5@24 ~@36 a5@22 ~@10 a5@18 ~@12 a5@24 ~@47, ~@16 d5@55 ~@7 d5@52 ~@9 d5@54 ~@7 d5@55 ~]/8",
  O: "[~@20 a5@16 a#5@15 a5@13, ~@5 d5@53 ~@6]/2",
  P: "[~@18 a5@15 a#5@15 ~@31 a5@15 a#5@15 ~@31 a5@16 a#5@14 ~@32 a5@14 a#5@8, ~ d5@55 ~@7 d5@54 ~@8 d5@55 ~@6 d5@38, ~@48 a5@25 ~@36 a5@24 ~@37 a5@25 ~@29]/7",
  Q: "[~@39 a5@15 a#5@15 ~@47 a#5@15 ~@47 a#5@16 ~@48 a#5@14, ~@7 a5@26 ~@36 a5@25 ~@6 a5@19 ~@12 a5@25 ~@7 a5@18 ~@13 a5@25 ~@7 a5@22 ~@8, ~@23 d5@56 ~@5 d5@56 ~@7 d5@57 ~@6 d5@46]/8",
  R: "[~@33 a5@16 a#5@14 ~@16 d5@45 ~@4, ~ a5@24 ~@38 a5@19 ~@46, ~@17 d5@53 ~@58]/4",
  S: "[~@28 a5@17 a#5@15 ~@31 a5@15 a#5@15 ~@31 a5@16 a#5@14 ~@31 a5@15 a#5@15 a5@13, ~@12 d5@56 ~@7 d5@55 ~@7 d5@54 ~@6 d5@55 ~@4, ~@60 a5@23 ~@38 a5@22 ~@39 a5@24 ~@50]/8",
  T: "[~@18 a5@15 a#5@15 a5@16, ~ d5@28 ~@3]/2",
  U: "[~@15 a5@15 a#5@15 ~@31 a5@16 a#5@15 ~@30 a5@15 a#5@15 ~@30 a5@16 a#5@11, d5@55 ~@5 d5@55 ~@7 d5@53 ~@7 d5@42, ~@45 a5@24 ~@38 a5@23 ~@37 a5@22 ~@35]/7",
  V: "[~@35 a5@15 a#5@14, ~ a5@6 ~@9, ~@19 d5@45]/2",
  W: "[~@34 a5@14 a#5@15 ~@31 a5@15 a#5@14 ~@31 a5@15 a#5@15 ~@32 a5@15 a#5@17 a5@8, ~ a5@25 ~@37 a5@24 ~@36 a5@25 ~@36 a5@25 ~@47, ~@17 d5@54 ~@8 d5@54 ~@6 d5@54 ~@7 d5@56]/8",
  X: "[~@22 a5@15 a#5@15 a5@12, ~@6 d5@55 ~@3]/2", Y: "[~@9 a5@8 a#5@7 ~@8 d5@96, ~@3 d5@55 ~@198, ~@24 a5@39 ~@65]/8",
})).s("gm_piano").gain(0.41)

// chords · piano · "Piano Chrd"
const piano_2 = note(`<
  ~@4 A@4 B@7 ~ C@8 D@3 ~ E@2 ~@2 F@3 G@8 H@8 I@4 ~@8 J@2 ~@2 K@6 ~ L@6 M@2 N@3 ~@20 O@8 P@7 Q@8 R@4 S@3 T@8 ~
>`.pickRestart({
  A: "[~@23 [d4,f#4,a4]@81 ~@24]/4", B: "[~@20 d4@61 [d4,f#4,a4]@63 [d4,f#4,a4]@64 ~@16, ~@5 [a#3,g4]@16 ~@35]/7",
  C: "[~@73 [d4,f#4,a4]@64 [c4,d#4,g4]@62 [b3,d4,g4]@57, ~@7 a#3@32 ~@89, ~@14 d4@59 ~@183, ~@15 g4@64 ~@177]/8", // D Cm G
  D: "[~@3 [d4,f#4,a4]@32 ~@13]/3", E: "[~@4 [d4,f#4,a4]@57 ~@3]/2", F: "[~ [d4,f#4,a4]@95]/3",
  G: "[~@31 [a#3,d4,g4]@61 [d4,f#4,a4]@64 ~ [d4,f#4,a4]@99]/8", // Gm D
  H: "[~@26 [d4,g4]@61 ~ d4@48 ~@14 [c4,d#4,g4]@49 ~@13 [b3,d4,g4]@44, ~@25 a#3@62 [f#4,a4]@47 ~@122]/8", // G5 Cm G F#m
  I: "[~@10 [d4,a4]@49 ~@5, ~@19 f#4@97 ~@12]/4", J: "[~@5 [d2,d3,d4,f#4,a4,d5]@57 ~@2]/2",
  K: "[[g2,g3,d4,g4]@24 ~@6 [d2,d3,d4,f#4,a4]@29 ~@2 [d2,d3,d4,f#4,a4,d5]@31 ~@4, a#3@15 ~@49]/6", // G5 D
  L: "[~@21 [g2,g3,a#3,d4,g4]@45 ~@14 [d2,d3,d4,f#4,a4]@52 ~@10 [c2,c3,c4,d#4,g4]@46 ~@4]/6", // Gm D Cm
  M: "[~@9 [b3,d4,g4]@55, ~@9 [g2,g3]@52 ~@3]/2", N: "[~@4 [d2,d3,a3,d4,f#4]@31 ~@13]/3",
  O: "[~@13 [d2,d3,f#3,a3]@117 ~@7 d2@117 ~@2, ~@68 [d3,f#3,a3]@59 ~]/8", // D
  P: "[~ [d2,d3,f#3,a3]@117 ~@6 [d2,d3,f#3,a3]@100]/7", Q: "[~@23 [d2,d3,f#3,a3]@118 ~@4 [d2,d3,f#3,a3]@111]/8",
  R: "[~@5 [d2,d3,f#3,a3]@59]/4", S: "[~@5 [d2,d3,f#3,a3]@91]/3", T: "[~@31 [d2,d3,f#3,a3]@225]/8",
})).s("gm_piano").gain(0.36)

// chords · pad halo · "Alanis"
const pad_halo = note(`<
  ~@4 A@5 B@8 C@3 D@5 E@5 ~@2 F@8 G@3 H@4 I@6 J@3 K ~@6 L M@5 N@6 O@7 P@6 ~@9 Q@2 R@2 S@4 ~@39
>`.pickRestart({
  A: "[~@23 f#4@28 ~@2 f#4@8 g4@8 a4@8 f#4@16 d4@15 f#4@17 g4@7 a4@7 a#4@15 g4@6]/5",
  B: "[~ d4@16 a#4@4 ~@3 a#4@4 a4@8 g4@8 f#4@9 d4@57 f#4@26 d4@2 ~ d4@4 f#4@8 g4@8 a4@8 f#4@15 d4@16 f#4@15 g4@9 a4@7 a#4@15 g4@7 d4@5]/8",
  C: "[~@3 a#4@2 ~@2 a#4@9 a4@21 g4@4 f#4@55]/3",
  D: "[d4@8 c5@31 ~@2 c5@7 b4@8 a4@7 b4@39 ~@2 b4@7 a4@7 g4@8 a4@14 f#4@20]/5",
  E: "[~@8 f#4@7 g4@7 a4@7 c#5@48 d5@15 a4@40 ~@28]/5",
  F: "[~ [f#4,a4,a5]@5 ~@3 [f#4,a4,a5]@20 ~@2 [f#4,a4,a5]@8 ~ [a#4,a#5]@8 [a4,c5,c6]@8 ~ a5@14 ~ [d4,f#5]@15 ~ a4@14 ~@2 g4@7 [a4,c5,c6]@8 [a#4,d5,d6]@14 [g4,a#4,a#5]@16 [a#4,d5,d6]@8 [a4,c5,c6]@25 ~ g4@3 ~ f#4 [f#4,a4,a5]@61 ~@3 [f#4,a4,a5]@4, ~@39 g4@10 ~@7 [f#4,a4]@15 f#4@16 [f#4,a5]@15 a#4@10 ~@70 [a#4,a#5]@4 [a4,a5]@2 ~@68, ~@103 a#5@9 ~@144]/8", // F#m A# Am D Am A# Gm A# …
  G: "[~@4 [f#4,a4,a5]@21 ~@3 f#4@7 [g4,a#4,a#5]@7 ~ [c5,c6]@7 ~ [a4,a5]@15 [d4,f#4,f#5]@15 ~ a4@14, ~@27 [a4,a5]@10 ~@5 a4@8 f#4@16 ~@15 [f#4,a5]@15]/3", // F#m Gm C A D A F#m
  H: "[~ [g4,a#4,a#5]@7 ~ [c5,c6]@7 ~ [d5,d6]@14 ~ a#5@15 ~ a#4@7 ~ c5@26 ~ [g4,a#4]@4 [a4,a5]@32 a4 ~@8, ~@8 a4@8 a#4@15 [g4,a#4]@16 [d5,d6]@8 [a4,c6]@27 a#5@4 ~ f#4@29 ~@12]/4", // Gm C D Gm A Gm D Am
  I: "[~@14 d4@7 c5@28 ~@3 c5@8 b4@7 a4@9 b4@37 ~@2 b4@8 a4@8 g4@8 a4@15 f#4@22 ~@2 f#4@8 g4@6]/6",
  J: "[~ a4@8 c#5@48 d5@14 a4@25]/3", K: "~ a4 ~@30", L: "~@6 f#4@22 [d4,f#4,f#5]@2 ~ [f#4,f#5], ~@5 [a4,a5]@24 ~@3",
  M: "[d4@3 ~ [a4,a5]@7 [g4,a#4,a#5]@7 ~ [a4,c5]@7 [f#4,a4,a5]@14 ~ [d4,f#5]@15 ~@17 g4@7 [a4,c5,c6]@8 [a#4,d5,d6]@14 ~ a#4@14 ~ [d5,d6]@14 [a4,c5,c6]@8 [g4,a#4,a#5]@7 ~ f#4@12, ~@3 f#4@8 ~@7 c6@9 ~@29 a5@15 a#5@10 ~@36 a#4@15 ~@15 [a4,a5]@13, ~@19 g4 ~@20 f#4@17 [f#4,a4]@15 a#4@9 ~@21 [g4,a#5]@16 ~@42]/5", // A Gm Am F#m D Am A# D …
  N: "[~@3 d4@54 [f#4,a4,a5]@29 ~@2 f#4@7 [g4,a#4,a#5]@7 ~ a4@7 ~ [f#4,a4]@15 ~ f#4@15 [f#4,a4,a5]@15 [g4,a#4,a#5]@7 ~ [a4,c5]@7 ~@16 [g4,a#4,a#5]@4, ~@3 f#4@52 ~@31 a4@10 ~@6 [c5,c6]@8 ~@16 [d4,f#5]@17 ~@29 [a#4,d6]@13 a4@3 ~@4, ~@3 f#5@47 ~@37 a5@9 ~@14 a5@17 ~@37 c6@9 d5@13 [c5,c6]@4 ~@2]/6", // F#m Gm F#m Gm Am Gm C D …
  O: "[~@3 [d4,a#4,a#5]@6 ~ [a#4,d6]@7 [a4,c5,c6]@26 ~@4 a4@55 ~@5 a5 ~ c5@24 ~ c5@5 ~ c5@7 ~ b4@7 a4@7 b4@37 ~@2 b4@7 a4@8 g4@8, ~@9 d5@8 ~@26 [g4,a#5]@3 f#4@56 d4@8 ~@114, ~@44 a#4@3 a5@60 ~@117]/7", // Gm A# Am Gm
  P: "[a4@15 f#4@22 ~@2 f#4@7 g4@8 a4@7 c#5@47 d5@14 a4@63 ~@7]/6", Q: "[~@18 f#4@24 d4@7 f#4@8 g4@7]/2",
  R: "[~ a4@8 f#4@16 d4@24 f#4@8 g4@7]/2",
  S: "[a4@8 a#4@16 ~@16 d4@3 a#4@3 ~ a#4@8 a4@15 f#4@37 ~@21, ~@6 g4@5 ~@21]/4",
})).s("gm_pad_halo").gain(0.36)

// other · string ensemble 2 · "Srings"
const string_ensemble_2 = note("<~@30 A@3 ~@22 B@3 ~@86>".pickRestart({
  A: "[~ [d3,a3]@32 ~@15]/3", B: "[~ [d3,d5]@4 ~, ~@15 d2@64 ~@17]/3",
})).s("gm_string_ensemble_2").gain(0.2)

// chords · percussive organ · "Organ"
const percussive_organ = note("<~@32 A@3 B@8 C@8 D@5 ~@49 E@8 ~@31>".pickRestart({
  A: "[~ [a4,d5,f#5]@91 ~@4]/3", B: "[~@31 [a#4,d5,g5]@60 [a4,f#5]@154 ~@11, ~@91 d5@151 ~@14]/8",
  C: "[~@13 [d5,g5]@31 [a4,d5,f#5]@31 [c5,d#5,g5]@31 [b4,d5,g5]@22, ~@25 a#4@64 ~@167]/8", // G5 D Cm G
  D: "[~@10 f#5@63 ~@7, ~@19 [a4,d5]@126 ~@15]/5", E: "[~@7 [d4,f#4,a4,d5]@121, ~@13 [d2,d3]@243]/8",
})).s("gm_percussive_organ").gain(0.17)

// chords · string ensemble 1 · "HStrings"
const string_ensemble_1 = note(`<
  ~@32 A@2 ~@21 B@4 C D E@2 F@8 ~@3 G@5 ~ H@3 I@7 J@3 K@3 ~@9 L@2 M@2 N@6 O P@5 Q R@2 S@5 T@6 U ~@8
>`.pickRestart({
  A: "[~ [a2,a3]@49 ~@14]/2", // A
  B: "[~@14 d4 d2@15 ~ a3@3 [g#2,g#3]@4 [a2,a3]@4 ~@12 f#2@3 ~@4 [f#2,f#3]@4 ~@5 d2@3 [c#2,c#3]@3 ~ d2@5 ~@2 [d4,d5]@7 ~ a2@4 [g#1,g#2]@3 [a1,a2]@6 ~@2 a5@7 [d4,d5]@8 [a#4,a#5]@6, ~@15 [d4,d5]@40 ~@2 [f2,f3]@5 ~@7 d3@4 ~@3 d3@5 ~@10 a1@5 ~@10 a4@8 ~@14, ~@15 d3@12 ~@3 a2@4 ~@20 [f#3,g#5]@5 ~@2 g#5@7 [a4,a5]@17 ~@6 a#5@16 ~@21, ~@15 e4@2 ~@35 g#4@7 ~ g#4@9 ~@23 a#4@15 ~@21]/4", // G# A F# C# D G# A D …
  C: "~@2 a5@15 [g#4,b4,g#5]@7 ~ [a4,a5]@7, ~ a4@17 ~@6 c5@8", // G#m A
  D: "~ [g#4,b4,g#5]@7 [a4,c5,a5]@8 [a#4,c#5,a#5]@8 [d4,d5]@8", // G#m Am A#m D
  E: "[~@7 d2@6 ~@5 d2@5 ~ g2@4 ~@7 a#3@4 a2@7 ~@2 d#3@6 ~@8 [c3,d4,d5]@2, [c#5,c#6]@15 d#5@10 ~@6 [d5,e5,d6]@17 ~@7 e5@8 ~, ~@13 f2@6 ~@9 d2@7 ~@19 [d3,d4,e6]@9 ~, ~@14 f3@5 ~@4 [c#5,c#6]@9 ~@15 [d4,d5]@8 ~@5 c4@4, ~@16 [d4,d5]@10 ~@20 d#4@7 ~@11]/2", // Csus2 C# Dsus2 C# D
  F: "[~@2 a#2@3 f#5 [a2,a3]@60 a2 ~@46 [a3,a4]@6 ~ a#4@14 [g3,g4]@38 ~@16 [a4,a5]@30 ~ a#4@14 [a4,a5]@14 ~@9, ~@6 [f#4,f#5,f#6]@120 ~@92 a#5@15 ~@23, ~@119 a#3@15 ~@122]/8", // A G A F#
  G: "[~@4 [a3,a4]@8 [a#3,a#4]@15 [g3,g4]@39 ~@13 [a4,a5]@31 [a#4,a#5]@17 [a4,a5]@13 ~@20]/5", H: "[~@5 [d3,d4]@43]/3",
  I: "[~@6 [f#3,f#4]@7 [g3,g4]@7 ~ a4@8 c#5@8 c#5@38 d5 ~@7 d#5@6 ~ d5@8 d5@16 ~@7 [a2,a3,a4]@2 ~ [a2,a3,a4]@3 ~@8 [d#4,d#5]@7 [d4,d5]@8 a2@2 ~ a2@4 [c#4,c#5]@7 ~@17 [a2,a3,a4]@2 ~@2 [a2,a3,a4]@4 ~@8 [d#4,d#5]@8 [d4,d5]@7 [c#4,c#5]@5 ~@2 [c#4,c#5]@5, ~@20 a3@9 c#4@46 d4@14 [a3,a4]@23 ~@2 d5@22 ~@28 d5@34 ~@26, ~@76 d5@14 ~@8 d4@38 ~@14 [c#4,c#5]@6 ~ d2@61 ~@6, ~@165 d4@34 ~@25]/7", // F# G A D# D C# A D# …
  J: "[~@3 [d4,d5]@17 [a2,a3,a4]@2 ~@2 [a2,a3]@2 [d4,d5]@16 [f4,f5]@8 ~@8 d3@5 [f2,f3]@4 ~ d3@4 ~ g3@5 ~@6 [a#2,a#3]@4 ~ d5@7, ~@20 [d#4,d#5]@7 ~@23 [d4,d5]@31 [g4,g5]@8 ~@7, ~@23 a4@3 ~@31 d2@7 ~@3 d2@5 g2@6 [d2,d3]@6 ~@4 [a2,a3,d4]@8]/3", // D A D F A# D# D G …
  K: "[~ [d#3,d#4]@6 ~@12 a#3@3 [a2,a3]@47 ~@27, [g#4,g#5]@7 d4@6 c3@5 a#2@4 ~@74, ~@4 [d3,d5]@3 c4@3 ~@38, ~@15 [a4,a5]@8 ~@73]/3", // D# A G# D A
  L: "[~@6 d4@15 a#4@4 d4@4 a4@3]/2", M: "[~@2 d4@5 ~@2 d4@32 a#4@8 d4@8 a4@7]/2",
  N: "[d4@5 ~@3 d4@23 a5@7 d5@8 a#5@7 d5@8 ~@12 g2@2 ~@2 g2@3 ~@4 g2@3 f#3@4 ~ g2@3 d2@8 ~ g3 ~@2 [g2,g3]@4 ~@3 g2@3 ~@5 [g2,g3]@3 d2@53 ~@14, ~@61 a5@68 ~@63, ~@19 g3 ~@28]/6", // G
  O: "~@18 e3@3 ~ [e2,e3]@4 ~@3 [e2,e3]@3, ~@14 [f#2,f#3]@5 ~@13, ~@17 e2@2 ~@13", // E F#
  P: "[~@5 [e2,e3]@5 ~@3 f#2@3 e2@4 d2@3 c#2@2 ~@2 d2@61 ~@31 e5@30 ~@11, ~@11 d5@4 ~@5, ~@104 a1@45 ~@11]/5", // E
  Q: "~@13 [d4,d5]@3 [c#4,c#5]@4 ~ d4@4 ~@7, ~@5 d5 ~@2", // D C#
  R: "[~@3 [a3,a4]@3 [g#3,g#4]@4 ~ a3@4 ~@12 [f3,f4]@3 [e3,e4]@4 [f3,f4]@5 ~@10 a4@5 a#4@5 c#5@5, ~@5 a4@2 ~@25]/2", // A G# F E F
  S: "[~ d5@5 e5@5 g5@5 a5@54 g5@7 a5@5 e5@2 ~ c#5@49 ~@26, ~@42 d5 ~@37]/5",
  T: "[~ [a4,a5]@7 [a#4,a#5]@15 [a4,a5]@39 [c#5,c#6]@7 [d5,d6]@15 ~ a4@19 ~@5 g#2@5 ~@2 [g#2,g#5]@7 ~ [a4,a5]@7 ~@9 [a4,a5]@7 [f3,f5,f6]@8 [a2,a4,a5]@8 ~@7 [f5,f6]@21 ~, ~@84 a5@19 ~@5 [g#4,g#5]@6 ~ g#4@8 a2@8 ~@8 a2@8 ~@45]/6", // A A# A C# D G# A F …
  U: "~ [g5,g6]@14 ~", // G
})).s("gm_string_ensemble_1").gain(0.41)

// chords · string ensemble 1 · "HStrings" · soft notes
const string_ensemble_1_soft = note("<~@61 A@2 B ~@22 C ~@24 D@4 ~@4 E@2 ~@23>".pickRestart({
  A: "[~@8 d3@7 ~@4 d3@5 g3@5 d3@5 a#2@5 a3@7 ~@18]/2", B: "~ a#3@5 ~@26", C: "~@16 a4 ~@15",
  D: "[~@9 g3@2 ~@5 [f#2,f#3]@4 g3@4 f#2@3 g3@3 ~ d3@8 g2@2 ~@5 [f#2,f#3]@4 g3@4 [f#2,f#3]@4 ~@8 a5 ~@61, ~@61 d3@53 ~@14]/4", // F#
  E: "[~@8 a2@45 ~@11]/2",
})).s("gm_string_ensemble_1").gain(0.2)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@55 A@2 B C@2 D E F G H I J K L M N O P@2 Q R@3 S@3 T U V W X ~@19 Y Z AA AB AC@2 AD AE AF@3 AG AH@2 AI AJ@2 AK AL@2
  AM AN@3 AO AP AQ AR AS AT@4 ~@6
>`.pickRestart({
  A: "[~@23 d2@2 ~@5 d2@5 ~@3 d2 ~@3 d2@3 ~@5 d2@3 ~@5 d2@4 ~@2]/2", B: "~ d2@2 ~@2 d2 ~@2 d2@2 ~@11 d2@2 ~@5 d2@4",
  C: "[~@4 d2 ~@3 d2@3 ~@4 d2@4 ~@3 d2@5 ~@4 d2@2 ~@2 d2@2 ~ d2@3 ~@9 d2@3 ~@5 d2@6]/2",
  D: "~@2 d2 ~@3 d2@2 ~@5 d2@3 ~@5 d2@6 ~@2 d2@2 ~", E: "~ d2@2 ~@2 d2@2 ~@9 d2@3 ~@4 d2@5 ~@4",
  F: "d2@2 ~ d2@3 ~@4 d2@3 ~@6 d2@4 ~@4 d2 ~@2 d2@2", G: "~@14 d2@3 ~@4 d2@5 ~@2 d2@2 ~@2",
  H: "d2@3 ~@4 d2@3 ~@5 d2@5 ~@2 d2@2 ~@2 d2@2 ~@2 d2@2", I: "~@10 d2@3 ~@4 d2@6 ~@3 d2@2 ~ d2@3",
  J: "~@5 d2@4 ~@4 d2@5 ~@3 d2@2 ~@2 d2@2 ~ d2@2 ~@2", K: "~@8 g2@3 ~@4 g2@5 ~@2 g2@2 ~@2 g2@4 ~@2",
  L: "~@2 g2@3 ~@4 g2@5 ~@2 g2@2 ~@2 g2@2 ~@2 g2@2 ~@6", M: "~@5 d2@3 ~@4 d2@6 ~@2 d2@2 ~@2 d2@4 ~@4",
  N: "d2@4 ~@4 d2@5 ~@2 d2@2 ~ d2@2 ~@2 d2@3 ~@7", O: "d2@3 ~@6 d2@5 ~@2 d2@2 ~@2 d2@4 ~@3 d2@4 ~",
  P: "[~@3 d2@6 ~@2 d2@2 ~@2 d2@2 ~@2 d2@3 ~@9 d2@3 ~@5 d2@5 ~@2 d2@2 ~@3 d2@4 ~@3 d2@4 ~@2]/2",
  Q: "~@2 d2@5 ~@2 d2@2 ~@2 d2@2 ~@2 d2@3 ~@8 g2@3 ~",
  R: "[~@3 g2@6 ~@2 g2@2 ~@2 g2@3 ~@4 g2@3 ~@5 g2@5 ~@2 g2@2 ~@2 g2@2 ~ g2@2 ~@9 d2@3 ~@5 d2@5 ~@3 d2@2 ~@2 d2@3 ~@5 d2@3 ~@4 d2@6]/3",
  S: "[~@3 d2@2 ~@2 d2@2 ~ d2@2 ~@2 c3@4 ~@3 c3@2 ~@6 c3@5 ~@2 c3@2 ~@3 c3@4 ~@3 c3@4 ~@4 c3@6 ~ c3@2 ~@2 c3@3 ~ c3@2 ~@2 g2@4 ~@2 g2@3 ~@5 g2@5 ~@2]/3",
  T: "g2 ~@4 g2@4 ~@3 g2@4 ~@4 g2@6 ~@2 g2@2 ~@2", U: "g2@2 ~ g2 ~@3 d2@5 ~@3 d2@3 ~@4 d2@5 ~@3 d2 ~",
  V: "~@2 d2@5 ~@3 d2@5 ~@3 d2@5 ~@3 d2@2 ~@2 d2@2", W: "~ d2@3 ~ d2@3 ~@5 d2@4 ~@3 d2@6 ~@2 d2@2 ~@2",
  X: "d2@5 ~@3 d2@5 ~@3 d2@5 ~@2 d2@2 ~@2 d2@2 ~ d2@2", Y: "~@14 d2@3 ~@3 d2@2 ~@6 d2@4",
  Z: "~@2 d2@2 ~@2 d2@4 ~@4 d2@5 ~@2 d2@7 ~@2 d2@2", AA: "~@2 d2@2 ~@2 d2@2 ~ d2@5 ~@4 d2@3 ~@5 d2@6",
  AB: "~@2 d2@2 ~@2 d2@4 ~@3 d2@5 ~@3 d2@6 ~@3 d2@2",
  AC: "[~ d2@2 ~@2 d2@2 ~@2 d2@5 ~@2 d2@4 ~@4 d2@5 ~@2 d2@2 ~@2 d2@5 ~@3 d2@5 ~@2 d2@6 ~@2 d2@2 ~ d2@2 ~]/2",
  AD: "~ d2@3 ~ d2@4 ~@4 d2@4 ~@3 d2@5 ~@3 d2@2 ~@2", AE: "d2@5 ~@2 d2@5 ~@2 d2@5 ~@3 d2@2 ~ d2@2 ~@2 d2@2 ~",
  AF: "[~ d2@5 ~@3 d2@4 ~@4 d2@6 ~@2 d2@2 ~@2 d2@5 ~@2 d2@6 ~@2 d2@5 ~@3 d2@2 ~@2 d2@2 ~ d2@2 ~@2 d2@4 ~@3 d2@5 ~@3 d2@6 ~@2 d2@2 ~@2 d2@5 ~]/3",
  AG: "~ d2@6 ~@2 d2@6 ~@2 d2@3 ~ d2@2 ~ d2@2 ~@2 d2@4",
  AH: "[~@4 d2@4 ~@4 d2@5 ~ d2@2 ~@2 d2@5 ~@3 d2@5 ~@3 d2@7 ~ d2@2 ~@2 d2@2 ~ d2@3 ~@2 d2@4 ~@2]/2",
  AI: "~ d2@4 ~@4 d2@5 ~@2 d2@2 ~@2 d2@5 ~@3 d2@4",
  AJ: "[~@3 d2@6 ~@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@5 ~@3 d2@4 ~@4 d2@4 ~@2 d2@2 ~@2 d2@5 ~@2 d2@5 ~@3]/2",
  AK: "d2@6 ~@2 d2@2 ~@2 d2@2 ~ d2@2 ~@2 d2@4 ~@4 d2@4 ~",
  AL: "[~@2 d2@6 ~@2 d2@2 ~ d2@4 ~@4 d2@5 ~@2 d2@7 ~@2 d2@2 ~@2 d2@2 ~ d2@2 ~@2 d2@5 ~@3 d2@5 ~@3]/2",
  AM: "d2@5 ~@3 d2@2 ~@2 d2@5 ~@2 d2@6 ~@2 d2@5",
  AN: "[~@3 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@5 ~@2 d2@4 ~@4 d2@6 ~ d2@2 ~@3 d2@5 ~@2 d2@4 ~@3 d2@5 ~@2 d2@2 ~@2 d2@2 ~ d2@2 ~@2 d2@6 ~@2 d2@4 ~@3 d2@5 ~@2]/3",
  AO: "~ d2@2 ~@2 d2@5 ~@3 d2@5 ~@2 d2@6 ~@2 d2@2 ~@2", AP: "d2@2 ~ d2@2 ~@2 d2@5 ~@3 d2@4 ~@4 d2@6 ~ d2@2",
  AQ: "~@2 d2@5 ~@3 d2@5 ~@3 d2@6 ~@2 d2@2 ~@2 d2@2", AR: "~@2 d2@2 ~@2 d2@4 ~@3 d2@5 ~@3 d2@7 ~ d2@2 ~",
  AS: "~ d2@5 ~@2 d2@5 ~@3 d2@6 ~@2 d2@2 ~@2 d2@2 ~@2",
  AT: "[d2@2 ~@2 d2@5 ~@2 d2@4 ~@4 d2@6 ~ d2@3 ~@2 d2@5 ~@2 d2@5 ~@2 d2@5 ~@3 d2@2 ~ d2@3 ~@4 d2@37 ~@28]/4",
})).s("gm_electric_bass_finger").gain(0.26)

// chords · overdriven guitar · "DistGt"
const overdriven_guitar = note("<~@63 A@3 B@7 ~ C@8 D@3 ~ E@7 F@5 ~@7 G@8 H@7 I@8 J@4 K@3 L@8 ~>".pickRestart({
  A: "[~@5 [d2,d3]@91]/3", B: "[~@31 [g2,g3]@55 ~@6 [d2,d3]@60 [d2,d3]@64 ~@8]/7",
  C: "[~@21 [g2,g3]@59 [d2,d3]@62 [c2,c3]@60 [g2,g3]@54]/8", D: "[~@7 [d2,d3]@64 ~@25]/3",
  E: "[~ [d2,d3]@114 ~@9 [d2,d3]@100]/7", F: "[~@23 [d2,d3]@122 ~@15]/5", G: "[~@12 [d2,d3]@121 ~@3 [d2,d3]@118 ~@2]/8",
  H: "[~ d3 ~@31 d4@15 a#3@10 ~ a#3@2 ~ a#3@4 a3@13 d4@41 a#3@2 ~@6 a3@8 a#3@2 ~ a#3@4 a3@4 g3@4 ~@3 a#3@4 a3@4 ~@3 a3@4 a#3@4 a3@4 g3@4 a#3@4 c4@39, ~@2 [d2,d3]@117 ~@5 a#3@5 ~@22 a3@5 ~@6 g3@5 ~@57, ~@125 [d2,d3]@99]/7", // D
  I: "[~@26 f4@22 ~ f4@4 g4@21 a4@15 g4@4 a4@3 ~ a4@16 a4@5 ~@20 a4@3 ~@6 a#4@4 a4@4 a#4@5 ~@3 a#4@5 ~@3 a#4@4 a4@4 a#4@4 a4@4 a#4@3 a4@4 a#4@4 a4@4 a#4@4 a4@50, ~@23 d3@118 ~@115, ~@23 e4@5 ~@90 a#4@24 ~ a4@5 ~@12 a4@5 ~@3 a4@5 ~@83, ~@12 d2@59 ~ [d2,d3]@56]/8", // D
  J: "[~@10 d5@45 c5@12 a#4@2 ~ a#4@4 d5@54, ~@9 [d2,d3]@119]/4", // D
  K: "[~@33 d5@4 e5@27 ~@2 f5@27 ~ f5@2, ~@5 [d2,d3]@91, ~@16 e5 ~@7]/3", L: "[~@2 g5@29 [d2,d3,a5]@225]/8",
})).s("gm_overdriven_guitar").gain(0.36)

// drums · rim
const rim = s("rim").struct(`<
  ~@28
  [~@3 x ~@8 x ~@14 x ~@4]
  [~@3 x ~@7 x ~@15 x ~@4]!2
  [~@3 x ~@7 x ~@14 x ~@5]
  ~@23
  x
  ~@88
>`).gain(0.31)

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

More by Alanis Morissette