Strudelify

Ridammi il Sole

Zucchero

KeyF majorTempo102 bpm
0:00/0:00
// Ridammi il Sole — Zucchero
// 102 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 12 Timpani -> timpani
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 105 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): guitar program 25, guitar program 30.
setcpm(102/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.

// other · accordion
const accordion = note("<~@4 A@8 ~@93>".pickRestart({
  A: "[~@7 bb3, ~ [f3,f4]@127]/8", // F
})).s("gm_accordion").gain(0.22).pan(0.4)

// bass · electric bass finger
const bass = note(`<
  ~@13 A B C D E F G F H F G I J F K F L F G M N O N M N O N F G F H F G I J F K F K F P M N O N M N O N Q R S T U V W X
  Y Z AA AB AC AD AE AF AG AH AA AB AA AI AJ AK M N O N M N O N M N O N M N O AL@3 ~
>`.pickRestart({
  A: "~@5 f1@3", B: "f1@2 f2!2", C: "bb1@4 f2!2 f2@2", D: "f1@7 f1 f2@2 f2@2 f2@4", E: "bb1@8 f2@2 f2@2 f2@3 ~",
  F: "f1@5 ~ f1@2 bb1@5 ~ bb1@2", G: "c2@5 ~ c2@2 bb1@4 d2@2 f2@2", H: "c2@5 ~ c2@2 bb1@2 bb1!2 g2@2 f2@2",
  I: "f1@4 ~@2 f1@2 bb1@5 ~ bb1@2", J: "c2@5 ~ c2@2 bb1@3 ~ g2@2 f2@2", K: "c2@5 ~ c2@2 bb1@2 bb1!2 d2@2 f2@2",
  L: "c2@5 ~ c2@2 bb1@4 g1@2 c2@2", M: "f1@3 ~ f1@4 f2@2 f2@2 f2@4", N: "bb1@2 bb1@2 f2!2 f2@2",
  O: "f1@3 ~ f1@3 f1 f2@2 f2@2 f2@4", P: "c2@5 ~ c2@2 bb1@4 f2@3 ~", Q: "db2@7 ~ db2@2 c2@2 bb1@2 eb2@2",
  R: "f2@7 c2 f2@2 f2!2 f2@2 f2@2", S: "db2@3 ~ db2@3 ab1 db2 ~ db2@2 ab1@2 db2@2", T: "c2@7 f1 c2 ~ c2@3 ~ c2@2",
  U: "db2@7 ab1 db2@2 c2@2 bb1@2 eb2@2", V: "f2@7 c2 f2@2 f2@5 ~", W: "c2@7 ~ c2@2 g1@2 c2@2 c2@2",
  X: "eb2 bb1 eb1 bb1 eb2 bb1 eb1 bb1", Y: "f1@2 c2@2 f2@2 c2@2 f1@2 c2@2 f2@2 c2 ~",
  Z: "db2@2 db2@2 db2@2 db2@2 db2@2 db2@2 db2@2 db2 ~", AA: "bb1@4 ~ eb2@3", AB: "f2@9 ~ eb2@2 g2@2 bb2@2",
  AC: "bb1@3 ~ bb1@4 ~ eb2 eb2@6", AD: "f2@10 eb2@2 f2@2 d2 c2", AE: "bb1@3 ~ bb1@5 ~ eb2@5 ~",
  AF: "f2@4 f2@4 ~@2 eb2@2 g2@2 bb2 c3", AG: "bb1@4 bb1@5 ~ eb2@6", AH: "f2@6 ~ f2 ~ f2 d2@2 c2@2 f2@2",
  AI: "f2@9 ~ f2@2 c3@2 bb2@2", AJ: "bb1@3 ~ bb1@4 ~@2 eb2@6", AK: "f2!5 eb2 d2 c2",
  AL: "[bb1@4 bb1@4 f2@2 f2@2 bb1@35 ~]/3",
})).s("gm_electric_bass_finger").gain(0.72)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@14 A B A B ~@13 C A B A B A B A B ~@13 C A B A B A B A D ~@7 E ~@2 F G F H ~ H F H ~ I ~ H ~ J A B A B A B A B A B A
  B A B A K@3 ~
>`.pickRestart({
  A: "~@4 a3 ~@3", B: "d4!8", C: "g3!4 ~@4", D: "d4!6 [bb3,d4,f4] [bb3,d4]", E: "c4!8", F: "~@6 eb4 ~",
  G: "c4!4 ~@3 eb4", H: "c4!4 ~@4", I: "c4!4 eb4 ~@2 eb4", J: "c4!4 ~@2 eb4 ~", K: "[d4!6 [bb3,c4,f4]@13 ~@5]/3",
})).s("gm_acoustic_guitar_steel").gain(0.25).pan(1)

// other · vibraphone
const vibraphone = note(`<
  ~@18 A B C ~ D B E ~ F@2 G@2 H I ~@2 J K@2 ~ J L M B C ~ D B N ~ O P Q@2 R S@2 ~ J K@2 ~ J L T@2 U@2 V@3 ~ W X Y Z
  AA@2 AB AC ~@2 AB AD AA@2 AB AE AF ~ J K@2 ~ J AG@2 ~ J AH@2 ~ J AI@3 ~
>`.pickRestart({
  A: "~@2 c4 ~ c4 ~ c4 ~ c4!2 c4@2 d4 ~ c4@2", B: "g3@5 ~ g3 a3 bb3@6 a3@2", C: "a3 ~",
  D: "~@2 c4@2 c4 ~ c4 ~ c4!2 c4@2 d4@2 c4@2", E: "a3@11 ~@5", F: "[~@2 c4 ~ c4 ~ c4@2 f4 ~ f4@2 d4 ~ d4@4 c4@8 ~@6]/2",
  G: "[~@2 a4 ~ a4 ~ a4 ~ a4@2 f4@2 a4@2 g4@8 ~@10]/2", H: "~@2 c4 ~ c4 ~ c4 ~ f4 ~ f4@4 d4 ~",
  I: "d4@2 c4@3 ~ c4@2 d4!2 f4 ~ f4 ~ f4@2", J: "bb3@2 c4@2 d4@2 c4@7 ~ c4@2",
  K: "[bb3@2 c4@2 d4@2 bb3@2 c4@4 f4@7 ~@13]/2", L: "bb3 c4 d4 bb3 c4@2 f4@2",
  M: "~@2 c4@2 c4@2 c4 ~ c4!2 c4@2 d4@2 c4@2", N: "a3@9 ~@7", O: "~@2 c4 ~ c4 ~ c4@2 f4!2 f4@2 d4 ~ d4@2",
  P: "c4@7 ~@9", Q: "[~@2 a4 ~ a4 ~ a4 ~ a4@2 f4@2 a4@2 g4@9 ~@9]/2", R: "~@2 c4@2 c4 ~ c4@2 f4 ~ f4@4 d4 ~",
  S: "[d4@2 c4@3 ~ c4@2 d4 f4!2 ~ f4 ~ f4@6 ~@12]/2", T: "[~@4 f4@2 f4 ~ f4@2 eb4@2 db4@2 f4@4 c4@10 ~@4]/2",
  U: "[~@8 f4@2 g4@2 f4@2 a4@15 ~@3]/2", V: "[~@4 f4 ~ f4 ~ f4@2 eb4@2 db4@2 f4@4 c4@7 ~ a3@2 bb3@2 c4@13 ~@5]/3",
  W: "a4@3 g4@3 f4@2", X: "ab4@5 ~ g4@9 ~", Y: "~@2 f4 ~ f4 ~ f4 ~ bb4!2 bb4@4 g4 ~", Z: "g4 f4@3 ~@4",
  AA: "[~@2 d5 ~ d5 ~ d5 ~ d5@2 bb4@2 d5@2 c5@6 ~@12]/2", AB: "~@2 f4 ~ f4 ~ f4@2 bb4!2 bb4@4 g4 ~", AC: "g4 f4 ~@6",
  AD: "g4 f4@2 ~@5", AE: "g4@2 f4@2 ~@2 f4@2 g4!2 bb4 ~ bb4 ~ bb4 ~", AF: "bb4 a4 g4 f4@4 ~",
  AG: "[bb3 c4 d4 bb3 c4@2 f4@3 ~@7]/2", AH: "[bb3 c4 d4 bb3 c4@2 f4@4 ~@6]/2", AI: "[bb3 c4 d4 bb3 c4@2 f4@13 ~@5]/3",
})).s("gm_vibraphone").gain(0.72)

// chords · bandoneon
const bandoneon = note(`<
  ~@10 A B C D E F G H ~@14 E I J H E I G H ~@14 E I J H E I G H ~@24 E I J H E I G H E I J H E I G K@3 ~
>`.pickRestart({
  A: "c4 f4 c5 bb4 a4 g4 f4 e4", B: "d4 e4 f4 g4 f4 e4 d4@2", C: "bb3 c4 d4 c4@5", D: "bb3 c4 d4 bb3 c4@2 f4@2",
  E: "~ f4 c5 bb4 a4 g4 f4 e4, c4@15 ~", F: "d4 e4 f4 g4 f4 e4 d4@2, bb3", G: "bb3 c4 d4 c4@5, f3",
  H: "~ c4 d4 ~ c4@2 f4@2, bb3@5 ~ bb3@10", I: "d4@2 e4@2 f4@2 g4@2 f4@2 e4@2 d4@3 ~, bb3@15 ~",
  J: "bb3 c4 d4 c4@5, f3@15 ~", K: "[~ c4 d4 ~ c4@2 f4@18, bb3@5 ~ bb3@42]/3",
})).s("gm_bandoneon").gain(0.47).pan(0.8)

// other · synth strings 2
const synth_strings_2 = note("<~ A@7 B@5 ~@92>".pickRestart({
  A: "[~@9 bb5@12 ~@7 f5@36 ~@10 bb5@34 ~@4, ~@21 a5@45 ~@46]/7", B: "[~@4 c7@8 bb6@8 a6@9 g6@9 f6@39 ~@3]/5",
})).s("gm_synth_strings_2").gain(0.27).pan(0.6)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@63 A B C B D E F G H ~@22 I ~@10>".pickRestart({
  A: "a4 g4 a4 g4 a4 g4 a4@2", B: "f4", C: "a4@5 g4 a4@2", D: "a4 g4 a4 g4 a4 g4 a4 bb4", E: "c5@15 ~",
  F: "[g4,bb4]@2 [f4,a4]@2 [g4,bb4]@2 [f4,a4]@2 [g4,bb4]@2 [f4,a4]@2 [g4,bb4]@3 ~", // Gm F Gm F Gm F Gm
  G: "[a4,c5] [g4,bb4] [a4,c5] [g4,bb4] [a4,c5] [g4,bb4] [f4,a4]@2", H: "[db4,f4,ab4]", I: "~@3 f5",
})).s("gm_string_ensemble_2").gain(0.35).pan(0.9)

// chords · string ensemble 2 · soft notes
const string_ensemble_2_soft = note("<A@8 ~@97>".pickRestart({
  A: "[~@5 d6@40 e6@83, ~@5 [c6,f6]@123]/8", // F5
})).s("gm_string_ensemble_2").gain(0.19).pan(0.9)

// other · timpani
const timpani = note("<~@13 A ~@17 B C ~@20 B C ~@6 B ~@9 D C ~@12 B ~@3 B ~@7 B ~@3 E ~@3>".pickRestart({
  A: "f2 [f2,g2] ~@6 [f2,g2]!8", B: "~@14 f2!2", C: "f2 ~@15", D: "~@4 f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~",
  E: "~@10 f2!2 ~@4",
})).s("gm_timpani").gain(0.56).pan(0.1)

// other · timpani · soft notes · Fsus2
const timpani_soft = note("<~@13 [~@2 [f2,g2]!6 ~@8] ~@57 [f2 ~ f2 ~@13] ~@33>").s("gm_timpani").gain(0.24).pan(0.1)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@13 A@2 B C D E F G H G I J K L M E N O P Q B C D Q B C D E F G H G I J K L M E N O P Q B C D Q B C R S T U V U V W X
  Y Z AA AB AC AD AE AF AG AH AI AJ AE AF AK AL Q B C D Q B C D Q B C D Q B C AM ~@3
>`.pickRestart({
  A: "[~@16 a3@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [c4,f4,a4]@2 [c4,f4,g4] [c4,f4,a4]!7, ~@15 [c4,f4]@3 ~@14, ~@4 f3 ~@3]/2", // F Csus4 F F5
  B: "[bb3,f4]@2 [bb3,f4]@2 [bb3,c4,f4]@2 [bb3,c4,f4]@2 [bb3,c4,f4]!8, c4 ~@3", // Bb5 Bbsus2
  C: "[a3,c4,f4]@2 [a3,c4,f4]@2 [c4,f4]@2 [c4,f4,a4]@2 [c4,f4,g4] [c4,f4,a4]!7, ~ a3 ~@2", // F F5 F Csus4 F
  D: "[bb3,c4,f4]@2 [bb3,c4,f4]@2 [bb3,c4,f4]@2 [bb3,c4,f4]@2 [bb3,c4,f4]!8", E: "[a3,c4,f4]!4 [bb3,d4,f4]!4",
  F: "[g3,c4,f4]!4 [bb3,d4,f4]!4", // Csus4 Bb
  G: "[a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]!2 [bb3,d4,f4]@2 [bb3,d4,f4]@2", // F Bb
  H: "[g3,c4,f4]@2 [g3,c4,f4]@2 [g3,c4,f4]!2 [g3,c4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]!2", // Csus4 Bb
  I: "[g3,c4,f4]@2 [g3,c4,f4]@2 [g3,c4,f4]@2 [g3,c4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]!2 [bb3,d4,f4]@2", // Csus4 Bb
  J: "[a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]!2 [a3,c4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]!2 [bb3,d4,f4]@2 [bb3,d4,f4]@2", // F Bb
  K: "[g3,c4,f4]@2 [g3,c4,f4]@2 [g3,c4,f4]@2 [g3,c4,f4]!2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]!2 [bb3,d4,f4]@2", // Csus4 Bb
  L: "[a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]!2 [bb3,d4,f4]@2", // F Bb
  M: "[g3,c4,f4]@2 [g3,c4,f4]@2 [g3,c4,f4]@2 [g3,c4,f4]!2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]!2", // Csus4 Bb
  N: "[g3,c4,f4]!2 [g3,c4,f4]@2 [g3,c4,f4]@2 [g3,c4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2", // Csus4 Bb
  O: "[a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]!2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2", // F Bb
  P: "[c4,e4,f4]@2 [c4,e4,f4]@2 [c4,e4,f4]@2 [c4,e4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4]@2 [bb3,d4,f4] ~", // Fmaj7 Bb
  Q: "[a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [c4,f4,a4]@2 [c4,f4,g4] [c4,f4,a4]!7", // F Csus4 F
  R: "[bb3,c4,f4]@2 [bb3,c4,f4]@2 [bb3,c4,f4]@2 [bb3,c4,f4]@2 [bb3,c4,f4]!4 ~@2 [ab3,db4,f4]!2", S: "[ab3,db4,f4]!8",
  T: "[a3,c4,f4]!8", // F
  U: "[ab3,db4,f4]@2 [ab3,db4,f4]@2 [ab3,db4,f4]@2 [ab3,db4,f4]!2 [ab3,db4,f4]@2 [ab3,db4,f4]@2 [ab3,db4,f4]@2 [ab3,db4,f4]@2", // Db
  V: "[a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]!2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]!2", // F
  W: "[g3,c4,f4]@2 [g3,c4,f4]@2 [g3,c4,f4]@2 [g3,c4,f4]!2 [g3,c4,f4]@2 [g3,c4,f4]@2 [g3,c4,f4]@2 [g3,c4,f4]@2", // Csus4
  X: "[g3,bb3,eb4]@2 [g3,bb3,eb4]@2 [g3,bb3,eb4]@2 [g3,bb3,eb4]!2 [g3,bb3,eb4]@2 [g3,bb3,eb4]@2 [g3,bb3,eb4]@2 [g3,bb3,eb4]@2", // Eb
  Y: "[a3,c4,f4]@2 [a3,c4,f4]!2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2", // F
  Z: "[db4,f4,ab4]@2 [db4,f4,ab4]@2 [db4,f4,ab4]@2 [db4,f4,ab4]@2 [db4,f4,ab4]@2 [db4,f4,ab4]@2 [db4,f4,ab4]@2 [db4,f4,ab4] ~", // Db
  AA: "[d4,f4,bb4] [f4,bb4] [d4,f4,bb4]!5 [f4,bb4] [eb4,g4,bb4]!4 [g4,bb4] [eb4,g4,bb4]!3", // Bb Bb5 Bb Bb5 Eb Gm Eb
  AB: "[e4,f4,a4,bb4] [f4,a4,bb4]!6 [eb4,g4,bb4]!7 [g4,bb4] [eb4,g4,bb4]", // Fmaj7 Bbmaj7 Eb Gm Eb
  AC: "[d4,f4,bb4] [f4,bb4] [d4,f4,bb4] [f4,bb4] [d4,f4,bb4]!3 [f4,bb4] [eb4,g4,bb4] [g4,bb4] [eb4,g4,bb4]!2 [g4,bb4] [eb4,g4,bb4]!2 [g4,bb4]", // Bb Bb5 Bb Bb5 Bb Bb5 Eb Gm …
  AD: "[f4,a4,bb4]!7 [f4,bb4] [eb4,g4,bb4] [g4,bb4] [eb4,g4,bb4]!6", // Bbmaj7 Bb5 Eb Gm Eb
  AE: "[d4,f4,bb4]!3 [f4,bb4] [d4,f4,bb4]!4 [eb4,g4,bb4]!8", AF: "[f4,a4,bb4]!8 [eb4,g4,bb4] [g4,bb4] [eb4,g4,bb4]!6",
  AG: "[d4,f4,bb4]!8 [eb4,g4,bb4] [g4,bb4] [eb4,g4,bb4]!2 [g4,bb4] [eb4,g4,bb4]!2 [g4,bb4]", // Bb Eb Gm Eb Gm Eb Gm
  AH: "[f4,a4,bb4] [a4,bb4] [f4,a4,bb4]!6 [eb4,g4,bb4] [g4,bb4] [eb4,g4,bb4]!3 [g4,bb4] [eb4,g4,bb4]!2", // Bbmaj7 Eb Gm Eb Gm Eb
  AI: "[d4,f4,bb4] [f4,bb4] [d4,f4,bb4] [f4,bb4] [d4,f4,bb4]!4 [eb4,g4,bb4]!7 [g4,bb4]", // Bb Bb5 Bb Bb5 Bb Eb Gm
  AJ: "[f4,a4,bb4]!3 [a4,bb4] [f4,a4,bb4]!3 [eb4,g4,bb4] [g4,bb4] [eb4,g4,bb4]!2 [g4,bb4] [eb4,g4,bb4]!2 [g4,bb4] [eb4,g4,bb4]", // Bbmaj7 Eb Gm Eb Gm Eb Gm Eb
  AK: "[d4,f4,bb4]!5 [f4,bb4] [d4,f4,bb4]!2 [eb4,g4,bb4]!8", // Bb Bb5 Bb Eb
  AL: "[f4,a4,bb4] [a4,bb4] [f4,a4,bb4]!3 [a4,bb4] [f4,a4,bb4]!2 [eb4,g4,bb4] [g4,bb4] [eb4,g4,bb4]!2 [g4,bb4] [eb4,g4,bb4]!3", // Bbmaj7 Eb Gm Eb Gm Eb
  AM: "[bb3,c4,f4]@2 [bb3,c4,f4]@2 [bb3,c4,f4]@2 [bb3,c4,f4]@2 [bb3,c4,f4]!4 ~@4", // Bbsus2
})).s("gm_electric_guitar_clean").gain(0.2).pan(0.6)

// chords · percussive organ
const percussive_organ = note(`<
  ~@14 A@4 B C D E D C D F D C G C D H I@2 J@4 K@2 D C L M D C N O P Q@2 R@2 S T U T U T V T U W X Y Z AA@4 AB AC AD AE
  AD AE AD AE AD AE AD AE AD AE AD AE X AF T V T U AG U AH AI@3 AJ@6 ~
>`.pickRestart({
  A: "[c6 bb5 c5 bb5, f5]/4", B: "[c5,f5]@2 ~@2 [c5,f5]@2 f4 ~ [bb4,f5]@2 f4 ~ [bb4,f5]@2 f4 ~",
  C: "[c5,f5]@2 g4 ~ [c5,f5]@2 g4 ~ [bb4,f5]@2 f4 ~ [bb4,f5]@2 f4 ~", // F5 Bb5
  D: "[c5,f5]@2 f4 ~ [c5,f5]@2 f4 ~ [bb4,f5]@2 f4 ~ [bb4,f5]@2 f4 ~", // F5 Bb5
  E: "c5@2 g4 ~ [c5,f5]@2 g4 ~ [bb4,c5,f5]@4 g5@2 f5 ~, f5 ~@15", F: "~@8 c6@7 ~, f6@7 ~",
  G: "[c5,f5]@2 f4 ~ [c5,f5]@2 f4 ~ [bb4,f5]@2 ~@2 [bb4,f5]@2 f4 ~", H: "[c5,e5,f5]@4 [c5,e5,f5]@3 ~ [bb4,d5,f5]@8",
  I: "[c5 bb4, f5]/2", J: "[c5@2 ~ c5@3 bb4@2, f4@3 f5@5, ~ bb4 ~@2]/4", K: "[c5 bb4, f4]/2",
  L: "[c5,f5]@2 f4 ~ [c5,f5]@2 f4 ~ [bb4,f5]@2 f4 ~ [a5,c6]@4, ~@12 g5 ~@3", M: "[g5,c6]@15 ~",
  N: "[c5,f5]@2 f4 ~ [c5,f5]@2 f4 ~ [bb4,f5]@2 f4 ~ [bb4,f5] ~ c6@2, ~@14 b5 ~", // F5 Bb5
  O: "f6@8 [bb5,c6,f6]@6 [c6,d6,e6] [e5,f5,g5,a5,b5]", P: "c5 bb4, [f4,f5]@15 ~",
  Q: "[[g4,c5] bb4 c5 bb4, f5@15 ~ f5@15 ~, ~@8 f4@23 ~]/2", // C5
  R: "[c5@8 bb4@8 c5@8 bb4@7 ~, f5@16 f5@15 ~, g4@7 ~ f4@24]/2", S: "[c5,e5] [bb4,d5], f5@15 ~", T: "[c5,f5]",
  U: "[bb4,f5]", V: "[bb4,f5]@15 ~", W: "[db5,f5], ab4@7 ~", X: "[c5,f5,a5]", Y: "[ab4,db5,f5]@15 [gb5,g5,a5,b5,c6]",
  Z: "d6 ~@2 g5 bb5@4 c6@7 ~, f6@15 ~, ~@4 a5 ~@11",
  AA: "[db5@16 a5@16 ~@16 [c5,eb5,bb5]@15 ~, f5@47 ~@17, ab4@14 ~@2 c5@31 ~@17, ~ g5]/4", AB: "[f5,a5,c6]",
  AC: "[db5,f5,ab5]", AD: "[d5,f5,bb5] [eb5,g5,bb5]", AE: "[f5,a5,bb5] [eb5,g5,bb5]", AF: "[d5,f5,bb5]",
  AG: "[c5,f5]@15 ~", AH: "[c5,f5]@15 [g5,a5]",
  AI: "[[b5,c6,e6] ~ c6@2 bb5@2 a5@2 bb5@2 c6@2 d6@2 c6@10 a6@4 g6@2 [bb5,f6]@18, f6 ~, d6 ~@23]/3", // Cmaj7 Bb5
  AJ: "[c6@4 bb5@4 ~@7 c6@9, f5@7 ~ bb5@8, ~@32 c6@19 ~@45, ~@19 f6@29]/6",
})).s("gm_percussive_organ").gain(0.24).pan(0.8)

// drums · kick
const kick = s("bd").struct(`<
  ~@14 A@2 B A C A D B D A D A D A D E D A D@2 B D@3 B A D B D B D A D A D A D E D A D@2 B D@3 B F A@9 G A@3 H A@3 H A@3
  H A H B D H B D A E A B D A B@2 D A I ~@3
>`.pickRestart({
  A: "x ~@3 x!2 ~@2", B: "x ~@3 x ~@2 x", C: "x ~@2 x!2 ~@2 x", D: "x!2", E: "x ~@2 x!2 ~@3",
  F: "x ~@7 x ~@2 x ~@2 x ~", G: "x!8", H: "x ~@3 x!2 ~ x", I: "x ~@3 x!3 ~",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct("<~@14 A@57 B C@2 A D A D A E A D A@3 F A@7 E A@7 G ~@3>".pickRestart({
  A: "~ x ~ x", B: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", C: "~@4 x ~@2 x ~@4 x ~@3", D: "~@4 x ~@4 x ~@2 x ~@3",
  E: "~@4 x ~@7 x ~ x!2", F: "~@4 x ~@6 x!2 ~@3", G: "~ x ~@2",
})).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<~@13 [~@7 x] x ~@68 [~@14 x!2] ~ [~@15 x] ~@19>").gain(0.72)

// drums · hihat
const hihat = s("hh").struct("<~@18 A@2 B A@2 C A@2 D E F G A H ~@8 A@2 B A@2 C A I D E F G A H ~@51>".pickRestart({
  A: "x!4", B: "x ~ x ~ x ~@2 x!2 ~@3 x ~@3", C: "x ~@3 x ~@3 x ~@3 x ~ x!2", D: "~ x!6 ~", E: "x ~ x ~ x!3 ~",
  F: "x ~ x ~ x ~ x!3 ~@3 x ~ x ~", G: "x ~ x!6", H: "x!4 ~@4", I: "x ~ x ~ x ~ x!3 ~@3 x ~ x!2",
})).gain(0.64)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@18 A B C B A B A B D E F G B ~@9 A B C B A B A ~ D E F G B ~@52>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~@2", C: "~@3 x ~ x ~ x", D: "~@7 x", E: "~ x ~ x ~@4", F: "~@5 x ~@2",
  G: "~ x ~@6",
})).gain(0.32)
// … 44 more lines

More by Zucchero