Strudelify
Love Is All cover art

The Butterfly Ball and the Grasshopper's Feast

Love Is All

Glover

KeyB♭ majorTempo85 bpm
0:00/0:00
// Love Is All — Glover
// 85 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 80 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(85/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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@4 A B C B A B C B C B A B D B E@2 F G H G I G H J K L M N O P Q R S T U V S W X Y Z B AA AB E@2 AC G H G I G H J K@2
  AD AE Z AF O AF AG AH O AF AI AJ O AF AG AK O AJ AL@2
>`.pickRestart({
  A: "bb1@7 ~ c2@6 ~ d1", B: "eb1@5 ~ eb1!2 f1 ~ f1@3 ~ f1@2", C: "bb1@7 ~ c1@7 ~", D: "bb1@7 ~ c1@6 ~ d1",
  E: "[bb1@7 ~ c2@2 g1 ~ f1 ~ eb1@6 ~@3 eb1 f1 ~ f1@4 ~@2]/2", F: "~@2 g1@2 f1@2 f2@3 ~ g2 a2 ~ f2 c2 ~",
  G: "eb2@6 ~ eb2!2 ~ eb2@5 ~", H: "c2@6 ~ c2!2 ~ c2@5 ~", I: "bb1@6 ~ bb1!2 ~ bb1@5 ~", J: "c2@6 ~ c2!2 ~ c2@3 ~ c2 ~",
  K: "f2@6 ~ f2!2 ~ f2@5 ~", L: "f2@6 ~ f2 f2@8", M: "bb1@6 ~ bb1 c2@5 ~ d1!2", N: "eb1@5 ~ eb1!2 f1@4 ~ f1 a1 f1",
  O: "bb1@5 ~ bb1!2 c2@5 ~ g1 f1", P: "eb1@5 ~ eb1!2 f1@3 f2 ~ f2 c2 ~", Q: "bb1@6 bb1!2 c2@7 d1",
  R: "eb1@5 ~ eb1!2 f1 ~ f1@5 ~", S: "bb1@6 bb1!2 c2@6 ~ d1", T: "eb1@5 ~ eb1!2 f1 ~ f1@2 f1@3 f1",
  U: "bb1@6 c2 bb1 c2@7 d1", V: "eb1@6 eb1!2 f1 ~ f1@4 f1@2", W: "eb1@5 ~ eb1!2 f1 ~ f1@4 f1@2",
  X: "bb1@5 ~ bb1!2 c2@6 ~ d1", Y: "eb1@5 ~ eb1!2 f1@2 f1 f1@2 f1!2 ~", Z: "bb1@5 ~ bb1 ~ c2@5 ~ d1!2",
  AA: "bb1@7 bb1 c2@6 ~ d1", AB: "eb1@5 ~ eb1!2 f1@2 f1 f1@3 f1@2", AC: "f1@2 a1@2 g1 f1 f2@9 ~",
  AD: "f2@6 ~ f2!2 ~ f2@3 ~ c3@2", AE: "f3@7 ~", AF: "eb1@5 ~ eb1!2 f1 ~ f1@3 f1 a1 f1",
  AG: "bb1@5 ~ bb1!2 c2@5 ~ d1!2", AH: "eb1@5 ~ eb1!2 f1 ~ f1@3 ~ a1 f1", AI: "bb1@5 ~ bb1!2 c2 ~ c2@3 ~ d1!2",
  AJ: "eb1@5 ~ eb1!2 f1 ~ f1@2 ~ f1 a1 f1", AK: "eb1@5 ~ eb1!2 f1 ~ f1@2 ~@2 a1 f1", AL: "[bb1@5 ~@3]/2",
})).s("gm_electric_bass_finger").gain(0.32)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A B A C D E F G H I J K D E F G H I L@2 M N O N P N O@2 Q R S T S U V W X Y V W X Y D E F G H I L@2 M N O N P N O@2
  Q@3 R Z AA Z AB Z AA Z AB Z AA Z AB Z AA Z AB AC@2
>`.pickRestart({
  A: "[f3,a3,c4]@4 f3 ~ f3 c3 [f3,bb3,d4]@3 ~ [bb3,d4]@2 f3 ~, ~@4 [a3,c4]@4 ~@3 f3@2 ~@3", // F Bb Am
  B: "[f3,c4,eb4]@4 f3 ~ f3 c3 [f3,bb3,d4]@3 ~ [bb3,d4]@2 f3 ~, ~@4 [c4,eb4]@4 ~@3 f3@2 ~@3", C: "[f3,a3,c4,eb4]",
  D: "[bb3,d4]@2 ~ bb3 [c4,eb4]@2 c4!2, bb2 c3, ~ [d4,f4] ~ [eb4,g4]", // Bb Cm Dm Eb
  E: "eb4!2 ~ eb4 f4!2 ~ f4, eb3 f3, g4 [g4,bb4] c5 [f2,a4,c5]", // Gm F
  F: "f4!2 [f4,bb4,d5] f4 [eb4,g4,c5]@2 [g4,c5,eb5] eb4, [bb2,d4]@7 ~ c3@8", // Bb Cm Bb
  G: "eb4!2 ~ eb4 f4!2 ~ f4, eb3@7 ~ f3@7 ~, [g4,bb4] [g4,eb5] a4 [a4,c5]", // Gm Cm Am
  H: "[bb3,d4,bb4]@2 ~ bb3 [c4,eb4,c5]@2 c4!2, bb2 c3, ~ [d4,f4,bb4] ~ [eb4,g4,eb5]", // Bb Cm Bb Eb
  I: "eb4!2 ~ eb4 f4!2 ~ f4, eb3 f3, [g4,bb4]!2 [a4,c5] [f2,a4,c5]", // Gm Am F
  J: "[f4,d5] f4 [f4,bb4,d5] f4 [eb4,g4,eb5]@2 [g4,c5,eb5] eb4, [bb2,d4]@7 ~ c3@8", // Dm Bb Eb Cm Bb
  K: "eb4!2 ~ eb4 f4!2 ~ f4, eb3@7 ~ f3@7 ~, [g4,bb4]!2 [a4,c5]!2", // Gm Am
  L: "[f4 [f4,d5] [f4,c5] [f4,bb4] g4!2 [c4,f4] eb4@2 eb4 [bb3,g4] bb3 c4!4, [bb2,d4] c3 ~@2, ~@8 [eb4,c5]@5 ~ [eb3,bb3,g4]@6 eb3@4 [f3,a3,f4]@4 [f3,a3,f4]@4]/2", // Dm F5 Bb5 F5 Eb Bb Cm Eb …
  M: "[f3,a3,c4,f4] c4!7, ~ [f3,a3,f4]!3", // F
  N: "[g3,bb3,eb4]@2 g3@2 [bb3,eb4]@2 g3@2 [bb3,eb4]@2 g3@2 [bb3,eb4]@2 g3 ~, eb3@8 eb3@7 ~, ~@4 g3 ~@3 g3 ~@3 g3 ~@3", // Eb Eb5
  O: "[c4,eb4]@2 g3@2 [c4,eb4]@2 g3@2 [c4,eb4]@2 g3@2 [c4,eb4]@2 g3 ~, c3@7 ~ c3@7 ~, g3 ~@3 g3 ~@3 g3 ~@3 g3 ~@3", // Cm
  P: "[d4,f4]@2 bb3@2 [d4,f4]@2 bb3@2 [d4,f4]@2 bb3@2 [d4,f4]@2 bb3 ~, bb2@7 ~ bb2@7 ~, bb3 ~@3 bb3 ~@3 bb3 ~@3 bb3 ~@3", // Dm
  Q: "[c4,f4]@2 a3@2 [c4,f4]@2 a3@2 [bb3,c4,f4]@2 a3@2 [bb3,c4,f4]@2 a3 ~, f3@7 ~ f3@7 ~, a3 ~@3 a3 ~@11", // F5 Bbsus2
  R: "[c4,f4]@2 a3@2 [c4,f4]@2 a3@2 [f3,a3,c4,f4]@5 ~@3, f3@7 ~@9, a3 ~@3 a3 ~@11", // F5 F
  S: "[f3,bb3,d4]@2 f3@2 [bb3,d4]@2 f3 ~ [c4,eb4]@2 g3@2 [c4,eb4]@2 g3 ~, bb2@8 c3@7 ~, ~@4 f3 ~@3 g3 ~@3 g3 ~@3", // Bb Cm
  T: "[bb3,eb4]@2 g3@2 [bb3,eb4]@2 g3@2 [c4,f4]@2 bb3@2 [c4,f4]@2 a3 ~, eb3@7 ~ f3@7 ~, g3 ~@3 g3 ~@3 bb3 ~@3 a3 ~@3", // Eb5 F5
  U: "[bb3,eb4]@2 g3@2 [bb3,eb4]@2 g3@2 [c4,f4]@2 bb3@2 [c4,f4]@2 bb3 ~, eb3@7 ~ f3@4 f2@4, g3 ~@3 g3 ~@3 bb3 ~@3 bb3 ~@3", // Eb5 F5
  V: "[f3,bb3,d4]@7 ~ [g3,c4,eb4]@7 ~", W: "[g3,bb3,eb4]@3 ~ [a3,c4,f4]@3 ~", X: "[f3,bb3,d4]@7 ~ [g3,bb3,eb4]@7 ~",
  Y: "[bb3,eb4,g4]@7 ~ [a3,c4,f4]@8", Z: "[f3,bb3,d4] f3 [f3,bb3,d4] f3 [g3,c4,eb4] g3 [g3,c4,eb4] g3",
  AA: "[g3,bb3,eb4]@2 g3@2 [g3,bb3,eb4]@2 g3@2 [bb3,c4,f4]@2 bb3@2 [a3,c4,f4]@2 a3 ~", // Eb Bbsus2 F
  AB: "[g3,bb3,eb4]@2 g3@2 [g3,bb3,eb4]@2 g3@2 [bb3,c4,f4]@2 bb3@2 [bb3,c4,f4]@2 bb3 ~", // Eb Bbsus2
  AC: "[[bb2,bb3,d4]@5 ~@3, f3@9 ~@7]/2", // Bb
})).s("gm_piano").gain(0.18).pan(0.8)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A B A C D E F G D E F G D E H G D E I J K L M L N L M O P K Q R Q S D E F T@2 E F U@2 E H T@2 E F V K L M L N L M O P
  W@2 K Q R Q R Q R Q R Q X Q X Y X Q Z AA@2
>`.pickRestart({
  A: "[a3,c4,f4]@4 [a3,c4,f4]@2 a3!2 [bb3,d4] [bb3,d4,f4]@2 bb3 [bb3,d4,f4]@3 [bb3,d4]", // F Bb
  B: "[c4,eb4,f4]@4 [c4,eb4,f4]@2 c4!2 [bb3,d4] [bb3,d4,f4]@2 bb3 [bb3,d4,f4]@2 [bb3,d4]!2", C: "[a3,c4,f4]",
  D: "~ f3 [bb3,d4] f3 ~ g3 bb3 eb4, bb2@6 ~@2 c3@7 ~", E: "~ bb3!3 c4 bb3 f3 d4, eb3@7 ~ f3@4 ~@4, ~ eb4 ~@2",
  F: "~@2 d4@2 [c4,d4] c4 bb3@2 c4@2 g3@2 bb3@2 eb4@2, [bb2,bb3]@6 ~@2 c3@7 ~", // Csus2 Bb
  G: "~ eb4!2 d4 c4 a3 g3 f3, eb3@3 ~ f3@3 ~",
  H: "~@2 d4@2 [c4,d4] ~ bb3@2 c4@2 g3@2 bb3@2 eb4@2, [bb2,bb3]@5 c4@2 ~ c3@7 ~", // Csus2 Bb
  I: "~ f3 [bb3,d4] f3 ~ g3 bb3 [bb3,eb4], bb2@6 ~@2 c3@7 ~", // Bb Eb5
  J: "~@2 bb3@2 [bb3,eb4]@4 [a3,c4]@2 ~ c4 [a3,c4,f4]@2 ~ c4, eb3@7 ~ f3@4 ~@4, ~@5 a3 ~ a3", // Eb5 Am F
  K: "[a3,c4,f4]@2 ~ c4 [a3,c4,f4]@2 ~ c4 a3@2 ~ c4 [a3,c4,f4]@2 ~ c4, ~ a3 ~ a3 [c4,f4]@2 ~@2, ~@5 a3 ~ a3", // F F5
  L: "[bb3,eb4,g4]@2 [bb3,eb4]@2 [bb3,eb4,g4]@2 [bb3,eb4,g4]@4 [bb3,eb4,g4]@4 [bb3,eb4,g4]!2", // Eb Eb5 Eb
  M: "[c4,eb4,g4]@2 [c4,eb4]@2 [c4,eb4,g4]@2 [c4,eb4,g4]@4 [c4,eb4,g4]@4 [c4,eb4] [c4,eb4,g4]", // Cm
  N: "[bb3,d4,f4]@2 [bb3,d4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@4 [bb3,d4,f4]@4 [bb3,d4] [bb3,d4,f4]", // Bb
  O: "[c4,eb4,g4]@2 [c4,eb4]@2 [c4,eb4,g4]@2 [c4,eb4]@2 [c4,eb4,g4]@2 [c4,eb4,g4]@2 [c4,eb4,g4]@2 [c4,eb4,g4]!2", // Cm
  P: "[a3,c4,f4]@2 [a3,c4]@2 [a3,c4,f4]@2 [a3,c4] [a3,c4,f4] [bb3,c4,f4]@2 [a3,c4,f4]@2 [bb3,c4,f4]@2 [a3,c4,f4]@2", // F Am F Am F Bbsus2 F Bbsus2 …
  Q: "[bb3,d4,f4]@2 [bb3,d4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]!2 [c4,eb4,g4]@2 [c4,eb4]@2 [c4,eb4,g4]@2 [c4,eb4,g4]!2", // Bb Cm
  R: "[bb3,eb4,g4]@2 [bb3,eb4]@2 [bb3,eb4,g4]@2 [bb3,eb4,g4]!2 [bb3,c4,f4]@2 [bb3,c4]@2 [a3,c4,f4]@2 [a3,c4,f4]!2", // Eb Eb5 Eb Bbsus2 F
  S: "[bb3,eb4,g4]@2 [bb3,eb4]@2 [bb3,eb4,g4]@2 [bb3,eb4,g4]!2 [bb3,c4,f4]@2 [bb3,c4]@2 [a3,c4,f4]@4", // Eb Eb5 Eb Bbsus2 F
  T: "[~ eb4!2 d4 c4 bb3 a3 ~@2 f3 [bb3,d4] f3 ~ g3 bb3 eb4, eb3@3 ~ f3@3 bb3@2 ~@7, ~@16 bb2@6 ~@2 c3@7 ~]/2", // Bb
  U: "[~ eb4!2 d4 c4 bb3 a3 ~@2 f3 [bb3,d4] f3 ~ g3 bb3 eb4, eb3@6 ~@2 f3@8 bb2@6 ~@2 c3@7 ~, ~@7 bb3@2 ~@7]/2", // Bb
  V: "~@2 bb3@2 [g3,bb3,eb4]@2 ~ bb3 [a3,c4,f4]@2 ~ c4 [a3,c4,f4]@2 ~ c4, eb3@2 ~ g3 ~ a3 ~ a3", // Eb F
  W: "[a3,c4,f4]@2 ~ c4 [a3,c4,f4]@2 ~ c4 [bb3,c4,f4]@2 [a3,c4,f4]@2 [bb3,c4,f4]@2 [a3,c4,f4]@2, ~ a3 ~ a3 ~@4", // F Bbsus2 F Bbsus2 F
  X: "[bb3,eb4,g4]@2 [bb3,eb4]@2 [bb3,eb4,g4]@2 [bb3,eb4,g4]!2 [bb3,c4]!4 [a3,c4,f4]@2 [a3,c4,f4]!2, ~@8 f4@3 ~@5", // Eb Eb5 Eb Bbsus2 F
  Y: "[bb3,d4,f4]@2 [bb3,d4,f4]!2 [bb3,d4,f4]@2 [bb3,d4,f4] [c4,eb4,g4]@2 [c4,eb4] [c4,eb4,g4]@2 c4 [c4,eb4,g4]@2 [c4,eb4,g4]", // Bb Cm
  Z: "[bb3,eb4,g4]@2 [bb3,eb4]@2 [bb3,eb4,g4] [bb3,eb4] [bb3,eb4,g4]!2 [bb3,c4]!4 [a3,c4,f4]@2 [a3,c4,f4]!2, ~@8 f4@3 ~@5", // Eb Eb5 Eb Eb5 Eb Bbsus2 F
  AA: "[~ f4@18 ~@13, [bb2,f3,bb3,d4]@9 ~@7]/2", // Bb
})).s("gm_acoustic_guitar_steel").gain(0.27).pan(0.3)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A@4 ~@8 B C D@2 E@2 F@3 G H I J K L M N@2 O P Q R ~@8 E@2 S@2 E@2 T@3 U V W X K L M X@3 Y O Z AA AB O AC AD@2 AE@2
  AF@2 AG@2 AH@2 AI@2
>`.pickRestart({
  A: "[[f3,f4]@31 ~]/2", B: "bb3 c4", C: "eb4@7 ~ f4@8", D: "[f4@8 g4@5 ~ bb4@8 ~@2 f4@7 ~]/2", E: "[f4@15 ~]/2",
  F: "[f4@8 g4@6 bb4@9 ~ f5@22 ~@2]/3", G: "[g4,eb5]@15 ~", H: "[eb4,c5]@15 ~", I: "[g4,bb4]@15 ~", J: "[f4,bb4]@15 ~",
  K: "[bb3,bb4]@15 ~", L: "[c4,c5]@15 ~", M: "c4@11 ~ d4@2 eb4@2", N: "[~@16 f5@15 ~, f4@15 ~]/2",
  O: "[d4,f4]@4 [eb4,g4] [d4,f4] [c4,eb4]@2", P: "g4@7 ~@5 a4@4, bb4@11 ~@5, ~@8 f4@7 ~",
  Q: "[d4,f4]@4 [c4,eb4] [bb3,d4] bb3 c4", R: "bb3@11 ~@5",
  S: "[[d4,f4]@4 [eb4,g4]@3 ~@5 f3@4, ~@14 [g4,bb4]@13 ~@5]/2", T: "[[d4,f4]@8 [eb4,g4]@6 [g4,bb4]@9 ~ f5@22 ~@2]/3",
  U: "eb5@13 ~ eb5@2", V: "d5 c5 d5 c5@4 ~", W: "bb4@12 g4@3 ~", X: "f4@15 ~", Y: "f5@15 ~",
  Z: "g4@7 ~@5 a4@2 g4@2, bb4@11 ~@5, ~@8 f4@7 ~", AA: "d4@8 c4@6 eb4 d4, f4@11 ~@5", AB: "eb4 d4 bb3@11 ~@3",
  AC: "[g4,bb4]@7 ~ a4@2 bb4@2 c5@4, ~@8 f4@7 ~", AD: "[[d4,bb4]@8 eb4@8 g4@7 ~ a4@2 bb4@2 c5@4, ~@8 f5@15 ~ f4@7 ~]/2",
  AE: "[d4@8 eb4@15 ~ [f4,c5]@7 ~, bb4@11 ~@5]/2", // F5
  AF: "[d4@7 ~ eb4@14 bb4@2 a4@2 bb4@2 c5@2 bb4@2, bb4@20 ~@4 f4@7 ~]/2",
  AG: "[d4@7 ~ eb4@15 ~ [f4,c5]@7 ~, bb4@5 ~@3]/2", AH: "[d4@7 ~ eb4@14 bb4@2 a4@2 bb4@2 c5@3 ~, bb4@20 ~@4 f4@7 ~]/2",
  AI: "[[d4,bb4]@19 ~@13]/2", // Gm
})).s("gm_string_ensemble_1").gain(0.2).pan(0.4)

// chords · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note("<~@4 A B A B A B A B ~@22 A B A B A B A B ~@38>".pickRestart({
  A: "bb3 c4", B: "eb4 f4",
})).s("gm_string_ensemble_1").gain(0.11).pan(0.4)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  A@2 B@2 ~@10 C@3 ~@2 D E F G H I F J K L M ~@19 D E F G H N F J K O P Q@2 R S T U R S T U V W X Y Z AA@2 AB AC@2
>`.pickRestart({
  A: "[f3@12 a3@2 f3@11 ~ f3@2 g3 f3 g3@2, c4@9 ~@5 bb2@18]/2", B: "[[f3,c4]@12 ~@2 f5@17 ~, ~@12 c5@19 ~]/2",
  C: "[~@10 f4@2 bb4@11 ~@3 f4@2 d4@2 bb3@9 ~@9]/3", D: "~@10 f4@2 d5 ~@3",
  E: "eb4@2 c5 ~@3 d4@2 bb4 ~ c4@2 ab4 ~ c4@2", F: "[eb3,bb3]@13 ~@3", G: "[c3,g3]@12 ~@2 c3 [c3,g3]",
  H: "[eb3,bb3]@7 ~", I: "~@8 bb2 c3 eb3 f3 bb3@2 f3!2, [f3,bb3]@11 ~@5", J: "[c3,g3]@6 ~ [c3,g3]", K: "[c3,g3]@7 ~",
  L: "c3@14 f3!2, f3@11 ~@5", M: "[c3,f3]@13 ~@3", N: "[f3,bb3]@6 eb3 f3 bb3@2 g3 f3 bb3@2 f3!2",
  O: "f3@10 ~ f3 g3 bb3 [f3,c4] [f3,bb3], c3@15 ~", P: "[f3,f4]@13 ~ f3!2",
  Q: "[[c3,f3]@7 ~ a4@4 g4 f4 g4 ~ c3@7 ~@9, ~@15 f4@15 ~@2]/2", R: "bb2@7 ~ c3@5 ~ c3!2", S: "eb3@7 ~ f3@5 ~ f3@2",
  T: "bb2@5 ~ bb2@2 c3@5 ~ c3!2", U: "eb3@5 ~ eb3 ~ f3@7 ~", V: "bb2@7 ~ c3@5 ~ [c3,bb3] [c3,c4]",
  W: "eb3@6 c4 bb3 c4@2 f4 g4 f4 eb4 ~ c4, bb3@5 ~@3 f3@5 ~ [f3,d4]@2", X: "[bb2,bb3]@6 ~@2 bb4@2 c5 bb4@4 ~",
  Y: "~@2 g4@2 f4@3 eb4 f4 g4 f4@5 ~", Z: "f4@3 ~ eb4@3 d4", AA: "[bb3@5 ~@3 bb3@2 c4 bb3@16 ~@5]/2",
  AB: "~@2 c4@2 d4 ~ eb4 ~ f4@2 g4 ~ bb4@3 ~", AC: "[bb4@9 ~@7]/2",
})).s("gm_distortion_guitar").gain(0.31).pan(0.6)

// chords · pad metallic · "METAL PAD"
const pad_metallic = note("<~@12 A@6 B@3 ~@21 A@6 B@3 ~@29>".pickRestart({
  A: "[[f5,d6]@8 [g5,eb6]@15 ~ [f5,f6]@8]/2", B: "[[f5,d6]@8 [g5,eb6]@15 ~ [f5,f6]@22 ~@2]/3",
})).s("gm_pad_metallic").gain(0.18).pan(0.7)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~@21 A B A C D E@2 F@2 G H I J ~@17 A B A C D E@2 K@2 F@2 G H G L G H M N G H G L G H M N O@2
>`.pickRestart({
  A: "[bb4,eb5]@7 ~", B: "[c5,eb5]@7 ~", C: "[bb4,f5]@13 ~@3", D: "[g5,bb5]@7 ~", E: "[g5,c6]@15 ~",
  F: "[c6@15 ~ c6@15 ~, f5@15 ~]/2", G: "[d5,f5]@7 ~ [eb5,g5]@7 ~", H: "eb5@7 ~@5 a5@4, bb5@11 ~@5, ~@8 f5@7 ~",
  I: "[d5,f5]@8 eb5@7 ~", J: "eb5@7 ~ f5@7 ~", K: "[[f5,c6]@15 ~]/2", L: "[eb5,g5]@7 ~ [c5,f5]@7 ~",
  M: "[d5,f5]@8 [c5,eb5]@7 ~", N: "[bb4,eb5]@7 ~ [c5,f5]@7 ~", O: "[[bb4,f5]@19 ~@13]/2",
})).s("gm_rock_organ").gain(0.35)

// other · pizzicato strings · "PIZZICATO"
const pizzicato_strings = note(`<
  ~@36
  [~@2 d4 ~ c4 ~ bb3 ~ c4 ~ g3 ~@3 eb4 ~]
  [~@2 eb4 ~ eb4 ~ d4 ~ c4 ~ bb3 ~ a3 ~ bb3 ~]
  ~@2
  [~@2 d4 ~ c4 ~ bb3 ~ c4 ~ g3 ~@3 eb4 ~]
  [~@2 eb4 ~ eb4 ~ d4 ~ c4 ~ bb3 ~ a3 ~ bb3 ~]
  ~@38
>`).s("gm_pizzicato_strings").gain(0.24).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  A ~ A@2 B C B C B C B C B C B C B C B C D C@8 E B C B@3 C B C B C B C B C B C B C B C F C@10 A G C B C B C B@2 H I C@3
  I C B A ~
>`.pickRestart({
  A: "x", B: "x!2", C: "x ~@3 x!2 ~@2", D: "~@2 x ~@8 x ~ x ~@2", E: "x ~@6 x ~@8", F: "x ~ x ~@6 x ~@4 x ~",
  G: "x ~@2 x!2 ~@3", H: "x ~@3 x!2 ~ x", I: "x!2 ~@2 x!2 ~@2",
})).gain(0.47)

// drums · rim
const rim = s("rim").struct("<~@4 [~ x ~ x]!15 [~ x ~@2] ~@14 [~ x ~ x]!15 [~ x ~@2] ~@30>").gain(0.42)

// drums · snare
const snare = s("sd").struct("<~@19 A B C@8 D C@3 E ~@15 A F C@3 G C@4 G H I C@7 J C@7 K ~@2>".pickRestart({
  A: "~@3 x", B: "~@2 x ~@2 x ~ x", C: "~ x ~ x", D: "~@2 x ~@2 x ~@2 x ~@7", E: "~@2 x ~@2 x ~@2", F: "~ x!2 ~",
  G: "~@4 x ~@7 x ~ x!2", H: "~@4 x ~@4 x ~@2 x ~ x ~", I: "~@2 x ~@3 x!3 ~@7", J: "~@4 x ~@5 x!2 ~@4",
  K: "~@2 x ~@2 x ~@2 x ~ x ~@2 x!2 ~",
})).gain(0.42)

// drums · low tom
const low_tom = s("lt").struct("<~@61 [~@14 x!2] ~@18>").gain(0.37)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A@7 B A@7 C D E A@2 C E A C F ~ E C E G A@7 B A@7 C H E C A C E C ~@5 E C E B A C E G E C I B A C E J ~@2
>`.pickRestart({
  A: "x!8", B: "x!7 ~", C: "x!6 ~@2", D: "x!2", E: "~ x!7", F: "~@2 x!6", G: "x!4 ~ x ~@2", H: "~ x", I: "~ x!5 ~@2",
  J: "x!3 ~@5",
})).gain(0.26)

// drums · mid tom
const mid_tom = s("mt").struct("<~ A B ~@26 C ~@20 D ~@10 E ~@7 F ~@3 B ~@3 G ~@2>".pickRestart({
  A: "x ~@5 x!2 ~@6 x!2", B: "~@14 x!2", C: "~@9 x!3 ~ x!3", D: "~@10 x!2 ~ x!2 ~", E: "~@9 x ~ x!3 ~@2",
  F: "~@13 x!2 ~", G: "~@6 x!2 ~@3 x!2 ~@2 x",
})).gain(0.32)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@11 A ~@7 B C ~@3 B ~@2 B D E ~ B ~ F ~@7 A ~@7 B G ~ B ~ B ~ B H I H@2 D ~ B ~@3 B ~ J ~ B@2 ~@2 B ~ K ~@2
// … 22 more lines