Strudelify

Careless Whisper

Toy Boy

KeyD minorTempo76 bpm
0:00/0:00
// Careless Whisper — Toy Boy
// 76 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 94 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): MUTED GTR.
setcpm(76/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 · epiano1 · "E.PIANO 1"
const epiano1 = note("<~ A@7 B@7 C@7 D@2 E@7 F@2 G@8 H@3 I@8 J@5 K@8 H@3 L@8 M@4 N@4 O@8 P@2>".pickRestart({
  A: "[~@8 [d3,a3,c4,d4,f4]@15 ~ [g2,g3,bb3,d4,f4]@16 [bb2,a3,bb3,d4,f4]@15 ~ [c3,g3,a3,c4,e4]@16 [d3,a3,c4,d4,f4]@15 ~ [g2,g3,bb3,d4,f4]@16 [bb2,a3,bb3,d4,f4]@8]/7", // Dm7 Gm7 Bbmaj7 Am7 Dm7 Gm7 Bbmaj7
  B: "[~@8 [c3,g3,a3,c4,e4]@16 [d3,a3,c4,d4,f4]@15 ~ [g2,g3,bb3,d4,f4]@16 [bb2,d3,f3,a3,d4]@15 ~ [c3,g3,a3,c4,e4]@15 ~ [d3,f4,a4]@16 [g2,g3,bb3,d4,f4]@8, ~@87 [c4,d4]@17 ~@8]/7", // Am7 Dm7 Gm7 Bbmaj7 Am7 Dm Gm7 Csus2
  C: "[~@6 c4@2 [bb2,a3,bb3,d4,f4]@15 ~ [a2,g3,a3,c4,e4,g4]@16 [f4,a4,d5]@12 [f4,a4,c5,d5,f5]@4 [g2,g3,d4,f4,bb4,d5]@16 [f4,a4]@12 [f4,bb4,d5,f5]@4 [g4,c5]@12 [g4,c5,e5]@4 [d3,d4,f4,a4,d5]@8, ~@4 [g3,a3,e4]@4 ~@32 [d3,d4]@16 ~@16 [bb2,bb3,d4]@15 ~ [a2,g3,e4]@16 ~@8]/7", // Bbmaj7 Am7 Dm Dm7 Gm7 F Bb C5 …
  D: "[~ [f4,a4,c5,d5,f5] [g2,g3,d4,f4,bb4,d5]@4 [bb2,bb3,d4,f4,a4]@2]/2", // Dm7 Gm7 Bbmaj7
  E: "[~@4 [d4,f4,bb4,d5]@4 [a2,g3,a3,e4,g4,c5]@16 [d3,d4,f4,a4,d5]@15 ~ [g2,bb3,d4,f4,bb4]@16 [bb2,bb3,d4,f4,a4]@15 ~ [a3,c4]@12 ~@2 c4@2 [d3,a3,c4,d4,f4,a4]@15 ~ [g2,g3,bb3,d4,f4]@8, ~@9 [c3,e4,g4]@2 ~@3, ~@21 a3 ~@6]/7", // Bb Am7 Dm Gm7 Bbmaj7 Am Dm7 Gm7 …
  F: "[~@6 a3@2 [bb2,f3,a3,d4,f4]@14 f4 g4 [c3,g3,a3,c4,e4]@8, ~@2 [g3,c4,e4]@2 ~@7 d4 ~@4]/2", // Bbmaj7 Am7 C
  G: "[~@4 [a3,e4] f4 [a3,c4,e4]@2 ~@8 d5@8 [g3,bb3,f4]@12 ~@2 c4@2 [bb2,f3,a3,bb3,d4,f4]@15 ~ [a2,g3,a3,c4,e4,g4]@16 [f4,a4,d5]@12 [f4,a4,c5,d5,f5]@4 [d4,f4,bb4,d5]@12 [g4,c5,d5,e5]@4 [bb2,bb3,a4,bb4,d5,f5]@14 [d5,f5] g5 [a2,g3,g4,c5,e5]@8, ~@4 c4@2 ~@2 [d3,a3,d4,f4,a4]@16 [g2,d4]@16 ~@48 [g2,g3]@15 ~@25, ~@18 [g3,a3,e4]@2 ~@16 [d3,d4]@8 ~@15 a4 ~@4]/8", // A5 Am Gm7 Bbmaj7 Am7 Dm Dm7 Bb …
  H: "[~@4 [g4,e5] f5 [g4,c5,e5]@2 [d3,d4,f4,a4,d5]@16 [f4,g4,bb4,d5,f5]@12 [g4,c5,e5]@4 [bb2,bb3,f4,a4,bb4,d5]@8, ~@4 c5@2 ~@18 [g2,g3]@15 ~@9]/3", // C Dm Gm7 C Bbmaj7 G
  I: "[~@5 [bb4,f5]@3 [g4,c5]@7 ~ [g4,a4]@8 [d3,a3,c4,d4,f4]@15 ~ [g2,g3,bb3,d4,f4]@16 [bb2,a3,bb3,d4,f4]@15 ~ [c3,g3,a3,c4,e4]@16 [d3,a3,c4,d4,f4]@15 ~ [g2,g3,bb3,d4,f4]@16 [bb2,a3,bb3,d4,f4]@8, ~ [a4,d5] [a2,g3,a3,e4]@4 ~@26, ~@15 [c5,e5]@9 ~@104]/8", // Bb5 C5 Gsus2 Dm7 Gm7 Bbmaj7 Am7 Dm7 …
  J: "[~@8 [c3,g3,a3,c4,e4]@16 [d4,f4,a4,d5]@12 [c4,e4,a4]@2 [e4,g4,a4,c5]@2 [d4,f4,g4,bb4]@12 a4 g4 f4@2 [a3,bb3,d4,f4,a4]@12 [a3,bb3,d4,f4,a4]@4 [a2,g3,a3,c4,e4,g4]@8, ~@24 d3@15 ~ [g2,g3]@15 ~ bb2@15 ~@9, ~@13 [c4,d4] ~@6]/5", // Am7 Dm Am Am7 Gm7 Bbmaj7 Am7 G …
  K: "[~@6 e4@2 [d3,d4,f4,a4,d5]@16 [f4,g4,bb4,d5,f5]@12 [g4,c5,e5]@4 [bb3,f4,a4,bb4,d5]@12 ~ [bb4,f5]@3 [g4,c5]@7 ~ [g4,a4]@8 [f4,a4,d5]@12 [f4,a4,c5,d5,f5]@4 [d4,f4,bb4,d5]@12 [g4,c5,d5,e5]@4 [bb2,bb3,a4,bb4,d5,f5]@14 [d5,f5] g5 [a2,g3,g4,c5,e5]@8, c4@8 ~@16 [g2,g3]@15 ~ bb2@15 ~ [a2,g3,a3,e4]@16 [d3,d4]@16 [g2,g3]@15 ~@25, e4@5 ~@123, g4@2 ~ g4@5 ~@110 a4@2 ~@8, ~ a4@7 ~@44 [a4,d5]@4 ~@7 [c5,e5]@9 ~@56]/8", // Dm Gm7 C Bbmaj7 Bb5 C5 Gsus2 Dm …
  L: "[~@5 [bb4,f5]@3 [g4,c5]@7 ~ [g4,a4]@8 [d3,a3,c4,d4,f4]@15 ~ [g2,g3,bb3,d4,f4]@16 [bb2,a3,bb3,d4,f4]@15 ~ [c3,g3,a3,c4,e4]@15 ~ f5@8 [f5,a5,c6,d6]@8 [g2,g3,a3,bb3,d4,f4]@12 [f4,a4,bb4,d5]@4 [bb2,bb3,d4,f4,a4]@8, ~@4 [a4,d5]@4 [a2,g3,a3,e4]@16 ~@64 [d3,d5]@15 ~@25, ~@15 [c5,e5]@9 ~@63 [a4,c5]@16 ~@25]/8", // Bb5 C5 Gsus2 Dm7 Gm7 Bbmaj7 Am7 Dm7 …
  M: "[~@4 [a4,bb4,d5,f5]@4 a3@2 c4@10 e4 ~@2 a3 [d3,c4,d4,f4,a4]@16 [g2,g3,a3,bb3,d4,f4]@12 [g3,c4,e4,f4]@4 [bb2,bb3,d4,f4,a4]@8, ~ d5@2 ~@5, ~@8 [a2,g4,a4,c5,e5]@12 ~ c4@3 ~@40, ~@11 e4 ~@20]/4", // Bbmaj7 Dm7 Gm7 C Bbmaj7 Am7
  N: "[~@4 [a3,bb3,d4,f4]@4 [a4,c5]@12 [a4,c5,d5,e5,g5]@4 ~@16 [g2,g3,bb3,d4,f4]@15 ~ [bb2,bb3,d4,f4,a4]@8, ~ [a2,a3,e4,g4]@2 [d2,d3,e4,f4,g4,a4,c5]@2 ~@3, ~@36 [d5,a5,a6]@19 ~@9]/4", // Bbmaj7 Am Am7 Gm7 Bbmaj7 A7 Dm7 D5
  O: "[~@20 [c5,e5,g5,b5]@4 e4@2 f4@14 [g2,g3,bb3,d4,f4]@16 [bb2,a3,bb3,d4,f4,a4]@15 ~ [a2,c5]@16 [d3,a3,c4,d4,f4]@15 ~ [g3,bb3,d4,f4]@12 [bb3,d4,f4,bb4]@4 [bb2,bb3,d4,f4,a4]@8, ~@8 [a2,a3,c4,e4,g4,b4]@16 [d3,a4,c5,d5,f5]@16 ~@31 [a3,c4,e4,g4,a4]@17 ~@16 g2@15 ~@9]/8", // Cmaj7 Gm7 Bbmaj7 Am Dm7 Gm7 Bb Bbmaj7 …
  P: "[~ [bb3,d4,f4,a4] [a2,a3,c4,e4]@4 ~@2]/2", // Bbmaj7 Am
})).s("gm_epiano1").gain(0.31)

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

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~ A B C D E B C D E B F G H B F G H B F G H B F G H B F G H B F G H B F G H B F G H B F G H B F G H B F G H B F G H B
  F G I B F G H B F G H B F G H B F G H B F G J K L M N K L M O B F G P
>`.pickRestart({
  A: "~@10 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2", // Dm
  B: "[d4,f4,a4] ~@2 [d4,f4,a4] ~@2 [a3,d4,f4] ~@3 [g3,bb3,d4,g4] ~@2 [g3,bb3,d4,g4] ~@2", // Dm Gm
  C: "[g3,bb3,d4,g4] ~@2 [g3,bb3,d4,g4] ~@6 [bb3,d4,f4,a4] ~@2 [bb3,d4,f4,a4] ~@2", // Gm Bbmaj7
  D: "[bb3,d4,f4,a4] ~@2 [bb3,d4,f4,bb4] f4 ~@5 [a3,c4,a4,c5] ~@2 [a3,c4,a4,c5] ~@2", // Bbmaj7 Bb Am
  E: "[a3,c4,a4,c5] ~@2 [a3,c4,a4,c5] ~@6 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2", // Am Dm
  F: "[g3,bb3,d4,g4] ~@2 [g3,bb3,d4,g4] ~@2 [bb3,d4,g4]@2 ~@2 [bb3,d4,f4,a4] ~@2 [bb3,d4,f4,a4] ~@2", // Gm Bbmaj7
  G: "[bb3,d4,f4,a4] ~@2 [bb3,d4,f4,a4] ~@2 [bb3,d4,f4,bb4] f4 ~@2 [a3,c4,a4,c5] ~@2 [a3,c4,a4,c5] ~@2", // Bbmaj7 Bb Am
  H: "[a3,c4,a4,c5] ~@2 [a3,c4,a4,c5] ~@2 [a3,c4,a4,c5] a4 ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2", // Am Dm
  I: "[a3,c4,a4,c5] ~@2 [a3,c4,a4,c5] [a4,d5,f5]!2 [a4,d5] ~@3 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2", // Am Dm D5 Dm
  J: "[a3,c4,a4,c5] ~@2 [a3,c4,a4,c5] ~@2 [a3,c4,a4,c5] a4 ~@2 [d4,f4,a4] ~@2 [d4,f4,a4] ~ [a3,d4,g4]", // Am Dm Dsus4
  K: "[a3,e4,g4]!2 [d4,f4] ~ [a3,e4,g4]!2 [d4,f4] ~@3 [bb3,d4,g4] ~@2 [bb3,d4,f4] ~ [d4,g4]", // A7 Dm A7 Dm Gm Bb G5
  L: "[bb3,e4,g4]!2 [d4,f4] ~ [bb3,e4,g4]!2 [d4,f4] ~@3 [bb3,e4,g4] ~@2 [bb3,d4,f4] ~ [d4,g4]", // Edim Dm Edim Dm Edim Bb G5
  M: "[bb3,e4,g4]!2 [d4,f4] ~ [bb3,e4,g4]!2 ~@4 [a3,c4,a4,c5] ~@5", // Edim Dm Edim Am
  N: "[a4,c5] a4 [e4,g4] ~ [c4,e4] ~ g3 ~@3 [d4,f4,a4] ~@2 [d4,f4,a4] ~ [a3,d4,g4]", // Am Em C Dm Dsus4
  O: "[a4,c5] a4 [e4,g4] ~ [c4,e4] ~ g3 ~@3 [d4,f4,a4] ~@2 [d4,f4,a4] ~@2", // Am Em C Dm
  P: "[a3,c4,a4,c5] ~@2 [a3,c4,a4,c5] ~@2 [a3,c4,a4,c5] a4 ~@8", // Am
})).s("gm_electric_guitar_clean").gain(0.09).pan(0.2)

// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@2 A ~ B ~ A ~ B ~ A C D E A C D E A C D E A C D E A C D E A C D E A C D E A C D E A C D E A C D E A C D E A C D E A
  C D ~ A C D E A C D E A C D E A C D E A C D E F@2 ~ G F@2 ~ G A C D E
>`.pickRestart({
  A: "~@7 [a3,d4] ~@8", B: "~@4 [bb3,d4,bb4] ~@11", C: "~@7 [bb3,d4] ~@8, ~@3 g3 ~@4", D: "~@7 [bb3,d4,bb4] ~@8",
  E: "~@7 [a3,c4,c5] ~@8", F: "~@15 bb3", G: "~@3 e4 ~ c4 a3 g3 ~@8",
})).s("gm_electric_guitar_clean").gain(0.05).pan(0.2)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note("<~@4 A@7 ~@8 B@8 ~@10 C@6 D@6 E@5 ~@7 F@6 G@7 ~@20>".pickRestart({
  A: "[[a4,a5,a6]@12 [a4,a5,a6]@8 [g4,g5,g6]@8 [f4,f5,f6]@8 [e4,e5,e6]@8 d4@7 ~@5, ~@88 d6@11 ~@13, ~@88 d5@9 ~@15]/7", // A G F E
  B: "[~@8 f4@16 e4@16 ~@2 d5@8 e5@3 f5@2 f4@8 bb4@3 ~ c5@2 [f4,d5]@2 ~ [f4,a4,bb4,d5]@16 [e4,a4,c5,d5]@16 [a4,a5]@16 ~@8, ~@8 a4@32 f4@15 ~@12 g4@5 ~@56]/8", // Dm Bbmaj7 Am A
  C: "[~@8 a4@16 f4@16 [d4,f4,a4]@16 [c4,e4,g4]@16 ~@2 d5@8 e5@3 f5@2 ~ bb4@8, ~@2 d5@7 ~@9 a4@6, ~@24 f4@5 f4@3]/6", // Dm C
  D: "[bb4@3 c5@2 [f4,d5]@2 ~@10 e5@4 f5@3 [e4,a4,c5,d5,a5,a6]@16 [a4,a5]@56, ~@3 g4@5 [f4,a4,bb4,d5]@16 ~@72]/6", // Dm Am A Bbmaj7
  E: "[~ [a4,a5,a6]@2 [g4,g5,g6]@2 [f4,f5,f6]@2 [e4,e5,e6]@2 ~]/5", // A G F E
  F: "[~@8 [c4,d4,f4,a4]@16 [bb3,d4,f4]@16 [bb3,d4,f4,a4]@15 [a3,c4,e4,g4]@17 d5@9 e5@4 f5@3 [d4,f4,bb4]@8, ~@9 [f4,a4]@2 ~]/6", // Dm7 Bb Bbmaj7 Am7 Bb F
  G: "[~@4 c5@4 [a4,d5]@12 e5@2 a4@2 ~@8 c5@8 [a4,d5,e5,a5,d6]@16 [g4,c5,d5,g5]@16 [f4,a4,bb4,f5]@16 [g4,a4,c5,e5]@16 [f4,f5]@3 ~@5, ~@3 [d4,g4]@4 ~ f4@16 [e4,a4,a5]@16 ~@72, ~@5 bb4 ~@22]/7", // D5 Asus4 Gsus4 Bbmaj7 Am7 F G5 A5
})).s("gm_string_ensemble_2").gain(0.15)

// chords · synth brass 1 · "SYNBRASS 1" · Dm7 Gm7 Dm7 Gm7
const synth_brass_1 = note(`<
  ~@53
  [~@5 [c4,d4,f4,a4] ~@2]
  [~@5 [g4,bb4,d5,f5] ~@2]
  ~@2
  [~@5 [c4,d4,f4,a4] ~@2]
  [~@5 [g4,bb4,d5,f5] ~@2]
  ~@35
>`).s("gm_synth_brass_1").gain(0.5)

// other · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  ~@26 A@4 ~@4 B C D E@2 ~@2 F ~ G H@2 ~@7 I J@3 K J L M N ~@3 O P Q R ~@25
>`.pickRestart({
  A: "[~@6 f4@2 e4@4 f4@2 bb3@6 ~@2 f4@2 e4@4 f4 ~ g4@4 a4@3 ~ f5@2 e5@4 f5@2 d5@6 ~@3 d4 d4@4 ~@4, ~@56 c4 ~@7]/4",
  B: "~@2 d4 e4 f4@2 g4 a4@5 [f4,g4] d4@3", C: "~@8 a4 ~ f4 ~ e4 ~ f4 ~",
  D: "[d4,e4,f4] g4@2 d4 ~@6 [c4,e4] [d4,f4] d4 ~ c4 ~", // Dm C Dm
  E: "[~@2 f3 g3 [a3,a4] [g3,g4] [a3,a4] [c4,c5] [d4,d5]@4 [f4,a4,d5]@8 ~@12]/2", F: "~@2 d3 e3 f3 g3 a3 c4 d4@4 ~@4",
  G: "~@6 bb2 c3 bb2@4 ~@4", H: "[[d5,f5]@7 bb2 a2@10 ~@14]/2", I: "~@10 d4 ~@2 c4 ~@2",
  J: "d4 c4 ~ c4 ~@2 c4 ~@3 d4 ~@2 c4 ~@2",
  K: "~@3 [ab4,a4,db5,d5] [g4,ab4,c5,db5] ~ [e4,f4,a4,bb4] [gb4,b4,c5] ~@2 d4 ~@2 c4 ~@2", // Dmaj7 Dbmaj7 Fmaj7 B
  L: "d4 c4 ~ c4 ~@2 [c4,d4]@2 [a3,d4,f4]@5 ~@3", // Csus2 Dm
  M: "[d4,f4,a4,c5]@3 ~ [d4,f4,a4]@3 d4 [eb4,e4] ~ [d4,eb4]@2 ~@4, ~@2 a4 ~", // Dm7 Dm Emaj7 Ebmaj7
  N: "~@2 f3 g3 a3 g3 a3 ~ [a3,d4,f4]@4 ~@4, ~@7 [a2,d3]@5 ~@4", O: "~@2 d3 e3 f3 g3 a3 c4 d4@2 d4 ~@2 c4 a3 c4",
  P: "a3@4 ~@4 g3 a3 g3 a3 g3@4", Q: "~@7 c3 bb2@4 [d5,f5]@2 ~@2", R: "~@4 f5@2 ~@2 [c5,e5]@5 ~@3",
})).s("gm_acoustic_guitar_nylon").gain(0.29).pan(0.2)

// other · acoustic guitar nylon · "NYLON GTR" · soft notes
const acoustic_guitar_nylon_2 = note("<~@26 A B ~@6 C ~ D E ~@3 F ~ G@2 ~@9 H@3 I H J K ~@4 F L M N ~@25>".pickRestart({
  A: "~@13 [eb4,e4] [db4,d4] ~", B: "~@12 e4 f4 gb4 ~", C: "~@7 ab4 ~@8", D: "[eb4,gb4] ~@15", E: "~@2 f4 g4 ~@12",
  F: "~@4 gb3 ~@11", G: "[~@15 a4@7 ~@10]/2", H: "~@2 a3 ~@13", I: "~@7 g4 ~@8",
  J: "~@2 a3 ~@5 f3@5 ~@3, ~@7 bb2@5 ~@4", K: "~@8 [g4,ab4] e4 ~@6", L: "~@7 a3 ~@8", M: "~@6 a2 ~@4 a4 ~@4",
  N: "~@4 [a4,d5]@2 ~ g4@5 ~@4", // D5
})).s("gm_acoustic_guitar_nylon").gain(0.15).pan(0.2)

// other · alto sax
const alto_sax = note("<~ A@4 B@4 C ~@35 A@4 B@4 D@2 ~@14 A@4 D@2 ~@19>".pickRestart({
  A: "[~@6 [g4,ab4] [a4,b4,c5] d5@2 d5 a4@2 f4@2 e5@3 d5 a4@2 f4@2 ~ c5@2 bb4 f4@2 d4@2 c5@3 bb4 f4@2 ~@3 bb4@2 a4 f4@2 d4@2 bb3@7 ~@2 a3@2 bb3@2 c4@2 d4@2, ~@8 db5 ~@55]/4", // Abmaj7 Am
  B: "[e4@2 f4@2 g4@2 a4 [b4,c5] d5@2 d5 a4@2 f4@2 e5@3 d5 a4@2 f4@2 ~ c5@2 bb4 f4@2 d4@2 c5@3 bb4 f4@2 ~@3 bb4@2 a4 f4@2 d4@2 bb3@7 ~@2 a3@2 bb3@2 c4@2 d4@2, ~@8 db5 ~@55]/4", // Cmaj7
  C: "e4 f4 g4 ab4 ~@4", D: "[e4 f4 g4 a4 d5@8 ~@4]/2",
})).s("gm_alto_sax").gain(0.38)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@9 A@2 ~ A@3 B@2 ~ A@8 ~ A ~ A@2 ~@2 A@2 B@2 ~ A@7 ~@3 A ~@3 C D A@7 ~ A@7 ~@3 A ~@3 A ~@7 A ~@9
>`.pickRestart({
  A: "~@15 x", B: "~@7 x", C: "~@12 x ~@2 x", D: "~@7 x ~@8",
})).gain(0.24)

// drums · rim
const rim = s("rim").struct("<~@9 A B@7 ~@12 A B@2 C D B@3 ~@57>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@2 x ~@3 x!2", D: "~ x ~@2 x ~@7 x ~@3",
})).gain(0.56)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@65 A ~@14 B C ~@6 B C ~@3 D>".pickRestart({
  A: "~@5 x ~@10", B: "~@14 x!2", C: "x!5 ~@11", D: "~@3 x ~@12",
})).gain(0.24)

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

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@57 A ~@22 B C ~@6 B C ~@4>".pickRestart({
  A: "~@7 x ~@8", B: "~@15 x", C: "x!4 ~@12",
})).gain(0.24)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B C B D B C B E B C B C B C B D F C G H F C F I J K L M N C O P F C F D F C G H F C N H F C F Q F C R M F C G H F
  C N M F C G H F C N M F C F H J K J H J K S T B U J V U@2 S W F C X Y
// … 109 more lines