Strudelify

Heart of the House

Alanis Morissette

KeyD majorTempo161 bpm
0:00/0:00
// Heart of the House — Alanis Morissette
// 161 bpm, 3/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 205 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(161/3)

// 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 · reed organ
const reed_organ = note(`<
  ~@8 A@8 ~@15 B@3 C@2 D@2 E@4 F@4 G H@2 I@8 ~ J@2 K@8 L@2 M@7 N@5 O@4 P@2 Q R S@4 T@8 U@2 V@4 ~ W@2 X@8 Y@7 Z@3 ~ AA@4
  AB@8 ~@6 AC AD@6 AE@4 AF@7 AG@4 AH AI@8 AJ@8 AK@3 AL@5 AM@5 AN AO@4
>`.pickRestart({
  A: "[~@21 f#4@5 a4@5 [e4,g4]@16 [c4,e4]@10 [e4,g4]@6 [d4,f#4]@16 [b3,d4]@16 [d4,e4]@32 ~, a4@17 ~@111, ~@15 d4@16 ~@97]/8", // Em C Em D Bm Dsus2
  B: "[~@5 [d3,d4]@11]/3", C: "b3/2", D: "[e3,e4]/2",
  E: "[[a#2,d4]@15 ~@17 [d3,f#4]@32, ~@15 a2@16 ~@33, ~@8 e4@9 ~@15]/4", F: "[b3@31 e4@33]/4", G: "a#2",
  H: "[~@15 [d2,d3,d4]@17]/2", I: "[~@14 [d2,d3,d4,f#4,g4]@32 ~ [d2,d3,d4,f#4]@31 [a2,a3,c4,e4]@32 [d4,a4]@18]/8",
  J: "[d2,d3,e4,g4]/2", // Em7
  K: "[[d2,d3,d4,f#4]@31 ~ [a3,c4,e4]@31 [d2,d3,d4,f#4,a4]@32 [b2,d#4,f#4,b4]@31 ~@2, ~@31 a2@32 ~@65]/8", // D Am D B
  L: "[e2,b3,e4]/2", // E5
  M: "[a#2@15 [a1,a2,a3,c#4,e4]@16 [d2,d3,d4,f#4,a4]@32 [b1,b2,d#4,f#4,b4]@31 ~ [e2,e4]@17, ~@47 [e3,g4]@9]/7", // A D B E Em
  N: "[~@15 [a#1,a#2,a#3,a#4]@16 [a1,a3,c#4,e4]@18 ~ c3@30]/5", // A# A
  O: "[~@4 g3@5 ~ [a3,a4]@5 [a#3,a#4]@6 [a3,a4]@4 ~ g4@11 ~@27, ~@4 g4@9 ~@12 g3@32 ~@7]/4", // A A# A
  P: "[~@5 [g3,g4]@5 [a3,a4]@5 [a#3,a#4]@5 ~ [a3,a4]@5 [g3,g4]@6]/2", Q: "[a#3,a#4]", R: "[g3,g4]@10 [a#3,a#4]@5 ~",
  S: "[~@15 c#5@16 [d4,f#4]@32 ~, a4@9 ~@23, ~@15 c#4@2 ~@14 [d2,a4]@9 ~@24]/4", // D D5
  T: "[[d4,g4]@31 [d2,d4,f#4,a4]@32 ~ d4@31 [d2,d3,d4,f#4,a4]@32 ~, ~@63 [e4,g4]@31 ~@34]/8", // G5 D Em
  U: "[[d2,d3,e4,g4]@31 ~]/2", V: "[[d4,a4]@31 [e4,g4]@31 ~@2, ~@31 d3@16 ~@17]/4", W: "[~@15 [b1,b2,f#4,b4]@17]/2",
  X: "[~@15 [e2,e3,e4,g4]@31 [a#1,a#2,a#3,a#4]@17 [a1,a2,a3,c#4,e4]@16 [d2,d3,d4,f#4,a4]@32 [b2,b3,f#4]@17]/8", // Em A# A D B5
  Y: "[~@15 [e2,e3,e4]@32 [a#1,a#2,a#3,a#4]@16 [a1,a3,c#4,e4]@15 ~ [c2,c3,e4,g4]@32 ~]/7", // E A# A C
  Z: "[~@4 [g3,g4]@5 ~ a4@5 [a#3,a#4]@5 [a3,a4]@5 ~ g4@8 ~@14, ~@9 a3@4 ~@12 g3@23]/3", // G A# A
  AA: "[~@5 [g3,g4]@5 a4@5 [a#3,a#4]@5 ~ a4@5 [g3,g4]@19 ~@3 g4@10 [a#3,a#4]@4 ~@2, ~@10 a3@3 ~@7 a3@5 ~@22 g3@10 ~@7]/4", // G A# G A#
  AB: "[a4@15 [c#4,c#5]@16 d4@97, a3@31 d2@6 ~@91]/8", AC: "f#4@4 ~ g4@5 f#4@4 ~ f#4",
  AD: "[~@10 f#4@5 ~@16 d4@5 g4@6 ~@5 d4@16 f#4@4 ~ g4@6 f#4@22, ~@5 g4@9 ~ a3@24 ~@8 d2@31 ~@18, ~@31 c4@2 ~@9 f#4@19 ~@35]/6",
  AE: "[~@10 e4@5 f#4@32 f#4@11 ~@5 g4]/4",
  AF: "[~@2 f#4@2 e4@5 ~ d4@37 g4@16 e4@8 ~@2 f#4@5 ~ f#4@22 ~@4 f#4@4 ~ f#4@2, ~@71 g4@6 ~@35]/7",
  AG: "[~@4 g4@4 ~ f#4@4 ~@2 f#4@5 ~ g4@3 ~ f#4@3 ~@3 f#4@4 ~@2 g4@4 f#4@4 ~ g4@17 d4]/4", AH: "~@2 e4@13 g4",
  AI: "[~ f#4@3 e4@5 ~ d4@5 f#4@21 d4@6 e4@5 f#4@5 g4@5 ~ f#4@3 ~@2 f#4@5 g4@4 ~ f#4@3 ~@3 f#4@5 ~ g4@4 ~ f#4@10 ~ g4@5 f#4@5 g4@14 ~@2 g4]/8",
  AJ: "[~@2 f#4@3 e4@5 d4@5 f#4@22 ~@4 e4@5 ~ [c4,f#4]@6 g4@5 f#4@3 ~@2 [c4,f#4]@6 g4@15 f#4@16 e4@5 d4@5 ~ e4@12 d4@4 e4, ~@37 d4@6 ~@41 d4@14 ~@30]/8", // Cdim
  AK: "[~@4 g4@5 f#4@6 e4@5 d4@5 e4@6 f#4@6 d4@5 e4@5 ~]/3",
  AL: "[f#4@4 g4@5 ~ f#4@3 ~@2 f#4@4 ~ g4@5 ~@7 d4@20 f#4@6 e4@5 d4@12 e4@5, c4@29 ~@51, ~@25 f#4@24 ~@31]/5",
  AM: "[g4@5 f#4@4 e4@6 f#4@21 ~@5 e4@6 [c4,f#4]@5 g4@6 f#4@4 ~ f#4@5 g4@6 f#4@6, ~@36 d4@7 ~@37]/5", // Cdim
  AN: "g4@5 f#4@7 g4@4", AO: "[~@9 d4@42 ~@13, ~ f#4@27 ~@36]/4",
})).s("gm_reed_organ").gain(0.26)

// chords · reed organ · soft notes
const reed_organ_soft = note(`<
  ~@7 A@2 B ~@6 C ~@17 D@2 ~@6 E@2 F@2 ~ G@3 ~@5 H@3 I@2 ~@6 J@2 K@2 ~@5 L@3 M@3 ~@14 N@5 ~@2 O@2 P@7 L@3 ~@3 Q@5 ~ R@3
  ~@26 S@2 ~@48 T@3
>`.pickRestart({
  A: "[~@15 f#4@17]/2", B: "~@10 f#4@5 ~", C: "d2@9 ~@7", D: "b2/2", E: "[b2@31 ~]/2", F: "[e3@5 ~@3]/2",
  G: "[~@15 [f#4,a4]@31 ~@2]/3", H: "[~@7 [d2,d3]@16 ~, ~@13 f#4@32 ~@3]/3", I: "d4/2", J: "[b3@31 ~]/2",
  K: "[e3,g4]/2", L: "[~@15 b3@32 ~]/3", M: "[~@5 a2@6 ~@5]/3", N: "[~@15 d3@32 [d2,d3]@31 ~@2]/5", O: "[d4@31 ~]/2",
  P: "[[d2,d3,f#4]@31 d4@31 ~@2 d3@31 d#4@17, ~@31 d2@2 ~@30 [d2,d4,f#4,a4]@32 ~@17]/7", // D
  Q: "[~@15 [d#4,b4]@32 [b3,g4]@32 ~]/5", R: "[a2@15 [c4,c5]@32 ~]/3", S: "[~@15 d4@5 ~@12]/2",
  T: "[~@5 d2@8 ~@3, ~@11 d3@26 ~@11]/3",
})).s("gm_reed_organ").gain(0.15)

// bass · acoustic bass
const bass = note(`<
  ~@7 A@2 B@7 C@2 D@6 C@2 E@2 C@2 F@6 G@2 H I C@2 J@2 K@2 H L@8 M@3 N@7 O@3 P@4 Q@7 R@8 S@2 T@8 U@8 V@4 W X@7 Y@6 Z@5
  AA@5 AB@7 AC@8 AD@7 AE@8 AF@7 AG@7 AH@6 AI@8 AJ@3 AK@6 AL@4 ~
>`.pickRestart({
  A: "[~@15 d2@17]/2", B: "[~@15 d2@32 d2@32 a1@32 ~]/7", C: "d2/2", D: "[d2@31 d2@32 a1@32 ~]/6", E: "a1/2",
  F: "[a1@31 d2@32 b1@32 ~]/6", G: "e1/2", H: "a#1", I: "a1", J: "b1/2", K: "[e1@31 ~]/2",
  L: "[a1@15 d2@21 d2@5 d2@5 d2@22 d2@5 ~@27 d2@11 a1@17, ~@74 d2@7 ~@47, ~@79 d1@32 ~@17]/8",
  M: "[~@4 a1@5 ~ a1@5 d2@22 ~@5 a1@6, ~@37 d2@11]/3",
  N: "[d2@21 ~@5 a1@5 d1@21 ~@6 d2@5 a1@21 a1@6 a1@5 d2@17, ~@21 d2@11 ~@21 d1@10 ~@49]/7",
  O: "[~@5 d2@5 d2@5 b1@21 b1@9 ~ b1@2]/3", P: "[e1@26 e1@5 a#1@16 a1@17]/4",
  Q: "[d2@20 d2@6 d2@5 b1@21 ~ b1@5 b1@4 ~ e1@21 e1@10 ~ a#1@16 ~]/7",
  R: "[a1@11 a1@4 c2@20 ~ c2@6 c2@5 e1@21 e1@6 e1@4 ~ c2@20 c2@7 c2@4 ~ e1@17]/8", S: "[~@3 e1@7 e1@5 a#1@17]/2",
  T: "[~@3 a#1@7 a#1@4 ~ a1@21 ~ a1@6 a1@4 d2@27 d2@5 d2@21 d2@5 ~ d2@5 d2@17]/8",
  U: "[~@4 d2@5 ~ d2@5 a1@21 a1@5 a1@5 ~ d2@21 d2@5 ~ d2@5 d2@21 ~ d2@5 d2@5 d2@17]/8",
  V: "[~@5 d2@5 d2@5 a1@21 ~ a1@5 a1@4 ~ d2@17]/4", W: "d2@11 d2@4 ~",
  X: "[b1@20 b1@5 ~ b1@5 e1@22 e1@5 e1@5 a#1@16 a1@16 d2@17]/7",
  Y: "[~@4 d2@5 ~ d2@5 b1@27 ~@5 e1@22 e1@5 e1@5 a#1@11 ~ a#1@5, ~@42 b1@7 ~@47]/6",
  Z: "[a1@10 a1@5 c2@21 ~ c2@5 c2@5 e1@20 e1@7 e1@5 ~]/5", AA: "[c2@19 c2@7 c2@4 ~ e1@19 e1@8 e1@5 a#1@17]/5",
  AB: "[~@2 a#1@7 a#1@5 ~ a1@22 a1@10 d2@32 d2@32 ~]/7", AC: "[d2@26 d2@5 a1@26 a1@5 ~ d2@27 d2@5 d2@32 d2]/8",
  AD: "[~@5 d2@5 d2@5 d2@5 ~ d2@5 d2@5 a1@5 ~ a1@5 a1@5 a1@5 a1@5 ~ a1@5 d2@22 d2@5 d2@5 d2@17]/7",
  AE: "[~@4 d2@5 ~ d2@4 ~ d2@21 d2@6 d2@5 a1@16 a1@5 ~ a1@5 a1@5 d1@21 d1@6 d1@5 d1@17]/8",
  AF: "[~@3 d1@7 d1@5 d1@20 d1@7 d1@5 a1@16 a1@5 a1@5 ~ a1@5 d2@21 d2@5 ~ d2@6]/7",
  AG: "[d2@20 d2@5 ~@4 a1@2 d1@21 d1@5 ~ d1@5 a1@21 a1@6 a1@5 d2@17, ~@26 d2@5 ~@81]/7",
  AH: "[~@5 d2@5 d2@5 d2@21 d2@5 ~ d2@5 d2@21 d2@5 ~ d2@5 a1@16 ~, ~@47 d1@31 ~@18]/6",
  AI: "[a1@5 a1@5 a1@5 d2@21 d2@6 d2@5 d2@20 d2@6 ~ d2@5 d2@20 d2@7 d2@4 ~ a1@17]/8",
  AJ: "[~@3 a1@7 a1@4 ~ d1@20 d1@7 d1@6]/3", AK: "[d2@19 d2@7 d2@5 d2@16 d2@5 d2@5 ~ d2@5 a1@16 a1@17]/6",
  AL: "[~@24 d1@29 ~@11, ~ d2@32 ~@31]/4",
})).s("gm_acoustic_bass").gain(0.31)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A@4 B@4 C@8 D@2 E@8 F@4 G@2 H@7 I J@7 K L@3 M@7 N@4 O@6 P@3 Q@8 R@4 S@2 T@6 U@4 V@7 W@5 X@8 Y@5 Z@8 AA@3 AB@7 AC@2
  AD@7 AE@2 AF@5 AG@4 AH@7 AI@6 AJ@7 AK@6 AL@2 AM@2 AN@8 AO@8 ~
>`.pickRestart({
  A: "[~@61 d4@3, d3 d3, a4@21 a3@3 a4@24 e4@16, ~@10 d4@19 d4@3 g4@21 a3@3 g4@8, ~@16 f#4@26 d4@17 a3@5]/4",
  B: "[~@10 d4@5 ~@11 c4@5 ~@30 a3@2 f#4, [d3,f#4]@32 e3@31 ~, ~@5 a3@27 c4@6 a3@10 g4@15 ~, ~@16 d4@26 c4@16 c4@5 ~, ~@22 b3@31 a3@8 ~@3]/4", // D
  C: "[~@11 d4@5 ~@13 d4@2 ~@17 e4@8 ~@13 a3@5 ~@16 b3@5 d4@11 ~@17 d4@5, d3@31 d3@32 [d3,f#4]@32 a2@32 ~, a4@21 a3@3 a4@7 g4@24 ~ g4@24 b3@4 a3@11 ~@23 a3@10, ~@5 a3@11 d4@10 a3@5 e4@16 ~ c4@13 c4@32 ~@14 d4@16 ~@5, ~@16 f#4@16 ~@10 a3@10 ~@6 a3@5 d4@11 a3@5 d4@16 e4@16 ~ e4@16]/8", // D
  D: "[d3 d3, [d2,e4], a4@13 ~@3]/2", // Dsus2
  E: "[~@90 g3@5 ~ d4@21 ~@6 a4@5, [d2,e4,g4] [d2,e4,f#4] [a2,e4] d2, ~@16 d3@32 d3@10 d3@27 a3@11 d3@16 ~@16, ~@26 a4@32 ~@5 c4@6 a3@10 c4@16 f#4@32 ~, ~@53 d4@29 b3@14 ~@21 d4@10 ~]/8", // Em7 D A5
  F: "[~@59 d3@5, [d2,e4,g4] [d2,d4,f#4], d4@21 d4@11 ~@32, ~@16 d3@32 d3@11 ~@5, ~@27 a4@26 a4@11]/4", // Em7 D
  G: "[c4@21 ~@5 e4@6, a2, e4@13 ~@3, ~@21 c4@11]/2",
  H: "[d4@8 ~@8 d#4@8 ~@29 a#3@3, [d2,e4]@30 b4@32 ~@8 b2@31 a#2@11, a4@21 a4@10 f#4@17 d#4@5 f#4@27 g4@32, ~@16 d4@15 b2@32 ~ [e2,b3,e4]@32 [a#1,d4]@16, ~@27 d3@32 d#4@32 ~@5 a#3@10 ~@6]/7", // Dsus2 E5 A#
  I: "~@11 a2@5, [a1,a3,c#4]", // A
  J: "[~@48 a#3@5 a#3@3, [d2,d4,f#4]@31 d#3@12 d#3@21 g4@15 g4@32 ~, ~@16 a4@32 c4@15 b3@12 b3@32 ~@5, ~@2 [b1,f#3,b3]@2 [e2,e4]@2 [a#2,f#4], ~@59 b2@6 ~@4 e3@22 ~@21]/7", // D B5 E D#m
  K: "a3@5 ~@2 d4, [a2,b3,c#4,e4], ~@5 a3@3", // A
  L: "[~@2 [d2,g4], [d2,e4,f#4]@2 ~, a4@11 a4@13, ~@5 a2@32 ~@11, ~@15 d4@16 d4@16 ~]/3", // G5 D
  M: "[~@10 d3@4 ~@93 a4@5, d4@14 d4@12 d3@11 f#4@26 c4@11 a3@6 a4@16 d4@16, ~@8 g4@7 d2@31 c4 e4@11 a3@10 e4@10 d4@7 a2@27, ~@15 f#4@17 d4@21 e3@27 d2@32, ~@21 a2@26 a2@32 f#4@32 ~]/7",
  N: "[~@58 d3@5 c4, d2@29 d4@13 d3@11 f#4@11, g4@16 d4@10 d3@5 [d2,e4,a4]@32 ~, d4@10 d3@11 g4@10 f#4@17 d4@16, ~@5 a2@27 ~@5 a2@27]/4", // Dsus2
  O: "[~@90 f#3@5 e2, a2@30 d4@7 a2@26 f#4 b2@32, e4@15 c4@16 e4@30 d#4@8 f#3@5 b3@11 d#4@10 ~, ~@5 e3@16 e4@5 e3@5 f#4@22 f#4@5 d3@22 f#4@16, ~@10 a3@22 [d2,a4]@31 b4@32 ~]/6", // D5
  P: "[~@43 a#2@5, [e4,g4]@31 a#4@17, ~@5 e3@8 e3@11, ~@7 b2@9, ~@5 a#3@3]/3", // Em
  Q: "[~@122 a3@5 c#4, [a2,c#4]@17 ~@4 a2@27 f#4@5 f#3@11 d#4@10 f#3@3 b3@18 b3@17 [a#3,a#4]@16, e4@14 d4@12 d3@5 c5@17 d#4 b4@32 ~@9 e3@16 e3@11 a#2@11, a3@10 a3@5 f#4@27 d3@27 f#4@10 e4@32 a#1@16 ~, ~@5 e3@11 [d2,a4]@32 b2@32 g4@21 g4@27]/8", // A A# D5
  R: "[~@10 c4@4 ~@39 b2@11, [a1,b3]@15 c2@22 g4@6 c3@6 ~@15, e4@14 e4@17 c4@15 b3@17 ~, ~@14 c4@2 c5@31 [e2,e4]@17, ~@15 g4@5 g2@28 g4@16]/4", // Asus2 E
  S: "[~@21 g2@11, ~@5 g4@10 [c2,g4]@17, ~@5 e3@3 c5@8, ~@13 c4@18 ~]/2", // C5
  T: "[~@91 a3@5, ~@5 g4@10 [e2,e4]@31 a#3 a#2@22 f4@27, ~@10 c3@6 g4@21 g4@16 f3@10 d4@17 e4@16, ~@13 b3@18 b3@17 a#4@26 f3@22, ~@26 e3@21 d4 f4@10 a#3@20 a3 [a2,b3,c#4]@17]/6", // E A
  U: "[~@10 a3@5 ~@22 e4@9 ~ [d2,g4]@17, e4@17 ~@9 d3@16 ~@22, ~@6 a2@11 ~@4 a2@32 ~@11, ~@15 [f#4,a4]@32 ~@17, ~@31 d4@14 ~ d4@18]/4", // G5 F#m
  V: "[~@10 g4@5 ~@27 d3@5 ~@60 d3@5, d4@15 d2@32 c4@16 c4@16 d2@27 a4@6, ~@5 e4@10 f#4@17 d4@16 ~@5 e3@21 g3@21 d4@17, ~@15 d4@11 d3@11 f#4@11 ~@10 a3@8 b3@13 f#4@11 d3@11 f#4@11, ~@21 a2@26 [a2,e4]@21 a3@11 d4@6 a2@27]/7", // A5
  W: "[~@74 e4@5 ~, d2@27 g4@6 ~@4 a2@27 e4@10 ~@6, g4@21 e4@10 d2@27 e4 d3@21, e4@16 d4@15 f#4@17 d4@32, ~@5 a2@27 d4@10 d3@11 f#4@16 f#4@11]/5",
  X: "[~@42 d#4@5 ~@75 a#3@5 a3, e4@10 e4@22 a4@15 f#4@16 d#4@16 e2@27 g4@5 a#3@6 a#2@11, ~@4 f#4@17 d4@26 b2@27 b4@22 b3@32, ~@10 d3@16 f#4@12 d3@11 ~@3 f#3@26 b3@2 g4@21 e4@27, ~@16 d2@31 b4@21 f#4@12 e4@10 e3@21 [a#1,a#4]@17]/8", // A#
  Y: "[~@75 b4@4 b3, [a1,c#4]@17 ~@4 a2@27 b4@21 f#4@11, e4@14 d4@12 d3@5 c5@17 f#4@10 b3@16 f#3@6, ~@5 e2@10 [e4,f#4]@32 d#4@6 f#3@10 d#4@17, ~@5 a2@3 [d2,a4]@16 b2@16]/5", // A Esus2 D5
  Z: "[~@122 e3@5 c4, [e2,e4]@26 e3@16 a#3@21 [c2,c4]@30 g4@24 e4@11, ~@5 b2@26 a#1@17 a1@21 [g2,e4]@26 e2@32 ~, ~@11 e3@10 g4@16 a#2@21 c#4@17 c3@5 c5@16 b3@10 e3@16 ~@6, ~@15 b3@16 a#3 a#4@21 a3@21 g4@16 c3@5 e4@16 b3@17]/8", // E C
  AA: "[~@37 b2@10 b3, [c2,g4]@21 e4@5 c3@3 b3@18 ~, e4@11 c3@5 c4@15 [e2,e4,g4]@17, ~ c5@31 ~@16, ~@5 g2@27 ~@16]/3", // C5 Em
  AB: "[~@48 a3@5 ~@27 a4@27 a4@5, ~@5 g4@10 a#1@27 [a#2,a#4]@22 e4@13 d4@32 ~@3, ~@10 e3@5 a#4@16 d4@17 [c#4,e4]@5 a3@32 ~@27, ~@13 a#3@2 f4@11 a#3@22 a1@31 [d2,e4,f#4]@32 ~, ~@14 d4@7 a#2@16 f4@21 c#4@32 ~@22]/7", // A# C#m D
  AC: "[d4 [d4,e4], [d2,g4]]/2", // Dsus2 G5
  AD: "[d4@21 ~@69 f#4@5 ~ [e4,g4]@16, d2@32 a2@21 e4@9 d4@2 e4@15 d4@6 e4@11 ~@16, f#4@13 f#4@11 c4@13 d3@11 ~@8, ~@21 d4@11 c4@5 e3@26 d2@32 [d2,d4]@17, ~@16 e4@5 a3@11 a4@16 ~@8]/7", // Em D
  AE: "[~@8 f#4@5 f#4@3, e4, d4@15 d2@17, ~@11 g4@21, ~@16 d4@5 ~@11]/2",
  AF: "[~@58 f#4@5 ~@11 [d3,d4,f#4]@6, ~@4 a4@17 e3@10 b3@6 e4@5 e3@3 d4@8 a2@27, ~@10 f#4@27 c4@9 e4@32 ~@2, ~@15 a3 [c4,e4]@10 a3@20 f#4@7 [d4,g4]@5 d3@5 f#4 d4@5 g4@11, ~@16 a2@31 d2@32 ~]/5", // D C G5
  AG: "[~@10 e4@5 ~@44 d3@5, d3@15 d3@16 f#4@11 d3@5 d4@17, ~@4 d4@11 g4@16 d4@6 a2@27, ~@15 d4@11 e4@27 f#4@11, ~@16 e4@5 f#4@10 d2@32 ~]/4",
  AH: "[~@58 d3@5 ~@43 d3@6, a2@30 d4@12 d3@6 d4@5 e4@10 d4@21 d3@3 g4@25, f#4@15 c4@11 e3@5 d2@32 d2@26 d3@11 a2@12, c4@11 a3@21 ~@5 a2@27 e4@5 a2@26 [d2,f#4]@17, ~@5 e3@16 f#4@11 [f#4,a4]@31 g4@11 d3@5 e4@32 ~]/7", // D F#m
  AI: "[~@42 e3@5 ~@43 [d3,d4]@6, d3@10 [d3,f#4]@26 e4@11 [d2,f#4,a4]@27 g4@22, ~@4 d4@22 a3@21 e4@17 d4@21 e4@11, ~@8 a2@16 ~@2 a2@11 d3@8 ~@3, ~@16 c4@5 e3@10 c4@17 ~@10 d3@11 e4@10 [d2,f#4]@17]/6", // D
  AJ: "[~@10 d3@5 ~@91 a4@6, e4@15 f#4@16 d4@22 e3@10 c4@17 d2@32, ~@5 f#4@10 [d2,a4]@27 d3@27 f#4@5 e3@16 d3@22, ~@15 d4@11 d3@11 f#4@21 a3@21 e4 a4@15 d4@6 e4@10 ~, ~@21 a2@26 a2@32 f#4@32 ~]/7", // D5
  AK: "[~@26 d3@5 ~@11 d3@5 ~@43 e3@6, [d2,e4]@31 d4@22 d4@11 c4@5 e3@10 c4@17, g4@15 d4@16 [d2,f#4,a4]@32 ~ a2@32, d4@10 d3@11 g4@11 ~@32 f#4@11 a3@21, ~@5 a2@27 ~@15 d3@11 d3@27 f#4@11]/6", // Dsus2 D
  AL: "[~@26 a4@5 d2, [d2,f#4]@21 e4@11, a4 d4, e4@5 d3@11, ~@5 a2@27]/2", // D
  AM: "[~@3 g4, d4@29 ~@3, g4@21 d3@5 ~@6, ~@5 a2@27, ~@10 d3@5 e4@17]/2",
  AN: "[~@10 d3@5 ~@27 [c4,f#4]@5 ~@74 d3@7, [d2,f#4]@32 [c4,f#4]@5 e3@32 ~@5 d3@11 e4@11 g4@20 d3@3 g4@9, ~@5 a2@27 a2@32 d2@26 d3@6 d2@32, ~@16 d3@10 [d3,e4]@27 g4@26 d4@28 d3@4 e4@17, ~@21 d4@16 g4@10 [c4,f#4]@11 [a3,c4,f#4]@32 a4@32 ~@6]/8", // Cdim D Cdim Dsus2 Cdim F#dim
  AO: "[~@42 f#4@5 ~@49 c5@22 ~@10, [d2,f#4]@32 c4@5 g4@10 f#4@6 g4@5 f#4@11 f#4@11 f#4@32 ~@16, ~@5 a2@27 a2@31 g4@12 g4@32 ~@21, ~@5 e4@16 d4@27 c4@16 ~@5 d2@56 ~@3, ~@10 d4@5 d3@11 [d3,e4]@32 a3@32 ~@38]/8", // D Dsus2
})).s("gm_electric_guitar_clean").gain(0.26)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  A@4 ~@6 B C@3 D@2 E@4 F@2 ~@3 G@2 ~@4 H@8 ~ I@4 ~ J@3 K@4 ~ L@3 M@3 ~@5 N@3 O@3 ~ P@3 Q@2 R@3 S@3 T@4 U@3 ~@2 V@5 ~@6
  W@3 ~@5 X@2 U@3 ~@2 L@3 Y@2 ~ Z@3 AA@2 ~@2 AB@2 ~@5 G@2 AC@2 G@2 ~ AD@2 AE@5 ~@8 AF@3 ~ AG@3 AH@3 ~ AI@2 ~@3 AJ@3 ~@2
  AI@2 ~ AK@2 ~@2 AL@3 AM@2 AN@5 AO@2 AP AQ@4 ~
>`.pickRestart({
  A: "[~@5 a3@16 ~@5 a3@11 a3@16 ~@11]/4", B: "~@5 a3@5 ~@6", C: "[~ e4@4 ~, ~@5 a3@5 ~@38]/3", D: "[~@5 a3@17 ~@10]/2",
  E: "[d4@22 ~@10 d4@21 d4@11, f#4 ~, ~@11 d4@5 d3@8 ~@8, ~@13 a4@16 ~@3]/4", F: "[d4@21 ~@11]/2", G: "d3/2",
  H: "[a3@15 ~@12 d3@16 ~@15 b3@21 ~@12 e3@15 e3@22, ~@15 f#4@32 ~@81, ~@21 a2@32 f#3@32 ~@43]/8",
  I: "[~@37 b2@21 ~@6, ~@3 a2@16 ~@13, ~@11 d3@32 ~@21]/4", J: "[~@11 f3@5 ~@3 e3@5, ~@11 e3@22 ~@15]/3",
  K: "[~@43 d3@10 d3@5 ~@6, ~@5 d3@16 ~@11, ~@37 a2@26 ~]/4", L: "[~@5 d3@16 ~@3]/3", M: "[~@11 d3@31 ~@6]/3",
  N: "[~ d4@2, ~@11 d3@15 ~@22]/3", O: "[~@21 b2@16 ~@11, ~@7 b3@16 ~]/3", P: "[~@15 e4@32 ~]/3",
  Q: "[~@10 b3@19 ~@3]/2", R: "[~@5 b2@32 ~@11, e2@2 ~]/3", S: "[~@5 a2@10 c3@2 ~@9 c3@17 ~@5]/3",
  T: "[~@15 b3@16 ~@16 c4@16 ~, ~@10 e3@16 ~@5 e4@32 ~, ~@43 c3@15 ~@6]/4", U: "[~@5 b2@32 ~@11]/3",
  V: "[~@15 d4@16 ~@27 d3@22, ~@15 d2@32 e4@22 ~@11, ~@21 d3@8 ~@11, ~@53 a2@27]/5", W: "[~@11 d3@22 ~@15, d4 ~@2]/3",
  X: "[~@5 b3@10 ~]/2", Y: "[g4@21 ~@11]/2", Z: "[~@11 a2@32 ~@5]/3", AA: "[~@13 g4@3, ~ b2@7]/2",
  AB: "[~@5 e3@8 ~@3]/2", AC: "[~@11 d3@20 ~]/2", AD: "[~@5 a2@27, f#4@13 ~@3]/2",
  AE: "[~@10 d3@11 ~@16 d4@32 ~@11, ~@5 a2@32 ~@43, ~@21 d3@32 ~@27]/5", AF: "[~@15 e4@22 ~@11]/3", AG: "[~ d4@2 ~]/3",
  AH: "[e4@20 ~@11 d4@17, a3@5 ~@19]/3", AI: "[~@5 a2@27]/2", AJ: "[~@7 a2@9, ~@14 d4@17 ~@17]/3",
  AK: "[~@15 d4@16 ~]/2", AL: "[~@13 d4@24 ~@11, ~@5 d3@8 ~@11]/3", AM: "[~@5 a3@8 ~@3]/2",
  AN: "[~@5 a2@32 a2@32 ~@11]/5", AO: "[~@15 f#4@10 ~@7]/2", AP: "a3@5 ~@3",
  AQ: "[c4@11 ~@26 a4@27, ~@11 c4@32 ~@21, ~@35 b4@19 ~@10]/4",
})).s("gm_electric_guitar_clean").gain(0.15)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@47 A@4 B A@3 B A@3 B A@3 B A@3 B A@3 C A@3 B A@3 B@2 A B D B A B D B A B C A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B
  A@3 B A@3 B A@3 B A@2 B C A@3 B A@3 B A@3 B A@2 B@2 A B D B A B D B A B D B A B@3 A B D B A B D B A B D B A B D B A B
  D B A B D B A B D B A B D B ~@5
>`.pickRestart({
  A: "~@15 x", B: "~@14 x!2", C: "~@10 x ~@3 x!2", D: "~@5 x ~@4 x ~@4 x",
})).gain(0.13)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@48 A@23 ~ A@7 B A@11 ~ A@42 B@2 A@14 B A@15 B A@33 ~@5>".pickRestart({
  A: "~@5 x ~@4 x ~@5", B: "~@5 x ~@10",
})).gain(0.21)

// drums · open hat
const open_hat = s("oh").struct("<~@79 A ~@10 B ~@43 A ~@15 A ~@15 A ~@38>".pickRestart({
  A: "~@5 x ~@2", B: "~@15 x",
})).gain(0.21)

// drums · ride
const ride = s("rd").struct(`<
  ~@47 A B A B@3 A B@3 A B@3 A B@3 A B@3 A B C B A B@3 A B A D@2 E D@3 E D@3 F C B A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A
  B@3 A B@3 A B@3 A B@3 A@2 C B A B@3 A B@3 A B@3 A@2 D@2 E D@3 E D@3 E D@3 E A D@2 E D@3 E D@3 E D@3 E D@3 E D@3 E D@3
  E D@3 E D@2 ~@5
>`.pickRestart({
  A: "~@15 x", B: "~@14 x!2", C: "~@5 x ~@4 x ~@3 x!2", D: "~@5 x ~@4 x ~@4 x", E: "~@5 x ~@2 x ~ x ~@4 x",
  F: "~@5 x ~@2 x ~ x ~@5",
})).gain(0.17)

// drums · china
const china = s("cr").struct("<~@78 A@2 ~@10 A ~@42 A@2 ~@14 A@2 ~@14 A@2 ~@38>".pickRestart({
  A: "~@15 x",
})).gain(0.21)

stack(
  reed_organ, reed_organ_soft, bass, electric_guitar_clean, electric_guitar_clean_2, low_tom, pedal_hat, open_hat, ride,
  china
)

More by Alanis Morissette