Strudelify

Tangerine

Johnny Mercer

KeyD majorTempo105 bpm
0:00/0:00
// Tangerine — Johnny Mercer
// 105 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 78 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(105/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 · acoustic bass · "Bass    (BB)"
const bass = note(`<
  ~@2 A B C D E F G H I J K L M F G N I J K O P Q B H I J R S M T B U A B C V W F G H I J R X M F G Y I J K Z P Q B N I
  J K L M T B AA AB B C AC W AD AE AF AG AH AI ~
>`.pickRestart({
  A: "g2@6 d3 ~ d3@6 a1 ~", B: "a1@6 a1 ~ a1@6 d2 ~", C: "d2@6 a2 ~ a2@6 f2 ~", D: "f2@6 g2 ~ g2@6 a#1 ~",
  E: "a#1@4 ~@2 g2@2 g2@6 g2 ~", F: "g2@6 c2 ~ c2@6 f2 ~", G: "f2@6 c2 ~ c2@6 d2 ~", H: "d2 ~@3 d2@4 d2 ~@3 d2@4",
  I: "g2@6 d#2 ~ d#2@6 c2 ~", J: "c2@6 g2 ~ g2@6 f2 ~", K: "f2@6 c3 ~ c3@6 f2 ~", L: "f2@4 f2 ~ f2 ~ b1 ~@3 b1@4",
  M: "g2@6 c2 ~ c2@6 g2 ~", N: "d2 ~@3 d2@4 d2@4 d2 ~ d2 ~", O: "f2 ~@3 f2@4 e2@4 ~@2 a1@2", P: "a1@6 f#2 ~ f#2@6 b1 ~",
  Q: "b1@6 e2 ~ e2@6 a1 ~", R: "f2@6 c2 ~ c2@6 f2 ~", S: "f2 ~@3 f2@4 b1@4 b1 ~ b1 ~", T: "g2@6 c2 ~ c2@6 a1 ~",
  U: "d2 ~@3 d2@4 d2@4 ~@2 g2@2", V: "f2@4 f2 ~ f2 ~ g2 ~@3 g2@4", W: "g2@6 d3 ~ d3@6 g2 ~",
  X: "f2@4 f2 ~ f2 ~ b1@4 f2 ~ b1 ~", Y: "d2@4 d2 ~ d2 ~ d2@4 a1 ~ d2 ~", Z: "f2@4 f2 ~ f2 ~ e2@4 ~@2 a1@2",
  AA: "d2@4 d2 ~ d2 ~ d2@4 ~@2 g2@2", AB: "g2@6 d2 ~ d2@6 a1 ~", AC: "f2 ~@3 f2@4 g2 ~@3 g2@4",
  AD: "g2@4 g2 ~ g2 ~ c2@4 g2 ~ c2 ~", AE: "f2@6 c3 ~ c3@6 a#1 ~", AF: "a#1@6 f2 ~ f2@6 f2 ~",
  AG: "f2 ~@3 f2@6 f2 ~ f2@2 g2 ~", AH: "f2 ~ f2 ~ f2 ~@5 f2 ~ f2 ~@3", AI: "f2 ~@3 f2 ~@3 f2 ~ f2 ~ f2 ~ f2 ~",
})).s("gm_acoustic_bass").gain(0.4)

// chords · acoustic guitar nylon · "guitar nylon"
const acoustic_guitar_nylon = note(`<
  ~@2 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA L AB AC AD AE AF AG AH AI AJ AK AL AM AN J AO AP AQ AR AS H
  I AT AU AV AW AX AY AZ BA BB BC AP M BD BE BF BG BH BI BJ BK BL K BM BN BO BP ~
>`.pickRestart({
  A: "[g3,a#3,d4,g4] ~@3 [g3,a#3,d4,g4] ~@3 [g3,a#3,d4,g4] ~ [g3,a#3,d4,g4]@2 ~@2 [g3,a#3,d4,g4]@2", // Gm
  B: "[g3,d4,f#4,b4]@2 [g3,d4,f#4,b4] ~@3 [g3,d4,f#4,b4] ~@3 [g3,c#4,f4,a#4] ~ [g3,c#4,f4,a#4]@2 ~@2", // Gmaj7 Gm7b5
  C: "[c4,d4,f4,a4] ~@3 [c4,d4,f4,a4] ~@3 [c4,d4,f4,a4]@4 ~@2 [c4,d4,f4,a4] ~", // Dm7
  D: "[f3,a3,c4,f4]@2 [f3,a3,c4,f4] ~@3 [f3,a3,c4,f4] ~ [f3,b3,e4,a4]@2 [f3,b3,e4,a4]@2 ~@2 [f3,b3,e4,a4]@2", // F Fmaj7
  E: "[a#3,c#4,f4,a#4] ~ [a#3,c#4,f4,a#4]@2 ~@2 [a#3,d4,f4]@2 [g4,a#4,d5,f5]@2 [g4,a#4,d5,f5] ~@3 [g4,a#4,d5,f5] ~", // A#m A# Gm7
  F: "[g4,a#4,d5,f5]@2 [g4,a#4,d5,f5] ~@3 [g4,a#4,d5,f5] ~ [a#3,c4,e4,g4]@2 [a#3,c4,e4,g4] ~@3 [c4,f4,a4]@2", // Gm7 C7 F
  G: "[f3,a3,c4]@2 ~@2 [f3,a3,c4]@2 ~@2 [d#3,c4,g4]@2 [d#3,c4,g4] ~@3 [e3,c#4,g#4]@2", H: "c5 a4 f#4 d4 d5 a#4 f#4 d4",
  I: "[g4,a#4,d5,f5] ~@3 [g4,a#4,d5,f5] ~@3 [d#4,g4,a#4,d#5]@2 [d#4,g4,a#4,d#5] ~@3 [d#4,g4,a#4,d#5] ~", // Gm7 D#
  J: "[e3,a#3,c#4,g#4]@2 [e3,a#3,c#4,g#4] ~@3 [e3,a#3,c#4,g#4] ~ [e3,a#3,c#4,g#4]@2 [e3,a#3,c#4,g#4]@2 ~@2 [e3,a#3,c#4,g#4] ~", // A#m7b5
  K: "[f3,a3,c4,f4] ~@3 [f3,a3,c4,f4] ~@3 [f3,a3,c4,f4]@4 ~@2 [f3,a3,c4,f4] ~", L: "f5 c5 a4 f4 g#4 f4 d4 b3",
  M: "[g4,a#4,d5,f5] ~@3 [g4,a#4,d5,f5] ~@3 [a#3,c4,e4,g4]@2 [a#3,c4,e4,g4] ~@3 [c4,f4,a4]@2", // Gm7 C7 F
  N: "[a#3,f4,a4,d5]@2 [a#3,f4,a4,d5] ~@3 [a#3,f4,a4,d5] ~ [g3,a#3,c4,e4]@2 [g3,a#3,c4,e4] ~@3 [g3,a#3,c4,e4] ~", // A#maj7 C7
  O: "[f4,a4,c5,f5] ~@3 [f4,a4,c5,f5] ~@3 [g3,c4,d#4,g4]@2 [g3,c4,d#4,g4] ~@3 [g3,c4,d#4,g4] ~", // F Cm
  P: "c5@2 a4@2 f#4@2 d4@2 [a#3,d4,f#4] ~@3 [d4,f#4,a#4]@4", // A#aug Daug
  Q: "[a#3,f4,g4,d5]@2 ~@2 [a#3,f4,g4,d5]@2 ~@2 [a#3,d#4,g4]@2 [a#3,d#4,g4] ~@3 [a#3,d#4,g4] ~", // Gm7 D#
  R: "[a#3,c#4,e4,g#4] ~ [a#3,c#4,e4,g#4] ~@3 [a#3,c#4,e4,g#4] ~@3 [a#3,c#4,e4,g#4] ~@3 [b3,d4,f4,a4]@2", // A#m7b5 Bm7b5
  S: "[a3,c4,f4]@2 ~@2 [a3,c4,f4]@2 ~@2 [a3,c4,f4]@2 [a3,c4,f4] ~@3 [a#3,c#4,f#4]@2", // F F#
  T: "f5@2 c5@2 a4@2 f4@2 [g#3,d4,f#4,c#5] ~ [g#3,d4,f#4,c#5]@2 ~@2 [f3,b3,d4,g#4]@2", // C#sus4 Fdim
  U: "[e4,a4,c#5,e5] ~@3 [e4,a4,c#5,e5] ~@3 [f#3,a3,c#4,f#4]@2 [f#3,a3,c#4,f#4] ~@3 [f#3,a3,c#4,f#4]@2", // A F#m
  V: "[f#4,a4,b4,d5]@2 [f#4,a4,b4,d5] ~@3 [f#4,a4,b4,d5] ~ [b3,d4,f#4,g#4]@2 [b3,d4,f#4,g#4] ~@3 [c4,e4,a4]@2", // Bm7 G#m7b5 Am
  W: "[c#4,e4,g4,a4] ~@3 [c#4,e4,g4,a4] ~@3 [a3,c#4,f4,a4]@2 [a3,c#4,f4,a4] ~@3 [a3,c#4,f4,a4]@2", // A7 Aaug
  X: "[c4,d4,f#4,a4] ~@3 [f#3,b3,c4,e4]@4 d5@2 a#4@2 f#4@2 d4@2", // D7 Esus2
  Y: "[f3,g3,a#3,d4]@2 ~@2 [f3,g3,a#3,d4]@2 ~@2 [a#3,d#4,g4]@2 [a#3,d#4,g4] ~@3 [a#3,d#4,g4] ~", // Gm7 D#
  Z: "[a#3,c4,e4,g4]@2 [a#3,c4,e4,g4] ~@3 [a#3,c4,e4,g4] ~ [a#3,c4,e4,g4]@2 [a#3,c4,e4,g4] ~@3 [a#3,c4,e4,g4] ~", // C7
  AA: "[f3,a3,c4,f4] ~@3 [f3,a3,c4,f4] ~@3 [f3,a3,c4,f4] ~ [f3,a3,c4,f4]@2 ~@2 [f3,a3,c4,f4]@2", // F
  AB: "[g4,a#4,d5,f5] ~@3 [g4,a#4,d5,f5] ~@3 [a#3,e4,g4,c5]@2 [a#3,e4,g4,c5] ~@3 [a#3,e4,g4,c5]@2", // Gm7 C7
  AC: "[a#3,f4,a4,d5]@2 [a#3,f4,a4,d5] ~@3 [a#3,f4,a4,d5] ~@3 [g3,a#3,c4,e4] ~ [g3,a#3,c4,e4]@2 ~@2", // A#maj7 C7
  AD: "[c#4,g4,b4,f#5]@2 ~@2 [c#4,g4,b4,f#5]@2 ~@2 [c#4,a4,f5]@2 [c#4,a4,f5] ~@3 [d4,a#4,f#5]@2", // F#sus4 C#aug Daug
  AE: "[c4,d4,f#4,a4] ~@3 [c4,f#4,b4,e5]@4 [d4,f#4,a#4,d5] ~ [d4,f#4,a#4,d5]@2 ~@2 [c4,d4,f#4,a4]@2", // D7 Cmaj7 Daug D7
  AF: "[a#3,g4,d5] ~@3 [a#3,g4,d5] ~@3 [a#3,g4,d5]@4 ~@2 [a#3,g4,d5] ~", // Gm
  AG: "[g3,b3,d4,f#4]@2 [g3,b3,d4,f#4] ~@3 [g3,b3,d4,f#4] ~ [g3,c4,c#4,e4]@2 [g3,c4,c#4,e4]@2 ~@2 [g3,c4,c#4,e4]@2", // Gmaj7 C
  AH: "[c4,d4,f4,a4]@2 ~@2 [c4,d4,f4,a4]@2 ~@2 [c4,d4,f4,a4]@2 [c4,d4,f4,a4] ~@3 [d4,g4,a#4] ~", // Dm7 Gm
  AI: "[a3,c4,f4] ~@3 [a3,f4,c5]@4 f4@2 d4@2 b3@2 g3@2", // F
  AJ: "[g4,a#4,d5,f5] ~@3 [g4,a#4,d5,f5] ~@3 [g4,a#4,d5,f5]@5 ~ [g4,a#4,d5,f5] ~", // Gm7
  AK: "[g4,a#4,d5,f5]@2 [g4,a#4,d5,f5] ~@3 [g4,a#4,d5,f5] ~ [g3,a#3,c4,e4]@2 [g3,a#3,c4,e4] ~@3 [g3,a#3,c4,e4] ~", // Gm7 C7
  AL: "[f4,a4,c5,f5] ~@3 [f4,a4,c5,f5] ~@3 [g3,c4,d#4]@2 [g3,c4,d#4] ~@3 [a3,c4,f4]@2", // F Cm F
  AM: "[c4,d4,f#4,a4] ~@3 [c4,f#4,a4,d5]@4 [f#3,a#3,d4] ~@3 [d4,f#4,a#4,d5]@4", // D7 F#aug Daug
  AN: "[a#3,f4,g4,d5]@2 ~@2 [a#3,f4,g4,d5]@2 ~@2 [g3,a#3,d#4]@2 [g3,a#3,d#4] ~@3 [g3,a#3,d#4] ~", // Gm7 D#
  AO: "[f3,a3,c4,f4] ~@3 [f3,a3,c4,f4] ~@3 [f3,a3,c4,f4]@4 ~@2 [f#3,a#3,c#4,f#4] ~", // F F#
  AP: "f5@2 c5@2 a4@2 f4@2 [g#3,b3,d4,f4] ~@3 [g#3,d4,f4,b4]@4", // G#dim
  AQ: "[a#3,d4,f4,g4] ~@3 [a#3,d4,f4,g4] ~@3 [g3,a#3,c4,e4]@2 [g3,a#3,c4,e4] ~@3 [g3,a#3,c4,e4] ~", // Gm7 C7
  AR: "[g4,a#4,d5,f5]@2 [g4,a#4,d5,f5] ~@3 [g4,a#4,d5,f5] ~ [a#3,c4,e4,g4]@2 [a#3,c4,e4,g4]@2 ~@2 [a#3,c4,e4,g4]@2", // Gm7 C7
  AS: "[a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [g3,c4,d#4]@2 [g3,c4,d#4] ~@3 [a3,c4,f4]@2", // F Cm F
  AT: "[a#3,e4,g#4,c#5]@2 [a#3,e4,g#4,c#5] ~@3 [a#3,e4,g#4,c#5] ~@3 [a#3,e4,g#4,c#5] ~@3 [a#3,e4,g#4,c#5] ~", // A#m7b5
  AU: "[a3,f4,c5]@2 ~@2 [a3,f4,c5]@2 ~@2 [a3,f4,c5]@2 [a3,f4,c5] ~@3 [a#3,f#4,c#5]@2", // F F#
  AV: "[a3,c4,f4] ~@3 [a3,f4,c5]@4 [g#3,c#4,d4,f#4] ~ [g#3,c#4,d4,f#4]@2 ~@2 [b3,d4,f4,g#4]@2", // F C#sus4 Bdim
  AW: "[a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,f#4]@2 [a3,c#4,f#4] ~@3 [a3,c#4,f#4] ~", // A F#m
  AX: "[a3,b3,d4,f#4]@2 [a3,b3,d4,f#4] ~@3 [a3,b3,d4,f#4] ~ [g#3,d4,f#4,c#5] ~ [g#3,d4,f#4,c#5] ~@3 [a3,d#4,g4,d5]@2", // Bm7 C#sus4 Dsus4
  AY: "[g3,c#4,f#4,b4]@2 ~@2 [g3,c#4,f#4,b4]@2 ~@2 [f4,a4,c#5,f5]@2 [f4,a4,c#5,f5] ~@3 [f4,a4,c#5,f5] ~", // Gmaj7 Faug
  AZ: "[c4,d4,f#4,a4] ~@3 [f#3,c4,d4,a4]@4 d5@2 a#4@2 f#4@2 d4@2", // D7
  BA: "[f3,a#3,d4,g4]@2 ~@2 [f3,a#3,d4,g4]@2 ~@2 [a#3,d#4,g4]@2 [a#3,d#4,g4] ~@3 [a#3,d#4,g4] ~", // Gm7 D#
  BB: "[g3,a#3,c4]@2 [g3,a#3,c4,e4] ~@3 [g3,a#3,c4,e4] ~@3 [g3,a#3,c4,e4] ~@3 [g3,a#3,c4,e4] ~", // C7
  BC: "[a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4]@4 ~@2 [a#3,d4,f4] ~", // F A#
  BD: "[a#3,d4,f4,g4]@2 [a#3,d4,f4,g4] ~@3 [a#3,d4,f4,g4] ~ [g3,a#3,c4,e4]@2 [g3,a#3,c4,e4] ~@3 [g3,a#3,c4,e4] ~", // Gm7 C7
  BE: "[c#4,e4,g4,a4] ~@3 [c#4,e4,g4,a4] ~@3 [a3,c#4,f4]@2 [a3,c#4,f4] ~@3 [a3,d4,f#4]@2", // A7 Aaug D
  BF: "[c4,d4,f#4,a4] ~@3 [c4,f#4,b4,e5]@4 [f#3,a#3,d4]@2 [f#3,a#3,d4] ~@3 [c4,f4,f#4,a4]@2", // D7 Cmaj7 F#aug F
  BG: "[g3,a#3,d4] ~@3 [g3,a#3,d4] ~@3 [g3,a#3,d4]@4 ~@2 [g3,a#3,d4] ~", // Gm
  BH: "[e4,g4,b4,d5]@2 [e4,g4,b4,d5] ~@3 [e4,g4,b4,d5] ~ [c#4,e4,g4,a#4]@2 [c#4,e4,g4,a#4]@2 ~@2 [c#4,e4,g4,a#4]@2", // Em7 C#dim
  BI: "[c4,d4,f4,a4] ~@3 [c4,d4,f4,a4] ~@3 [c4,d4,f4,a4]@4 ~@2 [c#4,d#4,f#4,a#4] ~", // Dm7 D#m7
  BJ: "[a3,c4,f4] ~@3 [a3,c4,f4]@4 f4@2 d4@2 b3@2 g3@2", // F
  BK: "[a#3,d4,f4,g4] ~@3 [a#3,d4,f4,g4] ~@3 [a#3,d4,f4,g4]@2 [a#3,d4,f4,g4]@2 ~@2 [a#3,d4,f4,g4] ~", // Gm7
  BL: "[a#3,d4,f4,g4] ~@3 [f3,a3,a#3,d4]@4 [a#3,c4,e4,g4] ~@3 [e3,a#3,c4,g4]@4", // Gm7 A#maj7 C7
  BM: "[a#3,c#4,f4,a#4]@2 [a#3,c#4,f4,a#4] ~@3 [a#3,c#4,f4,a#4] ~ [a#3,c#4,f4,a#4]@2 [a#3,c#4,f4,a#4]@2 ~@2 [a#3,c#4,f4,a#4] ~", // A#m
  BN: "[a3,c4,f4] ~@3 [a3,f4,c5]@12", BO: "[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~@5 [a3,c4,f4] ~ [a3,c4,f4] ~@3",
  BP: "[a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,f4,c5] ~ [a3,f4,c5] ~ [a3,f4,c5] ~ [a3,f4,c5] ~", // F
})).s("gm_acoustic_guitar_nylon").gain(0.24)

// other · acoustic guitar steel · "guitar steel"
const acoustic_guitar_steel = note("<~@2 A B C D E F G H ~@12 I J K L ~@28 M N O P ~@14 Q R S T U ~>".pickRestart({
  A: "g3@2 a#2@2 d3 ~ g3@4 d3@2 g3 ~ a#3@2", B: "b3@2 e3@2 g3 ~ d4@2 a3@2 c#4 ~ c#3@2 e3@2",
  C: "d4@2 a3@2 c4 ~ f4@4 f3@2 a3 ~ c4@2", D: "f4@2 c5@2 a4 ~ f4@2 g3@2 d4@2 b3 ~ f3@2",
  E: "a#3@2 f4@2 a#3@2 f4@2 g3@2 d4@2 a#3 ~ f3@2", F: "g3@2 a#2@2 d3 ~ f3@2 c4@2 e3@2 g3 ~ a#3@2",
  G: "f4 c5 a4 f4 c4 g4 d#4 c4", H: "d4@2 a3@2 c4 ~ f#4@2 d4@2 a#4@2 f#4 ~ d4@2",
  I: "a3@2 e4@2 c#4@2 a3@2 f#3@2 c#4@2 a3 ~ f#3@2", J: "b3@2 d4 ~ d3@2 f#3@2 f#4@2 g#3@2 b3 ~ d4@2",
  K: "a3@2 e4@2 c#4@2 g3@2 a3@2 c#4 ~ c#3@2 f3@2", L: "d4@2 f#4 ~ f#3@2 a3@2 d4@2 f#4 ~ f#3@2 a#3@2",
  M: "a3@2 e3@2 a3 ~ c#4@2 f#3@2 c#3@2 f#3 ~ a3@2", N: "b3@2 f#3@2 a3 ~ d4@2 f#4@2 b4@2 g#4 ~ d4@2",
  O: "a3@2 c#3@2 e3 ~ g3@2 a3@2 c#4 ~ c#3@2 f3@2", P: "d4@2 a3@2 c4 ~ f#4@2 d4@2 f#3@2 a#3 ~ d4@2",
  Q: "f4@2 a4 ~ a3@2 c4@4 d4@3 ~ f4@2", R: "a#3@2 f4@2 c#4@2 a#3@3 ~ f3@3 ~ a#3@2",
  S: "f4@2 c5@2 a4 ~ f4@4 c4@2 f4 ~ a4@2", T: "[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~@5 [a3,c4,f4] ~ [a3,c4,f4] ~@3",
  U: "[a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,f4,c5] ~ [a3,f4,c5] ~ [a3,f4,c5] ~ [a3,f4,c5] ~", // F
})).s("gm_acoustic_guitar_steel").gain(0.32)

// chords · string ensemble 1 · "Strings (BB)"
const string_ensemble_1 = note(`<
  ~@2 A B C D E F G H I J K L M@2 N O I J K P Q R S H I J K L M@2 T U V W X Y V M N O I J K L M@2 N O I J K P Q R S H I
  J K L M@2 T U V W X Y V M Z AA Z AB@2 ~
>`.pickRestart({
  A: "[a#4,d5]", B: "[d5,e5] [c#5,e5]", C: "[f5,a5]", D: "[a5,c6] [b4,d5]", E: "[c#5,f5] [d5,f5] [a#4,d5]@2",
  F: "[a#4,d5] [e5,g5]", G: "[a5,c6] [d#5,g5]", H: "[f#5,a5] [f#5,a#5]", I: "[a#3,d4] [g4,a#4]", J: "[e4,g4]",
  K: "[a4,c5]", L: "[a4,c5] [d4,f4]", M: "[a#3,d4] [e4,g4]", N: "[a4,c5] [d#4,g4]", O: "[f#4,a4] [f#4,a#4]",
  P: "[a4,c5]@2 [g#4,b4] [b3,d4]", Q: "[c#5,e5] [a4,c#5]", R: "[d5,f#5] [g#5,b5]", S: "[c#5,e5] [c#5,f5]",
  T: "[c#4,e4] [c#4,f4]", U: "[f#4,a4]@2 [f#4,a#4] [f#4,a4]", V: "[a#3,d4]", W: "[d4,e4] [c#4,e4]", X: "[f4,a4]",
  Y: "[a4,c5] [b3,d4]", Z: "[a5,c6]", AA: "[c#5,f5]", AB: "[a5,c6]/2",
})).s("gm_string_ensemble_1").gain(0.24)

// other · music box · "celeste"
const music_box = note("<~@41 A B C D@2 E F G H I J K L M N O ~@15 P Q R@2 ~@2>".pickRestart({
  A: "~@8 d7@5 a#6@2 ~", B: "a6@5 ~ a6@3 a6@7", C: "~@8 c7@2 a6 ~ c7 ~ a6 ~", D: "[g6 ~ f6@3 ~ d6@15 ~@5 f6@4 d6 ~]/2",
  E: "f6@6 d6 ~ e6@6 d6 ~", F: "f6@3 ~ d6 ~ e6@3 ~ c6@3 b5 c6 ~", G: "a6@7 ~", H: "d7@14 a#6 ~", I: "a6@13 ~@3",
  J: "~@4 g6 a6 a#6 b6 ~ c7@3 ~ a6@2 ~", K: "g6 a6 g6 ~ f6@2 d6@10", L: "~@8 e6@3 ~ f6@4", M: "e6@6 f#6 ~ a6@6 f#6@2",
  N: "a6@4 f#6 ~ b6@4 f#6@6", O: "a6@15 ~", P: "~@3 a6@2 e6@2 ~ [e6,c7]@2 ~ [e6,a6]@2 g6 ~@2, ~@2 e6@2 ~ a#6 ~@10",
  Q: "~@2 [c#6,f6]@3 [c#6,f6] ~@2 [f6,g#6]@2 ~ [c#6,g6] ~ [c#6,f6] ~@2, ~@5 g6@2 ~ c#6 ~@7", R: "[[a5,c6]@31 ~]/2",
})).s("gm_music_box").gain(0.5).pan(0)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A@7 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@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A B A@3 C B ~
>`.pickRestart({
  A: "x ~@2 x!2 ~@2 x", B: "x ~ x ~@4 x", C: "x ~@4 x!2 ~",
})).gain(0.4)

// drums · rim
const rim = s("rim").struct(`<
  A B C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C
  D C D C D C D C D C D C D C D C ~@3
>`.pickRestart({
  A: "x!2", B: "x!4", C: "x ~@2 x ~@2 x ~", D: "~@2 x ~@2 x ~@2",
})).gain(0.4)

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

// drums · open hat
const open_hat = s("oh").struct("<~@3 A ~ A ~@3 A ~@5 A ~ A ~@3 A ~@21 A ~@9 A ~ A ~@7 A ~@9 A ~ B ~@2>".pickRestart({
  A: "~@7 x", B: "x",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@9 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~ A ~@6
>`.pickRestart({
  A: "x!2 ~@2",
})).gain(0.36)

// drums · ride
const ride = s("rd").struct(`<
  ~@2 A@7 B ~@2 C B ~@3 B ~@3 B A@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B A@3 B ~@3 B ~@3 B ~@3 B ~ B A@2 ~@4
>`.pickRestart({
  A: "x!8", B: "x ~ x ~@2 x!3", C: "x",
})).gain(0.36)

// drums · cowbell
const cowbell = s("cb").struct(`<
  ~@2 A@7 B C@3 D C@3 B C@3 E A@3 D C@3 E C@3 B C@3 B C@3 B C@3 B C@3 E C@3 B A@3 E C@3 B C@3 B C@3 E C B A@2 C ~ F ~
>`.pickRestart({
  A: "x!4", B: "x!2 ~ x", C: "x", D: "x ~@3 x ~ x!3 ~@3 x ~@3", E: "x ~@3 x ~@5 x!3 ~ x ~", F: "~@2 x ~ x!4",
})).gain(0.4)

// drums · bongos
const bongos = s("bongo:18").struct("<~@12 x ~@65>").gain(1.06)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@2 A B ~ C ~ D ~ E ~ B ~ F ~ B ~ G ~ C ~@3 C ~ F ~ B ~@3 B@2 E A B ~@3 D ~ E ~ H D I ~ B ~ A@2 B ~ I ~ B A ~@2 B J E
  A H B E B@2 ~ A ~ G K B ~ L M ~
>`.pickRestart({
  A: "x", B: "~@5 x ~@2", C: "~ x ~@3 x ~@2", D: "~@4 x!2 ~@2", E: "~@10 x!3 ~@3", F: "x ~@9 x!3 ~@3", G: "~@12 x!4",
  H: "x ~@4 x ~@2", I: "~@8 x!2 ~ x ~@4", J: "~ x", K: "~ x ~@6", L: "x!3 ~@5", M: "x!2 ~@2",
})).gain(1.29)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  ~@2 A@7 B A@3 B A@3 C A@3 C A@3 B A@3 C A@3 B A@3 C A@3 B A@3 D A@3 C A@3 D A@3 C A@3 B A@3 B A@3 C A C A@3 E F ~
>`.pickRestart({
// … 29 more lines

More by Johnny Mercer