Strudelify

Da Doo Ron Ron

Shaun Cassidy

KeyE♭ majorTempo139 bpm
0:00/0:00
// Da Doo Ron Ron — Shaun Cassidy
// 139 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 3 "BASS" named as a bass, played on electric bass finger (its electric guitar jazz patch is not one)
// note: Full arrangement: all 92 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(139/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 · synth bass 1 · "SYNTH BASS"
const bass = note(`<
  A@5 B C A@2 B C A@2 B A C A B C A@4 B C A@2 B C A@2 B A C A B C A@4 B C A@2 B C A@2 B C A@2 B C A@2 B A C A B C A@4 B
  C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 D
>`.pickRestart({
  A: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~",
  B: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~",
  C: "bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~ bb1 ~", D: "eb2 ~@23",
})).s("gm_synth_bass_1").gain(0.4).pan(0.3)

// bass · electric bass finger · "BASS"
const bass_2 = note(`<
  A B C D E F G H I F J K E L M N O P Q R E S T U V I T P W X E Y T N E U V Z I S T AA AB AC AD AE W AF E U AG AH E Y V
  K E AI E N AJ U V AK AL AM T AN V AO AP AQ J AR AS AT N AU M U V AV E U J AW E U J Z AX AY
>`.pickRestart({
  A: "eb1 ~ eb1 ~ eb1 ~ eb1 ~", B: "eb1@3 ~@3 eb1@4 ~@2 eb1@4 ~@2 eb1@4 ~@2",
  C: "eb1@4 ~@2 eb1@3 ~@3 eb1@3 ~@3 eb1@3 ~@3", D: "eb1@3 ~@3 eb1@3 ~@3 eb1@3 ~@3 eb1@2 bb1@2 c2@2",
  E: "eb2@2 ~ eb2@2 ~ eb2@2 ~ eb2@2 ~", F: "ab1@4 ~@2 ab1@3 ~@3 ab1@4 ~@2 ab1@4 ~@2",
  G: "bb1@2 ~ bb1@2 ~ bb1@2 ~ bb1@2 ~", H: "eb2@4 ~@2 eb2@4 ~@2 eb2@4 ~@2 eb2@3 ~ bb1@2",
  I: "eb2@4 ~@2 eb2@3 ~@3 eb2@4 ~@2 eb2@4 ~@2", J: "bb1 ~ bb1 ~ bb1 ~ bb1 ~",
  K: "eb2@3 ~@3 eb2@3 ~@3 eb2@3 ~@3 eb2@3 ~ bb1@2", L: "ab1@4 ~@2 ab1@4 ~@2 ab1@3 ~@3 ab1@3 ~@3",
  M: "eb2@4 ~@2 eb2@4 ~@2 eb2@3 ~@3 eb2@4 ~@2", N: "bb1@3 ~@3 bb1@3 ~@3 bb1@3 ~@3 bb1@2 ~@2 bb1@2",
  O: "eb2@4 ~@2 eb2@4 ~@2 eb2@4 ~@2 eb2@3 ~@3", P: "ab1@3 ~@3 ab1@3 ~@3 ab1@3 ~@3 ab1@5 ~",
  Q: "bb1@3 ~@3 bb1@3 ~@3 bb1@3 ~@3 bb1@4 ~@2", R: "eb2@4 ~@2 eb2@3 ~@3 eb2@3 ~@3 eb2@4 ~@2",
  S: "eb2@3 ~@3 eb2@3 ~@3 eb2@3 ~@3 eb1@2 bb1@2 c2@2", T: "eb2@3 ~@3 eb2@4 ~@2 eb2@4 ~@2 eb2@4 ~@2",
  U: "ab1@3 ~@3 ab1@3 ~@3 ab1@3 ~@3 ab1@4 ~@2", V: "bb1@4 ~@2 bb1@3 ~@3 bb1@3 ~@3 bb1@4 ~@2",
  W: "bb1@4 ~@2 bb1@4 ~@2 bb1@3 ~@3 bb1@4 ~@2", X: "eb2@4 ~@2 eb2@3 ~@3 eb2@3 ~@3 eb2@3 ~ bb1@2",
  Y: "ab1 ~ ab1 ~ ab1 ~ ab1 ~", Z: "eb2@4 ~@2 eb2@3 ~@3 eb2@4 ~@2 eb2@3 ~@3",
  AA: "ab1@3 ~@3 ab1@3 ~@3 ab1@3 ~@3 ab1@4 ~@2, eb2 ~@23", AB: "bb1@4 ~@2 bb1@4 ~@2 bb1@4 ~@2 bb1@3 ~@3",
  AC: "eb2@2 ~ eb2@2 ~ eb2@2 ~ eb2 c2 bb1", AD: "eb2@4 ~@2 eb2@4 ~@2 eb2@4 ~@2 eb2@5 ~",
  AE: "ab1@3 ~@3 ab1@3 ~@3 ab1@3 ~@3 ab1@2 ~@2 ab1@2", AF: "eb2@4 ~@2 eb2@4 ~@2 eb2@3 ~@3 eb2@3 ~ bb1@2",
  AG: "bb1@4 ~@2 bb1@3 ~@3 bb1@2 ~@4 bb1@5 ~", AH: "eb2@4 ~@2 eb2@3 ~@3 eb2@4 ~@2 eb2@3 ~ bb1@2",
  AI: "ab1@2 ~ ab1@2 ~ ab1@2 ~ ab1@2 ~", AJ: "eb2@4 ~@2 eb2@4 ~@2 eb2@4 ~@2 eb2@5 ~, ~@12 db2 ~@11",
  AK: "eb2@4 ~@2 eb2@3 ~@3 eb2@3 ~@3 eb2@3 ~@3", AL: "eb2 ~ eb2 ~ eb2 ~ eb2 ~",
  AM: "eb2@4 ~@2 eb2@3 ~@3 eb2@3 ~@3 eb1@2 bb1@2 c2@2", AN: "ab1@4 ~@2 ab1@3 ~@3 ab1@3 ~@3 ab1@4 ~@2",
  AO: "eb2@2 ~ eb2@2 ~ eb2@2 ~ eb2 bb1 c2", AP: "eb2@3 ~@3 eb2@3 ~@3 eb2@4 ~@2 eb2@5 ~",
  AQ: "ab1@3 ~@3 ab1@3 ~@3 ab1@4 ~@2 ab1@4 ~@2", AR: "eb2@3 ~@3 eb2@4 ~@2 eb1@3 ~@3 eb1 ~ bb1@2 c2@2",
  AS: "eb2@4 ~@2 eb2@4 ~@2 eb2@3 ~@3 eb2@5 ~", AT: "ab1@3 ~@3 ab1@4 ~@2 ab1@4 ~@2 ab1@4 ~@2",
  AU: "eb2@4 ~@2 eb2@3 ~@3 eb2@3 ~@3 eb2@2 bb1@2 c2@2", AV: "eb2@4 ~@2 eb2@3 ~@3 eb2@3 ~ eb1@2 g1@2 bb1@2 c2@2",
  AW: "eb2@4 ~@2 eb2@3 ~@3 eb2@3 ~ bb1@2 c2@4 bb1@2", AX: "eb2@3 ~@3 eb2@3 ~@3 eb2@3 ~@3 eb2@2 c2@2 bb1 ~",
  AY: "eb1@3 ~@6 eb1@10 ~@5",
})).s("gm_electric_bass_finger").gain(0.68).pan(0.6)

// chords · piano · "A.PIANO"
const piano = note(`<
  A@5 B C A@2 D E A@2 D F C A D C A@4 D C A@2 G C H I J K C A D C A@3 L D C A@2 D C A@2 D C A@2 M C N O J P Q I R C S T
  U V W X Y Z AA AB AC AD AE AF AD@2 AE AG AD@2 AE AH AI AD AE AJ AD@2 AK
>`.pickRestart({
  A: "[g4,bb4] eb4 [g4,bb4] eb4 [g4,bb4] eb4 [g4,bb4] eb4 [g4,bb4] eb4 [g4,bb4] eb4", // Gm
  B: "[ab4,c5]@2 eb4@2 [ab4,c5]@2 eb4@2 ab4@2 eb4@2 [ab4,c5]@2 eb4@2 [ab4,c5]@2 eb4@2 [ab4,c5]@2 eb4 ~, ~@8 c5 ~@15", // Ab
  C: "[f4,bb4] d4 [f4,bb4] d4 [f4,bb4] d4 [f4,bb4] d4 [f4,bb4] d4 [f4,bb4] d4", // Bb5
  D: "[ab4,c5]@2 eb4@2 [ab4,c5]@2 eb4@2 [ab4,c5]@2 eb4@2 [ab4,c5]@2 eb4@2 [ab4,c5]@2 eb4@2 [ab4,c5]@2 eb4 ~", // Ab
  E: "[f4,bb4] d4 [f4,bb4] d4 [f4,bb4] d4 [f4,bb4] d4 [f4,bb4] d4 [f4,bb4] d4, ~@16 e4 ~@7", // Bb5
  F: "[g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4@2 [g4,bb4]@2 eb4@2 [g4,bb4]@2 eb4 ~ [g4,bb4]@2 eb4@2", // Gm
  G: "[ab4,c5]@2 eb4@2 c5@2 eb4@2 [ab4,c5]@2 eb4@2 [ab4,c5]@2 eb4@2 [ab4,c5]@2 eb4@2 [ab4,c5]@2 eb4 ~, ~@4 ab4 ~@19", // Ab
  H: "g4 eb4 [g4,bb4] eb4 [g4,bb4] eb4 [g4,bb4] eb4 [g4,bb4] eb4 bb4 eb4, bb4 ~@19 g4 ~@3", // Gm
  I: "[g4,bb4] eb4 [g4,bb4] eb4 bb4 eb4 [g4,bb4] eb4 [g4,bb4] eb4 [g4,bb4] eb4, ~@8 g4 ~@15", // Gm
  J: "[ab4,c5] eb4 [ab4,c5] eb4 [ab4,c5] eb4 [ab4,c5] eb4 [ab4,c5] eb4 [ab4,c5] eb4", // Ab
  K: "[g4,bb4]@2 eb4@2 [g4,bb4]@2 eb4@2 [g4,bb4]@2 eb4@2 [g4,bb4]@2 eb4@2 [g4,bb4]@2 eb4@2 [g4,bb4]@2 eb4 ~", // Gm
  L: "[g4,bb4] eb4 [g4,bb4] eb4 [g4,bb4] eb4 [g4,bb4] eb4 [g4,bb4] eb4 bb4 eb4, ~@20 g4 ~@3", // Gm
  M: "[ab4,c5]@2 eb4@2 [ab4,c5]@2 eb4@2 c5@2 eb4@2 c5@2 ~@2 c5@2 eb4@2 c5@2 eb4 ~, ~@8 ab4 ~@3 ab4 ~ eb4@4 ~@6, ~@16 ab4 ~@3 ab4 ~@3", // Ab
  N: "g4@2 eb4@2 [g4,bb4]@2 eb4@2 [g4,bb4]@2 eb4@2 [g4,bb4] ~ eb4@2 [g4,bb4]@2 eb4@2 [g4,bb4]@2 eb4@2, bb4 ~@23", // Gm
  O: "[g4,bb4]@2 eb4@2 [g4,bb4]@2 eb4@2 [g4,bb4]@2 eb4@2 [g4,bb4]@2 eb4@2 [g4,bb4] ~ eb4@2 [g4,bb4]@2 eb4@2", // Gm
  P: "[g4,bb4]@2 eb4@2 [g4,bb4]@2 eb4@2 bb4@2 eb4@2 [g4,bb4]@2 eb4@2 [g4,bb4]@2 eb4@2 [g4,bb4]@2 eb4 ~, ~@8 g4 ~@15", // Gm
  Q: "[f4,bb4] d4 [f4,bb4] d4 f4 d4 [f4,bb4] d4 [f4,bb4] d4 [f4,bb4] d4, ~@8 bb4 ~@15", // Bb5
  R: "[ab4,c5]@2 eb4@2 [ab4,c5] ~ eb4@2 c5@2 eb4@2 [ab4,c5]@2 eb4@2 [ab4,c5]@2 eb4@2 [ab4,c5]@2 eb4 ~, ~@8 ab4 ~@15", // Ab
  S: "[g4,bb4]@2 eb4 ~ [g4,bb4]@2 eb4@2 bb4@2 eb4 ~ bb4@2 eb4 ~ bb4@2 eb4 ~ [g4,bb4] ~ eb4 ~, ~@8 g4 ~@3 g4 ~@3 g4 ~@7", // Gm
  T: "bb4@2 eb4 ~ bb4@2 eb4 ~ [g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4 ~, g4 ~@3 g4 ~@19", // Gm
  U: "[g4,bb4] ~ eb4 ~ bb4@2 eb4 ~ bb4@2 eb4 ~ bb4@2 eb4 ~ bb4@2 eb4 ~ bb4@2 eb4 ~, ~@4 g4 ~@3 g4 ~@3 g4 ~@3 g4 ~@3 g4 ~@3", // Gm
  V: "bb4@2 eb4 ~ [g4,bb4] ~ eb4 ~ bb4@2 eb4 ~ [g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4 ~ [g4,bb4]@2 eb4 ~, g4 ~@7 g4 ~@15", // Gm
  W: "c5@2 eb4 ~ c5@2 eb4 ~ [ab4,c5] ~ eb4 ~ [bb4,c5] ~ eb4 ~ [ab4,c5] ~ eb4 ~ [ab4,c5]@2 eb4@2, ab4 ~@3 ab4 ~@7 ab4@2 ~@10", // Ab Bbsus2 Ab
  X: "[f4,bb4]@2 d4@2 bb4@2 d4@2 [f4,bb4] ~ d4@2 [f4,bb4] ~ d4 ~ [f4,bb4] ~ d4 ~ bb4@2 d4 ~, ~@4 f4 ~@15 f4 ~@3", // Bb5
  Y: "[g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4 ~ bb4@2 eb4 ~, ~@20 g4 ~@3", // Gm
  Z: "[g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4@2 [g4,bb4] ~ eb4@2 [g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4 ~", // Gm
  AA: "[ab4,c5] ~ eb4 ~ [ab4,c5] ~ eb4 ~ [ab4,c5] ~ eb4 ~ [ab4,c5] ~ eb4@2 [ab4,c5] ~ eb4 ~ [ab4,c5] ~ eb4@2", // Ab
  AB: "[f4,bb4] ~ d4@2 [f4,bb4] ~ d4@2 [f4,bb4] ~ d4 ~ [f4,bb4] ~ d4 ~ [f4,bb4] ~ d4 ~ [f4,bb4] ~ d4 ~", // Bb5
  AC: "[g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4@2 [g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4 ~", // Gm
  AD: "[g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4 ~", // Gm
  AE: "[ab4,c5] ~ eb4 ~ [ab4,c5] ~ eb4 ~ [ab4,c5] ~ eb4 ~ [ab4,c5] ~ eb4 ~ [ab4,c5] ~ eb4 ~ [ab4,c5] ~ eb4 ~", // Ab
  AF: "[f4,bb4] ~ d4 ~ [f4,bb4] ~ d4 ~ [f4,bb4] ~ d4 ~ [f4,bb4] ~ d4 ~ [f4,bb4] ~ d4 ~ [f4,ab4,bb4] ~ d4 ~", // Bb5 Bb7
  AG: "[f4,bb4] ~ d4 ~ [f4,bb4] ~ d4 ~ [f4,bb4] ~ d4 ~ [f4,bb4] ~ d4 ~ [f4,bb4] ~ d4 ~ [f4,bb4] ~ d4 ~", // Bb5
  AH: "[f4,bb4] ~ d4 ~ [f4,bb4] ~ d4 ~ [f4,bb4] ~ d4 ~ [f4,bb4] ~ d4 ~ [f4,bb4] ~ d4 ~ bb4@2 d4 ~, ~@20 f4 ~@3", // Bb5
  AI: "[g4,bb4] ~ eb4@2 bb4@2 eb4@2 [g4,bb4] ~ eb4@2 [g4,bb4] ~ eb4 ~ [g4,bb4] ~ eb4 ~ bb4@2 eb4 ~, ~@4 g4 ~@15 g4 ~@3", // Gm
  AJ: "[f4,bb4] ~ d4@2 [f4,bb4] ~ d4 ~ [f4,bb4] ~ d4 ~ [f4,ab4,bb4] ~ d4 ~ [f4,ab4,bb4] ~ d4 ~ [f4,bb4] ~ d4 ~", // Bb5 Bb7 Bb5
  AK: "[g4,bb4,eb5] ~@8 [g4,bb4,eb5]@7 ~@8", // Eb
})).s("gm_piano").gain(0.4).pan(0.4)

// chords · vibraphone
const vibraphone = note(`<
  ~@6 A B ~@2 C D ~@6 C E ~@4 C E ~@2 C D ~@6 A E ~@12 A E ~@2 F E ~@6 C E ~@2 G H I J G H K J G H L M G N C J G O C J G
  P A D ~@2
>`.pickRestart({
  A: "[f4,bb4,d5] ~@3 [f4,bb4] ~@5 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~, ~@2 d5 ~@9", // Bb Bb5 Bb
  B: "[g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@5 [g4,bb4,eb5]@2 ~@12", // Eb
  C: "[f4,bb4,d5] ~@3 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~", // Bb
  D: "[g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@5 [g4,bb4] ~@13, ~@5 eb5 ~@6", // Eb Gm
  E: "[g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@5 [g4,bb4,eb5] ~@13", // Eb
  F: "[f4,bb4,d5] ~@3 [f4,bb4,d5] ~@3 bb4 ~ [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~", // Bb
  G: "[g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@5 [g4,bb4,eb5] ~@5 [g4,bb4,eb5] ~@5 [g4,bb4,eb5] ~", // Eb
  H: "[ab4,c5,eb5] ~@3 [ab4,c5,eb5] ~@5 [ab4,c5,eb5] ~@11 [ab4,c5,eb5] ~", // Ab
  I: "[f4,bb4,d5] ~@3 [f4,bb4] ~@5 [bb4,d5] ~@5 [f4,d5]@2 ~@4 [f4,bb4,d5] ~, ~@4 d5@2 ~@4 f4@2 ~@4 bb4 ~@7", // Bb Bb5 Bb Dm Bb
  J: "[g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@5 [g4,bb4,eb5] ~@11 [g4,bb4,eb5] ~", // Eb
  K: "[f4,bb4,d5] ~@3 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~@5 [f4,bb4] ~@5 [f4,bb4,d5] ~, ~@8 d5 ~@3", // Bb Bb5 Bb
  L: "[f4,bb4,d5] ~@3 [f4,bb4,d5] ~@5 [bb4,d5] ~@5 [f4,bb4,d5] ~@5 [f4,bb4,d5] ~, ~@5 f4 ~@6", // Bb
  M: "[g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@5 [g4,bb4] ~@11 [g4,bb4,eb5] ~, ~@5 eb5 ~@6", // Eb Gm Eb
  N: "[ab4,c5,eb5] ~@3 [ab4,c5,eb5] ~@5 [ab4,c5,eb5]@3 ~@9 [ab4,c5,eb5] ~", // Ab
  O: "[ab4,c5,eb5] ~@3 [ab4,c5] ~@5 [ab4,c5] ~@11 [ab4,c5,eb5] ~, ~@2 eb5 ~@2 eb5 ~@6", // Ab
  P: "[ab4,c5,eb5] ~@3 [ab4,c5,eb5] ~@5 [ab4,c5] ~@11 [ab4,c5,eb5] ~, ~@5 eb5 ~@6", // Ab
})).s("gm_vibraphone").gain(0.35).pan(0.7)

// chords · tenor sax
const tenor_sax = note(`<
  A B A@2 C D E A F G H I J K L M N O H P Q@2 R S T B R U H V J W X Y Z AA AB AC AD@2 AE AF AG AH AI AJ AK AL R D E AM
  AN@2 H AO AP AQ AR AS AT AU AV AW@2 AX AY D E AZ BA BB E BC P AU BD BE@3 BF BG@3 BH BI@3 BJ BK@2 BL
>`.pickRestart({
  A: "[eb3,bb3]@7 ~", B: "[eb3,bb3]@11 ~", C: "[bb2,eb3]@7 ~", D: "[eb3,ab3]@19 ~@5", E: "[bb3,f4]@23 ~",
  F: "bb2@23 ~, eb3@7 ~", G: "[eb3,ab3]@5 ~, bb2 ~@23", H: "[bb3,f4]@11 ~", I: "eb3@21 ~ bb3@2, bb3@19 ~@5",
  J: "eb3@3 ~@3 bb3@17 ~, ~@2 eb3@5 ~", K: "[eb3,ab3]@21 ~ bb3@2", L: "eb3 ~@2 eb3@9, ~@3 bb3@8 ~",
  M: "f4@11 bb3, bb3@5 ~", N: "eb3 ~ bb3@6, ~@2 eb3@5 ~", O: "[eb3,ab3]@10 ~ eb3", P: "[eb3,bb3]@23 ~",
  Q: "[[eb3,bb3]@23 ~]/2", R: "[bb2,eb3]@11 ~", S: "[eb3,ab3]@23 ~", T: "f3, bb3@11 ~", U: "[eb3,ab3]@5 ~",
  V: "[eb3,bb3]@21 ~ bb2@2", W: "[eb3,ab3]@21 ~ bb2@2", X: "eb3 ~ eb3@6, ~@2 bb3@5 ~", Y: "[bb3,f4]@10 ~ bb2",
  Z: "eb3 ~ [eb3,bb3]@6", AA: "ab3@11 eb3, eb3@19 ~@5", AB: "[bb2,bb3]@3 ~@3 [bb2,e4] ~@17, ~ f4@3, ~@3 bb3@8 ~",
  AC: "[eb3,bb3]@11 bb2", AD: "[eb3@3 ~@3 [eb3,bb3]@40 eb3@2]/2", AE: "g3@6 bb3@3 ~ eb3 ~ g3@5 ~ bb3@3 ~ bb3 ~",
  AF: "c4@3 ~ c4@2 bb3@3 ~ ab3@4 ~@8 ab3 ~", AG: "bb3@4 ~@2 bb3@3 ~ bb3@2 c4@4 bb3@2 g3@3 ~ f3@2",
  AH: "eb3@2 ~@2 eb3@2 c3@3 ~ bb2@3 ~@9 eb3 ~", AI: "g3@6 ~@4 eb3 ~ g3@3 ~ bb3@3 ~@3 g3 ~, ~ bb3 ~@2",
  AJ: "c4@3 ~ c4@2 bb3@3 ~ ab3@3 ~@9 ab3 ~", AK: "bb3@4 ~@2 bb3@5 ~ c4@3 ~ bb3@2 g3@3 ~ f3@2",
  AL: "eb3 ~ eb3 c3@2 eb3 ~@6", AM: "[eb3,bb3] ~@3 [eb3,bb3]@2 ~@4 [eb3,bb3]@12 bb2 ~, db3 ~@11",
  AN: "[[eb3,bb3]@19 ~@3 bb3@2 ab3@19 ~@3 [eb3,ab3]@2, ~@22 eb3@21 ~@5]/2", AO: "bb3@11 bb2, eb3@3 ~",
  AP: "eb3@2 ~@4 bb3@17 ~, ~@2 eb3@5 ~", AQ: "[eb3,ab3]@10 ~ bb2", AR: "eb3 ~@2 eb3@9, ~@2 bb3@5 ~",
  AS: "[bb3,f4]@21 ~ bb2@2", AT: "eb3 ~@2 bb3@9, ~@2 eb3@5 ~", AU: "[eb3,ab3]@19 ~@3 [eb3,ab3]@2",
  AV: "[bb3,f4]@10 ~ [bb3,f4]", AW: "[[eb3,bb3]@43 ~@3 [eb3,bb3]@2]/2",
  AX: "~@4 [eb3,bb3]@9 ~@3 [eb3,bb3]@3 ~@3 [eb3,bb3]@2", AY: "[eb3,bb3] ~@23",
  AZ: "bb3@15 ~ eb3 ~@5 bb2@2, eb3@13 ~@11", BA: "[eb3,bb3]", BB: "[eb3,ab3]@7 ~ [eb3,ab3] ~@2 [eb3,ab3]",
  BC: "[eb3,bb3]@19 ~@3 bb2@2", BD: "f4, bb3@11 ~",
  BE: "[bb3@15 ~ bb2@2 c3@4 ~@2 bb3@19 ~@3 bb3@2 ab3@13 ~@3 [eb3,ab3]@2 ~@4 [eb3,ab3]@2, eb3@11 ~@11 eb3@21 ~@3 eb3@15 ~@11]/3", // Ab5
  BF: "[bb3,f4]@10 ~ f4, ~@22 bb3 ~", // Bb5
  BG: "[bb3@15 ~ bb2@2 c3@4 ~@2 bb3@14 ~@2 [eb3,bb3]@3 ~@3 bb3@2 ab3@19 ~@3 [eb3,ab3]@2, eb3@13 ~@9 eb3@16 ~@8 eb3@21 ~@5]/3", // Eb5 Ab5
  BH: "[bb3,f4]@15 ~ f4@2 ~@4 f4@2, ~@16 bb3 ~@5 bb3 ~", // Bb5
  BI: "[bb3@8 bb2 c3@2 ~ bb3@7 ~ [eb3,bb3] ~@2 bb3 ab3@7 ~ [eb3,ab3] ~@2 [eb3,ab3], eb3@12 ~@10 eb3@16 ~@8 eb3@15 ~@11]/3", // Eb5 Ab5
  BJ: "[bb3,f4]@3 ~@3 [bb3,f4]@14 ~@2 [bb3,f4] ~", BK: "[bb3@8 bb2 c3 eb3 ~ eb3@11 ~, eb3@6 ~@5 bb3@12 ~]/2",
  BL: "[eb3,bb3] ~@8 eb3@6 ~@9", // Eb5
})).s("gm_tenor_sax").gain(0.45).pan(0.3)

// chords · synth strings 1 · "SYN STRING"
const synth_strings_1 = note(`<
  A@4 B C D E F G H I@2 C E J K@2 L M@3 N C H I@2 C H I@2 O@2 P E C Q R@3 S C H T@2 C J I@2 U J T@2 C J I@2 V W J E X H
  Y@3 S Z H I@2 C J T@2 C H AA@2 C J AA@2 C H W F C J AB@3
>`.pickRestart({
  A: "[[g3,bb3,eb4]@23 ~]/4", B: "[g3,bb3,eb4]", C: "[ab3,c4,eb4]@11 ~", D: "[bb3,d4], f3@11 ~", E: "[g3,bb3,eb4]@11 ~",
  F: "[g3,eb4]@11 ~, bb3", G: "~ eb4@22 ~, [ab3,c4]@11 ~", H: "[f3,bb3,d4]@23 ~", I: "[[g3,bb3,eb4]@47 ~]/2",
  J: "[f3,bb3,d4]@11 ~", K: "[[bb3,eb4]@23 [ab3,c4,eb4]@23 ~@2, g3@7 ~@9]/2", L: "[bb3,d4]@23 ~, f3@7 ~",
  M: "[[g3,bb3,eb4]@71 ~]/3", N: "~ g3@21 ~@2, [bb3,eb4]@23 ~",
  O: "[[ab3,c4,eb4]@22 ~@2 bb3@23 ~, ~@23 [g3,eb4]@23 ~@2]/2", P: "~ d4@22 ~, [f3,bb3]@11 ~",
  Q: "~ f3@21 ~@2, [bb3,d4]@11 ~", R: "[[g3,bb3,eb4]@35 ~]/3", S: "[bb3,eb4], g3@11 ~", T: "[[g3,bb3,eb4]@23 ~]/2",
  U: "~ c4@21 ~@2, [ab3,eb4]@11 ~", V: "~ [ab3,c4,eb4]@22 ~", W: "[g3,bb3,eb4]@23 ~", X: "[ab3,c4,eb4]@7 ~",
  Y: "[~ [g3,eb4]@69 ~@2, bb3@23 ~]/3", Z: "~ c4@21 ~@2, [ab3,eb4]@7 ~", AA: "[[bb3,eb4]@47 ~, g3@15 ~]/2",
  AB: "[[g3,bb3,eb4]@25 ~@4 [g3,bb3,eb4]@4 ~@3]/3", // Eb
})).s("gm_synth_strings_1").gain(0.35)

// drums · kick
const kick = s("bd").struct("<[x!4]!91 [x ~@2 x ~@4]>").gain(0.78)

// drums · snare
const snare = s("sd").struct(`<
  A@2 B C D@7 E D E D E D@3 F C@2 D@7 E D E D E D E D G C@2 D@7 H D@7 E D E D E D@3 I C@2 D@7 H D@7 J D@7 G C ~
>`.pickRestart({
  A: "x!4", B: "x ~@2 x ~@2 x ~@2 x ~ x", C: "x!12", D: "~ x ~ x", E: "~@3 x ~@4 x!2 ~@2", F: "~@3 x ~@2 x!6",
  G: "~@3 x ~@5 x ~ x", H: "~@3 x ~@4 x!2 ~ x", I: "~@3 x ~@4 x!4", J: "~@3 x ~ x!7",
})).gain(0.78)

// drums · clap
const clap = s("cp").struct("<[x!4]!4 ~@36 [x!4]!8 x ~@17 [x!4]!24 [x ~ x!2] x>").gain(0.62)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@12 A ~ A ~ A ~@4 B ~@8 A ~ A ~ A ~@4 B ~@16 A ~ A ~ A ~@4 B ~@13 C ~ B ~ C ~ D ~ E ~@2 C ~
>`.pickRestart({
  A: "x", B: "~@9 x!3", C: "~@11 x", D: "~@7 x!5", E: "~@10 x!2",
})).gain(0.78)

// drums · hihat
const hihat = s("hh").struct("<[x!12]!91 [x ~@2 x ~@4]>").gain(0.54)

// drums · mid tom
const mid_tom = s("mt").struct("<~@21 A ~@17 B ~@25 B ~@9 C ~ D ~ E ~ B ~ E ~ F ~ G ~@2 H ~>".pickRestart({
  A: "~ x ~@4 x!3 ~@3", B: "~@6 x!3 ~@3", C: "~@9 x!3", D: "~@8 x!4", E: "~@8 x!3 ~", F: "~@3 x!4 ~@5",
  G: "~@7 x!3 ~@2", H: "~@9 x!2 ~",
})).gain(0.78)

// drums · high tom
// … 15 more lines