Strudelify

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: 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 L G H I M@2 N O P O Q O P R S T U V W X Y Z AA AB Y Z AA AB D AC F G AD AE AF@2 N O P O Q
  O P R S@3 T AG AH AI AJ AK AH AG AJ AG AL AM AN AO AP AG AQ AR@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!2 [f4,bb4,d5] f4 [eb4,g4,c5]@2 [g4,c5,eb5] eb4, [bb2,d4]@7 ~ c3@7 ~", // Bb Cm Bb
  M: "[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 …
  N: "[f3,a3,c4,f4] c4!7, ~ [f3,a3,f4]!3", // F
  O: "[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
  P: "[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
  Q: "[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
  R: "[g3,c4,eb4]@2 g3@2 [c4,eb4]@2 g3@2 [c4,eb4]@2 g3@2 [c4,eb4]@2 g3 ~, c3@7 ~ c3@7 ~, ~@4 g3 ~@3 g3 ~@3 g3 ~@3", // Cm
  S: "[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
  T: "[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
  U: "[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
  V: "[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
  W: "[f3,bb3,d4]@2 f3@2 [bb3,d4]@2 f3@2 [c4,eb4]@2 g3@2 [c4,eb4]@2 g3 ~, bb2@8 c3@7 ~, ~@4 f3 ~@3 g3 ~@3 g3 ~@3", // Bb Cm
  X: "[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
  Y: "[f3,bb3,d4]@7 ~ [g3,c4,eb4]@7 ~", Z: "[g3,bb3,eb4]@3 ~ [a3,c4,f4]@3 ~", AA: "[f3,bb3,d4]@7 ~ [g3,bb3,eb4]@7 ~",
  AB: "[bb3,eb4,g4]@7 ~ [a3,c4,f4]@8", AC: "eb4!2 ~ eb4 f4!2 ~ f4, eb3@8 f3@7 ~, g4 [g4,bb4] c5 [f2,a4,c5]",
  AD: "[bb3,d4,bb4]@2 ~ bb3 [c4,eb4,c5]@2 c4!2, bb2@7 ~ c3@8, ~ [d4,f4,bb4] ~ [eb4,g4,eb5]", // Bb Cm Bb Eb
  AE: "eb4!2 ~ eb4 f4!2 ~ f4, eb3@8 f3@7 ~, [g4,bb4]!2 [a4,c5] [f2,a4,c5]", // Gm Am F
  AF: "[f4 [f4,d5] [f4,c5] [f4,bb4] g4!2 [c4,f4] eb4@2 eb4 [eb3,bb3,g4] bb3 c4!4, [bb2,d4]@7 ~ c3@8 ~@16, ~@8 [eb4,c5]@5 ~ [eb3,bb3,g4]@6 ~@4 [f3,a3,f4]@4 [f3,a3,f4]@4]/2", // Dm F5 Bb5 F5 Eb Bb Cm Eb …
  AG: "[f3,bb3,d4] f3 [f3,bb3,d4] f3 [g3,c4,eb4] g3 [g3,c4,eb4] g3", // Bb Cm
  AH: "[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
  AI: "[f3,bb3,d4]@2 f3@2 [f3,bb3,d4]@2 f3@2 [g3,c4,eb4]@2 g3@2 [g3,c4,eb4]@2 g3 ~", // Bb Cm
  AJ: "[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
  AK: "[f3,bb3,d4]@2 f3@2 [bb3,d4]@2 f3 ~ [g3,c4,eb4]@2 g3@2 [g3,c4,eb4]@2 g3@2, ~@4 f3 ~@11", // Bb Cm
  AL: "[g3,bb3,eb4]@2 g3@2 [g3,bb3,eb4]@2 g3@2 [bb3,c4,f4]@2 bb3@2 [c4,f4]@2 a3 ~, ~@12 a3 ~@3", // Eb Bbsus2 F5
  AM: "[f3,bb3,d4]@2 f3@2 [f3,bb3,d4]@2 f3 ~ [c4,eb4]@2 g3@2 [g3,c4,eb4]@2 g3@2, ~@8 g3 ~@7", // Bb Cm
  AN: "[bb3,eb4]@2 g3@2 [g3,bb3,eb4]@2 g3@2 [bb3,c4,f4]@2 bb3@2 [bb3,c4,f4]@2 bb3 ~, g3 ~@15", // Eb5 Eb Bbsus2
  AO: "[bb3,d4]@2 f3@2 [f3,bb3,d4]@2 f3 ~ [c4,eb4]@2 g3@2 [c4,eb4]@2 g3 ~, f3 ~@7 g3 ~@3 g3 ~@3", // Bb Cm
  AP: "[g3,bb3,eb4]@2 g3@2 [g3,bb3,eb4]@2 g3@2 [c4,f4]@2 bb3@2 [a3,c4,f4]@2 a3 ~, ~@8 bb3 ~@7", // Eb F5 F
  AQ: "[bb3,eb4]@2 g3@2 [g3,bb3,eb4]@2 g3 ~ [c4,f4]@2 bb3@2 [c4,f4]@2 bb3 ~, g3 ~@7 bb3 ~@3 bb3 ~@3", // Eb5 Eb F5
  AR: "[[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 H G D E F I D E J K L M N M O M N P Q L R S R T U E F V@2 W H X@2 E F Y@2 W H Z L M N M O M N P Q
  AA@2 L R S R S R S R S R AB R AB AC AB R AD AE@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] ~ bb3@2 c4@2 g3@2 bb3@2 eb4@2, [bb2,bb3]@5 c4@2 ~ c3@7 ~", // Csus2 Bb
  G: "~ eb4!2 d4 c4 a3 g3 f3, eb3@3 ~ f3@3 ~",
  H: "~@2 d4@2 [c4,d4] c4 bb3@2 c4@2 g3@2 bb3@2 eb4@2, [bb2,bb3]@6 ~@2 c3@7 ~", // Csus2 Bb
  I: "~ eb4!2 d4 c4 a3 g3 f3, eb3@6 ~@2 f3@5 ~@3", J: "~ f3 [bb3,d4] f3 ~ g3 bb3 [bb3,eb4], bb2@6 ~@2 c3@7 ~",
  K: "~@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
  L: "[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
  M: "[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
  N: "[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
  O: "[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
  P: "[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
  Q: "[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 …
  R: "[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
  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]@2 [a3,c4,f4]!2", // Eb Eb5 Eb Bbsus2 F
  T: "[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
  U: "~ f3 [bb3,d4] f3 ~@2 bb3 eb4, bb2@6 ~@2 c3@7 ~, ~@5 g3@2 ~", // Bb
  V: "[~ eb4!2 d4 c4 bb3 a3 ~@2 f3 [bb3,d4] f3 ~@2 bb3 eb4, eb3@3 ~ f3@3 bb3@2 ~@4 g3@2 ~, ~@16 bb2@6 ~@2 c3@7 ~]/2", // Bb
  W: "~ bb3!3 c4 bb3 ~ d4, eb3@7 ~ f3@4 f3@4, ~ eb4 ~@2",
  X: "[~ 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
  Y: "[~ 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
  Z: "~@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
  AA: "[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
  AB: "[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
  AC: "[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
  AD: "[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
  AE: "[~ 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 Y@3 Z O AA AB AC AD AE AF@2 AG@2
  AH@2 AI@2 AJ@2 AK@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@7 ~", Y: "f4@15 ~", Z: "f5@15 ~",
  AA: "g4@7 ~@5 a4@2 g4@2, bb4@11 ~@5, ~@8 f4@7 ~", AB: "d4@8 c4@6 eb4 d4, f4@11 ~@5", AC: "eb4 d4 bb3@11 ~@3",
  AD: "[d4,f4]@7 ~ [eb4,g4]@2 [d4,f4]@2 [c4,eb4]@4", AE: "[g4,bb4]@7 ~ a4@2 bb4@2 c5@4, ~@8 f4@7 ~",
  AF: "[[d4,bb4]@8 eb4@8 g4@7 ~ a4@2 bb4@2 c5@4, ~@8 f5@15 ~ f4@7 ~]/2", // Gm
  AG: "[d4@8 eb4@15 ~ [f4,c5]@7 ~, bb4@11 ~@5]/2", // F5
  AH: "[d4@7 ~ eb4@14 bb4@2 a4@2 bb4@2 c5@2 bb4@2, bb4@20 ~@4 f4@7 ~]/2",
  AI: "[d4@7 ~ eb4@15 ~ [f4,c5]@7 ~, bb4@5 ~@3]/2", AJ: "[d4@8 eb4@14 bb4@2 a4@2 bb4@2 c5@3 ~, bb4@21 ~@3 f4@7 ~]/2",
  AK: "[[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 C A C A C ~@22 A C A C A C A C ~@38>".pickRestart({
  A: "bb3 c4", B: "eb4@7 ~ f4@8", C: "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@2 B@2 A@2 C@3 ~@21 B@2 A@4 C@3 ~@29>".pickRestart({
  A: "[[f5,d6]@8 [g5,eb6]@15 ~ [f5,f6]@8]/2", B: "[[f5,d6]@8 [g5,eb6]@15 ~ [f5,f6]@7 ~]/2",
  C: "[[f5,d6]@8 [g5,eb6]@15 ~ [f5,f6]@22 ~@2]/3", // Dm Cm F
})).s("gm_pad_metallic").gain(0.18).pan(0.7)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~@21 A B C D E F G H@2 I J K L ~@17 A M C D E F G N@2 H@2 O J I P O J Q R O S O P O J T R U@2
>`.pickRestart({
  A: "[bb4,eb5]@7 ~", B: "[c5,eb5]@7 ~", C: "[bb4,eb5]@15 ~", D: "[bb4,f5]@13 ~@3", E: "[g5,bb5]@7 ~",
  F: "[g5,c6]@15 ~", G: "[g5,c6]@7 ~", H: "[c6@15 ~ c6@15 ~, f5@15 ~]/2", I: "[d5,f5]@8 [eb5,g5]@7 ~",
  J: "eb5@7 ~@5 a5@4, bb5@11 ~@5, ~@8 f5@7 ~", K: "[d5,f5]@8 eb5@7 ~", L: "eb5@7 ~ f5@7 ~", M: "[c5,eb5]@13 ~@3",
  N: "[[f5,c6]@15 ~]/2", O: "[d5,f5]@7 ~ [eb5,g5]@7 ~", P: "[eb5,g5]@7 ~ [c5,f5]@7 ~", Q: "[d5,f5]@8 [c5,eb5]@7 ~",
  R: "[bb4,eb5]@7 ~ [c5,f5]@7 ~", S: "eb5@7 ~@5 a5@3 ~, bb5@11 ~@5, ~@8 f5@7 ~", T: "[d5,f5]@7 ~ [c5,eb5]@7 ~",
  U: "[[bb4,f5]@19 ~@13]/2", // Bb5
})).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 ~",
// … 44 more lines