Strudelify
A Swinging Safari cover art

Swinging Safari

A Swinging Safari

Kaempfert

KeyE♭ majorTempo153 bpm
0:00/0:00
// A Swinging Safari — Kaempfert
// 153 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 117 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(153/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 · alto sax
const alto_sax = note(`<
  ~@16 A B C D E B F G@2 ~@7 A B C H I B J K@2 ~@31 A B L D M B N G@2 ~@7 A B C O P Q C R@2 ~@7 A B C D S Q N T@2 U@2
  V@2
>`.pickRestart({
  A: "~@15 bb3", B: "[g3,eb4]@4 [bb3,g4] ~@2 bb3 [g3,eb4]@4 [bb3,g4] ~@2 c4",
  C: "[ab3,eb4]@4 [c4,ab4] ~@2 c4 [ab3,eb4]@4 [c4,ab4] ~@2 bb3", // Ab5 Fm Ab5 Fm
  D: "[g3,eb4]@4 [bb3,g4] ~@2 bb3 [g3,eb4]@4 [bb3,g4] ~@2 bb3", E: "d4@3 ~ d4@2 ~ [d3,bb3]@5 ~@3 bb3, ~@3 f4@2 ~@11",
  F: "[ab3,eb4]@4 c4@2 ~ c4 [ab3,eb4]@4 [c4,ab4] ~@2 bb3, ~@4 ab4 ~@11", // Ab5 Fm
  G: "[[g3,eb4]@4 [bb3,g4] ~@2 bb3 ab4@3 f4 d4@2 ~ [g3,eb4]@5 ~@12, ~@4 f3@3 ~@9]/2", // Cm Eb Cm
  H: "[g3,eb4]@4 [bb3,g4] ~@2 bb3 [g3,eb4]@4 [bb3,gb4,g4] ~@2 bb3", // Cm Eb Cm Eb
  I: "d4@3 ~ d4@2 ~ [d3,bb3]@6 ~@2 bb3, f3@5 ~@11, ~@3 f4@2 ~@11", // Gm
  J: "[ab3,eb4]@4 [c4,ab4]@2 ~ c4 [ab3,eb4]@4 [c4,ab4] ~@2 bb3", // Ab5 Fm Ab5 Fm
  K: "[[g3,eb4]@4 [bb3,g4] ~@2 bb3 ab4@3 f4 d4@2 ~ [g3,eb4]@4 ~@13, ~@4 f3@3 ~@9]/2", // Cm Eb Cm
  L: "[ab3,eb4]@4 [c4,ab4] ~@2 [b3,c4] [ab3,eb4]@4 [c4,ab4] ~@2 bb3", // Ab5 Fm Cmaj7 Ab5 Fm
  M: "[f3,d4]@3 ~ d4@2 ~ [d3,bb3]@6 ~@2 bb3, ~@3 f4@2 ~@11", // Dm Gm
  N: "[ab3,eb4]@4 ab4@2 ~ c4 [ab3,eb4]@4 [c4,ab4] ~@2 bb3, ~@4 c4 ~@11", // Ab5 Fm
  O: "[g3,eb4]@4 [bb3,g4] ~@2 bb3 [g3,eb4]@4 [bb3,g4] ~@2 bb3, ~@8 f3 ~@7", // Cm Eb Cm Eb
  P: "d4@3 f4 d4@2 ~ [d3,bb3]@6 ~@2 bb3, f3@3 ~@5", Q: "[g3,eb4]@4 g4@2 ~ bb3 [g3,eb4]@4 [bb3,g4] ~@2 c4, ~@4 bb3 ~@11",
  R: "[[g3,eb4]@4 [bb3,g4] ~@2 d4 f3@3 f4 d4@2 ~ [g3,eb4]@8 ~@9, ~@4 ab4 ~@11]/2", // Cm Eb Cm
  S: "d4@3 ~ d4@2 ~ [d3,bb3]@5 ~@3 bb3, f3@3 ~@5, ~@3 f4@2 ~@11", // Gm
  T: "[[g3,eb4]@4 [bb3,g4] ~@2 bb3 ab4@3 f4 d4@2 ~ [g3,eb4]@7 ~@9 bb3, ~@8 f3@5 ~@19]/2", // Cm Eb Cm
  U: "[[g3,eb4]@4 [bb3,g4] ~@3 [f3,ab4]@3 f4 d4@2 ~ [g3,eb4]@6 ~@10 bb3]/2", // Cm Eb Fm Cm
  V: "[[g3,eb4]@4 [bb3,g4] ~@3 [f3,ab4]@3 f4 d4 ~@2 [g3,eb4]@2 ~@6 [eb2,eb3]@5 ~@4]/2", // Cm Eb Fm Cm Eb
})).s("gm_alto_sax").gain(0.48)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@9 A B C D E B F G E B H I J K L@2 J B M D J B N@2 E B O P J B Q@2 R ~@6 S T U V W X@2 Y Z AA AB AC AB AD AE AF W
  AG@2 AH AI AJ AK AL AM AN AO AP AQ AR B AS@2 AT AU O AV AD AW AX@2 E AY AZ BA BB BC BD@2 BE ~@6 BF BG BH BI BJ BG BK
  BL@2 BM@2 BN@2
>`.pickRestart({
  A: "eb2@5 ~@3 g1@6 ~@2", B: "ab1@5 ~@2 ab1@4 g1 f1@3 ~", C: "bb1@3 ~ bb1@4 g1@4 eb2@4",
  D: "bb1@4 ~@3 bb1@4 ~ d2@3 ~, ~@11 c2@2 ~@3", E: "eb2@4 ~@3 eb2 g1@5 ~@2 g1", F: "eb2@2 ~@2 eb2@3 ~ bb1@3 c2 d2@3 ~",
  G: "eb2@4 d2@4 c2@3 ~ bb1@4", H: "bb1@2 ~@5 bb1 g1@3 ~ eb2@3 ~", I: "bb1@4 ~@3 bb1@2 ~@2 bb1 c2@3 d2",
  J: "eb2@5 ~@2 eb2 g1@5 ~@2 g1", K: "ab1@4 ~@3 ab1@4 ~ f1@3 ~, ~@11 g1@2 ~@3",
  L: "[eb2@2 ~@2 eb2@2 ~@2 bb1@3 c2 d2@2 ~ eb2@2 ~@2 eb2 d2@3 ~ c2@3 ~ bb1@4]/2", M: "bb1@5 ~@2 bb1 g1@4 eb2@3 ~",
  N: "[eb2@2 ~@2 eb2@3 ~ bb1@3 c2 d2@2 ~ eb2@2 ~@2 eb2 d2@3 ~ c2@3 ~ bb1@4]/2", O: "bb1@2 ~@2 bb1@4 g1@4 eb2@3 ~",
  P: "bb1@4 ~@3 bb1@4 c2 d2@3 ~", Q: "[eb2@3 ~ eb2@3 ~ bb1@3 c2 d2@2 ~ eb2@2 ~@2 eb2 d2@2 ~@2 c2@2 ~@2 bb1@2 ~@2]/2",
  R: "eb2@5 ~@11", S: "~@4 ab1@4 g1@4 f1@3 ~, ~@3 bb1@2 ~@11", T: "eb2 ~ eb2@2 g1 ~ g1@2", U: "ab1 ~ ab1@2 a1 ~ a1@2",
  V: "bb1@2 ~@2 bb1@3 ~ g1@4 f1@3 ~", W: "eb2@3 ~ db2@4 c2@4 bb1@4",
  X: "[ab1 ~@3 eb1@2 ~@2 ab1 ~ ab1@2 a1 ~ a1@2, ~@7 ab1@2 ~@6 eb1@2 ~@15]/2", Y: "bb1 ~ bb1@2 c2 ~ c2@2",
  Z: "eb2@2 ~@2 eb2@4 e2@2 ~@2 e2@3 ~", AA: "f1@4 g1@4 ab1@3 ~ a1@3 ~", AB: "bb1 ab1 g1 f1", AC: "eb2 db2 c2 b1",
  AD: "eb2 ~@3 eb2@4 g1@2 ~@2 g1@3 ~", AE: "ab1@2 ~@2 ab1@4 a1@2 ~@2 a1@3 ~", AF: "bb1@3 ~ bb1@4 g1@4 f1@3 ~",
  AG: "[ab1@4 ~@4 eb1@5 ~@3 ab1@5 ~@3 a1@2 ~@2 a1@3 ~, ~@7 ab1@2 ~@6 eb1@2 ~@6 ab1@2 ~@7]/2",
  AH: "bb1@2 ~@2 bb1@3 ~ c2@2 ~@2 c2@3 ~", AI: "eb2 ~ eb2@2 e2 ~ e2@2", AJ: "f1 g1 ab1 a1",
  AK: "bb1@4 ab1@3 ~ g1@4 f1@3 ~", AL: "eb2@5 ~@2 eb2 ab1@4 ~@3 ab1", AM: "eb2@3 ~ d2@3 ~ c2@3 ~ bb1@4",
  AN: "eb2@5 ~@2 eb2 g1@4 ~@3 g1", AO: "ab1@5 ~@2 ab1@3 ~ g1 f1@3 ~", AP: "bb1@3 ~ bb1@3 ~ g1@4 eb2@4",
  AQ: "bb1 ~@3 bb1@2 ~@2 bb1@3 c2 d2@4", AR: "eb2@2 ~@6 g1@5 ~@2 g1, ~@7 eb2@2 ~@7",
  AS: "[eb2@3 ~ eb2@3 ~ bb1@2 ~ c2 d2@2 ~ eb2@2 ~@2 eb2 d2@2 ~@2 c2@2 ~@2 bb1@4]/2",
  AT: "eb2 ~@3 eb2@2 ~@2 g1@2 ~@2 g1@3 ~", AU: "ab1@2 ~@2 ab1@3 ~ g1@3 ~ f1@3 ~", AV: "bb1 ~@3 bb1@4 c2@4 d2@4",
  AW: "ab1@2 ~@2 ab1@3 ~ g1@4 f1@3 ~",
  AX: "[eb2@2 ~@2 eb2@3 ~ bb1@2 ~@2 d2@2 ~ eb2@2 ~@2 eb2 d2@2 ~@2 c2@2 ~@2 bb1@4]/2", AY: "ab1@5 ~@2 ab1@4 g1 f1@4",
  AZ: "eb2 ~ eb2 ~ g1 ~ g1 ~", BA: "bb1@2 ~@2 bb1@2 ~ bb1@4 c2 d2@4", BB: "eb2@2 ~@2 eb2@3 ~ g1@2 ~@2 g1@3 ~",
  BC: "ab1@2 ~@3 ab1 ~ ab1@4 g1 f1@2 ~@2",
  BD: "[eb2@2 ~@2 eb2@2 ~@2 bb1@4 d2@2 ~ eb2@2 ~@2 eb2 d2@2 ~@2 c2@2 ~@2 bb1@3 ~]/2", BE: "eb2@3 ~@5",
  BF: "~ ab1 g1 f1, ~@3 bb1@2 ~@11", BG: "eb2@2 ~@2 eb2@4 g1@2 ~@2 g1@3 ~", BH: "ab1@2 ~@2 ab1@3 ~ g1@4 f1@4",
  BI: "bb1 ~ bb1@2 g1@2 eb2@2", BJ: "bb1@2 ~@2 bb1 ~@3 bb1@2 ~ bb1 c2@3 d2", BK: "ab1@2 ~@2 ab1@3 ~ g1@4 f1@2 ~@2",
  BL: "[eb2@2 ~@2 eb2@2 ~@2 bb1@2 ~@2 d2@2 ~ eb2@2 ~@2 eb2 d2@2 ~@2 c2@2 ~@2 bb1@3 ~]/2",
  BM: "[eb2 ~@3 eb2@2 ~@2 bb1@2 ~@2 d2@2 ~ eb2@2 ~@2 eb2 d2@2 ~@2 c2@2 ~@2 bb1@2 ~@2]/2",
  BN: "[eb2@2 ~@2 eb2@2 ~@2 bb1@3 ~ d2@2 ~ eb2@2 ~@6 eb1@2 ~@7]/2",
})).s("gm_electric_bass_finger").gain(0.64)

// chords · piano · "A.PIANO"
const piano = note(`<
  ~@5 A B C@2 A B A D A B C@2 A B A D A B C@2 A B A D A B C@2 A B A D A B C@2 E F E G H I J G A K A L B M N O P@2 A D A
  Q R L B M N S P@2 T U A B A D A B C@2 A B A D A B C@2 A B A D A B C@2 H F H V H I H G A W A D A B C@5 U
>`.pickRestart({
  A: "[g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3", // Eb
  B: "[ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3", // Ab
  C: "[g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3", // Eb Bb
  D: "[f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3", E: "[g3,bb3,eb4]@13 ~@3",
  F: "[ab3,c4,eb4]@13 ~@3", G: "[f3,bb3,d4]@13 ~@3", H: "[g3,bb3,eb4]@7 ~", I: "[ab3,c4,eb4]@7 ~",
  J: "[g3,bb3,eb4]@3 ~", K: "[ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [gb3,a3,c4,eb4] ~@3 [gb3,a3,c4,eb4] ~@3",
  L: "[g3,bb3,db4,eb4] ~@3 [g3,bb3,db4,eb4] ~@3 [g3,bb3,db4,eb4] ~@3 [g3,bb3,db4,eb4] ~@3", // Eb7
  M: "[ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3 [a3,c4,eb4,gb4] ~@3 [a3,c4,eb4,gb4] ~@3", // Fm7 Adim
  N: "[bb3,c4,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@3", // Cm7
  O: "[bb3,c4,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@3 [bb3,db4,e4,g4] ~@3 [db4,e4,g4] ~@3, ~@6 bb3 ~", // Cm7 Bbdim Dbdim
  P: "[ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3", // Fm7
  Q: "[ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [gb3,a3,c4,eb4] ~@3 [gb3,a3,c4] ~@3, ~@6 eb4 ~", // Ab Gbdim
  R: "[bb3,eb4]@2 ~@2 [g3,bb3] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3, g3 ~@3 eb4@2 ~@10", // Eb5 Gm Eb
  S: "[bb3,c4,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@3 [bb3,db4,e4,g4] ~@3 [bb3,db4,e4,g4] ~@3", // Cm7 Bbdim
  T: "[g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3", U: "[g3,bb3,eb4] ~@15",
  V: "[f3,bb3,d4]@7 ~", W: "[ab3,c4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3, eb4 ~@7",
})).s("gm_piano").gain(0.48).pan(0.4)

// chords · banjo
const banjo = note(`<
  ~@5 A B C@2 A B A D A B C@2 A B E D A B C@2 A B A F A B C G A B H@2 A B C I ~@8 J K L M@7 N O J K P Q R S T U V W X@8
  C Y A Z A D A B C AA A B AB D A B C AC AD ~@6 AE AF B A AG AF B C Y C AC C AH
>`.pickRestart({
  A: "[g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]!2 ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]", // Eb
  B: "[ab3,c4,eb4] ~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4]!2 ~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4]", // Ab
  C: "[g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] [f3,bb3,d4] ~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4]", // Eb Bb
  D: "[f3,bb3,d4] ~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4]!2 ~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4]", // Bb
  E: "[g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]!2 ~@2 [g3,bb3,eb4]!2 ~@2 [g3,bb3,eb4]", // Eb
  F: "[f3,bb3,d4] ~@2 [f3,bb3,d4]!2 ~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4]!2 ~@2 [f3,bb3,d4]", // Bb
  G: "[g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [f3,bb3,d4]!2 ~@2 [f3,bb3,d4]", // Eb Bb
  H: "[[g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]!2 ~@2 [g3,bb3,eb4] ~@3 [g3,bb3] [f3,bb3,d4] ~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4]!2 ~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4], ~@15 eb4@17]/2", // Eb Gm Bb
  I: "[g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@4 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3", // Eb Bb
  J: "[g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3", // Eb
  K: "[ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [a3,c4,eb4] ~@3 [a3,c4,eb4] ~@3", // Ab Adim
  L: "[g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@2 [g3,bb3,eb4]!2 ~@3 [g3,bb3,eb4] ~@2 [g3,bb3,eb4]", // Eb
  M: "[[g3,bb3,eb4] ~@2 [g3,bb3,db4,eb4]!2 ~@2 [g3,bb3,db4,eb4]!2 ~@2 [g3,bb3,db4,eb4]!2 ~@2 [bb3,db4,eb4] [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@2 ab3 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3 [a3,c4,eb4,gb4] ~@3 [a3,c4,eb4,gb4] ~@3 [bb3,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@2 [bb3,c4,eb4,g4] [bb3,c4,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@3 [bb3,db4,e4,g4] ~@3 [bb3,db4,e4,g4] ~@3 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@2 [ab3,c4,eb4,f4] [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@2 [ab3,c4,eb4,f4]!2 ~@2 [ab3,c4,eb4,f4], ~@15 g3@97]/7", // Eb Eb7 Ab Fm7 Adim Eb Cm7 Bbdim …
  N: "[g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@2 [g3,bb3,eb4]!2 ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]", // Eb
  O: "~@3 [f3,bb3]!2 ~@2 [f3,bb3] ~@3 [f3,bb3]!2 ~@2 [f3,bb3]", // Bb5
  P: "[g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@2 [g3,bb3,eb4]!2 ~@2 [g3,bb3,db4,eb4]", // Eb Eb7
  Q: "~@3 [g3,bb3,db4,eb4]!2 ~@2 [g3,bb3,db4,eb4] ~ [g3,bb3,db4,eb4] ~ [g3,bb3,db4,eb4]!2 ~@2 [g3,bb3,db4,eb4]", // Eb7
  R: "~@3 [ab3,c4,eb4]!2 ~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4]!2 ~@2 [ab3,c4,eb4]", // Ab
  S: "[ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@6 [a3,c4,eb4,gb4]!2 ~@2 [a3,c4,eb4,gb4]", // Fm7 Adim
  T: "~@3 [bb3,c4,eb4,g4]!2 ~@2 [bb3,c4,eb4,g4] ~@3 [bb3,c4,eb4,g4] ~@3 [bb3,c4,eb4,g4]", // Cm7
  U: "~@4 [bb3,c4,eb4,g4] ~@3 [bb3,db4,e4,g4] ~@3 [bb3,db4,e4,g4] ~@3", // Cm7 Bbdim
  V: "~@3 [ab3,c4,eb4,f4]!2 ~@2 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4]!2 ~@2 [ab3,c4,eb4,f4]", // Fm7
  W: "~@4 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3", // Fm7
  X: "[[g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [gb3,ab3,eb4] ~@3 [gb3,ab3,eb4] ~@3 [g3,bb3,eb4] ~@3 bb3 ~@2 bb3 ~@3 bb3!2 ~@2 bb3 ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]!2 ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] [ab3,c4,eb4] ~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4]!2 ~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] [g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]!2 ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] [f3,bb3,d4] ~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] [g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]!2 ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] [ab3,c4,eb4] ~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4]!2 ~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4], ~ db4@31]/8", // Eb Ab7 Eb Ab Eb Bb Eb Ab
  Y: "[g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] bb3 ~@2 bb3!2 ~@2 bb3", // Eb
  Z: "[ab3,c4,eb4] ~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4]!2 ~@2 [ab3,c4,eb4]", // Ab
  AA: "[g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] bb3 ~@2 bb3!3 ~ bb3", // Eb
  AB: "[g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]!2 ~@2 [g3,bb3,eb4] ~@3 f3", // Eb
  AC: "[g3,bb3,eb4] ~@2 [g3,bb3,eb4] ~@3 bb3!2 ~@2 bb3!2 ~@2 bb3", AD: "[g3,bb3,eb4] ~@15",
  AE: "~@3 bb3 ab3@2 ~@2 g3 ~@3 f3 ~@3", AF: "~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]!2 ~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4]",
  AG: "~@3 [f3,bb3,d4]!2 ~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4]!2 ~@2 [f3,bb3,d4]", AH: "~@7 [g3,eb4] ~@8",
})).s("gm_banjo").gain(0.22).pan(0.6)

// other · piccolo
const piccolo = note(`<
  A B C D E B C F@2 B C D G B C H@2 B C D G B C I@2 ~@7 A B C D J B C K@2 ~@31 A D C D L B C M@2 ~@7 A B C D N B C O@2
  ~@7 A B C D G B C P@2 Q@2 I@2
>`.pickRestart({
  A: "~@15 bb5", B: "eb6@4 g6 ~@2 bb5 eb6@4 g6 ~@2 c6", C: "eb6@4 ab6 ~@2 c6 eb6@4 ab6 ~@2 bb5",
  D: "eb6@4 g6 ~@2 bb5 eb6@4 g6 ~@2 bb5", E: "d6@3 f6 d6@2 ~ bb5@6 ~@2 bb5",
  F: "[eb6@4 g6 ~@2 bb5 ab6@3 f6 d6@2 ~ eb6@4 ~@12 bb5]/2", G: "d6@3 f6 d6@2 ~ bb5@5 ~@3 bb5",
  H: "[eb6@4 g6 ~@2 bb5 ab6@2 ~ f6 d6@2 ~ eb6@5 ~@11 bb5]/2", I: "[eb6@4 g6 ~@2 bb5 ab6@2 ~ f6 d6@2 ~ eb6@5 ~@12]/2",
  J: "d6@3 f6 d6@2 ~ bb5@3 ~@5 bb5", K: "[eb6@4 g6 ~@2 bb5 ab6@2 ~ f6 d6@2 ~ eb6@3 ~@14]/2",
  L: "d6@3 f6 d6@3 bb5@5 ~@3 bb5", M: "[eb6@4 g6 ~@2 bb5 ab6@3 f6 d6@2 ~ eb6@5 ~@12]/2",
  N: "d6@3 f6 d6@2 ~ bb5@4 ~@4 bb5", O: "[eb6@4 g6 ~@2 bb5 ab6@3 f6 d6@2 ~ eb6@3 ~@14]/2",
  P: "[eb6@4 g6 ~@2 bb5 ab6@3 f6 d6@2 ~ eb6@6 ~@10 bb5]/2", Q: "[eb6@4 g6 ~@2 bb5 ab6@3 f6 d6@2 ~ eb6@7 ~@9 bb5]/2",
})).s("gm_piccolo").gain(0.32).pan(0.3)

// chords · trombone
const trombone = note("<~@16 A@3 B@8 C@8 D@6 ~@31 E@7 F@8 G@8 H@2 ~@7 I@8 J@5>".pickRestart({
  A: "[~@15 [g4,bb4,eb5]@3 ~@5 [g4,bb4,eb5]@3 ~@5 [ab4,c5,eb5]@3 ~@5 [ab4,c5,eb5]@3 ~@5 [g4,bb4,eb5]]/3", // Eb Ab Eb
  B: "[~@7 [g4,bb4,eb5]@3 ~@5 [f4,bb4,d5]@3 ~@5 [f4,bb4,d5]@6 ~@2 [g4,bb4,eb5]@4 ~@4 [g4,bb4,eb5]@3 ~@5 [ab4,c5,eb5]@3 ~@5 [ab4,c5,eb5]@3 ~@5 [g4,bb4,eb5]@3 ~@5 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@3 ~@13 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]]/8", // Eb Bb Eb Ab Eb Bb Eb Ab …
  C: "[~@7 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@3 ~@5 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5] ~@7 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@2 ~@14 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]]/8", // Eb Bb Eb Ab Eb Bb Eb Ab …
  D: "[~@7 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [f4,bb4,d5]@6 ~@2 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@3 ~@14]/6", // Eb Bb Eb Ab Eb Bb Eb
  E: "[~@15 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@3 ~@5 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [f4,bb4,d5]@5 ~@3 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@3 ~@5 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]]/7", // Eb Ab Eb Bb Eb Ab Eb
  F: "[~@7 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@3 ~@13 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@3 ~@5 [g4,bb4,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]]/8", // Bb Eb Ab Eb Bb Eb Ab Eb
  G: "[~@7 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@2 ~@14 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@3 ~@5 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]]/8", // Bb Eb Ab Eb Bb Eb Ab Eb
  H: "[~@7 [f4,d5]@2 ~@6 [g4,bb4,eb5]@2 ~@15, ~@7 bb4 ~@24]/2", // Dm Eb
  I: "[~@15 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [f4,bb4,d5]@5 ~@3 [g4,bb4,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [ab4,c5,eb5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]]/8", // Eb Ab Eb Bb Eb Ab Eb Bb …
  J: "[~@7 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [f4,bb4,d5]@2 ~@6 [g4,bb4,eb5]@2 ~@6 [eb2,eb3]@4 ~@5]/5", // Bb Eb Bb Eb Bb Eb Bb Eb
})).s("gm_trombone").gain(0.4).pan(0.3)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@26 A ~ B ~ A ~@10 C@4 D@2 E F ~@33 A ~ G ~ H ~@10 I@4 J K L M ~@12>".pickRestart({
  A: "~@2 eb5@2 c5@2 ab4 ~ eb4@2 ~@6", B: "~@2 d5 ~ bb4 ~ f4 ~ d4@3 ~@5",
  C: "[[bb3,g4]@15 ~ [c4,ab4]@14 ~@2 g4@16 [d3,f4]@16, eb3@47 ~@17, ~@16 bb3@15 ~]/4", // Eb Fm Dm
  D: "[[bb3,g4]@15 ~ [ab3,gb4]@15 ~, eb3@31 ~]/2", E: "[eb3,bb3,g4]@15 ~", F: "[bb3,f4] ~@7",
  G: "~@2 d5 ~ bb4 ~ f4 ~ d4@2 ~@6", H: "~@2 eb5@2 c5 ~ ab4 ~ eb4@2 ~@6",
  I: "[[bb3,g4]@15 ~ [c4,ab4]@15 ~@17 [d3,f4]@16, eb3@47 ~@17, ~@31 g4@16 ~@17, ~@16 bb3@15 ~]/4", // Eb Fm Dm
  J: "[eb3,g4], bb3@7 ~", K: "ab2, gb4@7 ~, c4@3 ~", L: "[eb3,g3,eb4]", M: "[bb2,bb3] ~@7",
})).s("gm_string_ensemble_1").gain(0.35)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A ~@3 B C@3 D C@3 E C@3 D C@3 F C@7 G C@3 D C@3 H ~@7 I C@3 D C@7 J K C@2 E C@3 D C@3 L C@7 E C@7 M C@3 D C@3 D
  ~@7 N C@3 O C@3 P C E Q R
>`.pickRestart({
  A: "~@3 x!2 ~@6 x!3 ~ x", B: "~@11 x!2 ~@2 x", C: "~ x ~ x", D: "~@4 x ~@6 x!2 ~@2 x", E: "~@4 x ~@6 x!3 ~ x",
  F: "~ x!3", G: "~@3 x!2 ~@2 x!2 ~@2 x!3 ~ x", H: "~@3 x!2 ~@3 x ~@3 x ~@3", I: "~@3 x!2 ~@3 x!2 ~ x!2 ~@2 x",
  J: "~@3 x ~@7 x ~@3 x", K: "~ x ~@2 x ~@7 x ~@3", L: "x ~@10 x!2 ~@3", M: "~@4 x ~@2 x!2 ~@2 x!3 ~ x",
  N: "~ x ~ x!2 ~@4 x ~ x!3 ~ x", O: "~@4 x ~@6 x!2 ~@3", P: "~@3 x!2 ~@6 x!2 ~@2 x", Q: "~@4 x ~@7 x ~@2 x",
  R: "~@3 x!2 ~@11",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@3 B A@3 C A@3 C A@3 C A@3 C A@3 C A@3 C A@3 C A@3 C A@2 C@2 A@3 C A@2 C D A@3 C A@11 C A@7 E A C A C A C A F A C A
  C A@3 G A C A C A C A H A@3 C A C A I A@3 C A@3 C A C@2 ~
>`.pickRestart({
  A: "x ~@3 x ~@2 x!2 ~@3 x ~@2 x", B: "x ~@3 x ~@2 x!2 ~@3 x ~@3", C: "x ~@3 x ~@2 x!2 ~@2 x!2 ~@2 x",
  D: "x ~@2 x!2 ~@2 x!3 ~ x!3 ~ x", E: "x ~@3 x ~@3 x ~@3 x ~@2 x", F: "x ~@3 x ~@2 x!3 ~ x!2 ~@2 x",
// … 16 more lines

More by Kaempfert