Strudelify

Tijuana Taxi

Alpert

KeyF majorTempo100 bpm
0:00/0:00
// Tijuana Taxi — Alpert
// 100 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 4/4 at bar 2, 2/4 at bar 15, 4/4 at bar 15, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 52 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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 · acoustic guitar steel · "GUITAR STRUM"
const acoustic_guitar_steel = note(`<
  ~@2 A B C D E F G C D E F H I J K L M N O P Q R S I A Q R T I A Q R U V W X Y Z AA AB AC AD C D E AE AF@3 AG
>`.pickRestart({
  A: "f2 [a3,c4,f4] c3 [a3,c4,f4] f2 [a3,c4,f4] c3 [a3,c4,f4]", B: "f2 [a3,c4,f4] c3 [a3,c4,f4] f2 ~@3",
  C: "f2 [a3,c4,f4] c3 [a3,c4,f4] g2 [g3,bb3,d4] c3 [g3,bb3,d4]", // F Gm
  D: "g2 [g3,bb3,d4] c3 [g3,c4,e4] f2 [a3,c4,f4] e2 [eb2,g3,bb3,eb4]", // Gm C F Eb
  E: "d3 [a3,d4,gb4] a2 [a3,d4,gb4] g2 [bb3,d4,g4] d3 [bb3,d4,g4]", // D Gm
  F: "c3@2 c3 c3@3 ~@6 c3@3 [g3,c4,e4]@3 d3@3 [g3,c4,e4]@3", // C
  G: "f3 [a3,c4,f4] c3 [a3,c4,f4] f2 [a3,c4,f4] c3 [a3,c4,f4]", // F
  H: "f3 [a3,c4,f4] c3 [a3,c4,f4] c3 [g3,c4,e4] g2 [g3,c4,e4]", // F C
  I: "c3 [g3,c4,e4] d3 [g3,c4,e4] f3 [a3,c4,f4] c3 [a3,c4,f4]", // C F
  J: "f2 [a3,c4,f4] e3 [bb3,eb4,g4] d3 [a3,d4,gb4] a2 [a3,d4,gb4]", // F Eb D
  K: "d3 [a3,d4,gb4] e3 [a3,d4,gb4] g2 [bb3,d4,g4] d3 [bb3,d4,g4]", // D Gm
  L: "g2 [bb3,d4,g4] g2 [a3,c4,e4] bb2 [bb3,d4,f4] f2 [bb3,d4,f4]", // Gm Am Bb
  M: "bb2 [bb3,db4,f4] bb2 [bb3,db4,f4] f2 [a3,c4,f4] e2 [g3,bb3,eb4]", // Bbm F Eb
  N: "d3 [a3,d4,gb4] a2 [a3,d4,gb4] g2 [g3,bb3,d4] d3 [g3,bb3,d4]", // D Gm
  O: "c3@3 [g3,c4,e4]@3 g2@3 [g3,c4,e4]@3 f2@3 c4 ~ d4 ~@2 c4 a3 ~@2", P: "f3 ~@3 f2 [a3,c4,f4] c3 [a3,c4,f4]",
  Q: "g2 [g3,bb3,d4] c3 [g3,bb3,d4] g2 [g3,bb3,d4] c3 [g3,c4,e4]", // Gm C
  R: "f2 [a3,c4,f4] e2 [eb2,g3,bb3,eb4] d3 [a3,d4,gb4] a2 [a3,d4,gb4]", // F Eb D
  S: "g2@3 [bb3,d4,g4]@3 d3@3 [bb3,d4,g4]@3 c3@2 c3 c3@3 ~@6", // Gm
  T: "g2 [bb3,d4,g4] d3 [bb3,d4,g4] c3 [g3,c4,e4] g2 [g3,c4,e4]", // Gm C
  U: "g2@3 [bb3,d4,g4]@3 d3@3 [bb3,d4,g4]@3 c3 ~@4 c3 ~@3 c3 ~@2", // Gm
  V: "~@2 [g3,c4,e4]@3 ~ d3@3 [g3,c4,e4]@3 f3@3 [a3,c4,f4]@3 c3@3 [a3,c4,f4]@3", // C F
  W: "c3 [g3,c4,e4] g2 [g3,c4,e4] c3 [g3,c4,e4] d3 [g3,c4,e4]", // C
  X: "f3 [a3,c4,f4] c3 [a3,c4,f4] f2 [a3,c4,f4] e3 [bb3,eb4,g4]", // F Eb
  Y: "d3 [a3,d4,gb4] a2 [a3,d4,gb4] d3 [a3,d4,gb4] e3 [a3,d4,gb4]", // D
  Z: "g2 [bb3,d4,g4] d3 [bb3,d4,g4] g2 [bb3,d4,g4] g2 [a3,c4,e4]", // Gm Am
  AA: "bb2 [bb3,d4,f4] f2 [bb3,d4,f4] bb2 [bb3,db4,f4] bb2 [bb3,db4,f4]", // Bb Bbm
  AB: "f2 [a3,c4,f4] e2 [g3,bb3,eb4] d3 [a3,d4,gb4] a2 [a3,d4,gb4]", // F Eb D
  AC: "g2 [g3,bb3,d4] d3 [g3,bb3,d4] c3 [g3,c4,e4] g2 [g3,c4,e4]", AD: "f2 ~@7", AE: "c3@2 c3 c3@3 ~@18",
  AF: "[g3,c4,e4]@2 ~ [g3,c4,e4]@2 ~@19", AG: "f4 ~@2 c4 ~ d4 ~@2 c4 a3@2 ~ f3@3 ~@9",
})).s("gm_acoustic_guitar_steel").gain(0.15)

// other · marimba
const marimba = note(`<
  ~@2 A B C D E F G C D E F H I J K L M N O P Q R S T U V W X Y Z AA AB@2 AC AD AE AF AG AH AI AJ AK C D AL AM AN AO AP
  ~
>`.pickRestart({
  A: "[a4,c5] ~@4 a4!2 c5 ~ a4@4 ~ [a4,c5] ~ [a4,c5] ~ [a4,c5] ~ [ab4,b4] ~ [g4,bb4] ~, ~@5 c5@2 ~@17", // Am Abm Gm
  B: "f4 a4 f4 a4 f4 a4 [f4,a4] f4 a4 f4 a4 ~ a4 ~@11, ~@11 f4@2 ~@11", // F
  C: "[a4,c5] ~@3 [a4,c5] ~ [a4,c5] ~ [a4,c5] ~@3 [bb4,d5]@2 ~@3 g4 bb4 g4 bb4 g4!2 ~", // Am Bb
  D: "[g4,bb4] ~@2 [g4,bb4] ~@2 [g4,bb4] ~ bb4@2 ~@2 a4@2 ~ [g4,bb4] ~ [a4,c5]@2 ~@5, ~@8 g4 ~@3 f4 ~@11", // Gm Am
  E: "d5 ~ d5!2 ~ d5!2 bb4 [bb4,d5] d5 bb4 d5 ~@2 g4 ~ g4 [g4,bb4] ~ g4 [g4,bb4] bb4 g4 [g4,bb4]", // Bb Gm
  F: "~@2 [g4,c5] c5 g4 [g4,c5] c5 g4 [g4,c5] c5 g4 [g4,c5] c5 g4 [g4,c5] c5 g4 [g4,c5] c5 g4 [g4,c5] c5 g4 [g4,c5]", // C5
  G: "a4 c5 [a4,c5] a4 c5 [a4,c5] a4 c5 [a4,c5] a4 c5 [a4,c5] a4 ~@11", // Am
  H: "a4 c5 [a4,c5] a4 c5 [a4,c5] a4 c5 [a4,c5] a4 c5 a4 e5 g5 [e5,g5] e5 g5 [e5,g5] e5 g5 [e5,g5] e5 g5 [e5,g5]", // Am Em
  I: "e5 g5 [e5,g5] e5 g5 [e5,g5] e5 g5 [e5,g5] e5 g5 [e5,g5] f5 a5 [f5,a5]!2 f5 a5!2 f5 [f5,a5] a5 f5 [f5,a5]", // Em F
  J: "a5 f5 [f5,a5] a5 f5 [f5,a5] a5 f5 [f5,a5] a5 f5 a5 d5 gb5 [d5,gb5] d5 gb5 [d5,gb5] d5 gb5 [d5,gb5] d5 gb5 [d5,gb5]", // F D
  K: "d5 gb5 [d5,gb5] d5 gb5 [d5,gb5] d5 gb5 [d5,gb5] ~ gb5!2 g5 ~ [g5,bb5] g5 bb5 [g5,bb5] g5 bb5 [g5,bb5] g5 bb5 [g5,bb5]", // D Gm
  L: "g5 bb5 [g5,bb5] g5 bb5 [g5,bb5] g5 bb5 [g5,bb5] g5 bb5 g5 [c6,e6] ~@2 [bb5,d6] ~ [c6,e6] ~@2 [bb5,d6] ~@3", // Gm C Bb C Bb
  M: "~@2 [bb5,d6] [c6,e6] ~ [bb5,d6] [c6,e6] ~@2 [bb5,d6] ~@2 [bb5,d6] ~@2 [a5,c6] ~ [bb5,d6] ~@2 [a5,c6] ~@3", // Bb C Bb C Bb Am Bb Am
  N: "~@2 [a5,c6] [bb5,d6] ~ [a5,c6] [bb5,d6] ~@2 [a5,c6] ~@2 [a5,c6] ~@2 [g5,bb5] ~ [a5,c6] ~@2 [g5,bb5] ~@3", // Am Bb Am Bb Am Gm Am Gm
  O: "~@2 [g5,bb5] [a5,c6] ~ [g5,bb5] [a5,c6] ~@2 [g5,bb5] ~@14", P: "~@12 [a4,c5] ~@3 [a4,c5] ~ [a4,c5] ~ [a4,c5] ~@3",
  Q: "[bb4,d5]@2 ~@3 g4 bb4 g4 bb4 g4!2 ~ [g4,bb4] ~@2 [g4,bb4] ~@2 [g4,bb4] ~ bb4@2 ~@2, ~@20 g4 ~@3", // Bb Gm
  R: "a4@2 ~ [g4,bb4] ~ [a4,c5]@2 ~@5 d5 ~ d5!2 ~ d5!2 bb4 [bb4,d5] d5 bb4 d5, f4 ~@23", // Gm Am Bb
  S: "~@2 g4 ~ g4 [g4,bb4] ~ g4 [g4,bb4] bb4 g4 [g4,bb4] ~@2 [g4,c5] c5 g4 [g4,c5] c5 g4 [g4,c5] c5 g4 [g4,c5]", // Gm C5
  T: "c5 g4 [g4,c5] c5 g4 [g4,c5] c5 g4 [g4,c5] c5 g4 [g4,c5] a4 c5 [a4,c5] a4 c5 [a4,c5] a4 c5 [a4,c5] a4 c5 [a4,c5]", // C5 Am
  U: "a4 ~@5 [f5,a5] ~@2 [a5,c6] ~@2 c6 f6 [c6,f6] c6 ~ [c6,e6] ~ [bb5,d6] ~ [a5,c6] ~ g5", // F Am F5 C Bb Am
  V: "bb5 g5 [g5,bb5] bb5 g5 [g5,bb5] ~ [e5,g5] ~@2 [g5,bb5] ~@2 c6 e6 c6@2 [bb5,d6] ~ [a5,c6] ~ [g5,bb5] ~ a5, ~@15 e6 ~@8", // Gm Em Gm Bb Am Gm
  W: "[a5,c6] c6 a5 [a5,c6] c6 a5 [d5,gb5,c6] ~@2 [gb5,a5] ~@2 [a5,d6]@3 [a5,c6] ~@2 [g5,bb5] ~@2 [f5,a5] ~ [g5,bb5]", // Am D7 Gbm D5 Am Gm F Gm
  X: "~@2 [e5,g5] e5 g5 [e5,g5] g5@3 a5 ~@2 [c6,e6]@2 ~@3 [c6,e6]@2 ~@2 [c6,e6] ~@2", // Em C
  Y: "~@2 [bb5,d6]@2 ~@2 [a5,c6] ~@2 [g5,bb5] ~ f5 [f5,a5] a5 f5 [f5,a5] a5 f5 [f5,a5] a5 f5 [f5,a5] a5 f5", // Bb Am Gm F
  Z: "[f5,a5] ~ f3 a3 ~ c4 f4 ~@2 a4 ~@2 [c6,f6] ~@2 [c6,e6] ~@2 [bb5,d6] ~@2 [a5,c6] ~ [g5,bb5]", // F F5 C Bb Am Gm
  AA: "~@2 [g5,bb5] ~@2 [f5,a5] ~ [g5,bb5] ~@2 [e5,g5] ~ c6 e6 [c6,e6] c6 e6 [bb5,c6,d6] [a5,c6] ~ [g5,bb5] ~@2 [f5,a5]", // Gm F Gm Em C Bb Am Gm …
  AB: "[~@2 [f5,a5] ~@2 [g5,bb5] [a5,c6]@2 ~ [f5,a5] ~@2 [d6,gb6]@3 ~@2 [c6,e6] [bb5,d6] ~ [a5,c6] ~@2 d6@2 ~ [bb5,d6] ~@2 [a5,c6] [g5,bb5] ~@2 [a5,c6] ~@2 [c6,e6] ~@4 [c6,e6] ~@3 [c6,e6] ~@2, ~@23 bb5 ~@24]/2", // F Gm Am F D C Bb Am …
  AC: "~@2 [bb5,d6]@2 ~@2 [a5,c6] ~@2 [g5,bb5] ~@2 f5 a5 [f5,a5] f5 a5 f5 ~@6", // Bb Am Gm F
  AD: "e5 g5 [e5,g5] e5 g5 [e5,g5] e5 g5 [e5,g5] e5 g5 [e5,g5] e5 g5 [e5,g5] e5 g5 [e5,g5] e5 g5 [e5,g5] e5 g5 [e5,g5]", // Em
  AE: "f5 a5 [f5,a5]!2 f5 a5!2 f5 [f5,a5] a5 f5 [f5,a5] a5 f5 [f5,a5] a5 f5 [f5,a5] a5 f5 [f5,a5] a5 f5 a5", // F
  AF: "d5 gb5 [d5,gb5] d5 gb5 [d5,gb5] d5 gb5 [d5,gb5] d5 gb5 [d5,gb5] d5 gb5 [d5,gb5] d5 gb5 [d5,gb5] d5 gb5 [d5,gb5] ~ gb5!2", // D
  AG: "g5 ~ [g5,bb5] g5 bb5 [g5,bb5] g5 bb5 [g5,bb5] g5 bb5 [g5,bb5] g5 bb5 [g5,bb5] g5 bb5 [g5,bb5] g5 bb5 [g5,bb5] g5 bb5 g5", // Gm
  AH: "[c6,e6] ~@2 [bb5,d6] ~ [c6,e6] ~@2 [bb5,d6] ~@5 [bb5,d6] [c6,e6] ~ [bb5,d6] [c6,e6] ~@2 [bb5,d6] ~@2", // C Bb C Bb C Bb C Bb
  AI: "[bb5,d6] ~@2 [a5,c6] ~ [bb5,d6] ~@2 [a5,c6] ~@5 [a5,c6] [bb5,d6] ~ [a5,c6] [bb5,d6] ~@2 [a5,c6] ~@2", // Bb Am Bb Am Bb Am Bb Am
  AJ: "[a5,c6] ~@2 [g5,bb5] ~ [a5,c6] ~@2 [g5,bb5] ~@5 [g5,bb5] [a5,c6] ~ [g5,bb5] [a5,c6] ~@2 [g5,bb5] ~@2", // Am Gm Am Gm Am Gm Am Gm
  AK: "[f5,a5] ~@23", AL: "d5 ~ d5!2 ~ d5!2 bb4 [bb4,d5] d5 bb4 d5 ~@2 g4 ~ g4 [g4,bb4] ~ g4 [g4,bb4] bb4 g4 bb4",
  AM: "[c5,e5]@2 ~ [c5,e5] ~@20", AN: "[bb4,d5]@2 ~ [bb4,d5]@2 ~@19", AO: "[a4,c5]@2 ~ [a4,c5]@2 ~@19",
  AP: "[g4,bb4]@2 ~ [g4,bb4]@2 ~@19", // Gm
})).s("gm_marimba").gain(0.34)

// other · marimba · soft notes
const marimba_soft = note("<~@2 A ~ B ~ C D ~ B ~ C D ~ E F G ~@5 H I J ~@12 K L M ~@4 B ~ C ~@5>".pickRestart({
  A: "~@8 a4 c5@5 ~@10", B: "~@21 bb4@2 ~", C: "~ bb4!2 ~ bb4!2 ~@6 bb4 g4 bb4!2 ~@2 bb4 ~@5", D: "c5 g4 ~@22",
  E: "~@17 f5 ~@6", F: "~@11 f5 ~@12", G: "~@9 d5 ~ d5 ~ bb5 ~@10", H: "~@9 bb4@2 ~@13", I: "~@13 bb4!2 ~ bb4!2 ~@6",
  J: "bb4 g4 bb4!2 ~@2 bb4 ~@5 c5 g4 ~@10", K: "~@5 f5 ~@17 f5", L: "~@21 d5 ~ d5", M: "~ bb5 ~@22",
})).s("gm_marimba").gain(0.19)

// bass · electric bass finger · "BASS"
const bass = note(`<
  ~@2 A B C D E F G C D E F H I J K L M N O P Q R S T U Q R V T U Q R W X Y Z AA AB AC AD AE AF C D E AG AH@3 AI
>`.pickRestart({
  A: "f2@3 ~@2 f2 c2@4 ~@2 f2@3 ~@2 f2 c2@4 ~@2", B: "f2@3 ~@2 f2 c2@4 ~@2 f1@2 ~@10",
  C: "f2@3 ~@3 c2@5 ~ g2@3 ~@3 c2@3 ~@3, ~@5 f2@2 ~@10 g2@2 ~@5",
  D: "g2@3 ~@3 c2@5 ~ f2@3 ~@3 e2@2 ~ eb2@2 ~, ~@5 g2@2 ~@10 f2@2 ~@5",
  E: "d2@4 ~ d2 a1@2 ~ d2@2 ~ g2@4 ~ g2 d2@2 ~ g2@2 ~", F: "c2 ~ c2!2 ~@4 g2@4 c2@2 c2@4 d2 ~@2 e2@2 ~",
  G: "f2@5 ~ c2@5 ~ f1@3 c2@3 d2@3 e2@3", H: "f2@3 f2@3 e2@3 d2@3 c2@4 ~ c2 g1@4 ~ g1",
  I: "c2@4 ~ c2 d2 ~@2 e2@2 ~ f2@4 ~ f2 c2@4 ~ c2", J: "f2@3 ~@2 f2 e2 ~@2 eb2@2 ~ d2@4 ~ d2 a1@4 ~ a1",
  K: "d2@4 ~ d2 e2 ~@2 gb2 ~@2 g2@3 ~@2 g2 d2@4 ~ d2", L: "g2@4 g1 ~ g1@2 ~ a1@2 ~ bb1@4 ~ bb1 f1@4 ~ f1",
  M: "bb1@4 ~ bb1 bb1@4 ~@2 f2@4 ~ f2 e2@2 ~ eb2@2 ~", N: "d2@4 ~ d2 a1@3 ~@3 g2@3 ~@2 g2 d2@4 ~@2",
  O: "c2@4 ~ c2 g1@2 ~ c2@2 ~ f1@3 c3 ~ d3 ~@2 c3 a2 ~@2", P: "f2@4 ~@8 f2@3 ~@3 c2@5 ~, ~@17 f2@2 ~@5",
  Q: "g2@3 ~@3 c2@3 ~@3 g2@3 ~@3 c2@5 ~, ~@5 g2@2 ~@10 g2@2 ~@5",
  R: "f2@3 ~@3 e2@2 ~ eb2@2 ~ d2@4 ~ d2 a1@2 ~ d2@2 ~, ~@5 f2@2 ~@17", S: "g2@4 ~ g2 d2@2 ~ g2@2 ~ c2 ~ c2!2 ~@4 g2@4",
  T: "c2@2 c2@4 d2 ~@2 e2@2 ~ f2@5 ~ c2@5 ~", U: "f1@3 c2@3 d2@3 e2@3 f2@3 ~@3 c2@5 ~, ~@17 f2@2 ~@5",
  V: "g2@4 ~ g2 d2@2 ~ g2@2 ~ c2@4 ~ c2 ~@2 g2@4", W: "g2@4 ~ g2 d2@2 ~ g2@2 ~ c2 ~@4 c2@2 ~@2 c2@2 ~",
  X: "~@2 c2@4 d2 ~@2 e2@2 ~ f2@3 f2@3 e2@3 d2@3", Y: "c2@4 ~ c2 g1@4 ~ g1 c2@4 ~ c2 d2 ~@2 e2@2 ~",
  Z: "f2@4 ~ f2 c2@4 ~ c2 f2@3 ~@2 f2 e2 ~@2 eb2@2 ~", AA: "d2@4 ~ d2 a1@4 ~ a1 d2@4 ~ d2 e2 ~@2 gb2 ~@2",
  AB: "g2@3 ~@2 g2 d2@4 ~ d2 g2@4 g1 ~ g1@2 ~ a1@2 ~", AC: "bb1@4 ~ bb1 f1@4 ~ f1 bb1@4 ~ bb1 bb1@4 ~@2",
  AD: "f2@4 ~ f2 e2@2 ~ eb2@2 ~ d2@4 ~ d2 a1@3 ~@3", AE: "g2@3 ~@2 g2 d2@4 ~@2 c2@4 ~ c2 g1@2 ~ c2@2 ~", AF: "f1 ~@7",
  AG: "c2 ~ c2!2 ~@20", AH: "c2@3 c2@2 ~@19", AI: "f3 ~@2 c3 ~ d3 ~@2 c3 a2 ~@2 f2@2 ~@10",
})).s("gm_electric_bass_finger").gain(0.44)

// chords · acoustic guitar nylon · "GUITAR 2"
const acoustic_guitar_nylon = note(`<
  ~@4 A B C D E F G H I J K L M N O P Q R S L T R U S L V W U S L X Y Z AA AB AC AD AE AF AG A B C D ~@4
>`.pickRestart({
  A: "[a3,c4,f4] ~@4 [a3,c4,f4]@4 ~@3 [bb3,d4,g4] ~@4 [bb3,d4,g4]@4 ~@3", // F Gm
  B: "[bb3,d4,g4] ~@4 [bb3,d4,g4]@4 ~@3 [a3,c4,f4] ~@4 [a3,c4,f4]@4 ~@3", // Gm F
  C: "[a3,d4,gb4] ~@4 [a3,d4,gb4]@4 ~@3 [bb3,d4,g4] ~@4 [bb3,d4,g4]@4 ~@3", D: "[g3,c4,e4] g3 [c4,e4] [g3,c4,e4] ~@20",
  E: "[a3,c4,f4] ~@4 [a3,c4,f4]@4 ~@3 [a3,c4,f4] ~@4 [a3,c4,f4]@3 ~@4", // F
  F: "[a3,c4,f4] ~@4 [a3,c4,f4]@4 ~@3 [bb3,d4,g4]@2 ~@3 [bb3,d4,g4]@4 ~@3", // F Gm
  G: "[bb3,d4,g4]@2 ~@3 [bb3,d4,g4]@4 ~@3 [a3,c4,f4] ~@4 [a3,c4,f4]@4 ~@3", // Gm F
  H: "[a3,d4,gb4] ~@4 [a3,d4,gb4]@4 ~@3 [bb3,d4,g4]@2 ~@3 [bb3,d4,g4]@4 ~@3", I: "[g3,c4,e4] ~ [g3,c4,e4]!2 ~@20",
  J: "[a3,c4,f4] ~@4 [a3,c4,f4]@5 ~@2 [g3,c4,e4] ~@4 [g3,c4,e4]@5 ~@2", // F C
  K: "[g3,c4,e4] ~@4 [g3,c4,e4]@4 ~@3 [a3,c4,f4] ~@4 [a3,c4,f4]@4 ~@3", // C F
  L: "[a3,c4,f4] ~@4 [a3,c4,f4]@4 ~@3 [a3,d4,gb4] ~@4 [a3,d4,gb4]@4 ~@3", // F D
  M: "[a3,d4,gb4] ~@4 [a3,d4,gb4]@3 ~@4 [bb3,d4,g4] ~@4 [bb3,d4,g4]@4 ~@3", // D Gm
  N: "[bb3,d4,g4] ~@4 [bb3,d4,g4]@3 ~@4 [bb3,d4,f4] ~@4 [bb3,d4,f4]@4 ~@3", // Gm Bb
  O: "[bb3,db4,f4]@2 ~@3 [bb3,db4,f4]@3 ~@4 [a3,c4,f4,gb4] ~@4 [a3,c4,f4]@4 ~@3", // Bbm F
  P: "[a3,d4,f4] ~@4 [a3,d4,f4]@3 ~@4 [bb3,d4,g4] ~@4 [bb3,d4,g4]@3 ~@4", // Dm Gm
  Q: "[g3,c4,e4]@2 ~@3 [g3,c4,e4]@4 ~@3 [a3,c4,f4]@2 ~@10", R: "~@12 [a3,c4,f4] ~@4 [a3,c4,f4]@4 ~@3",
  S: "[bb3,d4,g4] ~@4 [bb3,d4,g4]@4 ~@3 [bb3,d4,g4] ~@4 [bb3,d4,g4]@4 ~@3", // Gm
  T: "[bb3,d4,g4] ~@4 [bb3,d4,g4]@4 ~@3 [g3,c4,e4] g3 [c4,e4] [g3,c4,e4] ~@8", // Gm C
  U: "[a3,c4,f4] ~@4 [a3,c4,f4]@3 ~@4 [a3,c4,f4] ~@4 [a3,c4,f4]@4 ~@3", // F
  V: "[bb3,d4,g4] ~@4 [bb3,d4,g4]@4 ~@3 [g3,c4,e4] ~@4 [g3,c4,e4]@5 ~@2", // Gm C
  W: "[g3,c4,e4]@2 ~@3 [g3,c4,e4]@4 ~@3 [a3,c4,f4] ~@4 [a3,c4,f4]@4 ~@3", // C F
  X: "[bb3,d4,g4] ~@4 [bb3,d4,g4]@4 ~@3 [c4,e4,g4]@2 ~@3 [c4,e4,g4]@2 ~@3 [e4,g4]@2, ~@21 c4@2 ~", // Gm C Em
  Y: "~@12 [a3,c4,f4] ~@4 [a3,c4,f4]@5 ~@2", Z: "[g3,c4,e4] ~@4 [g3,c4,e4]@5 ~@2 [g3,c4,e4] ~@4 [g3,c4,e4]@4 ~@3",
  AA: "[a3,c4,f4] ~@4 [a3,c4,f4]@4 ~@3 [a3,c4,f4] ~@4 [a3,c4,f4]@4 ~@3", // F
  AB: "[a3,d4,gb4] ~@4 [a3,d4,gb4]@4 ~@3 [a3,d4,gb4] ~@4 [a3,d4,gb4]@3 ~@4", // D
  AC: "[bb3,d4,g4] ~@4 [bb3,d4,g4]@4 ~@3 [bb3,d4,g4] ~@4 [bb3,d4,g4]@3 ~@4", // Gm
  AD: "[bb3,d4,f4] ~@4 [bb3,d4,f4]@4 ~@3 [bb3,db4,f4]@2 ~@3 [bb3,db4,f4]@3 ~@4", // Bb Bbm
  AE: "[a3,c4,f4,gb4] ~@4 [a3,c4,f4]@4 ~@3 [a3,d4,f4] ~@4 [a3,d4,f4]@3 ~@4", // F Dm
  AF: "[bb3,d4,g4] ~@4 [bb3,d4,g4]@3 ~@4 [g3,c4,e4]@2 ~@3 [g3,c4,e4]@4 ~@3", AG: "[a3,c4,f4] ~@11",
})).s("gm_acoustic_guitar_nylon").gain(0.19)

// other · trombone · "T-BONE"
const trombone = note("<A ~@12 B C D E F G H I J ~@13 K@5 L M N O ~@7 P>".pickRestart({
  A: "~@12 [f2,f3]@3 ~@2 [f2,f3]@4 ~@3", B: "~@3 [f2,f3] ~ [f2,f3] ~ [g2,g3] [f2,f3]@2 ~ [e2,e3]@9 ~@4",
  C: "~@3 [g2,g3] ~ [g2,g3] [a2,a3] ~ [g2,g3] ~@2 [f2,f3]@10 ~@3", // G A G F
  D: "~@3 [f2,f3] ~ [f2,f3] [g2,g3] ~ [f2,f3] ~@2 [gb2,gb3]@8 ~@5", // F G F Gb
  E: "~@3 [a2,a3] ~ [a2,a3] [bb2,bb3] [a2,a3]@2 ~@2 [g2,g3]@11 ~@2", F: "~@12 d4 ~@2 d4@2 d4@2 ~ d4@2 ~@2",
  G: "~@2 db4!2 ~ db4 db4@2 ~ db4@2 ~ c4 ~@2 c4@2 c4@2 ~ c4@2 ~@2",
  H: "~@2 d4!2 ~ d4 d4@2 ~ d4@2 ~ bb3 ~@2 bb3@2 bb3@2 ~ bb3@2 ~@2", I: "~@2 c4!2 ~ c4 c4@2 ~ c4@2 ~ a3@2 ~@10",
  J: "[f1,f2,f3] ~@3", // F
  K: "[~@15 [f2,f3] ~ [f2,f3] ~ [g2,g3] [f2,f3]@2 ~ e2@9 ~@7 [g2,g3] ~ [g2,g3] [a2,a3] ~ [g2,g3] ~@2 [f2,f3]@10 ~@6 [f2,f3] ~ [f2,f3] [g2,g3] ~ [f2,f3] ~@2 [gb2,gb3]@8 ~@8 [a2,a3] ~ [a2,a3] [bb2,bb3] [a2,a3]@2 ~@2 [g2,g3]@11 ~@14, ~@23 e3@6 ~@91]/5", // F G F G A G F G …
  L: "d4 ~@2 d4@2 d4@2 ~ d4@2 ~@4 db4!2 ~ db4 db4@2 ~ db4@2 ~",
  M: "c4 ~@2 c4@2 c4@2 ~ c4@2 ~@4 d4!2 ~ d4 d4@2 ~ d4@2 ~",
  N: "bb3 ~@2 bb3@2 bb3@2 ~ bb3@2 ~@4 c4!2 ~ c4 c4@2 ~ c4@2 ~", O: "a3 ~@5 [f1,f2,f3]@3 ~@3", P: "~@18 [f2,f3]@5 ~",
})).s("gm_trombone").gain(0.62)

// drums · kick
const kick = s("bd").struct("<A B C D C@3 E C@4 E C@7 D F C@2 G H C@8 I J C@7 K C@3 L M N@2 K>".pickRestart({
  A: "x ~@4 x ~@6 x ~@4 x ~@6", B: "x ~@4 x ~@6 x ~@11", C: "x!4", D: "x!3 ~", E: "x ~@7 x ~@3 x ~ x ~@3 x ~@2 x ~@2",
  F: "~@2 x!2", G: "x ~@2 x ~@2 x ~@3 x ~", H: "x ~ x ~@3 x ~@2 x ~@2 x ~@5 x ~@5", I: "x ~@5 x ~@5 x ~@4 x ~@3 x ~@2",
  J: "~ x!4 ~ x ~", K: "x", L: "~ x ~@22", M: "x ~@2 x!2 ~", N: "x!2",
})).gain(0.35)

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

// drums · ride
const ride = s("rd").struct("<A@2 B C B@3 D B@4 D B@7 E F B@2 G H B@9 I B@7 ~ B@3 ~@5>".pickRestart({
  A: "x ~@4 x ~@2 x!2 ~ x!2 ~@4 x ~@2 x!2 ~ x", B: "x!8", C: "x!5 ~@3", D: "x ~ x!2 ~@11 x ~@3 x ~ x ~@2", E: "x!4 ~@4",
  F: "~@4 x!4", G: "x ~@2 x ~@2 x ~@2 x ~@2 x ~ x!2 ~@8", H: "~@3 x ~@3 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2", I: "~ x!7",
})).gain(0.3)

// drums · bongos
const bongos = s("bongo:4").struct(`<
  ~@2 A B A@3 C A@4 C D E@4 D@2 F G E@2 H I E@8 J K A@4 L@2 D ~ A@3 ~@5
>`.pickRestart({
  A: "x ~@4 x!2 ~@5 x ~@4 x!2 ~ x ~@3", B: "x ~@4 x!2 ~@5 x ~@11", C: "x ~ x!2 ~@11 x ~@2 x ~@2 x ~@2",
  D: "x ~@4 x!2 ~@5 x ~@4 x!2 ~@5", E: "x ~@4 x!2 ~ x ~@3 x ~@4 x!2 ~@5", F: "x ~@4 x!2 ~@17", G: "~@12 x ~@4 x!2 ~@5",
  H: "x ~@4 x!2 ~ x ~@3 x ~ x!2 ~@8", I: "~@3 x ~@2 x ~@2 x ~@2 x ~@4 x!2 ~@5",
  J: "x ~@4 x!2 ~ x ~@3 x ~@4 x ~@3 x ~@2", K: "~@2 x ~@3 x ~@2 x ~@2 x ~@4 x!2 ~@5", L: "x ~@4 x!2 ~@5 x ~@4 x ~@6",
})).gain(0.78)
// … 10 more lines

More by Alpert