Strudelify
KeyF♯ majorTempo68 bpm
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