Strudelify
KeyG majorTempo87 bpm
0:00/0:00
// UR — Alanis Morissette
// 87 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 72 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(87/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 · harmonica
const harmonica = note("<~@43 A@6 ~@23>".pickRestart({
  A: "[~@48 d5@42 [e5,g5]@24 [e5,g5]@4 ~@2 a5@15 ~@3 g5@11 ~ [d5,f#5]@10 ~@2 [e5,g5]@45 ~@3 [f#5,a5]@9 ~@3 [e5,g5]@5 ~ [d5,f#5]@5 ~ e5@28 ~@26, ~@47 f#5@44 ~@28 f#5@15 ~@3 e5@10 ~@87 g5@21 ~@33]/6", // Em D Em F#m Em D
})).s("gm_harmonica").gain(0.31)

// other · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@20 A@2 B@2 C@2 D@2 ~@6 E F@3 G@4 H@3 ~@10 I@3 J@2 K@2 L@3 ~@2 M ~@4
>`.pickRestart({
  A: "[f#4@38 ~@3 g4@21 ~@4 a4@12 b4@18]/2", B: "[~@11 f#4@27 ~@4 g4@19 ~@5 a4@11 ~ b4@17 ~]/2",
  C: "[~@11 f#4@25 ~@5 g4@20 ~@4 a4@9 ~@3 b4@19]/2", D: "[~@11 f#4@26 ~@4 g4@19 ~@5 a4@8 ~@4 b4@17 ~@2]/2",
  E: "~@42 f#4 ~@2 f#4@2 ~", F: "[f#4@3 e4@39 ~@5 f#4@37 ~@5 g4@20 ~@4 a4@12 b4@19]/3",
  G: "[~@11 f#4@27 ~@4 g4@20 ~@4 a4@10 ~ b4@23 ~@7 f#4@25 ~@5 g4@19 ~@5 a4@12 ~ b4@16 ~@2]/4",
  H: "[~@11 f#4@16 ~@8 f#4@4 ~@2 g4@19 ~@5 a4@10 ~@2 b4@25 ~@42]/3",
  I: "[~@47 f#4@33 ~@3 f#4@6 g4@22 ~@2 a4@12 b4@19]/3", J: "[~@12 f#4@24 ~@5 g4@19 ~@6 a4@11 b4@18 ~]/2",
  K: "[~@12 f#4@22 ~@3 f#4@5 g4@18 ~@6 a4@9 ~@2 b4@17 ~@2]/2",
  L: "[~@12 f#4@23 ~@6 g4@14 ~@11 a4@9 ~@3 b4@8 ~@4 b4@49 ~@5]/3", M: "~@18 f#4 ~@2 f#4@2 ~ g4@5 ~ a4@6 g4@5 ~ f#4@6",
})).s("gm_electric_guitar_jazz").gain(0.31)

// chords · string ensemble 1
const string_ensemble_1 = note("<~@12 A@2 B@2 C@2 D@2 E@8 ~@7 F@6 G H@7 ~ I J@2 K@2 L@7 M@4 N@6>".pickRestart({
  A: "[~@8 a3@8 c4@9 ~@7, ~@11 g3@13 ~@72, ~@12 g2@79 ~@5]/2",
  B: "[~ g2@22 [a2,c4]@24 [c2,c3,e4]@25 [d2,a4]@23 [g2,b3], [g3,b3]@23 ~@73]/2", // Am C D5 G
  C: "[[g1,d4]@24 [a1,a3,c4,e4]@23 [c1,c2,e4,g4]@24 [d1,d2,a4]@24 [g1,g2,b3]]/2", // G5 Am C D5 G
  D: "[~@23 [a1,a2,c4]@23 ~ [c1,e4,g4]@24 [d1,d2,a4]@24 [g1,g2,d4], ~@23 c2@12 ~@13]/2", // Am C D5 G5
  E: "[~@24 [a1,a2,a3,c4,e4]@23 [c2,c3,c4,e4]@24 [d2,d3,d4,f#4]@24 [g1,g2,b3,d4]@24 [a1,a2,a3,c4,e4]@24 [c2,c3,c4,e4]@24 [d2,d3,d4,f#4]@24 [g1,g2,b3,d4]@24 [a1,a2,a3,c4,e4]@24 [c2,c3,c4,e4]@24 [d2,d3]@23 ~ [g1,b3,d4]@24 [a1,a2,a3,c4]@23 [c2,c3,e4,g4]@24 [d2,d3,d4,f#4]@25 [g1,g2,g3], ~@286 g2@25 ~@73]/8", // Am C D G Am C D G …
  F: "[~@41 g3@5 ~ [g1,g2,b3]@24 [a1,c4]@23 ~ [c2,c3]@23 ~ d2@22 ~ [g1,g3,d4]@24 [a1,a2,a3,c4,e4]@25 [c2,c3,c4,e4]@24 [d2,d3,d4,f#4]@24 [g1,g2,g3,b3,d4]@24 [a1,a2,c4,e4]@25, ~@94 [c4,e4]@24 d4@23 b3@25 ~@122]/6", // G Am C G5 Am C D G …
  G: "[c2,c3,c4,e4]@23 [d2,d3,d4,f#4]@25", // C D
  H: "[[g1,g2,g3,b3,d4]@23 [a1,a2]@24 [c2,c3,c4,e4]@23 [d2,d4]@25 ~ g1@23 ~ [a3,c4,e4]@23 [c2,c3,e4]@24 [d2,d3,d4,f#4]@24 ~ [g1,g3,b3,d4]@22 ~ [a2,a3]@24 [c2,c3,c4,e4]@24 [d2,d3,d4,f#4]@24 ~ g1@29 ~@19, ~@95 [g2,g3,b3,d4]@24 [a1,a2]@24 ~@48 g2@23 a1@25 ~@48 g3@14 ~@35, ~@96 g2@7 ~@9]/7", // G A C D Am C D G …
  I: "g1@12 g2@2 ~@3 g2@4 ~@7 a1@7 a2@4 ~@2 a2@3 ~@4",
  J: "[~@5 c2@6 c3@2 ~@4 c3@4 ~@14 d3@2 ~@3 d3 ~@18 g2@6 g2@6 ~@18 a2@6 c2, ~@29 d2@12 ~@6 g1@24 a1@24 ~]/2",
  K: "[~@17 c2@3 ~@16 d3@10 ~@20 g2@5 ~@19 a2@5 c2, ~@11 c3@10 ~@2 d2@23 ~ g1@24 a1@24 ~, ~@59 b3@12 ~@12 [a3,c4]@12 ~]/2", // Am
  L: "[~@5 c4@6 ~@6 c3@5 ~@7 d4@6 ~@6 d3@6 ~@18 g3@5 ~@18 c4@6 ~@14 c3@11 ~@18 g3@5 ~@19 a3@5 ~@19 c4@5 ~@20 d4@5 ~@12 d3@12 ~@18 a3@6 ~@19 c4@5 ~@19 c4@6 ~@18 g3@6, ~@11 [c4,e4]@12 d2@23 ~ [g1,b3,d4]@23 [a1,a3]@24 ~ [c2,e4]@24 [d2,d4,f#4]@23 ~ [g1,b3,d4]@24 ~@13 a2@11 ~@13 c3@10 ~@37 g2@12 a1@24 c2@26 ~@23, ~@35 [d4,f#4]@11 ~ g3@18 ~@6 e4@24 ~@72 e4@24 ~@73 e4@24 e4@26 ~@22, ~@59 g2@12 c4@17 ~@6 c4@24 ~@48 a1@24 ~ [c2,c4,e4]@24 [d2,d4,f#4]@24 [g1,g3,b3,d4]@25 ~@13 a2@11 ~@24 [d2,d4,f#4]@23 ~, ~@82 a2@12 ~@38 d3@10 ~@13 g2@12 c4@18 ~@79 c4@18 ~@5 c4@18 ~@19 d3@11 ~]/7", // C G A C D G D C …
  M: "[g1 ~@16 g3@6 ~@18 c4@6 ~@12 c3@11 ~@14 d3@11 ~@18 g3@6 ~@19 c4@5 ~@13 c3@11 ~@13 d3@11 ~, [b3,d4]@23 [a1,e4]@24 [c2,c4,e4]@24 [d2,d4,f#4]@24 [g1,b3,d4]@24 [a1,a3,e4]@24 [c2,c4,e4]@24 [d2,d4,f#4]@24 ~, ~@23 c4@18 ~@54 g3@18 ~@6 c4@19 ~@54, ~@35 a2@12 ~@60 g2@12 ~@13 a2@11 ~@49]/4", // Bm A5 C D G A5 C D
  N: "[~@17 g3@5 ~@19 c4@5 ~@15 c3@10 ~@12 d3@12 ~@13 g2@11 ~@18 c4@5 ~@15 c3@10 ~@13 d3@11 [g1,g2,b3,d4,g4]@50 ~@47, [g1,b3,d4]@23 [a1,a3]@24 [c2,c4,e4,g4]@24 d2@23 ~@2 g1@24 a1@22 ~ [c2,c4,e4,g4]@23 ~ [d2,f#4]@24 ~@97, g3@17 ~@6 c4@18 ~@31 [d4,f#4]@23 [g3,b3,d4]@25 ~ [a3,e4]@22 ~@145, ~@12 g2@10 ~@14 a2@11 ~@74 c4@16 ~@31 d4@23 ~@97, ~@131 a2@11 ~@146]/6", // G A C D G A5
})).s("gm_string_ensemble_1").gain(0.2)

// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft = note(`<
  ~@13 A B@2 C@5 D@2 E@2 F@3 ~@4 G ~@2 H@2 I@2 ~ J ~ K L ~ M N ~@7 O ~@2 P@2 Q R ~ S ~@3 T ~@5
>`.pickRestart({
  A: "~@4 d4@3 ~", B: "[d4@23 [a3,e4]@24 [c4,g4]@25 ~ d3@23, ~@3 [d4,f#4]]/2",
  C: "[g3@24 a2@23 c4@24 [d4,f#4]@24 [g3,d4]@24 [a3,e4]@24 c4@24 [d4,f#4]@24 [b3,g4]@25 ~@24]/5", // D G5 A5 D Em
  D: "[~@47 g3@25 ~@24]/2", E: "[~@47 g3@24 ~@25]/2", F: "[~@23 [d4,f#4]@24 g3@25 e4@22 c4@24 ~@26]/3", G: "g3 ~@23",
  H: "[~@47 [g3,d4]@24 [a2,a3,e4]@25]/2", I: "[~@23 d3@23 g2@25 ~@25, ~@11 f#4@12 ~@25]/2", J: "~@23 a3@25",
  K: "~@24 [c4,e4]@23 ~, ~@23 a3@24 ~", L: "~@23 d3@25, ~@11 f#4@13", M: "c4 ~", N: "~@23 [c4,e4]@24 ~",
  O: "~@5 g3@6 ~ d4@12 ~@5 a3@6 ~@13, ~@11 g3@12 ~@25", P: "[~@47 g3@24 a3@24 ~]/2", Q: "~@41 g3@6 ~", R: "~ a3",
  S: "g3@17 ~@6 a3@24 ~", T: "~@23 e4@23 ~@2",
})).s("gm_string_ensemble_1").gain(0.1)

// bass · acoustic bass
const bass = note(`<
  ~@11 A@2 B C D E@4 F G H@7 I@3 J@2 K@2 L@4 M N O P Q@4 R@2 S T U@8 V W X@2 Y@3 N Z@2 AA@2
>`.pickRestart({
  A: "[~@47 g2@24 ~ a2@24]/2", B: "c2@24 d2@18 d2@5 ~", C: "g2@18 g2@5 a2@18 ~ a2@5 ~", D: "c2@17 c2@6 ~ d2@23 ~",
  E: "[g2@18 g2@6 a2@18 a2@5 c2@18 ~ c2@5 d2@17 ~ d2@6 g2@18 g2@6 a2@18 a2@6 c2@18 ~ c2@6 d2@18 d2@6]/4",
  F: "g2@17 g2@7 a2@18 a2@6", G: "c2@18 c2@5 d2@24 ~",
  H: "[g2@18 g2@6 a2@18 a2@5 c2@18 c2@6 ~ d2@23 g2@18 g2@6 a2@19 a2@5 c2@17 ~ c2@6 d2@24 g2@18 g2@6 a2@18 a2@6 c2@18 c2@6 d2@23 ~ g2@19 g2@6 a2@18 a2@6]/7",
  I: "[c2@18 c2@5 d2@18 d2@6 g2@18 g2@6 a2@18 a2@6 c2@18 c2@6 d2@23 ~@2]/3",
  J: "[g2@5 g2@6 g2@6 ~@6 a2@6 ~ a2@5 a2@6 ~@6 c2@5 ~ c2@6 c2@6 ~@6 d2@6 d2@6 d2@6 d2@6 ~, ~@17 g2@78 ~, ~@7 a2@9, ~@65 c2@31]/2",
  K: "[g2@5 g2@6 g2@6 g2@6 a2@6 a2@6 a2@6 a2@6 c2@6 c2@6 c2@6 c2@6 d2@6 d2@6 d2@6 d2@6 ~]/2",
  L: "[g2@17 g2@6 a2@18 ~ a2@5 c2@18 c2@6 d2@24 g2@18 g2@6 a2@19 a2@5 c2@18 c2@6 d2@24 ~]/4",
  M: "g2@17 g2@6 a2@19 a2@6", N: "c2@3 c2 d2@4", O: "g2@17 g2@6 a2@25", P: "c2@23 d2@25",
  Q: "[g2@18 g2@6 a2@18 a2@5 c2@18 c2@6 d2@18 d2@6 g2@18 g2@6 a2@18 a2@6 c2@18 ~ c2@6 d2@24]/4",
  R: "[g2@23 a2@24 c2@24 d2@24 ~]/2", S: "g2@6 g2@11 g2@6 a2@6 a2@13 a2@6",
  T: "c2@5 ~@18 d2@6 d2@6 d2@6 d2@6 ~, ~@5 c2@42 ~",
  U: "[g2@5 g2@7 g2@6 ~@6 a2@6 a2@7 a2@5 ~@6 c2@6 c2@6 c2@5 c2@6 d2@8 d2@5 d2@6 d2@5 g2@6 ~ g2@6 g2@5 g2@6 ~ a2@5 a2@6 a2@6 a2@5 ~ c2@6 c2@6 c2@5 ~ c2@6 d2@5 d2@6 ~ d2@6 d2@5 ~ g2@17 g2@7 a2@19 a2@5 c2@18 c2@5 ~ d2@18 d2@5 ~ g2@18 g2@5 ~ a2@18 a2@5 ~ c2@19 c2@6 d2@18 d2@6, ~@18 g2@53 ~@313, ~@7 a2@5 ~@52]/8",
  V: "g2@3 g2 a2@3 a2", W: "c2@3 c2 d2@3 d2", X: "[g2@18 g2@5 a2@19 a2@5 c2@18 c2@6 ~ d2@24]/2",
  Y: "[g2@17 g2@7 a2@17 a2@6 c2@18 c2@6 ~ d2@23 g2@18 g2@7 a2@18 a2@6]/3",
  Z: "[g2@18 g2@6 a2@18 a2@5 c2@19 c2@6 d2@24]/2", AA: "[g2@9 ~@7]/2",
})).s("gm_acoustic_bass").gain(0.36)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A@8 B@2 C@4 D@2 E@4 F@8 G@8 H I@3 J K@3 L@4 M@2 N@2 O@8 P@2 Q R S@4 T@2 U ~
>`.pickRestart({
  A: "[~@7 g3 ~@118 d4@2, g3@21 ~@3 a3@54 d4@5 g4@6 d4@6 g3@79 d4@6 g4@6 d4@12 d4@12 d4@41 g4@7 c4@12 d4@6 g4@6 d4@60 c4@6 g4@6 c4@6 d3@6 d4@6 g4@11 ~, ~@6 d4@12 d4@51 c3@50 a3@49 d3@22 ~@2 g3@71 d3@54 c4@7 g4@5 c4@7 c3@47 ~, ~@12 g4@13 ~@5 c4@12 c4@6 c3@18 c4@35 d4@7 g4@6 d4@36 c4@6 g4@6 c4@28 ~@13 g4@18 c4@6 g4@6 c4@6 c3@54 c4@6 g4@7 c4@5 a3@72 ~, ~@36 g4@18 c4@5 g4@12 d3@55 c4@7 g4@5 c4@6 c3@46 ~@25 a3@72 g3@96 ~]/8",
  B: "[~@15 d4, g3@7 g4, ~@5 c4@12 c4@12 c4@12 c4@55, ~@11 g4@24 ~ g4@11 c3@6 d4@6 g4@6 d4@6 d3@25, ~@23 a3@73]/2",
  C: "[~@72 d3 ~@20 d4@3, g3@72 d3@30 d4@6 g4@6 d4@6 a3@24 c3@25 ~@23, ~@12 g4@24 g4@18 c4@6 g4@6 c4@80 ~@21 d3@25, ~@18 c4@12 c4@12 c4@6 c3@78 d4@6 g4@14 ~@10 g4@13 ~@11 g4@12, ~@23 a3@55 d4@6 g4@6 d4@5 g3@43 d4@12 d4@12 d4@8 ~@4 d4@12 ~@6]/4",
  D: "[~@15 d4, g3@9 c4 g4@2 d3@4, ~@12 g4@18 c4@6 g4@6 c4@6 c3@25 ~@11 g4@12, ~@3 d4@8 c4@5, ~@24 a3@49 ~@5 d4@12 ~@6]/2",
  E: "[~@18 d4@6 ~@42 c4@6 ~@41 d4@6 ~@43 c4@6 ~@18 d4@6, g3@24 a3@49 ~@22 g3@25 ~@11 g4@19 c4@6 g4@12 ~@12 g4@12, ~@6 d4@12 ~@12 c4@12 c4@12 c4@12 ~@23 d4@12 d4@12 ~@6 a3@49 d3@24, ~@12 g4@13 ~@11 g4@24 g4@13 ~@10 g4@13 ~@11 g4@13 ~@6 d4@12 d4@30 ~@24, ~@47 c3@25 d3@24 ~@48 c3@25 ~@23]/4",
  F: "[~@162 c4@6 ~@17 d4@6 ~@90 d4@5 ~@19 d4@6 ~@43 c4@5 ~@12 g4@12 ~, g3@54 c4@6 g4@6 c4@5 d3@24 g3@61 g4@13 ~@11 g4@12 ~@11 g4@24 g4@12 ~@12 g4@12 d3@24 g3@24 a3@25 ~@23 d3@24 ~, ~@6 d4@12 d4@11 ~@13 d4@42 g4@24 g4@23 g4@12 c3@25 d3@24 ~@23 a3@24 ~@6 c4@12 c4@10 ~@8 g4@11 ~@13 g4@12 ~@12 g4@13 ~@11 g4@13 ~@24, ~@12 g4@24 g4@12 c3@60 ~@11 a3@49 ~@23 g3@48 c3@28 ~@68 c3@25 ~@24, ~@23 a3@85 ~@6 d4@11 d4@12 ~ d4@31 ~@4 d4@12 ~@24 d4@12 d4@12 d4@34 ~@2 d4@12 ~@12 d4@12 ~@24 d4@31 ~@5 d4@12 ~@7]/8",
  G: "[~@65 c3@6 ~@18 d3@6 ~@42 c3@6 ~@18 c3@6 ~@19 g3@5 ~@168 d3@6 ~@12 d3@6 ~, g3@17 g3@55 ~@23 g3@18 g3@54 ~@24 g3@18 g3@66 g4@6 d4@6 g3@12 g4@9 d4@48 c4@9 d3@7 g4@12, ~@12 c4@18 ~@6 c4@24 c4@13 ~@11 c4@84 ~@44 c4@93 g3@78 ~, ~@24 a3@18 a3@30 ~@35 g4@24 g4@25 g4@24 g4@23 g4@12 a3@12 g4@12 c3@12 g4@12 d4@6 d3@67 c3@12 g4@6 c3@30, ~@48 c3@17 ~@6 d3@18 ~@30 c3@18 ~@6 c3@18 ~@6 d3@90 c3@54 a3@12 g4@6 a3@54 ~]/8",
  H: "~@7 d4, a3!2, g3@3 g3@5, ~@3 c4@7 c4@14, ~@12 g4@18 d4@5 g4@13",
  I: "[~@20 c4@3 ~@66 d4@6 ~@43 c4@6, c3@17 c3@6 d3@72 c3@18 c3@30 ~, ~@6 c4@14 ~@9 d4@12 d4@12 d4@12 d4@7 a3@26 ~@3 c4@18 c4@18 ~@7, ~@11 g4@12 ~@12 g4@24 g4@18 d4@6 g4@14 ~@11 g4@23 g4@12 ~, ~@47 g3@21 g3@29 ~@29 d3@18]/3",
  J: "~@3 g3 ~@3 d4, g3@3 ~ a3@4, ~@12 g4@13 ~@5 d4@12 ~@6, ~@3 g4",
  K: "[~@18 c4@5 ~@45 d4@3 ~@19 d4@5 ~@43 d4@6, c3@23 d3@47 ~@25 c3@49, ~@12 g4@12 ~@6 c4@12 c4@28 ~@7 d4@13 ~@11 c4@12 c4@31, ~@36 g4@17 d4@12 g3@5 ~ a3@24 ~@22 d3@27, ~@47 g3@12 g4@11 ~@13 g4@12 ~@13 g4@19 d4@5 g4@12]/3",
  L: "[~@65 d4@7 ~@21 g3@3 ~@66 c4@6 ~@12 g4@11 ~, g3@20 ~@4 a3@17 a3@31 ~@24 g3@20 g3@52 d3@23 ~, ~@12 g4@23 ~ g4@24 g4@13 ~@11 g4@23 g4@19 d4@5 g4@7 d4@31 ~@5 d4@17 ~, ~@30 d4@23 d4@12 ~@13 d4@12 d4@12 d4@12 d4@5 a3@24 c3@26 ~@23, ~@47 c3@25 d3@78 c4@6 g4@13 ~@23]/4",
  M: "[g3@17 ~@6 a3@18 ~@7 c3@17 ~@25 d3@6, ~@17 g3@79, ~@65 c3@31, ~@12 d3@3 ~, ~@7 g4]/2",
  N: "[~@48 c3@17 c3@7 ~@18 d3@6, g3@17 g3@55 d3@18 ~@6, ~@11 g4@24 g4@25 ~@24 g4@12, ~@24 a3@17 a3@31 ~@24]/2",
  O: "[~@69 c4@3 ~@18 d4@5 ~@69 c4@3 ~@163 c4@5 ~@21 c3@4 ~@18 d4@6, g3@18 g3@54 ~@23 g3@66 c3@7 ~@23 g3@20 g3@50 c4@3 d3@71 c3@21 ~@4 d3@24, ~@12 g4@24 g4@18 c4@12 c3@6 d3@24 ~@24 a3@48 ~@5 d4@11 ~ d4@12 d4@12 d4@61 c4@6 g4@6 c4@5 g3@13 g4@12 a3@24 ~@5 c4@12 ~ c4@9 ~@3 d4@12 ~@6, ~@21 c4@9 c4@18 c3@12 g4@12 ~@6 d4@12 ~@24 d4@11 d4@12 d4@30 d3@55 c4@6 g4@6 c4@6 c3@6 c4@6 g4@6 c3@60 c4@6 g4@13 ~@11 g4@15 ~@9 g4@12, ~@24 a3@18 a3@30 ~@12 g4@13 ~@10 g4@24 ~ g4@11 c3@6 c4@6 g4@12 ~@12 g4@24 g4@12 a3@91 c4@2 g3@28 ~@48]/8",
  P: "[~@21 g3@3 ~@49 d3@5 ~@12 d4@6, g3@21 ~@4 a3@49 ~@22, ~ d4@2 d4@2 d4@2 d4@2 d4@2 d4@4 ~, ~@12 g4@12 ~@12 g4@24 g4@13 ~@12 g4@11, ~@24 c3@12 c3 ~@11]/2",
  Q: "~@7 d4, g3@17 g3@6 a3@25, ~@6 d4@14 d4@5 ~@4 d4@12 ~@7, ~@11 g4@12 ~@13 g4@12",
  R: "~@42 d4@5 ~, c3@18 c3@6 d3@23 ~, ~@2 c4@5 c4@2 ~ d4@4 ~@2, ~@12 g4@15 ~@9 g4@11 ~",
  S: "[~@21 g3@2 ~@22 a3@3 ~@21 c3@3 ~@12 g4@6 ~@3 g3 ~@22 g3@2 ~@22 a3@3 ~@23 d3@2 ~@18 d4@6, g3@21 ~@3 a3@21 ~@3 c3@21 ~@3 d3@21 ~@2 g3@21 ~@3 a3@21 ~@4 c3@24 d3@24, ~@6 d4@12 d4@12 d4@12 d4@12 d4@12 d4@12 d4@12 d4@11 d4@12 ~ d4@12 d4@12 d4@12 d4@12 d4@12 d4@12 ~@6, ~@12 g4@11 ~@12 g4@12 ~@13 g4@13 ~@35 g4@10 ~@14 g4@11 ~@13 g4@13 ~@11 g4@12]/4",
  T: "[~@7 c4 ~@14 c4@2 ~@6 d4@2, g3@18 g3@6 a3@17 a3@31 d3@24, ~@2 c4@5 ~@3 c4@8 c4@4 ~@4 d4@4 ~@2, ~@12 g4@11 ~@13 g4@24 g4@13 ~@11 g4@12, ~@48 c3@25 ~@23]/2",
  U: "d4@47 ~, g3@7 ~",
})).s("gm_acoustic_guitar_nylon").gain(0.31)

// chords · acoustic guitar nylon · soft notes
const acoustic_guitar_nylon_2 = note(`<
  ~@5 A ~@3 B A ~@6 C ~ B C D@2 E F ~ C G H ~@3 I@4 ~@4 J E ~@2 K@2 ~ L M@2 ~ N O ~ P ~@3 E ~@2 Q ~@10
>`.pickRestart({
  A: "~@5 c4@12 ~@31", B: "~@5 d4@2 ~", C: "~@29 d4@12 ~@7", D: "[~@5 c4@2 ~@2 d4 ~@6, ~@7 c4@3 ~@6]/2",
  E: "~ c4@2 ~@5", F: "~@5 d4@12 ~@31", G: "~@5 c4@12 ~@24 d4@7", H: "~@5 c4 ~@2",
  I: "[~@5 c4@15 ~@33 d4@18 ~@30 d4@15 ~@9 c4@24 ~ c4@14 ~@28, ~@30 d4@23 ~@139, ~@41 a3@78 ~@73]/4",
  J: "~@6 c4@19 ~@23", K: "[~@5 g3@13 ~@6, ~@5 c4@67 ~@24, ~@17 d4@12 ~@67]/2", L: "~@42 c4@5 ~",
  M: "[~@11 g4@24 ~@25 g4@24 ~@12, ~@35 g4@24 ~@37, ~@7 a3@9]/2", N: "~ g4@2 ~", O: "~@2 c4@5 ~@9", P: "~@6 g4@5 ~@37",
  Q: "~@5 d3@3",
})).s("gm_acoustic_guitar_nylon").gain(0.15)

// drums · kick
const kick = s("bd").struct(`<
  ~@3 A B@2 C D E F G H I J K ~ L M N O L@3 P N Q M R S T U V W X Y Z AA AB AC AD AE I AF N I AD L AG AH AI AJ AK AC AL
  AM AN AO AA AP AQ I L AR O AS AT AU AV L AW ~@2
>`.pickRestart({
  A: "~@6 x!2", B: "~@29 x ~@18", C: "~@5 x ~@11 x ~@2 x ~@26 x", D: "~@5 x ~@2 x ~@21 x ~@2 x ~@14", E: "~@6 x ~@40 x",
  F: "~@5 x ~@14 x ~@26 x", G: "~@5 x ~@42", H: "~@9 x ~@31 x ~@6", I: "~ x ~ x!3 ~ x",
  J: "x ~@4 x ~@3 x ~ x ~@6 x ~@4 x ~@6 x ~@11 x ~@5", K: "x", L: "x!2 ~ x!3 ~ x",
  M: "x ~@5 x ~@10 x ~@5 x ~@5 x ~@11 x ~@5 x", N: "~@5 x ~@11 x ~@5 x ~@5 x ~@11 x ~@5 x",
  O: "~@5 x ~@11 x ~@5 x ~@6 x ~@17", P: "x ~@5 x ~@11 x ~@5 x ~@5 x ~@16 x", Q: "~@5 x ~@11 x ~@6 x ~@4 x ~@12 x ~@5",
  R: "~@5 x ~@11 x ~@5 x ~@5 x ~@17 x", S: "~@6 x ~@10 x ~@5 x ~@5 x ~@11 x ~@5 x",
  T: "~@6 x ~@11 x ~@5 x ~@16 x ~@5 x", U: "~@6 x ~@11 x ~@5 x ~@5 x ~@10 x ~@6",
  V: "x ~@4 x ~@11 x ~@5 x ~@6 x ~@11 x ~@5", W: "x ~@5 x ~@10 x ~@6 x ~@5 x ~@11 x ~@5",
  X: "x ~@17 x ~@5 x ~@4 x ~@11 x ~@6", Y: "x ~@16 x ~@6 x ~@17 x ~@5", Z: "x ~@17 x ~@5 x ~@5 x ~@16 x",
  AA: "~@5 x ~@11 x ~@6 x ~@5 x ~@11 x ~@5", AB: "x ~@5 x ~@10 x ~@6 x ~@5 x ~@14 x ~@2",
  AC: "~@6 x ~@10 x ~@5 x ~@5 x ~@11 x ~@6", AD: "x!2 ~ x!3 ~@2", AE: "x ~@5 x ~@10 x ~@6 x ~@4 x ~@11 x ~@5 x",
  AF: "x ~@5 x ~@10 x ~@5 x ~@6 x ~@10 x ~@5 x", AG: "x ~@5 x ~@10 x ~@6 x ~@4 x ~@12 x ~@5",
  AH: "~ x ~@4 x ~@11 x ~@5 x ~@16 x ~@6", AI: "~@5 x ~@11 x ~@6 x ~@16 x ~@5 x",
  AJ: "~@5 x ~@6 x ~@4 x ~@11 x ~@11 x ~@6", AK: "~@11 x ~@23 x ~@11 x", AL: "x ~@4 x ~@12 x ~@5 x ~@4 x ~@12 x ~@5",
  AM: "x ~@4 x ~@11 x ~@5 x ~@17 x ~@6", AN: "x ~@4 x ~@11 x ~@6 x ~@4 x ~@17 x",
  AO: "~@5 x ~@11 x ~@2 x ~@8 x ~@11 x ~@5 x", AP: "x ~@5 x ~@11 x ~@5 x ~@4 x ~@11 x ~@5 x",
  AQ: "~@5 x ~@11 x ~@6 x ~@4 x ~@11 x ~@5 x", AR: "x ~@4 x ~@12 x ~@5 x ~@4 x ~@11 x ~@5 x",
  AS: "x ~@4 x ~@11 x ~@5 x ~@5 x ~@11 x ~@5 x", AT: "~@5 x ~@11 x ~@5 x ~@4 x ~@12 x ~@5 x",
  AU: "~@17 x ~@5 x ~@5 x ~@11 x ~@6", AV: "x ~@4 x ~@12 x ~@5 x ~@5 x ~@11 x ~@5",
  AW: "x ~@5 x ~@10 x ~@5 x ~@6 x ~@11 x ~@5",
})).gain(0.31)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@4 A B C D E F G H I ~@16 J ~@42>".pickRestart({
  A: "~@24 x ~@22 x", B: "~@5 x ~@11 x ~@2 x ~@20 x ~@6", C: "x ~@22 x ~@5 x ~@11 x ~@6",
  D: "~@17 x ~@5 x ~@18 x ~@4 x", E: "~@17 x ~@2 x ~@2 x ~@5 x ~@11 x ~@6", F: "~@17 x ~@5 x ~@6 x ~@10 x ~@6",
  G: "~@17 x ~@2 x ~@2 x ~@5 x ~@12 x ~@5", H: "x ~@5 x ~@11 x ~@5 x ~@5 x ~@13 x ~@2 x", I: "~@7 x ~@8",
  J: "~@29 x ~@18",
})).gain(0.15)

// drums · snare
const snare = s("sd").struct(`<
  ~@16 A B@2 C D E@2 F B G B H B D@2 E A D A H A I B J D B@3 E K E A D B ~@2 A B@2 L B E D B A E B M B@2 A N O A ~@2
>`.pickRestart({
  A: "~@11 x ~@24 x ~@11", B: "~@11 x ~@23 x ~@12", C: "~@11 x ~@24 x ~@4 x ~@2 x ~@3", D: "~@12 x ~@22 x ~@12",
  E: "~ x ~ x", F: "~@12 x ~@22 x ~@5 x ~@2 x ~@3", G: "~@11 x ~@23 x ~@6 x ~@5", H: "~@11 x ~@23 x ~@5 x ~@2 x ~@3",
  I: "~@12 x ~@22 x ~@5 x ~@6", J: "~@12 x ~@23 x ~@4 x ~@2 x ~@3", K: "~@6 x ~@11 x ~@2 x!2 ~",
  L: "~@11 x ~@23 x ~@2 x ~@2 x ~ x ~@4", M: "~@11 x ~@23 x ~@3 x ~@2 x ~ x ~@3", N: "~@12 x ~@24 x ~@10",
  O: "~@13 x ~@22 x ~@11",
})).gain(0.41)

stack(
  harmonica, electric_guitar_jazz, string_ensemble_1, string_ensemble_1_soft, bass, acoustic_guitar_nylon,
  acoustic_guitar_nylon_2, kick, kick_soft, snare
)

More by Alanis Morissette