Strudelify

('t Is weer) Harmonikatijd

Palemiger Spatzen

KeyF majorTempo123 bpm
0:00/0:00
// ('t Is weer) Harmonikatijd — Palemiger Spatzen
// 123 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 66 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(123/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · trumpet · "Harmonika"
const trumpet = note("<~@34 A B C D E F G H I J K L M N O P ~@2 Q R ~@2 S T I J K L M N O ~>".pickRestart({
  A: "bb4@2 ~@2 a4@2 bb4 ~@3 bb4 ~ a4@2 ~@2", B: "g4@3 ~ gb4@2 g4 ~@3 g4 ~ gb4 ~@3", C: "f4 ~ d4 ~ f4 ~ bb4 ~",
  D: "bb4@2 c5 ~ bb4 ~ a4@4 ~@2 f4@3 ~", E: "c5@3 ~ b4@2 c5 ~@3 c5 ~ bb4@2 ~@2",
  F: "a4@2 ~@2 ab4 ~ a4 ~@3 a4@2 g4@2 ~@2", G: "f4 ~ f5 ~ eb5 ~ f5 ~", H: "eb5@2 d5 ~ bb4 ~ f4@3 ~@3 f4@2 ~@2",
  I: "bb4@3 ~ a4@2 bb4@2 ~@2 bb4 ~ a4@2 ~@2", J: "g4@3 ~ gb4@2 g4@2 ~@2 g4 ~ gb4@2 ~@2", K: "f4 ~ bb4 ~ d5 ~ d5 ~",
  L: "d5@2 c5 ~ bb4 ~ [g4,c5]@7 ~@3", M: "eb5@4 d5 ~ c5 ~@3 b4 ~ c5 ~ db5 ~", N: "d5@3 ~ c5@2 bb4 ~@3 a4@2 g4 ~ f4 ~",
  O: "g4@2 ~@2 g4@2 ~@2 a4@2 ~@2 c5@3 ~", P: "bb4@9 ~@7",
  Q: "f5@2 ~@2 d5@2 ~@2 f5@2 ~@2 [bb4,g5] ~@3, d5 ~@3 bb4 ~@3 d5 ~@7", // Eb
  R: "bb4@2 [a4,f5] ~ [ab4,e5] ~ [a4,f5]@4 ~@6, g5 ~@15", S: "[a4,f5] ~@3 [ab4,e5]@2 ~@2 [a4,f5] ~@3 [a4,f5] ~@3",
  T: "[g4,eb5] ~ [f4,d5] ~ [d4,bb4] ~ [f4,d5]@2 ~@8", // Cm Dm Gm Dm
})).s("gm_trumpet").gain(0.22).pan(0.3)

// other · muted trumpet
const muted_trumpet = note(`<
  ~@24 A B C D E F G H ~@2 I J K L M N O P Q R S T U V W X ~@8 Q R S T U V W Y
>`.pickRestart({
  A: "c5@2 a4@2 d5@2 c5 ~ a4 ~@2 c5 f5@2 ~@2", B: "c5@2 a4@2 d5@2 c5 ~ bb4!3 c5 e5 ~@3",
  C: "bb4 ~ bb4!2 c5@2 bb4 ~ e5!2 d5 c5 bb4 ~@3", D: "c5!3 bb4 d5 ~ c5 ~ f5!2 e5 d5 c5 ~@3",
  E: "c5@2 a4@2 d5 ~ c5 ~ a4 ~@2 c5 f5@2 ~@2", F: "f5!4 e5 ~ d5@2 c5 ~ bb4 ~@5", G: "bb4@2 c5 ~ d5@2 ~ c5 ~@4 e5 ~@3",
  H: "c5 ~@3 d5 ~ e5@2 f5 ~ f5!3 ~@3", I: "g4@2 ~@2 gb4@2 g4 ~@3 g4 ~ d4 ~@3", J: "d4@2 ~@2 db4@2 d4 ~@3 d4 ~ d4 ~@3",
  K: "d4 ~ bb3 ~ d4 ~ g4 ~", L: "g4@2 a4 ~ g4 ~ f4@4 ~@6", M: "eb4@2 ~@2 d4 ~ eb4 ~@3 eb4 ~ g4@2 ~@2",
  N: "f4@2 ~@2 e4 ~ f4@2 ~@2 f4 ~ eb4@2 ~@2", O: "eb4 ~ a4 ~ g4 ~ a4 ~", P: "g4 ~ f4 ~ d4 ~ d4@3 ~@3 d4@2 ~@2",
  Q: "g4@3 ~ gb4@2 g4@2 ~@2 g4@2 d4@2 ~@2", R: "d4@3 ~ db4@2 d4@2 ~@2 d4 ~ d4@2 ~@2",
  S: "d4@2 ~@2 d4@3 ~ f4@3 ~ gb4@2 ~@2", T: "g4@2 g4 ~ g4 ~ eb4@6 ~@4", U: "g4@3 ~ f4@2 eb4 ~@3 d4@2 eb4 ~ e4 ~",
  V: "f4@4 eb4@2 d4 ~@3 d4@2 d4 ~ d4 ~", W: "e4@2 ~@2 e4@2 ~@2 eb4@2 ~@2 eb4@3 ~", X: "d4@9 ~@7",
  Y: "f4 ~ g4 a4 bb4 c5 d5 eb5 f5 ~ f5!3 ~@3",
})).s("gm_muted_trumpet").gain(0.08).pan(0.7)

// chords · accordion
const accordion = note(`<
  ~@8 A B C D A B C E ~@4 F@3 G H ~@9 I J K L M N O P I J Q R S I T U ~@8 V J Q R S I T W
>`.pickRestart({
  A: "[f4,a4,c5]!3 ~ [f4,a4,d5]!3 ~ [f4,a4,c5] ~ [f4,a4,d5]!6", // F Dm F Dm
  B: "[f4,a4,c5]!3 ~ [f4,a4,d5]!2 [f4,a4,c5] ~ [e4,bb4,c5] ~ [e4,bb4,d5]!6", // F Dm F C7 Em7b5
  C: "[g4,bb4,e5]!3 ~ [f4,bb4,d5]!3 ~ [e4,bb4,c5] ~ [e4,bb4,c5]!2 [e4,bb4,d5] [e4,bb4,c5]!2 [e4,bb4,d5]", // Edim Bb C7 Em7b5 C7 Em7b5
  D: "[g4,bb4,e5] ~ [g4,bb4,e5]!2 [bb4,c5,e5]!3 ~ [a4,c5,f5]!2 [a4,c5,e5] ~ [f4,a4,d5]!2 [f4,a4,c5] ~", // Edim C7 F Am Dm F
  E: "[bb4,c5,e5] ~ [bb4,c5,e5] ~ [bb4,c5,e5]!3 ~ [a4,c5,f5] ~ [a4,c5,f5]!3 ~@3", // C7 F
  F: "[b3,f4,g4]!3 ~ [b3,f4,a4]!3 ~ [c4,e4,g4] ~ [c4,e4,a4]!6", // G7 Bm7b5 C Am
  G: "[c4,f4,a4] ~ [c4,f4,a4]!2 [b3,f4,g4]!2 [f4,g4,b4] ~ [e4,g4,c5] ~ [e4,g4,c5]!3 ~@3", H: "[f4,a4,c5] ~@15",
  I: "[bb4,d5,f5]!3 ~ [bb4,d5,g5]!3 ~ [bb4,d5,f5] ~ [bb4,d5,g5]!6", // Bb Gm Bb Gm
  J: "[bb4,d5,f5]!3 ~ [bb4,d5,g5]!2 [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,g5]!6", // Bb Gm Bb Gm
  K: "[bb4,d5,f5]!3 ~ [bb4,d5,g5]!3 ~ [bb4,d5,f5]!3 ~ [bb4,d5,g5]!3 ~", // Bb Gm Bb Gm
  L: "[c5,eb5,a5] ~ [c5,eb5,a5]!2 [eb5,f5,a5]!3 ~ [a4,eb5,f5]!3 ~ [a4,eb5,g5]!2 [a4,eb5,f5] ~", // Adim F7 Am7b5 F7
  M: "[a4,eb5,f5]!3 ~ [a4,eb5,g5]!3 ~ [a4,eb5,f5] ~ [a4,eb5,g5]!6", // F7 Am7b5 F7 Am7b5
  N: "[a4,eb5,f5]!3 ~ [a4,eb5,g5]!2 [a4,eb5,f5] ~ [a4,eb5,f5] ~ [a4,eb5,g5]!6", // F7 Am7b5 F7 Am7b5
  O: "[c5,eb5,a5]!3 ~ [bb4,eb5,g5]!3 ~ [a4,eb5,f5] ~ [a4,eb5,f5]!2 [a4,eb5,g5] [a4,eb5,f5]!2 [a4,eb5,g5]", // Adim Eb F7 Am7b5 F7 Am7b5
  P: "[bb4,d5,f5]!3 ~ [a4,d5,f5]!3 ~ [g4,d5,f5] ~ [f4,f5]!6", // Bb Dm G7 F
  Q: "[bb4,d5,f5]!3 ~ [a4,d5,f5]!3 ~ [ab4,d5,f5]!3 ~ [ab4,d5,f5]!3 ~", // Bb Dm Ddim
  R: "[bb4,eb5,g5] ~ [bb4,eb5,g5]!2 [bb4,d5,g5]!3 ~ [c5,eb5,g5]!3 ~ [bb4,eb5,g5]!3 ~", // Eb Gm Cm Eb
  S: "[bb4,eb5,g5]!3 ~ [bb4,eb5,g5]!3 ~ [bb4,eb5,g5] ~ [bb4,eb5,g5]!6", // Eb
  T: "[bb4,e5,g5]!3 ~ [bb4,e5,g5]!3 ~ [eb5,f5,a5] ~ [eb5,f5,a5]!6", // Edim F7
  U: "[d5,f5,bb5]!3 ~ [bb4,eb5,g5]!3 ~ [bb4,d5,bb5] ~@2 [f4,f5]!5", // Bb Eb Bb F
  V: "~ [bb4,d5,f5]!2 ~ [bb4,d5,g5]!3 ~ [bb4,d5,f5] ~ [bb4,d5,g5]!6", W: "[d5,f5,bb5] ~@15",
})).s("gm_accordion").gain(0.25)

// chords · accordion
const accordion_2 = note(`<
  A B C D E F G H ~@8 I J K L ~@4 A M C D E F G H N O ~@15 P Q R S T U V W X ~@7 Y
>`.pickRestart({
  A: "[a4,c5]@2 [f4,a4]@2 [a4,d5]@2 [a4,c5] ~ [f4,a4] ~@2 [a4,c5] [a4,f5]@2 ~@2", // Am F D5 Am F Am Dm
  B: "[a4,c5]@2 [f4,a4]@2 [a4,d5]@2 [a4,c5] ~ [g4,bb4]!3 [a4,c5] c5@2 ~@2, ~@12 e5 ~@3", // Am F D5 Am Gm Am
  C: "[g4,bb4] ~ [g4,bb4]!2 [a4,c5]@2 [g4,bb4] ~ [c5,e5]!2 [bb4,d5] [a4,c5] [g4,bb4] ~@3", // Gm Am Gm C Bb Am Gm
  D: "[bb4,c5]!3 [e4,bb4] [bb4,d5] ~ [bb4,c5] ~ [d5,f5]!2 [c5,e5] [bb4,d5] [a4,c5] ~@3", // Bbsus2 Edim Bb Bbsus2 Dm C Bb Am
  E: "[a4,c5]@2 [f4,a4]@2 [a4,d5] ~ [a4,c5] ~ [f4,a4] ~@2 [a4,c5] [a4,f5]@2 ~@2", // Am F D5 Am F Am Dm
  F: "[a4,f5]!4 [g4,e5] ~ [f4,d5]@2 [e4,c5] ~ [e4,bb4] ~ e4@2 ~@2", // Dm C Dm C Edim
  G: "[e4,bb4]@2 [e4,c5] ~ [bb4,d5]@2 ~ [bb4,c5] bb4!3 c5 [bb4,e5] ~ c5!2", // Edim C Bb Bbsus2 Bbdim
  H: "[bb4,c5] ~@2 c5 [b4,d5] ~ [bb4,e5]@2 [a4,f5] ~ [a4,f5]!3 ~@3", // Bbsus2 Bm Bbdim Dm
  I: "g5 b4 d5 g5 gb5 bb4 f5 a4 e5 g4 c5 e5 f5 a4 e5 g4", J: "d5 f4 b4 d5 e5 g4 d5 f4 c5 e4 d5 f4 e5 g4 f5 a4",
  K: "g5 b4 d5 g5 gb5 b4 f5 g4 e5 g4 c5 e5 f5 a4 e5 g4", L: "d5 f4 a5 c5 g5 b4!2 d4 c4 [e4,g4] c5 [e5,g5] [e5,c6] ~@3",
  M: "[a4,c5]@2 [f4,a4]@2 [a4,d5]@2 [a4,c5] ~ [g4,bb4]!3 [a4,c5] e5@2 ~@2, ~@12 c5 ~@3", // Am F D5 Am Gm Am
  N: "[f5,a5]!2 [f5,a5]@2 [eb5,g5]!2 [eb5,g5]@2 f5 ~ eb5@2 f4@2 [a4,f5]!2", // F Eb Dm
  O: "[a4,f5] ~ [g4,eb5]@2 [f4,d5] ~ [eb4,c5] ~ [d4,bb4] ~@7", P: "~@11 [f4,f5]!5",
  Q: "~ f4 d4 f4 a4 f4 bb4 f4 d4 f4 bb4 f4 a4 f4 d4 f4", R: "g4 d4 bb3 d4 gb4 d4 g4 d4 bb3 d4 g4 d4 gb4 d4 bb3 d4",
  S: "[f4,f5] d4 bb3 d4 [d4,d5] bb3 f3 bb3 [f4,f5] d4 bb3 d4 [bb4,bb5] g4 eb4 g4", // F D F Bb
  T: "[bb4,bb5] g4 [a4,a5] f4 [ab4,ab5] e4 [a4,a5]@2 ~@2 [f4,f5]!6", // Bb A Ab A F
  U: "c5 f4 eb4 f4 b4 f4 c5 f4 eb4 f4 c5 f4 bb4 f4 eb4 f4", V: "a4 f4 eb4 f4 ab4 f4 a4 f4 eb4 f4 a4 eb4 g4 eb4 a3 eb4",
  W: "[f4,f5] eb4 a3 eb4 [e4,e5] c4 a3 eb4 [f4,f5] eb4 a3 eb4 [a4,a5] f4 eb4 f4", // F E F A
  X: "[g4,g5] d4 [f4,f5] d4 [d4,d5] bb3 [f4,f5]@4 ~ [f4,f5]!5", // G F D F
  Y: "[bb3,bb4] ~ [c4,c5] [d4,d5] [eb4,eb5] [f4,f5] [g4,g5] [a4,a5] [bb4,bb5] ~ [d4,f4,bb4]!3 ~@3", // Bb C D Eb F G A Bb
})).s("gm_accordion").gain(0.32)

// chords · clarinet
const clarinet = note(`<
  ~@8 A B C D E F G H ~@4 I J I K ~@10 L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI T U V W X Y Z AJ
>`.pickRestart({
  A: "c4@2 a3@2 d4@2 c4 ~ a3 ~@2 c4 f4@2 ~@2", B: "c4@2 a3@2 d4@2 c4 ~ bb3!3 c4 e4 ~@3",
  C: "bb3 ~ bb3!2 c4@2 bb3 ~ e4!2 d4 c4 bb3 ~@3", D: "c4!3 bb3 d4 ~ c4 ~ f4!2 e4 d4 c4 ~@3",
  E: "c4@2 a3@2 d4 ~ c4 ~ a3 ~@2 c4 f4@2 ~@2", F: "f4!4 e4 ~ d4@2 c4 ~ bb3 ~ e3@2 ~@2",
  G: "bb3@2 c4 ~ d4@2 ~ c4 bb3!3 c4 e4 ~ c4!2", H: "c4 ~@2 c4 d4 ~ e4@2 f4 ~ f4!3 ~@3",
  I: "g5@2 ~ g5 gb5 ~ f5 ~ e5@2 ~ e5 f5 ~ e5 ~", J: "d5@2 ~ d5 e5 ~ d5 ~ c5 ~ c5 d5 e5 ~ a5 ~",
  K: "d5 ~ a5 ~ g5 ~ b4 ~ c5 ~ c5!3 ~@3", L: "[g4,bb4]@2 ~@2 [gb4,a4]@2 [g4,bb4] ~@3 [g4,bb4] ~ a4@2 ~@2, ~@12 d4 ~@3",
  M: "[d4,g4]@3 ~ [db4,gb4]@2 [d4,g4] ~@3 [d4,g4] ~ [d4,gb4] ~@3", N: "[d4,f4] ~ [bb3,d4] ~ [d4,f4] ~ [g4,bb4] ~",
  O: "[g4,bb4]@2 [a4,c5] ~ [g4,bb4] ~ [f4,a4]@4 ~@2 f4@3 ~", // Gm Am Gm F
  P: "[eb4,c5]@3 ~ b4@2 [eb4,c5] ~@3 [eb4,c5] ~ [g4,bb4]@2 ~@2, ~@4 d4 ~@11", // Cm Gm
  Q: "[f4,a4]@2 ~@2 [e4,ab4] ~ f4@2 ~@2 a4@2 [eb4,g4]@2 ~@2, ~@6 a4 ~@3 f4 ~@5", // F E Eb
  R: "[eb4,f4] ~ [a4,f5] ~ [g4,eb5] ~ [a4,f5] ~", S: "eb5@2 [f4,d5] ~ [d4,bb4] ~ [d4,f4]@3 ~@3 [d4,f4]@2 ~@2, g4 ~@15",
  T: "[g4,bb4]@3 ~ [gb4,a4]@2 [g4,bb4]@2 ~@2 g4@2 [d4,a4]@2 ~@2, ~@10 bb4 ~@5", // Gm Gbm Gm D5
  U: "[d4,g4]@3 ~ [db4,gb4]@2 [d4,g4]@2 ~@2 [d4,g4] ~ [d4,gb4]@2 ~@2", // G5 Gb5 G5 D
  V: "[d4,f4]@2 ~@2 [d4,bb4]@3 ~ [f4,d5]@3 ~ [gb4,d5]@2 ~@2", W: "[g4,d5]@2 [g4,c5] ~ [g4,bb4] ~ [eb4,g4,c5]@7 ~@3",
  X: "[g4,eb5]@4 f4@2 [eb4,c5] ~@3 d4@2 [eb4,c5] ~ [e4,db5] ~, ~@4 d5 ~@5 b4 ~@5", // Cm Dbm
  Y: "[f4,d5]@4 [eb4,c5]@2 [d4,bb4] ~@3 [d4,a4]@2 [d4,g4] ~ [d4,f4] ~", // Dm Cm Gm D5 G5 Dm
  Z: "[e4,g4]@2 ~@2 [e4,g4]@2 ~@2 [eb4,a4]@2 ~@2 [eb4,c5]@3 ~", AA: "[d4,bb4]@9 ~@7", AB: "bb4@9 ~ a4@2 f4@2 d4@2",
  AC: "g4@5 ~ d4 ~", AD: "d4 ~ bb3 ~ d4 ~ g4 ~", AE: "g4@2 f4 ~ e4 ~ f4@3 ~@7", AF: "c5@9 ~ bb4@2 a4 ~ ab4 ~",
  AG: "a4@7 ~@9", AH: "a4 ~ ab4 ~ a4 ~ db4 ~", AI: "d4@2 d4 ~ bb3 ~ d4@3 ~@7",
  AJ: "d4 ~ eb4 f4 g4 a4 bb4 c5 d5 ~ d5!3 ~@3",
})).s("gm_clarinet").gain(0.53)

// chords · dulcimer
const dulcimer = note("<~@8 A B C D E F G H I J K L M N O P ~@42>".pickRestart({
  A: "[a4,c5]@2 [f4,a4]@2 [a4,d5]@2 [a4,c5] ~ [f4,a4] ~@2 [a4,c5] [a4,f5]@2 ~@2", // Am F D5 Am F Am Dm
  B: "[a4,c5]@2 [f4,a4]@2 [a4,d5]@2 [a4,c5] ~ [g4,bb4]!3 [a4,c5] e5@2 ~@2, ~@12 c5 ~@3", // Am F D5 Am Gm Am
  C: "[g4,bb4] ~ [g4,bb4]!2 [a4,c5]@2 [g4,bb4] ~ [c5,e5]!2 [bb4,d5] [a4,c5] [g4,bb4] ~@3", // Gm Am Gm C Bb Am Gm
  D: "[bb4,c5]!3 [e4,bb4] [bb4,d5] ~ [bb4,c5] ~ [d5,f5]!2 [c5,e5] [bb4,d5] [a4,c5] ~@3", // Bbsus2 Edim Bb Bbsus2 Dm C Bb Am
  E: "[a4,c5]@2 [f4,a4]@2 [a4,d5] ~ [a4,c5] ~ [f4,a4] ~@2 [a4,c5] [a4,f5]@2 ~@2", // Am F D5 Am F Am Dm
  F: "[a4,f5]!4 [g4,e5] ~ [f4,d5]@2 [e4,c5] ~ [e4,bb4] ~ e4@2 ~@2", // Dm C Dm C Edim
  G: "[e4,bb4]@2 [e4,c5] ~ [bb4,d5]@2 ~ [bb4,c5] bb4!3 c5 [bb4,e5] ~ c5!2", // Edim C Bb Bbsus2 Bbdim
  H: "[bb4,c5] ~@2 c5 [b4,d5] ~ [bb4,e5]@2 [a4,f5] ~ [a4,f5]!3 ~@3", // Bbsus2 Bm Bbdim Dm
  I: "[g4,b4,g5] ~ g4 b4 d5 ~ [f4,b4] ~ [e4,c5]@2 ~ [e4,c5] g4 ~ [e4,c5] ~", // G Fdim C
  J: "[f4,d5]@2 ~ [f4,d5] g4 ~ [f4,d5] ~ [e4,c5]@2 ~ [e4,c5] g4 ~ [e4,c5] ~", // Dm C
  K: "[g4,g5] ~ b4 d5 g5 ~ [f4,b4] ~ c5!2 ~ [e4,c5] g4 ~ [e4,c5] ~, ~@4 e4 ~@3", // G Fdim C
  L: "[f4,d5] ~ [f4,d5] ~ [f4,b4] ~ [f4,b4] ~ [e4,c5] ~ [e4,c5]!3 ~@3", // Dm Fdim C
  M: "[g4,b4,g5] ~ g4 [b4,g5] [d5,gb5] ~ [f4,b4,f5] ~ e5 g4 c5 [e4,c5,e5] [g4,f5] ~ [e4,c5,e5] ~, ~@4 [e4,c5] ~@3", // G Em D Fdim C G7 C
  N: "[f4,d5] f4 b4 [f4,d5] [g4,e5] ~ [f4,d5] ~ [e4,c5] e4 d5 [e4,f4,c5] [g4,e5] g4 [e4,c5,f5] a4", // Dm C Dm C Fmaj7 C Fmaj7
  O: "[g4,g5] b4 [b4,d5] [d5,g5] [gb5,g5] ~ [f4,b4,f5] ~ [c5,e5] [g4,c5] c5 [e4,c5,e5] [g4,f5] ~ [e4,c5,e5] ~, ~@4 e4 ~@3", // G Bm G5 Gmaj7 Fdim C C5 C …
  P: "[f4,d5] ~ [f4,d5,a5] ~ [f4,b4,g5] ~ [f4,b4] ~ [c4,e4,c5] [e4,g4] [e4,c5] [e4,c5,e5,g5] [e4,c5,e5,c6] ~@3", // Dm G7 Fdim C Em C
})).s("gm_dulcimer").gain(0.4)

// bass · acoustic bass
const bass = note(`<
  A B C D A B C E A B C D A B C E F G H I F G H I A B C D A B C E J K L M N A@3 O P Q@2 R S T U V W L@2 N A@3 O P Q@2 R
  S T U V X
>`.pickRestart({
  A: "f2 ~ c2 ~ f2 ~ c2 ~", B: "f2@2 ~ f2 e2@2 d2@2 c2@2 ~@2 g2@2 ~@2", C: "c2 ~ g2 ~ c2 ~ g2 ~",
  D: "c2@2 ~ c2 d2@2 e2@2 f2@2 ~@2 c2@2 ~@2", E: "c2 ~ c2@2 d2@2 e2@2 f2 ~@3 f2@2 ~@2",
  F: "g1@2 ~ g1 a1@2 b1@2 c2@2 ~@2 g1@2 ~@2", G: "d2 ~ g1 ~ c2 ~ g1 ~", H: "g1@2 ~ g1 a1@2 b1 ~ c2@2 ~@2 c2@2 ~@2",
  I: "f1 ~ g1 ~ c2 ~ c2 ~", J: "f2 ~ f2 ~ f2 ~@3", K: "f2@2 ~ eb2 d2 ~ c2@2 bb1 ~@3 f2@2 ~@2",
  L: "bb1 ~ f1 ~ bb1 ~ f1 ~", M: "bb1@2 ~@2 f1@2 ~@2 bb1@3 ~ f1@2 ~@2", N: "bb1 ~ c2 ~ d2 ~ eb2 ~",
  O: "f2 ~ f2 ~ g1 ~ a1 ~", P: "bb1 ~ g1 ~ f1 eb2 d2 c2", Q: "bb1 ~ f2 ~ bb1 ~ f2 ~", R: "bb1 ~ bb1 ~ c2 ~ d2 ~",
  S: "eb2 ~ bb1 ~ eb2 ~ bb1 ~", T: "eb2 ~ eb2 ~ d2 ~ c2 ~", U: "bb1 ~ a1 ~ g1 ~ f1 ~", V: "c2 ~ c2 ~ f2 ~ a1 ~",
  W: "bb1 ~ f1 ~ bb1 ~@3", X: "bb2 ~@3 f2@4 bb1 ~@3 bb1@2 ~@2",
})).s("gm_acoustic_bass").gain(0.72)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A B C D A E F G A B C D A E F G H I J K H I J K A B C D A E F G L M N@2 O P Q P R S T U V W X Y Z AA N@2 O P Q P R S T
  U V W X Y Z AB
>`.pickRestart({
  A: "~@2 [f3,a3,c4] ~@3 [f3,a3,c4] ~@3 [f3,a3,c4] ~@3 [f3,a3,c4] ~", // F
  B: "[f3,a3,c4]@2 [f3,a3,c4] ~@3 [f3,a3,c4] ~@3 [e3,bb3,c4] ~@3 [e3,bb3,c4] ~", // F C7
  C: "~@2 [e3,bb3,c4] ~@3 [e3,bb3,c4] ~@3 [e3,bb3,c4] ~@3 [e3,bb3,c4]!2", // C7
  D: "[e3,bb3,c4]@2 [e3,bb3,c4] ~@3 [e3,bb3,c4] ~@3 [f3,a3,c4] ~@3 [f3,a3,c4] ~", // C7 F
  E: "~@2 [f3,a3,c4] ~@3 [f3,a3,c4] ~@3 [e3,bb3,c4] ~@3 [e3,bb3,c4] ~", // F C7
  F: "~@2 [e3,bb3,c4] ~@3 [e3,bb3,c4] ~@3 [e3,bb3,c4] ~@3 [e3,bb3,c4] ~", // C7
  G: "[e3,bb3,c4]@2 ~ [e3,bb3,c4] ~@2 [e3,bb3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4]!3 ~@3", // C7 F
  H: "~@2 [g3,b3,f4] ~@3 [g3,b3,f4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~", // G7 C
  I: "[g3,b3,f4]@2 [g3,b3,f4] ~@3 [g3,b3,f4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~", // G7 C
  J: "[g3,b3,f4]@2 [g3,b3,f4] ~@3 [g3,b3,f4] ~@3 [g3,c4,e4] ~@3 [bb3,c4,e4]!2", // G7 C C7
  K: "[a3,c4,f4]@2 [a3,c4,f4] ~ [g3,b3,f4]@2 [g3,b3,f4] ~@3 [g3,c4,e4] ~ [g3,c4,e4] ~@3", // F G7 C
  L: "[a3,eb4,f4] ~@3 [a3,eb4,f4] ~@3 [a3,eb4,f4] ~@7", M: "[a3,eb4,f4] ~@3 [a3,eb4,f4]@3 ~ [bb3,d4,f4] ~@7",
  N: "~@2 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~", // Bb
  O: "[f3,bb3,d4] ~ [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~@3 [f3,bb3,d4] ~", // Bb
  P: "~@2 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~", // F7
  Q: "[f3,a3,eb4] ~ [f3,a3,eb4] ~@3 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~@3 [f3,a3,eb4] ~", // F7
  R: "~@2 [a3,eb4,f4] ~@3 [a3,eb4,f4] ~@3 [a3,eb4,f4] ~@3 [a3,eb4,f4] ~", // F7
  S: "~@2 [bb3,d4,f4]@3 ~ [bb3,d4,f4] ~@3 [bb3,d4,f4]@3 ~ [bb3,d4,f4] ~", // Bb
  T: "~@2 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~", // Bb
  U: "~@2 [bb3,d4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4] ~@3 [bb3,d4,f4] ~", // Bb
  V: "~@2 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [ab3,bb3,f4] ~", // Bb Bb7
  W: "~@2 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~@3 [g3,bb3,eb4] ~", // Eb
  X: "~@2 [eb4,g4] ~@3 [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~", // Eb
  Y: "~@2 [bb3,d4,f4]@2 ~@2 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~", // Bb
  Z: "~@2 [bb3,c4,e4] ~@3 [bb3,c4,e4] ~@3 [a3,eb4,f4]@3 ~ [a3,eb4,f4] ~", // C7 F7
  AA: "~@2 [bb3,d4,f4]@3 ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~@7", // Bb
  AB: "[bb3,d4,f4] ~@3 [a3,eb4,f4]@4 [bb3,d4] ~ [bb3,d4,f4]!2 [bb3,d4] ~@3", // Bb F7 Bb
})).s("gm_acoustic_guitar_nylon").gain(0.38).pan(0.7)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon_2 = note(`<
  A B C D A B C D A B C D A B C D ~@8 A B C D A B C D ~@18 E@2 F G@4 H ~@8
>`.pickRestart({
  A: "[f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~", B: "[f3,a3,c4] ~ [f3,a3,c4] ~ [e3,bb3,c4] ~ [e3,bb3,c4] ~",
  C: "[e3,bb3,c4] ~ [e3,bb3,c4] ~ [e3,bb3,c4] ~ [e3,bb3,c4] ~", // C7
  D: "[e3,bb3,c4] ~ [e3,bb3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4] ~", // C7 F
  E: "[bb3,d4,f4,g4] ~ [bb3,d4,f4,g4] ~ [bb3,d4,f4,g4] ~ [bb3,d4,f4,g4] ~", // Gm7
  F: "[bb3,d4,f4] ~ [bb3,d4] ~ [bb3,d4,f4] ~ [bb3,eb4,g4] ~", // Bb Eb
  G: "[a3,eb4,f4] ~ [a3,eb4,f4] ~ [a3,eb4,f4] ~ [a3,eb4,f4] ~", H: "[bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ f4 ~",
})).s("gm_acoustic_guitar_nylon").gain(0.14).pan(0.2)

// drums · kick
const kick = s("bd").struct("<[x!4]!32 [x!3 ~] [x!4]!16 [x!3 ~] [x!4]!8 [x!2]!7 [~@3 x]>").gain(0.4)
// … 82 more lines