Strudelify

The Letter

The Box Tops

KeyA minorTempo136 bpm
0:00/0:00
// The Letter — The Box Tops
// 136 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 68 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(136/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 · piano
const piano = note(`<
  ~@2 A B C D@2 E F G H@5 I J K@3 L M N@2 O P Q R S T U V W X Y Z AA AB AC@3 AD AE@2 AF AG AH AI@2 AJ@2 AK AL AM AN@2
  AO@2 AP@2 AQ@2 AR@2 AS@2 AT@2
>`.pickRestart({
  A: "~@3 e2 ~ g#2 ~ b2 ~ e3 ~ d3 ~ b2@2 e2", B: "~ a2@2 a2@2 [e3,a3,c4] ~ a2 ~ a2@2 e3 ~ e3@2 a2, ~@11 [a3,c4]@4 ~",
  C: "~ f2 ~ f2@2 [f3,a3,c4]@2 ~@2 f3 ~ f3@2 f2@2 f3, ~@7 f2@4 [a3,c4]@5", // F Am
  D: "[~@3 g3 ~@5 g3 ~ g3@2 g2@2 g3@2 ~@2 f#3 ~ [f#3,a3,d4]@2 ~@2 f#3 ~ f#3@2 d3 ~ f#3, ~ g2@4 [g3,c4,d4]@4 ~@2 [b3,d4]@5 ~@11 [a3,d4]@5, ~@7 g2@4 ~@6 d3@4 ~@2 d3@4 ~@5]/2", // D Gsus4 Bm D5
  E: "~ a2@4 [c4,e4,a4]@4 ~@2 c4@2 c4@2 a2, ~@9 a2@4 ~@3, ~@11 [e4,a4]@4 ~", // Am A5
  F: "~ f2@4 [a3,c4,f4]@3 ~ f2@2 a3@2 a3@2 f2, ~@11 [c4,f4]@4 ~", // F F5
  G: "~@3 g#3 ~ [g#3,d4,e4]@3 ~ e2@2 [d4,e4]@2 g#3 ~ e2, ~ e2@4 ~@6 g#3 ~@4", // E7 Dsus2
  H: "[~ a2@2 a3 ~ [c4,e4]@2 a3@2 ~@2 [c4,e4,a4]@2 c4 ~ [c4,e4,a4]@2 ~@2 a3 ~ [c4,e4]@2 a3 ~ a2@2 [a3,c4,e4]@2 ~ a2 [a3,c4,e4]@2 ~@2 a3 ~ [c4,f4]@2 a3 ~@3 [a3,c4,f4]@2 ~@2 [a3,c4,f4]@2 ~@4 [d4,g4]@2 b3 ~@3 [b3,d4,g4]@2 ~@2 [b3,d4,g4]@2 ~@2 a3 ~ [d4,f#4]@2 a3 ~@3 a3 ~ a3 ~ d3, ~@5 a3 ~@3 a2@6 ~@2 a2@4 a3 ~@11 f2@4 a3 ~@3 f2@7 ~ g2@6 ~@2 g2@6 ~@2 d3@6 ~@2 d3@5 ~@2, ~@53 b3 ~@15 a3 ~@5 [d4,f#4]@4 ~]/5", // C Am C Am F5 F G5 G …
  I: "~@3 a3 ~ [c4,e4,a4]@2 ~@4 [c4,e4,a4]@3 ~ a2, ~ a2@7 ~ a2@4 ~@3", // Am
  J: "~@3 a3 ~ [a3,c4,f4]@2 ~@2 a3 ~ [a3,c4,f4]@2 f2@2 a3, ~ f2@5 ~ f2@5 ~@4", // F
  K: "[~@3 g#3 ~ [g#3,d4,e4]@2 ~@2 g#3 ~ [g#3,d4]@2 ~@2 e2@2 a3 ~ a3 ~ [a3,c4,e4]@2 ~@2 a3 ~ [a3,c4,e4]@2 ~@2 a3 ~ [a3,c4,e4]@2 ~@2 a3 ~ [a3,c4]@2 ~@2 [a3,c4] ~ [a3,c4] ~ b2, ~ e2@5 ~ e2@4 e4@4 ~@2 a2@4 ~@2 a2@5 ~ a2@5 ~ a2@4 e4@5 ~ e4@2 ~, ~@41 a2@4 ~@3]/3", // E7 G#dim Am
  L: "~ [c4,e4,g4]@2 c3@2 [e4,g4]@2 c4 ~ [b3,d4,g4]@2 g2@2 [b3,d4,g4]@2 g2, ~ c3 ~@3 c4 ~@3 g2 ~@6", // C Em G
  M: "~ [a3,c4,f4]@2 f2@2 [a3,c4,f4]@2 ~@2 [g3,c4,e4]@2 c3@2 [g3,c4,e4]@2 ~, ~ f2 ~@7 c3 ~@6", // F C
  N: "[~ [g3,c4,d4]@2 g2@2 [g3,b3,d4]@2 g2@2 [g3,b3,d4]@2 g2@2 [g3,b3,d4]@2 g2@2 [g3,c4,d4]@2 ~@2 [g3,c4,d4]@2 g2@2 [g3,b3,d4]@2 g2@2 [g3,b3] ~ g2, ~ g2 ~@27 d4@2 ~]/2", // Gsus4 G Gsus4 G
  O: "~ [g3,c4,e4]@2 c3 ~ [g3,c4,e4]@2 g2@2 [g3,b3,d4]@2 g2@2 [b3,d4]@2 g2, ~ c3 ~@11 g3 ~@2", // C G Bm
  P: "~ [a3,c4,f4]@2 f2 ~ [a3,c4,f4] ~ c3@2 [g3,c4,e4]@2 c3 ~ [g3,c4,e4]@2 g2, ~ f2 ~@14", // F C
  Q: "~ [g2,g3,c4,d4]@3 ~ [g3,c4,d4]@2 g2@2 [g3,b3,d4]@2 g2 ~ [g3,b3,d4] ~ g2", R: "~ [e2,e3,e4]@2 ~@10 [g#3,b3,e4]@3",
  S: "~ a2 ~ a2@2 [a3,c4,e4]@2 a2 ~ a2@2 [a3,c4,e4]@2 a3@2 a2", // Am
  T: "~ [f2,c4,f4]@2 a3 ~ f2@2 [a3,c4,f4]@2 ~@2 a3 ~ [a3,c4,f4]@2 f2, ~ a3 ~@7 f2@4 ~@3", // F5 F
  U: "~ [c4,d4] ~ [c4,d4,g4] ~ [c4,d4,g4]@2 g2@2 b3@2 g2@2 b3 ~ [b3,d4,g4], ~ g2@4 ~@4 [d4,g4]@5 ~@2", // Csus2 G G5
  V: "~ [d4,g4]@2 [a3,f#4] ~ [a3,d4,f#4] ~ a3@2 ~@2 a3 ~ [d4,f#4]@2 [d3,a3], ~ d3@6 ~@2 d3@4 ~@3, ~ a3 ~@5 [d4,f#4]@5 ~ a3 ~@2", // G5 D D5 D
  W: "~ a3 ~ a3 ~ [a3,c4,e4]@2 a2 ~ [a3,c4] ~ a3 ~ a3@2 a2, ~ [a2,c4,e4]@4 ~@4 a2@2 [c4,e4]@4 ~", // Am C
  X: "~ [f2,c4,f4]@2 a3 ~ f2@2 [a3,c4,f4]@2 f2@2 a3 ~ a3 ~ f2, ~ a3 ~@9 [c4,f4]@4 ~", // F5 F F5
  Y: "~ [d4,e4]@2 g#3 ~ g#3@2 e2 ~ e2@2 [d4,e4]@2 g#3 ~ e2, ~ e2@5 ~@10, ~ g#3 ~@3 [d4,e4]@4 g#3 ~ g#3 ~@4", // Dsus2
  Z: "~ [a2,c4,e4]@2 a3 ~ a2@2 [c4,e4,a4]@2 ~@2 c4 ~ [c4,e4,a4]@2 a2, ~ a3 ~@7 a2@5 ~@2", // Am
  AA: "~ [a2,a3] ~ [a3,a4]@2 [a2,a3,a4] ~ [a2,a3,a4] ~ [a2,a3,a4] ~ [a2,a3,a4] ~ [a3,a4] ~ [a3,a4], ~@3 a2 ~@12", // A
  AB: "~ [c4,e4,g4]@2 c3@2 [c4,e4,g4]@2 c3 ~ [b3,d4,g4] ~ [g2,g4]@2 [b3,d4] ~ g2, ~ c3 ~@9 [b3,d4] ~ g4@2 ~", // C G Bm
  AC: "[~ [c4,f4,a4] ~ [c4,f4,a4]@3 ~ [c4,e4,g4]@2 c3@2 [c4,e4,g4] ~ [c4,e4,g4] ~ [b3,d4,g4,a4]@2 ~@2 [b3,d4,g4] ~ [b3,d4,g4]@2 g2@2 [b3,d4,g4]@2 g2@2 [b3,d4,g4] ~ [b3,d4,a4]@2 g2@2 [b3,d4,g4] ~ [b3,d4,g4] ~ g2@2 [b3,d4,g4] ~ [b3,d4,g4]@2 g2@2 [b3,d4,g4], ~ f2@2 ~@14 g2@4 ~@10 g2 ~@16]/3", // F C G Bm7 G
  AD: "~ [c3,c4,e4,g4]@3 ~ [c4,e4,g4]@2 c3 ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,g4]@2 g2, ~@9 g2@4 d4 ~@2", // C G Em
  AE: "[~ [c4,f4,a4] ~ [c4,f4,a4]@2 f2 ~ [c4,e4,g4]@2 c3@2 [c4,e4,g4]@2 c3 ~ [c4,e4,a4]@2 ~@2 [b3,d4,g4] ~ [b3,g4]@2 g2 ~ [b3,d4,g4] ~ [b3,d4,g4]@2 g2 ~ g2, ~ f2@2 ~@14 g2@4 d4 ~@10]/2", // F C Am G Em G
  AF: "~ [e2,g#3,e4]@3 ~@9 [e2,g#3,d4,e4]@3", // E E7
  AG: "~ [a2,a3,c4,e4]@3 ~ [a3,c4,e4]@2 a2 ~ a2@2 [a3,c4,e4]@2 a2 ~ [a2,a3], ~@9 a3 ~@6", // Am A
  AH: "~ a3@2 a3@2 f2@2 a3@2 ~@2 a3 ~ [a3,c4,f4]@2 f2, ~ [c4,f4]@4 ~@2 [c4,f4]@5 ~@4, ~ f2 ~@7 f2@4 ~@3", // F F5
  AI: "[~ b3 ~ b3 ~ [b3,d4,g4]@2 ~@2 [b3,d4,g4] ~ [b3,d4,g4]@2 g2@2 a3@2 ~@2 a3 ~ [a3,d4,f#4]@2 d3@2 [a3,d4,f#4]@2 d3@2 [a3,d4,f#4] ~ [a3,d4,f#4], ~ [g2,d4,g4]@4 ~@2 g2@5 ~@3 [d4,f#4]@5 ~@12, ~@17 d3@4 ~@11]/2", // G D G5 D
  AJ: "[~ [a2,a3,c4,e4]@4 ~@4 a3 ~ [a3,c4,e4]@2 a2@2 ~@4 a3 ~ [a3,c4,f4]@2 ~@2 [a3,c4] ~ [a3,c4]@2 f2 ~ f2, ~@5 [a3,c4,e4]@4 ~@6 [a3,c4,f4]@4 ~@8 f4@5, ~@7 a2@5 ~@5 f2@5 ~ f2@4 ~@5]/2", // Am F Am F
  AK: "~ [g#3,d4,e4]@2 e2@2 [g#3,d4,e4]@2 ~@2 [g#3,d4,e4] ~ [g#3,d4,e4]@2 e2@2 ~, ~@7 e2@5 ~@4", // E7
  AL: "~ [a2,c4,e4]@2 a3 ~ a2@2 [c4,e4,a4]@2 a2@2 [c4,e4,a4]@2 a2 ~ a2, ~ a3 ~@14", // Am
  AM: "~ [g#3,d4,e4] ~ [g#3,d4,e4] ~ [g#3,d4,e4]@2 ~@2 [g#3,d4,e4] ~ [g#3,d4,e4]@2 e2 ~ e2, ~ e2@4 ~@2 e2@5 ~@4", // E7
  AN: "[~ [a2,e4]@2 [a3,c4] ~ a2@2 [c4,e4,a4]@2 ~@2 [c4,e4] ~ [a3,c4,e4]@2 a2@2 a3 ~ [a2,c4,e4]@2 a3 ~ [a3,c4,e4] ~ [a3,c4,e4]@2 a2@2 [a3,c4] ~ a2, ~ [a3,c4] ~@7 a2@4 ~@6 a3 ~@3 a2@2 ~@4 e4@2 ~]/2", // A5 Am C Am
  AO: "[~ [g#3,c#4,f4]@2 c#3@2 [g#3,c#4,f4]@2 c#3 ~ [g#3,c4,d#4] ~ [g#3,c4,d#4]@2 g#2@2 ~@2 f#2@2 f#3 ~ [f#3,a#3,c#4]@2 f#2@2 c#4@2 g#3 ~ [g#3,c#4,f4]@2 c#3, ~ c#3 ~@7 g#2@2 ~@4 [f#3,a#3,c#4]@4 ~@6 [c#3,f4]@4 ~@3, ~@25 g#3 ~@6]/2", // C# G# F# C# F# C#
  AP: "[~ [g#2,c#4,d#4]@2 g#3 ~ [g#3,c#4,d#4]@2 g#2@2 [g#3,c4,d#4]@2 g#3 ~ [g#3,c4,d#4] ~@5 g#3 ~ [g#3,c4,d#4]@2 ~@2 [g#3,d#4] ~ [g#3,c4]@2 g#2 ~ [g#2,g#3], ~ g#3 ~@13 [g#3,c#4,d#4]@4 ~@8 d#4@5, ~@17 g#2@4 ~@2 g#2@4 ~@5]/2", // G#sus4 G# G#5 G# G#sus4
  AQ: "[~ c#4@2 g#3 ~ [g#3,c#4,f4]@2 ~@2 [g#3,c4,d#4] ~ [g#3,c4,d#4]@2 g#2@2 f#3@2 ~@2 f#3 ~ [f#3,a#3,c#4] ~ c#3@2 [g#3,c#4,f4]@2 c#3@2 [g#3,c#4,f4] ~ c#3, ~ [c#3,f4]@4 ~@2 g#2@4 ~@6 f#2@5 ~@10, ~ g#3 ~@13 [a#3,c#4]@4 ~@13]/2", // C# G# F# C# A#m
  AR: "[~ c#4@2 g#3 ~ [g#3,c#4,d#4]@2 ~@2 [c4,d#4]@2 [g#3,c4] ~ [g#3,c4,d#4] ~ [g#3,c#4,d#4]@2 ~@2 [g#3,c#4,d#4] ~ [g#3,c4,d#4]@2 g#2@2 [g#3,a#3,d#4]@2 g#2@2 [g#3,c4,d#4]@2 g#2, ~ [g#2,d#4]@4 ~@2 g#2@9 ~ g#2@5 ~@10, ~ g#3 ~@7 g#3 ~@22]/2", // G#sus4 Cm G# G#sus4 G# G#sus2 G# G#5
  AS: "[~ [g#3,c#4,f4] ~ [g#3,c#4,f4] ~ [g#3,c#4,f4]@2 g#2@2 [g#3,c4,d#4]@2 g#2@2 [g#3,c4,d#4] ~ [f#3,a#3,c#4]@3 ~ [f#3,a#3,c#4] ~ [g#3,d#4] ~ [g#2,g#3,d#4] ~ [g#3,c#4,d#4]@3 ~ [g#3,c#4,f4]@2 g#2, ~ c#3@4 ~@10 f#2@6 ~@11]/2", // C# G# F# G#5 G#sus4 C#
  AT: "[~ [g#2,g#3,c#4,d#4]@4 [g#3,c#4,d#4]@2 ~@2 [c4,d#4]@2 g#3 ~ c4 ~ g#3@2 [f2,f4] ~@14, ~@7 g#2@7 ~@18, ~@9 g#3 ~@22]/2", // G#sus4 Cm F
})).s("gm_piano").gain(0.32).pan(0.2)

// bass · electric bass finger
const bass = note("<~@2 A@8 B@8 C@8 D E F@8 G@8 E F@8 H@8 I@6 J>".pickRestart({
  A: "[~@3 e2@2 g#2@2 b2@2 e3@2 d3@2 b2@2 e2@2 a2@2 a2@2 ~@2 e2@2 a2@2 a2@2 ~@2 e2@2 f2@2 f2@2 ~@2 c2@2 f2@2 f2@2 ~@2 d2@2 g2@2 g2@2 ~@2 d2@2 g2@2 g2@2 ~@2 a2@2 d2@2 d2@2 ~@2 a2@2 d2@2 d2@2 ~@2 e2@2 a2@2 a2@2 ~@2 e2@2 a2@2 a2@2 ~@2 e2@2 f2@2 f2@2 ~@2 c2@2 f2@2 f2@2 ~@2 d2@2 e2@2 e2@2 ~@2 b1@2 e2@2 e2@2 ~@2 e2]/8",
  B: "[~ a2@2 a2@2 ~@2 e2@2 a2@2 a2@2 ~@2 e2@2 a2@2 a2@2 ~@2 e2@2 a2@2 a2@2 ~@2 e2@2 f2@2 f2@2 ~@2 c2@2 f2@2 f2@2 ~@2 d2@2 g2@2 g2@2 ~@2 d2@2 g2@2 g2@2 ~@2 a2@2 d2@2 d2@2 ~@2 a2@2 d2@2 d2@2 ~@2 e2@2 a2@2 a2@2 ~@2 e2@2 a2@2 a2@2 ~@2 e2@2 f2@2 f2@2 ~@2 c2@2 f2@2 f2@2 ~@2 d2@2 e2@2 e2@2 ~@2 b1@2 e2@2 e2@2 ~@2 e2]/8",
  C: "[~ a2@2 a2@2 ~@2 e2@2 a2@2 a2@2 ~@2 e2@2 a2@2 a2@2 ~@2 e2@2 a2@2 a2@2 ~@2 e2@2 c2@2 c2@2 e2@2 g2@2 g1@2 g1@2 b1@2 d2@2 f1@2 f1@2 a1@2 c2@2 c2@2 c2@2 e2@2 g2@2 g1@2 b1@2 d2@2 g1@2 b1 ~ d2@2 g1 ~ g1@4 b1@2 d2@2 g1@2 b1@2 d2@2 g1@2 g1@2 c2@2 e2@2 g2@2 g1@2 g1@2 b1@2 d2@2 g1@2 f1@2 a1@2 c2@2 c2@4 e2@2 g2@2 g1]/8",
  D: "~ g1@2 b1@2 d2@2 g1@2 b1@2 d2@2 g1@2 b1", E: "~ e1@2 ~@10 e1@3",
  F: "[~ a2@2 a2@2 ~@2 e2@2 a2@2 a2@2 ~@2 e2@2 f2@2 f2@2 ~@2 c2@2 f2@2 f2@2 ~@2 d2@2 g2@2 g2@2 ~@2 d2@2 g2@2 g2@2 ~@2 a2@2 d2@2 d2@2 ~@2 a2@2 d2@2 d2@2 ~@2 e2@2 a2@2 a2@2 ~@2 e2@2 a2@2 a2@2 ~@2 e2@2 f2@2 f2@2 ~@2 c2@2 f2@2 f2@2 ~@2 d2@2 e2@2 e2@2 ~@2 b1@2 e2@2 e2@2 ~@2 e2@2 a2@2 a2@2 ~@2 e2@2 a2@2 a2@2 ~@2 e2]/8",
  G: "[~ a2@2 a2@2 ~@2 e2@2 a2@2 a2@2 ~@2 e2@2 c2@2 c2@2 e2@2 g2@2 g1@2 g1@2 b1@2 d2@2 f1@2 f1@2 a1 ~ c2@2 c2@2 c2@2 e2@2 g2@2 g1@2 b1@2 d2@2 g1@2 b1 ~ d2@2 g1 ~ g1@4 b1@2 d2@2 g1@2 b1@2 d2@2 g1@2 g1@2 c2@2 e2@2 g2@2 g1@2 g1@2 b1@2 d2@2 g1@2 f1@2 a1@2 c2@2 c2@4 e2@2 g2@2 g1@2 g1@2 b1@2 d2@2 g1@2 b1@2 d2@2 g1@2 b1]/8",
  H: "[~ e2@2 e2@2 ~@2 b1@2 e2@2 e2@2 ~@2 e2@2 a2@2 a2@2 ~@2 e2@2 a2@2 a2@2 ~@2 e2@2 a2@2 a2@2 ~@2 e2@2 a2@2 a2@2 ~@2 e2@2 c#2@2 c#2@2 f2@2 g#2@2 g#1@2 g#1@2 c2@2 d#2@2 f#1@2 f#1@2 a#1@2 c#2@2 c#2@2 c#2@2 f2@2 g#2@2 g#1@2 c2@2 d#2@2 g#1@2 c2 ~ d#2@2 g#1 ~ g#1@4 c2@2 d#2@2 g#1@2 c2@2 d#2@2 g#1@2 g#1@2 c#2@2 c#2@2 f2@2 g#2@2 g#1@2 g#1@2 c2@2 d#2]/8",
  I: "[~ f#1@2 f#1@2 a#1@2 c#2@2 c#2@2 c#2@2 f2@2 g#2@2 g#1@2 c2@2 d#2@2 g#1@2 c2 ~ d#2@2 g#1 ~ g#1@4 c2@2 d#2@2 g#1@2 c2@2 d#2@2 g#1@2 g#1@2 c#2@2 f2@2 g#2@2 g#1@2 g#1@2 c2@2 d#2@2 g#1@2 f#1@2 a#1@2 c#2@2 c#2@4 f2@2 g#2@2 g#1@2 g#1@2 c2@2 d#2@2 g#1@2 c2@2 d#2@2 g#1@2 c2]/6",
  J: "~ f1@2 ~@13",
})).s("gm_electric_bass_finger").gain(0.45)

// chords · epiano2
const epiano2 = note("<~@20 A B C D E F G H ~@9 A B C D E F G H ~@11 I J K L I J K L M N O P>".pickRestart({
  A: "~ [g5,c6,e6]@2 ~@2 [g5,c6,e6]@2 g5 ~ [g5,b5,d6]@2 ~@2 [g5,b5,d6]@2 ~", // C G
  B: "~ [a5,d6,f6]@2 ~@2 [a5,d6,f6]@2 ~@2 [g5,c6,e6]@2 ~@2 [g5,c6,e6]@2 ~", // Dm C
  C: "~ [g5,c6,e6]@2 ~@2 [c6,e6]@2 g5 ~ [g5,b5] ~@3 [g5,b5] ~ g5, ~@5 g5 ~@3 d6@2 ~@2 d6@2 ~", // C G
  D: "~ [g5,c6,e6]@2 ~@2 [g5,c6] ~ g5 ~ [g5,b5,d6]@2 ~@2 [b5,d6]@2 g5, ~@5 e6@2 ~@6 g5 ~@2", // C C5 G Bm
  E: "~ [g5,c6,e6]@2 ~@2 [c6,e6]@2 g5 ~ [g5,b5,d6]@2 ~@2 [g5,b5,d6]@2 ~, ~@5 g5 ~@10", // C G
  F: "~ [a5,d6,f6]@2 ~@2 [a5,d6,f6]@2 ~@2 [g5,c6,e6]@2 ~@2 [c6,e6]@2 g5, ~@13 g5 ~@2", // Dm C
  G: "~ [c6,e6]@2 g5 ~ [g5,c6,e6] ~ g5 ~ [g5,d6]@2 ~@2 [g5,b5,d6] ~@2, ~ g5 ~@7 b5 ~@6", // C G5 G
  H: "~ [g#5,b5] ~@14, ~ e6@2 ~@13", I: "~ [g#5,c#6,f6]@2 ~@2 [g#5,c#6,f6]@2 g#5 ~ [g#5,c6,d#6]@2 ~@2 [g#5,c6,d#6]@2 ~",
  J: "~ [a#5,d#6,f#6]@2 ~@2 [a#5,d#6,f#6]@2 ~@2 [g#5,c#6,f6]@2 ~@2 [g#5,c#6,f6]@2 ~", // D#m C#
  K: "~ [g#5,c#6,f6]@2 ~@2 [c#6,f6]@2 g#5 ~ [g#5,c6] ~@3 [g#5,c6] ~ g#5, ~@5 g#5 ~@3 d#6@2 ~@2 d#6@2 ~", // C# G#
  L: "~ [g#5,c#6,f6]@2 ~@2 [g#5,c#6] ~ g#5 ~ [g#5,c6,d#6]@2 ~@2 [c6,d#6]@2 g#5, ~@5 f6@2 ~@6 g#5 ~@2", // C# C#5 G# Cm
  M: "~ [g#5,c#6,f6]@2 ~@2 [c#6,f6]@2 g#5 ~ [g#5,c6,d#6]@2 ~@2 [g#5,c6,d#6]@2 ~, ~@5 g#5 ~@10", // C# G#
  N: "~ [a#5,d#6,f#6]@2 ~@2 [a#5,d#6,f#6]@2 ~@2 [g#5,c#6,f6]@2 ~@2 [c#6,f6]@2 g#5, ~@13 g#5 ~@2", // D#m C#
  O: "~ [c#6,f6]@2 g#5 ~ [g#5,c#6,f6] ~ g#5 ~ [g#5,d#6]@2 ~@2 [g#5,c6,d#6] ~@2, ~ g#5 ~@7 c6 ~@6", // C# G#5 G#
  P: "~ [a5,c6] ~@14, ~ f6@2 ~@13", // Am
})).s("gm_epiano2").gain(0.4)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@5 A B ~@6 A C@3 ~ D@3 E@4 F@2 G ~@2 A C@3 ~ D@3 E@4 F@2 G ~@2 A C@3 ~ H ~ I@2 J K@8 L@2 M
>`.pickRestart({
  A: "~ c5@8 b4@7", B: "~ a4@13 ~@2",
  C: "[~ a4@13 ~ c4@3 ~ c4 ~ c4 ~ c4 ~ b3@2 a3 ~@3 c4@3 ~ c4 ~ c4 ~ c4 ~ b3 ~ a3 ~@4]/3",
  D: "[~ [a4,a5]@32 [g4,g5]@15]/3", E: "[~ [a4,a5]@8 [g4,g5]@6 [a4,a5]@6 [g4,g5]@28 [g4,g5]@15]/4",
  F: "[~ [a4,a5]@8 [g4,g5]@6 [a4,a5]@6 [g4,g5]@11]/2", G: "~ [g#4,g#5] ~@14", H: "~ [a4,a5]@14 ~",
  I: "[~ [a4,a5]@31]/2", J: "~ [g#4,g#5]@15", K: "[~ [a#4,a#5]@8 [g#4,g#5]@6 [a#4,a#5]@6 [g#4,g#5]@28 [g#4,g#5]@15]/4",
  L: "[~ [a#4,a#5]@8 [g#4,g#5]@6 [a#4,a#5]@6 [g#4,g#5]@11]/2", M: "~ [a4,a5] ~@14",
})).s("gm_string_ensemble_1").gain(0.32)

// chords · brass section
const brass_section = note(`<
  ~@11 A B C D@3 E F ~ G H@2 I@2 H@2 J A B C K@3 E F L@2 M@2 N@2 H@2 J A B C O@3 E P E F ~@5 Q R S@3 R S T
>`.pickRestart({
  A: "~ [a2,e3] ~@5 [c4,e4,a4] ~@8", B: "~ [a2,f3] ~@5 [c4,f4,a4] ~@8", C: "~ [g2,d3] ~@5 [b3,d4,g4] ~@8",
  D: "[~ [a2,d3] ~@5 [a3,d4,f#4] ~@7 a4@3 ~ a4 ~ a4@2 a4 ~ g4 ~ e4 ~@3 a4@3 ~ a4 ~ a4 ~ a4 ~ g4 ~ e4 ~@4]/3", // D5 D
  E: "~ [e2,g#3,e4]@15", F: "~ [a2,e3,c4] ~@14", G: "~ g4 ~ g4 ~ g4 ~ f4 ~ f4 ~ f4 ~ f4 ~ f4",
  H: "[~ a4 ~ a4 ~ a4 ~ g4@2 ~@2 e4 ~ e4 ~ a4@3 ~ g4 ~ g4 ~ e4 ~ g4 ~@6]/2",
  I: "[~@15 g4@3 ~ g4 ~ g4@2 f4 ~ f4 ~ f4 ~ f4 ~ f4]/2", J: "~ [e4,e5] ~@14",
  K: "[~ [d3,a3] ~@5 [a3,d4,f#4] ~@7 a4@3 ~ a4 ~ a4@2 a4 ~ g4 ~ e4 ~@3 a4@3 ~ a4 ~ a4 ~ a4 ~ g4 ~ e4 ~@4]/3", // D5 D
  L: "[~@11 e4@2 f4 ~ g4@3 ~ g4 ~ g4@2 f4 ~ f4 ~ f4 ~ f4 ~ f4]/2",
  M: "[~ a4 ~ a4 ~ a4 ~ g4@3 ~ e4 ~ e4 ~ a4@3 ~ g4 ~ g4 ~ e4 ~ g4 ~@6]/2",
  N: "[~ [g2,d3] ~@5 [g2,d3] ~@7 g4@3 ~ g4 ~ g4@2 f4 ~ f4 ~ f4 ~ f4 ~ f4]/2", // G5
  O: "[~ [d3,g3] ~@5 [a3,d4,f#4] ~@7 a4@3 ~ a4 ~ a4@2 a4 ~ g4 ~ e4 ~@3 a4@3 ~ a4 ~ a4 ~ a4 ~ g4 ~ e4 ~@4]/3", // G5 D
  P: "~ [a3,a4] ~@5 [a3,a4] ~@8", Q: "~ [c#4,f4,g#4] ~@5 [c4,d#4,g#4] ~@8", R: "~ [a#3,c#4,f#4] ~@5 [g#3,c#4,f4] ~@8",
  S: "~ [g#3,c#4,f4] ~@5 [g#3,c4,d#4] ~@8", T: "~ [f4,f5] ~@14",
})).s("gm_brass_section").gain(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note("<~@2 A B@4 C@8 D@8 E@5 B@4 D@8 E@5 B@4 F@8 G@8 H@3>".pickRestart({
  A: "~@3 e2@2 g#2@2 b2@2 e3@2 d3@2 b2@2 e2",
  B: "[~ [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f2,c3] ~ [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f2,c3] ~ [f3,a3,c4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g2,d3] ~ [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g2,d3] ~ [g3,b3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2 [a2,d3] ~ [f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2 [a2,d3] ~ [a3,d4]]/4", // Am A5 Am A5 F F5 F F5 …
  C: "[~ [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [e3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f2,c3] ~ [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f2,c3] ~ [e3,g#3,b3]@2 [e3,g#3,b3]@2 [e3,g#3,b3]@2 [e2,b2] ~ [e3,g#3,b3]@2 [e3,g#3,b3]@2 [e3,g#3,b3]@2 [e2,b2] ~ [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f2,c3] ~ [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f2,c3] ~ [f3,a3,c4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g2,d3] ~ [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g2,d3] ~ [g3,b3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2 [a2,d3] ~ [f#3,a3,d4]@2 [f#3,a3,d4]@2 [f#3,a3,d4]@2 [a2,d3] ~ [a3,d4]]/8", // Am A5 Am A5 Am F F5 F …
  D: "[~ [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [e3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f2,c3] ~ [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f2,c3] ~ [e3,g#3,b3]@2 [e3,g#3,b3]@2 [e3,g#3,b3]@2 [e2,b2] ~ [e3,g#3,b3]@2 [e3,g#3,b3]@2 [e3,g#3,b3]@2 [e2,b2] ~ [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [e3,a3,c4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [c3,g3] ~ [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g2,d3] ~ [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f2,c3] ~ [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [c3,g3] ~ [g3,c4,d4]@2 [g3,c4,d4]@2 [g3,c4,d4]@2 [g2,d3] ~ [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g2,d3] ~ [a3,c4,d4]]/8", // Am A5 Am A5 Am F F5 F …
  E: "[~ [a3,c4,d4]@2 [a3,c4,d4]@2 [g2,d3] ~ [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g2,d3] ~ [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [c3,g3] ~ [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g2,d3] ~ [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f2,c3] ~ [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [c3,g3] ~ [g3,c4,d4]@2 [g3,c4,d4]@2 [g3,c4,d4]@2 [g2,d3] ~ [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g2,d3] ~ [g3,b3,d4]@2 [g#3,b3,e4]@2 ~@13]/5", // D7 G5 G G5 C C5 G G5 …
  F: "[~ [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [e3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f2,c3] ~ [f3,a3,c4]@2 [f3,a3,c4]@2 [f3,a3,c4]@2 [f2,c3] ~ [e3,g#3,b3]@2 [e3,g#3,b3]@2 [e3,g#3,b3]@2 [e2,b2] ~ [e3,g#3,b3]@2 [e3,g#3,b3]@2 [e3,g#3,b3]@2 [e2,b2] ~ [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [e3,a3,c4]@2 [e3,g#3,b3]@2 [e3,g#3,b3]@2 [e2,b2] ~ [e3,g#3,b3]@2 [e3,g#3,b3]@2 [e3,g#3,b3]@2 [e2,b2] ~ [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [e3,a3,c4]@2 [e3,a3,c4]@2 [e3,a3,c4]@2 [a2,e3] ~ [e3,a3,c4]@2 [g#3,c#4,f4]@2 [g#3,c#4,f4]@2 [c#3,g#3] ~ [g#3,c4,d#4]@2 [g#3,c4,d#4]@2 [g#3,c4,d#4]@2 [g#2,d#3] ~ [f#3,a#3,c#4]]/8", // Am A5 Am A5 Am F F5 F …
  G: "[~ [f#3,a#3,c#4]@2 [f#3,a#3,c#4]@2 [f#2,c#3] ~ [g#3,c#4,f4]@2 [g#3,c#4,f4]@2 [g#3,c#4,f4]@2 [c#3,g#3] ~ [g#3,c#4,d#4]@2 [g#3,c#4,d#4]@2 [g#3,c#4,d#4]@2 [g#2,d#3] ~ [g#3,c4,d#4]@2 [g#3,c4,d#4]@2 [g#3,c4,d#4]@2 [g#2,d#3] ~ [a#3,c#4,d#4]@2 [a#3,c#4,d#4]@2 [a#3,c#4,d#4]@2 [g#2,d#3] ~ [g#3,c4,d#4]@2 [g#3,c4,d#4]@2 [g#3,c4,d#4]@2 [g#2,d#3] ~ [g#3,c#4,f4]@2 [g#3,c#4,f4]@2 [g#3,c#4,f4]@2 [c#3,g#3] ~ [g#3,c4,d#4]@2 [g#3,c4,d#4]@2 [g#3,c4,d#4]@2 [g#2,d#3] ~ [f#3,a#3,c#4]@2 [f#3,a#3,c#4]@2 [f#3,a#3,c#4]@2 [f#2,c#3] ~ [g#3,c#4,f4]@2 [g#3,c#4,f4]@2 [g#3,c#4,f4]@2 [c#3,g#3] ~ [g#3,c#4,d#4]@2 [g#3,c#4,d#4]@2 [g#3,c#4,d#4]@2 [g#2,d#3] ~ [g#3,c4,d#4]@2 [g#3,c4,d#4]@2 [g#3,c4,d#4]@2 [g#2,d#3] ~ [a#3,c#4,d#4]@2 [a#3,c#4,d#4]@2 [a#3,c#4,d#4]@2 [g#2,d#3] ~ [g#3,c4,d#4]@2 [g#3,c4,d#4]@2 [g#3,c4,d#4]@2 [g#2,d#3] ~ [g#3,c#4,f4]@2 [g#3,c#4,f4]@2 [g#3,c#4,f4]@2 [c#3,g#3] ~ [g#3,c4,d#4]@2 [g#3,c4,d#4]@2 [g#3,c4,d#4]@2 [g#2,d#3] ~ [f#3,a#3,c#4]]/8", // F# F#5 C# C#5 G#sus4 G#5 G# G#5 …
  H: "[~ [f#3,a#3,c#4]@2 [f#3,a#3,c#4]@2 [f#2,c#3] ~ [g#3,c#4,f4]@2 [g#3,c#4,f4]@2 [g#3,c#4,f4]@2 [c#3,g#3] ~ [g#3,c#4,d#4]@2 [g#3,c#4,d#4]@2 [g#3,c#4,d#4]@2 [g#2,d#3] ~ [g#3,c4,d#4]@2 [g#3,c4,d#4]@2 [g#3,c4,d#4]@2 [g#2,d#3] ~ [g#3,c4,d#4]@2 [a3,c4,f4]@2 ~@13]/3", // F# F#5 C# C#5 G#sus4 G#5 G# G#5 …
})).s("gm_acoustic_guitar_steel").gain(0.32).pan(0.8)

// drums · kick
const kick = s("bd").struct(`<
  ~@3
  [~ x ~ x ~@5 x ~ x ~@4]!24
  ~
  [~ x ~ x ~@5 x ~ x ~@4]!16
  ~
  [~ x ~ x ~@5 x ~ x ~@4]!22
  ~
>`).gain(0.48)

// drums · snare
const snare = s("sd").struct(`<
  ~
  [~ x ~@3 x ~@3 x ~@3 x ~@2]!2
  [~@5 x ~@7 x ~@2]!24
  [~ x ~@11 x ~@2]
  [~@5 x ~@7 x ~@2]!16
  [~ x ~@11 x ~@2]
  [~@5 x ~@7 x ~@2]!22
  [~ x ~@14]
>`).gain(0.54)

// drums · hihat
const hihat = s("hh").struct(`<
  A ~@2 B@3 C B@3 C B@3 C B@3 C@2 D B@2 C B@3 ~ B@3 C B@3 C@2 D B@2 C B@3 ~ B@3 C B@3 C B C@2 D B@2 C D B@2 C B@3 ~
>`.pickRestart({
  A: "~ x ~@3 x ~@3 x ~@3 x ~@2", B: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", C: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2",
  D: "~@5 x ~ x ~ x ~ x ~ x ~ x",
})).gain(0.36)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@6 A ~@3 A ~@3 A ~@3 A@2 ~@3 A ~@7 A ~@3 A@2 ~@3 A ~@7 A ~@3 A ~ A@2 ~@3 A ~@3 A ~@4
>`.pickRestart({
  A: "~@15 x",
})).gain(0.36)

// drums · crash
const crash = s("cr").struct("<~@20 A ~@16 A ~@18 A ~@3 A ~@7>".pickRestart({
  A: "~ x ~@14",
})).gain(0.42)

// drums · tambourine
const tambourine = s("tb").struct("<~@2 [~@13 x ~@2] [~@5 x ~@7 x ~@2]!64 ~>").gain(0.54)

stack(
  piano, bass, epiano2, string_ensemble_1, brass_section, acoustic_guitar_steel, kick, snare, hihat, open_hat, crash,
  tambourine
)

More by The Box Tops