Strudelify

Erba Di Casa Mia

Ranieri

KeyB♭ majorTempo71 bpm
0:00/0:00
// Erba Di Casa Mia — Ranieri
// 71 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 63 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(71/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 · piccolo
const piccolo = note("<~@27 A B C D@7 ~@23 E@3>".pickRestart({
  A: "~@7 c6@30 db6@6 c6@5", B: "~ bb5@6 a5@31 bb5@6 a5@4", C: "~@2 g5@6 f5@28 ~@3 f5@6 g5@3",
  D: "[f5@3 e5@3 f5@3 d6@29 ~ eb6@6 d6@6 c6@6 bb5@47 ~@2 a5@23 ~ e5@21 ~@4 f5@23 ~ d5@24 ~ c5@47 ~ a4@24 ~ f4@21 ~@38]/7",
  E: "[~@41 ab5@30 ~ a5@6 ab5@6 gb5@6 e5@49 ~@5]/3",
})).s("gm_piccolo").gain(0.22).pan(0.7)

// other · pad poly
const pad_poly = note("<~@17 A B@2 C@2 ~@21 D@3 E@2 ~@4 F@2 ~@9>".pickRestart({
  A: "~@3 f4", B: "[bb2@8 ~@4 bb4@11 ~@2 ab5@43 ~@28]/2", C: "[~@8 c5@6 gb5@49 ~@33]/2",
  D: "[~@32 f4@12 bb2@8 ~@4 bb4@11 ~ ab5@43 ~@33]/3", E: "[~@3 c5@6 gb5@49 ~@38]/2", F: "[~@15 b4@6 ~ b5@55 ~@19]/2",
})).s("gm_pad_poly").gain(0.4).pan(0.4)

// chords · piano
const piano = note("<A B@2 C D E F@5 G@2 ~ H ~@48>".pickRestart({
  A: "~@9 f5@7, ~@19 a4@29",
  B: "[~@13 g5@48 [c5,f5,a5]@12 ~ [c5,f5,a5]@10 ~@2 [e5,g5,bb5]@10, ~@4 a4@57 ~@35, ~@12 e5@49 ~@35]/2", // F Edim
  C: "~@2 [e5,g5,bb5]@10 ~@2 [f5,a5,d6]@11 ~ [f5,a5,d6]@8 ~@4 [f5,a5,c6,eb6]@10", // Edim Dm F7
  D: "~@3 [f5,a5,c6,eb6]@11 ~ [f5,bb5,d6]@12 [f5,bb5,d6]@12 [eb5,gb5,a5]@9", // F7 Bb Ebdim
  E: "~@3 [eb5,gb5,a5]@12 [d5,g5,bb5]@11 ~@2 [d5,g5,bb5]@11 ~ [d5,f5,bb5]@8", // Ebdim Gm Bb
  F: "[~@4 [d5,f5,bb5]@12 [a5,db6,e6]@12 [a5,db6,e6]@11 ~@2 [bb5,db6,e6]@11 ~ [bb5,db6,e6]@11 ~ [f5,a5,d6]@11 ~ [d5,f5,a5]@11 ~ [d5,f5,bb5]@11 ~ [d5,f5,bb5]@11 ~@2 [a4,c5,f5]@12 [a4,c5,f5]@12 [g4,c5,e5]@11 ~ [g4,c5,e5]@11 ~ [a4,c5,f5]@11 ~ [a4,c5,f5]@11 ~@2 [ab4,db5,f5]@12 [ab4,db5,f5]@11 ~@30]/5", // Bb A Bbdim Dm Bb F C F …
  G: "[~@31 d5 eb5@4 gb5@3 eb5@3 ~ e5 ~ gb5 e5@22 ~@28, ~@31 bb4@13 bb4@24 ~@28]/2",
  H: "~@9 [d5,gb5] ~@3 b4@3 ab4@6 ~@26, ~@3 db5 ~@12", // D
})).s("gm_piano").gain(0.15).pan(0.6)

// other · french horn
const french_horn = note("<A@3 ~@12 B@4 ~@22 C@4 ~@7 D ~@10>".pickRestart({
  A: "[~ d3@17 ~@2 [d3,a3]@8 f4@24 ~ a3@8 [a2,e4]@41 ~@42, ~@28 c3@33 ~@83]/3", // D5 A5
  B: "[~@22 eb3@18 ~ db3@6 b2@25 ~@11 gb3@6 f3@6 eb3@12 ~ b2@12 bb2@42 ~@30]/4",
  C: "[~@28 eb3@6 db3@6 b2@25 ~@12 gb3@6 f3@6 eb3@13 b2@13 ~ bb2@42 ~@34]/4", D: "~@10 eb3@6 b2@3 ~@3 b2@3 ~@23",
})).s("gm_french_horn").gain(0.4)

// chords · synth strings 1
const synth_strings_1 = note("<~@10 A@7 B@7 C@2 D@3 E F G@3 H I J@3 K@4 L M@8 N@6 O@5>".pickRestart({
  A: "[~@17 [db4,gb4]@24 ~ [d4,f4]@24 eb4@21 ~@3 db4@24 ~ b3@24 [bb3,g4]@24 ab4@24 ~ gb4@24 bb3@24 ab3@24 ~ [bb3,eb4,gb4]@24 [b3,eb4,gb4]@24 [bb3,db4,gb4]@24 ~ [bb3,eb4,gb4]@2, ~@17 bb3@97 ~ eb4@48 [b3,eb4]@49 [d4,f4]@49 ~@75, ~@66 gb4@73 ~@197]/7", // Gb5 Dm Eb Ebm B Gb Ebm B …
  B: "[~@10 b3@12 [bb3,d4,f4]@49 bb3@49 ~@24 [f4,ab4]@73 [d4,f4]@24 [eb4,g4]@12 [d4,f4]@12 ~@49 c4@22, ~@71 [eb4,g4]@73 ~@73 bb3@97 ~@22, ~@60 c4@49 ~@24 [eb4,g4]@35]/7", // Bb Fm Dm Eb Dm Eb
  C: "[~@3 [c4,eb4,ab4]@24 [c4,f4,ab4]@49 [bb3,d4,f4]@20]/2", // Ab Fm Bb
  D: "[~@28 bb3@24 ~@25 e4@24 [f4,a4]@24 ~ [e4,g4,bb4]@18, ~@28 g4@73 ~@43, ~@28 eb4@49 ~@67, ~@53 c4@73 ~@18]/3", // F Edim
  E: "~ [d4,f4]@4 [c4,eb4]@3, ~ a4@7", F: "~@7 [bb3,d4,f4]@24 [a3,d4,gb4]@17",
  G: "[~@7 g4@21 ~@4 f4@24 a3@24 g3@24 ~ [a3,d4,f4]@12 [g3,c4,e4]@12 [bb3,d4,f4]@15, ~@7 [bb3,d4]@49 [db4,e4]@49 ~@39]/3", // Dm C Bb Dbm
  H: "~@9 [a3,c4]@24 ~ [g3,c4,e4]@14, ~@2 f4@9 ~@5", I: "~@10 [a3,c4,f4]@24 ~ [b3,db4,f4]@13",
  J: "[~@11 [db4,gb4]@24 [d4,f4]@24 ~ eb4@24 db4@24 b3@24 ~ [bb3,g4]@11, ~@11 bb3@97 eb4@36, ~@60 gb4@73 ~@11]/3", // Gb5 Dm Eb
  K: "[~@13 ab4@24 gb4@24 ~ bb3@24 ab3@24 [bb3,eb4,gb4]@24 ~ [b3,eb4,gb4]@24 [bb3,db4,gb4]@25 [bb3,eb4,gb4]@8, ~@13 [b3,eb4]@49 [d4,f4]@49 ~@81]/4", // Ebm B Gb Ebm B Dm
  L: "~@5 b3@13 [bb3,d4,f4]@30", // Bb
  M: "[~@19 bb3@48 ~@25 [f4,ab4]@73 [d4,f4]@24 [eb4,g4]@12 [d4,f4]@12 ~@49 c4@24 [c4,eb4,ab4]@24 ~ [c4,f4,ab4]@50 [bb3,d4,f4]@23, ~@19 [eb4,g4]@73 ~@121 [eb4,g4]@73 ~@98, ~@67 c4@97 ~ bb3@97 ~@122]/8", // Fm Dm Eb Dm Ab Fm Bb Eb
  N: "[~@2 [bb3,eb4,g4]@12 [b3,eb4,gb4]@12 b3@42 ~@31 [gb4,a4]@73 [eb4,gb4]@24 ~ [e4,ab4]@12 [eb4,gb4]@12 ~@49 db4@18, ~@26 [e4,ab4]@74 ~@121 [e4,ab4]@67, ~@75 db4@97 b3@97 ~@19]/6", // Eb B Gbm Ebm E Ebm E
  O: "[~@6 [db4,e4,a4]@24 [db4,gb4,a4]@52 ~ [b3,eb4,gb4]@26 ~@26 [ab3,b3,e4]@24 [c4,eb4]@25 [ab3,b3,e4]@50 ~@6, ~@159 ab4@74 ~@7]/5", // A Gbm B E Cm E
})).s("gm_synth_strings_1").gain(0.19).pan(0.4)

// other · acoustic guitar steel
const acoustic_guitar_steel = note("<~@2 A@2 B C D@3 E F ~@15 G@2 H ~@3 I J K L@2 ~@3 M N O P ~@19>".pickRestart({
  A: "[~@13 a4@20 ~@5 bb4@6 db5@3 bb4@12 db5@3 d5@6 a4@3 d5@6 a4@6 ~@3 f4@2 ~ f4@2 ~@2 c5@3, ~@83 d5@5 ~@8]/2",
  B: "eb5@2 ~ f4@3 eb5@2 ~ c5@2 ~ eb5@3 d5@3 f4@3 bb4@3 d5@6 bb4@3 f4@3 d5@3 d4@3 eb4@3 c5@3",
  C: "a4@6 c5@3 a4@3 c5@3 g4@3 ~ d4@3 bb4@3 g4@3 d5@3 g4@3 bb4@3 d5@6 g4@3 bb4@2",
  D: "[~ g4@3 ~@3 g4@3 bb4@3 ~@3 a4@3 e4@3 a4@3 a4@6 db4@3 e4@3 bb4@3 ~ bb4@6 db5@3 bb4@6 e4@3 a4@3 db5@3 d5@3 f4@3 a4@3 d5@3 f4@3 a4@3 d5@3 f4@3 bb4@3 f4@3 d5@3 bb4@6 f4@3 bb4@3 d5@6 ~ f4@3 c5@3 a4@6 c5@3 a4@3 c5@6 c4@3, ~@4 d5@6 ~@3 d5@6 ~@125]/3",
  E: "bb4@3 g4@6 bb4@3 g4@5 ~@4 f4@3 c5@3 a4@6 c5@3 a4@3 ~ c5@3 ~@3 db4@2", F: "~ b4@3 ab4@6 b4@3 ab4@3 b4@3 ~@29",
  G: "[~@33 g4@3 bb4@2 ~ bb4@3 g4@3 ~@3 bb4@6 ~@3 g4@3 c5@2 ~ c5@3 g4@3 eb4@3 c5@6 ~ e4@3 g4@3 e4@3 ~@3 g4@3 e4@2, ~@30 eb4@10 ~@5 eb4@8 ~ eb4@15 ~@19 c5@6 ~@2]/2",
  H: "~@4 e4@3 ~@41, ~ c5@6 ~@41", I: "~@10 a4@3 e4@3 a4@3 a4@6 db4@3 e4@3 bb4@3 bb4@6 db5@3 bb4@5",
  J: "~ e4@3 a4@3 db5@3 d5@3 f4@3 a4@3 d5@3 ~ f4@3 a4@3 d5@3 f4@3 bb4@3 f4@3 d5@3 bb4@4",
  K: "~@2 f4@3 bb4@3 d5@6 f4@3 c5@3 a4@6 c5@3 a4@3 c5@6 c4@3 bb4@3 g4@4",
  L: "[~@3 bb4@3 g4@5 ~@4 c4@3 c5@3 a4@6 c5@3 a4@3 c5@3 ~@3 db4@3 b4@3 ab4@6 b4@3 ab4@3 b4@3 ~@36]/2",
  M: "~@15 bb4@3 f4@3 bb4@3 bb4@6 d4@3 f4@3 b4@3 b4@6 ~ d5@2",
  N: "~ b4@6 f4@3 bb4@3 d5@3 eb5@3 gb4@3 bb4@3 eb5@3 gb4@3 bb4@3 eb5@3 gb4@3 b4@3 gb4@3 eb5@2",
  O: "~ b4@6 gb4@3 b4@3 eb5@6 ~ gb4@3 db5@3 bb4@6 db5@3 bb4@3 db5@6 ~ gb4@3",
  P: "db5@3 gb4@3 eb5@3 ~ gb4@3 b4@3 gb4@3 ~ bb4@3 f4@3 d5@3 bb4@6 ~@13",
})).s("gm_acoustic_guitar_steel").gain(0.25).pan(0.4)

// chords · string ensemble 2
const string_ensemble_2 = note("<A@3 ~@7 B@5 C@2 D@7 E@2 ~@2 F@5 ~@3 G@4 H@3 I@8 ~ J@7 K L@3>".pickRestart({
  A: "[~@20 [d3,a3]@7 [c3,f3,f4]@32 [a2,db4,g4]@43 ~@42]/3", // D5 F5 A7
  B: "[~@18 gb3@24 f3@25 eb3@24 db3@24 ~@12 b6@12 ~ [g4,e5,db6,g6,bb6]@24 [b5,eb6,ab6]@49 ~@27, ~@23 [eb5,eb6]@5 ~@20]/5", // Gdim Abm Eb
  C: "[~@21 eb3@19 db3@6 b2@24 ~@12 gb3@6 f3@6 eb3@2, ~@7 bb5@8 ~@17]/2",
  D: "[~@11 b2@12 [bb2,bb3]@48 bb5@49 ~@49 f6@36 eb6@12 d6@24 ~ eb5@12 [f5,f6]@12 [eb5,eb6]@37 [d5,f6]@12 c5@12 [bb4,bb6]@9, ~@71 [eb5,g5]@73 f5@97 ~ g5@73 [eb6,g6]@21, ~@120 c5@97 ~@119, ~@144 [ab5,c6]@73 bb5@119]/7", // Bb F Eb Dm Bb Eb Ab
  E: "[~@3 ab4@12 g4@12 [f4,f5]@43 ~@26, ~@3 c7@22 ~@71, ~ c6@6 ~@25]/2", // F
  F: "[~@6 f3@18 c3@6 ~@6 [bb4,bb5]@6 [a4,a5]@6 [g4,g5]@6 ~ d3@6 f3@6 e3@6 d3@6 ~@6 [f4,f5]@6 [g4,g5]@3 [f4,f5]@3 [e4,e5]@3 [f4,f5]@3 bb2@24 ~@7 [eb5,eb6]@6 [d5,d6]@6 [c5,c6]@6 g2@24 g3@24 ~@40, ~@6 [a4,a5]@30 ~@19 [f4,f5]@29 ~@19 [d5,d6]@29 ~@20 [bb4,bb5]@41 ~@47, ~@30 db3@12 e3@12 ~@25 c3@25 ~@24 a2@25 ~@87]/5", // Bb A G F G F E F …
  G: "[~@24 bb4@45 b4@3 bb4@6 ab4@6 gb4@30 ~ gb4@6 ab4@3 gb4@3 f4@3 gb4@3 eb5@31 e5@6 eb5@6 db5@6 b4@6 bb4@4]/4",
  H: "[~@2 ab4@6 gb4@6 [bb3,f4]@49 eb3@18 db3@6 b2@24 ~@13 gb3@6 f3@6 eb3@8, ~@7 d4@12 ~@53]/3", // Bb5
  I: "[~@5 b2@13 [bb2,bb3]@49 bb5@49 ~@49 f6@36 eb6@12 d6@24 ~ eb5@12 [f5,f6]@12 [eb5,eb6]@36 [d5,f6]@13 c5@12 [bb4,bb6]@12 ab4@12 g4@12 [f4,f5]@25, ~@67 [eb5,g5]@73 f5@97 ~ g5@73 eb6@46 ~@27, ~@116 c5@97 ~@98 g6@24 c7@22 ~@27, ~@140 [ab5,c6]@73 bb5@121 ~ c6@18 ~@31]/8", // Bb F Eb Dm Bb F Eb Ab
  J: "[~@21 gb5@5 ~ gb5@5 ~ e5@6 b4@6 e5@6 gb5@12 ~@6 eb3@6 ~@7 db5@3 eb5@3 e5@6 eb5@3 db5@3 a4@16 ~@2 ab5@4 ~@2 ab5@6 gb5@6 db5@6 gb5@6 ab5@12 ~ gb5@17 ~ eb5@3 e5@3 gb5@6 e5@3 eb5@3 ab4@12 gb5@11 ~@2 gb5@5 ~ e5@6 b4@6 e5@6 gb5@12 eb3@12 ~@6 db5@3 eb5@3 e5@6 eb5@3 ~ db5@3 a5@15 ~@3 a5@5 ~ a5@6 ab5@6 eb5@5, ~@27 e3@36 e5@12 db3@42 ~@105 e3@36 e5@17 ~@61, ~@45 db3@4 ~@7]/7",
  K: "~@2 e5@6 gb5@27 ~@13",
  L: "[~@39 e3@25 ~@6 [a5,a6]@6 [ab5,ab6]@6 [gb5,gb6]@6 [e3,e5,e6]@49 ~@7, ~@13 [ab5,ab6]@10 ~@25, ~@64 eb3@25 ~@55]/3", // A Ab Gb E Ab
})).s("gm_string_ensemble_2").gain(0.22).pan(0.6)

// chords · string ensemble 2 · soft notes
const string_ensemble_2_soft = note("<A@2 ~@8 B@6 ~@47>".pickRestart({
  A: "[~ [d4,f4]@26 c4@32 [a3,e4]@37, ~ [d3,a3]@17 ~@78]/2", // Dm A5 D5
  B: "[~@18 [bb4,db5,gb5]@24 [b4,d5,f5,ab5]@24 ~ [bb4,eb5]@24 [db5,e6]@24 [gb4,gb5,b5,gb6]@24 ~ g5@24 eb5@48 ~ [bb4,bb5,d6]@24 [b4,ab5,b5]@24 [eb5,gb5]@24 ~@3, ~@67 [gb5,bb5]@49 ~@97 [d5,f5]@49 ~@26]/6", // Gb Bdim Eb5 Dbm B5 Bb E Ebm …
})).s("gm_string_ensemble_2").gain(0.12).pan(0.6)

// bass · fretless bass
const bass = note(`<
  ~@2 A@3 B C@4 D@8 E F G@2 H I@2 J@2 K L M N O P@3 Q R@8 S T U V@3 W@2 X Y@2 Z@3 AA@4 AB
>`.pickRestart({
  A: "[~@13 f2@24 ~ e2@24 d2@24 c2@18 ~ c2@6 bb1@17 ~ bb1@6 a1@9]/3", B: "~@9 a1@5 ~ g1@17 ~@2 g1@6 f2@8",
  C: "[~@10 g1@6 a1@8 ~ a1 ~@2 e2@6 db2@5 ~@2 a1@21 ~@3 d2@12 c2@12 bb1@24 ~ f2@24 c2@23 ~ f2@25 db2@5]/4",
  D: "[~@13 db2@6 gb2@17 ~ gb2@4 ~@2 f2@23 ~@2 eb2@17 ~ eb2@5 ~ db2@17 ~ db2@6 b1@17 ~@2 b1@3 ~@3 bb1@17 ~ bb1@4 ~@2 ab1@17 ~ ab1@4 ~@2 gb2@16 ~@3 ab1@6 bb1@17 ~ bb1@2 ~@4 bb1@23 ~ eb2@18 ~ db2@6 b1@24 gb2@11 ~ gb2@5 ~ f2@6 eb2@12 ~ b1@11 ~ bb1@18 bb1@6]/8",
  E: "~@6 bb1@12 bb1@6 eb2@3 ~@3 eb2@15 ~ bb1@2", F: "~ eb2@3 bb1@3 eb2@10 ~@2 eb2@3 d2@2 ~ c2@9 g1@2 ~ c2@11",
  G: "[~ f2@3 ~@4 f2@12 c2@3 f2@3 f1@12 f2@9 c2@3 f2@3 c2@2 ~ f2@11 ~ f2@3 c2@3 bb1@12 ~ bb1@9]/2",
  H: "~@3 eb2@12 bb1@6 c2@6 eb2@11 ~ eb2@9",
  I: "[bb1@3 eb2@3 ~ bb1@2 ~ eb2@10 ~@2 eb2@3 d2@2 ~ c2@16 ~@2 c2@6 ab1@15 c2@3 ab1@6 ~ f1@12 f2@7]/2",
  J: "[~@2 c2@3 f1@3 ~@3 f2@11 ~ c2@3 f2@3 bb1@43 ~@6 eb2@17 ~]/2", K: "eb2@6 ab1@16 ~@2 ab1@5 ~@2 bb1@17",
  L: "~ bb1@6 f2@17 ~ f2@6 e2@17", M: "~@2 e2@3 ~@3 d2@17 ~ d2@4 ~@2 c2@16", N: "~@2 c2@6 bb1@17 ~@2 bb1@4 ~@2 a1@15",
  O: "~@3 a1@4 ~@2 g1@15 ~@3 g1@5 ~ f1@15",
  P: "[~@4 g1@5 ~ a1@16 ~@2 a1@3 ~@3 a1@10 ~@2 a1@11 ~ d2@12 ~ c2@11 ~ bb1@18 bb1@5 ~ f2@16 ~@2 f2@4 ~@2 c2@13]/3",
  Q: "~@6 c2@4 ~@2 f2@14 ~@4 f2@5 ~ db2@4 ~@2 db2@6",
  R: "[~@6 db2@6 gb2@15 ~@4 gb2@3 ~@3 f2@17 ~ f2@5 ~ eb2@17 ~ eb2@5 ~ db2@19 db2@6 b1@17 ~ b1@3 ~@3 bb1@17 ~ bb1@4 ~@2 ab1@17 ~@2 ab1@4 ~@2 gb2@16 ~@2 ab1@6 bb1@17 ~ bb1@2 ~@4 bb1@23 ~@2 eb2@18 db2@6 b1@25 gb2@11 ~ gb2@5 ~ f2@6 eb2@13 b1@12 ~@2 bb1@18 bb1@10]/8",
  S: "~@2 bb1@12 bb1@6 eb2@3 ~@3 eb2@15 ~ bb1@3 eb2@3", T: "bb1@3 eb2@10 ~@2 eb2@3 d2@2 ~ c2@9 g1@2 ~ c2@11 ~ f2@3",
  U: "~@3 f2@12 ~ c2@3 f2@3 f1@12 f2@9 c2@3 f2@2",
  V: "[~ c2@2 ~ f2@11 ~ f2@3 c2@3 bb1@12 bb1@12 ~ eb2@12 bb1@6 c2@6 eb2@11 ~ eb2@9 bb1@3 eb2@3 bb1@2 ~ eb2@10 ~@3 eb2@3 d2@2 ~ c2@16 ~@2 c2@6]/3",
  W: "[ab1@15 c2@3 ab1@6 f1@12 ~ f2@9 c2@3 f1@3 ~@3 f2@12 ~ c2@4 f2@3 bb1@21]/2",
  X: "~@3 eb2@3 ~@4 eb2@6 b1@11 ~ e2@3 ~@3 e2@14",
  Y: "[~ b1@3 e2@3 b1@3 e2@10 ~@2 e2@3 eb2@2 ~ db2@9 ~ ab1@2 ~ db2@11 ~ gb2@3 ~@3 gb2@12 db2@3 gb2@3 gb1@12 gb2@7]/2",
  Z: "[~@2 db2@3 ~ gb2@3 db2@2 ~ gb2@11 ~ gb2@3 db2@3 b1@12 b1@12 e2@12 b1@6 db2@6 ~ e2@11 ~ e2@9 b1@3 e2@3 b1@2 ~ e2@10 ~@2 e2@3 eb2@2 ~ db2@16 ~]/3",
  AA: "[~ db2@6 ~ a1@15 db2@3 a1@6 gb1@12 gb2@10 db2@3 gb1@4 ~@3 gb2@13 ~ db2@3 gb2@3 b1@26 ~@26 e2@17 ~@2 e2@5 ~ ab1@17 ~ ab1@6 ~ e2@5 ~]/4",
  AB: "e2@2 ~ e2@2 ~ e2@2 ~ e2@12 ~@3",
})).s("gm_fretless_bass").gain(0.36)

// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  ~@2 A B C@2 D@5 E@2 F@7 G@2 H@2 I@2 J@3 K@6 L M N O P@4 Q@7 R S T@5 U@4 V@2
>`.pickRestart({
  A: "~@13 [c4,f4]@13 [a3,c4,f4]@11 ~ [db4,e4]@10, ~@12 a3@14 ~@11 bb3@11", // F5 F Dbm
  B: "~@2 [bb3,db4,e4]@11 ~ f4@11 ~ [d4,f4]@10 ~@2 [c4,eb4,f4]@10, ~@13 [a3,d4]@12 ~ a3@22", // Bbdim Dm F7 D5
  C: "[~@3 [a3,c4,eb4,f4]@12 [bb3,d4,f4]@11 ~ [bb3,d4,f4]@10 ~@2 [a3,c4,eb4]@11 ~ [a3,c4,eb4]@10 ~@2 [g3,bb3,d4]@11 ~@2 d4@10 ~@2 d4@8, ~@38 gb3@21 ~@16 [g3,bb3]@11 f3@10, ~@29 bb3@3]/2", // F7 Bb Adim Gm
  D: "[~@4 [bb3,d4]@11 ~ [db4,e4]@11 ~ [g3,a3,db4,e4]@11 ~@2 [bb3,db4,e4]@11 ~ [bb3,db4,e4]@11 ~ [f3,a3,d4]@10 ~@2 d4@6 c4@5 ~ [bb3,d4]@11 ~@2 [f3,bb3]@10 ~@2 c4@11 ~ [f3,a3,c4]@10 ~@3 e3@10 ~ [e3,g3,c4]@10 ~@2 [f3,a3,c4]@11 ~ [f3,a3,c4]@11 ~@2 [ab3,db4]@11 ~ [db3,f3,ab3,db4]@12 ~@6 bb3@5 ~ db4@5 ~ gb3@6 ~ f4@4, ~@3 f3@12 [g3,a3]@12 ~@13 g3@12 g3@11 ~@14 [f3,a3]@10 ~ f3@11 ~@2 d4@11 f3@13 ~@13 [g3,c4]@11 ~@37 [db3,f3]@12 ~@42, ~@113 a3@12 ~@86 gb3@12 bb3@12 d4@5]/5", // Bb Dbm A7 Bbdim Dm Bb Bb5 F …
  E: "[~ bb3@5 ~ [ab4,b4]@5 ~@2 f4@6 ~@6 gb3@6 ~ bb3@5 [gb3,bb3]@6 db4@5 ~ [bb3,db4]@5 ~ db5@6 [gb4,bb4]@6 ~@7 eb4@5 ~ gb4@6 [b3,eb4]@6 [db4,g4]@3, ~ d4@3 ~@10 ab4@4 ~@2 eb3@12 eb4@9 ~@3 gb4@10 ~ bb4@6 ~@7 gb3@12 ~@16, ~@37 b3@3 eb4@3 ~@5]/2", // Abm Gb Bbm Gb B Dbdim
  F: "[~@3 [bb3,eb4]@5 ~ [e4,bb4]@6 [db4,g4]@9 ~@3 ab3@6 [b3,eb4]@5 ~ [ab3,b3]@6 ~ eb4@5 ab3@6 [eb4,gb4]@7 ab3@5 ~ bb3@5 ~ [bb3,d4]@5 ~ f4@6 [bb3,d4]@6 [ab4,b4]@6 [bb3,d4]@5 ~@7 [d4,f4]@6 ~@6 bb3@6 ~ eb4@6 bb3@6 [gb4,b4]@6 b3@6 [eb4,gb4]@6 b3@6 ~@6 bb3@6 [db4,gb4]@6 bb3@6 eb4@6 bb3@6 ~ [gb4,b4]@6 eb4@6 ~@6 bb3@6 f4@6 ~@6 bb4@23 ~ [g3,bb3]@2 ~@4 [g3,bb3]@5 ~@2 g3@4 ~@2 g3@4 ~@2 [g3,bb3]@3 ~@3 [g3,bb3]@5 ~ [g3,bb3]@5 ~ [g3,bb3]@4 ~@2 [g3,c4]@3 ~@3 [g3,c4]@5 ~ [g3,c4,eb4]@2 ~ [g3,c4,eb4]@7 ~, ~@45 ab4@10 ~@27 d4@5 ~@18 f4@5 ~@8 eb3@12 ~@37 gb3@12 ~@37 bb2@36 ~@84, ~@106 ab4@10 ~@15 gb4@12 ~@48 gb4@11 ~@26 d4@32 ~@4 eb4@12 ~ eb4@23 ~ eb4@24 ~@11, ~@234 bb3@18 ~@25 bb3@11 ~@48]/7", // Eb5 Edim Dbdim B Abm Ebm Bb Abm …
  G: "[~ [ab3,c4,f4]@7 ~@3 [ab3,c4,f4]@2 ~ [ab3,c4,f4]@6 [ab3,c4,f4]@6 [ab3,c4,f4]@5 ~ [ab3,c4,f4]@5 ~ [ab3,c4]@11 ~ [ab3,c4]@8 ~ [ab3,c4,f4] ~@2 [ab3,c4]@5 ~ [ab3,c4]@6 [bb3,d4,f4]@7 ~@3 [bb3,d4,f4] ~@2 [bb3,d4,f4]@9, ~@19 f4@10 ~@2 f4@6 ~@11]/2", // Fm Ab Fm Ab Bb
  H: "[~@3 [g3,bb3,eb4]@10 ~@2 [f3,bb3,d4]@2 ~ [f3,bb3,d4]@7 ~@2 [g3,bb3]@2 ~@4 [g3,bb3]@5 ~ g3@4 ~@2 g3@4 ~@2 [g3,bb3]@3 ~@4 [g3,bb3]@5 ~ [g3,bb3]@5 ~ [g3,bb3]@4 ~@2 [g3,c4]@3 ~@3 [g3,c4]@5 ~ [g3,c4,eb4]@2 ~ [g3,c4,eb4]@5, ~@27 eb4@12 eb4@23 ~@2 eb4@24 ~@8, ~@39 bb3@11 ~@46]/2", // Eb Bb Gm C5 Cm
  I: "[~@4 [eb3,ab3,c4]@7 ~@2 [eb3,ab3,c4]@2 ~ [eb3,ab3,c4]@6 [eb3,g3,c4]@6 ~ [f3,c4]@3 ~@3 f3@5 ~ [ab3,c4]@11 ~ [f3,ab3,c4]@8 ~@4 [f3,ab3,c4]@10 ~@21, ~@35 c4@3 ~@3 f3@4 ~@51]/2", // Ab Cm F5 Ab Fm
  J: "[~@30 [g3,bb3]@11 ~ [eb3,bb3]@11 ~ [eb3,c4]@11 ~ [eb3,g3,c4]@11 ~@2 [e3,g3,c4]@11 ~ [g3,c4]@12 [f3,c4]@3 ~@3 c4@4 ~@2 [a3,c4,f4]@11 ~@7 bb3@5 ~@2 [bb3,db4]@4, ~@29 eb3@11 ~@2 g3@23 ~@25 e3@11 ~@8 f3@17 bb3@6 ~@12, ~@127 [db4,e4]@11 ~ e4@5]/3", // Gm Eb5 Cm C C5 F5 F Bbm …
  K: "[~@2 bb3@2 ~@10 a3@5 ~ [a3,d4,f4]@6 a3@2 ~@4 [eb4,f4]@11 ~@2 c4@11 ~ bb3@4 ~ bb3@5 ~@2 bb3@4 ~@2 bb3@2 ~@4 [c4,eb4]@11 ~ a3@5 ~ a3@3 ~@9 g3@6 g3@5 ~ g3@4 ~@2 bb3@6 bb3@4 ~@3 bb3@5 ~ bb3@2 ~@4 [db4,e4]@11 ~ [g3,a3,db4,e4]@10 ~@2 e4@11 ~ [bb3,db4,e4]@11 ~@2 a3@10 ~@2 d4@6 c4@5 ~ [bb3,d4]@11 ~ [f3,bb3,d4]@10 ~@2 c4@11 ~@2 a3@10 ~@2 [e3,g3]@11 ~, ~@6 a3@6 ~@32 [a3,eb4,f4]@12 ~@23 gb3@21 ~@4 g3@6 ~@19 [f3,d4]@11 ~ [f3,d4]@11 g3@12 ~@12 g3@13 g3@11 ~@2 [f3,d4]@10 ~@3 [f3,a3]@10 ~ f3@11 ~@12 f3@13 ~ [f3,c4]@11 ~@14, ~@7 d4@10 ~@14 c4@12 ~@13 [d4,f4]@11 ~@2 d4@10 ~ a3@11 ~@2 [c4,eb4]@10 ~@2 [bb3,d4]@11 ~ [bb3,d4]@11 ~@25 a3@12 ~@12 [bb3,db4]@13 ~@60 a3@12 ~@13 c4@11 ~@2, ~@8 f4@11 ~@49 f4@11 ~@209]/6", // Dm Ebsus2 Cm Dbm A7 Bbdim Bb Em …
  L: "[e3,g3,c4]@10 ~@2 c4@11 ~ [f3,a3,c4]@11 ~ [ab3,db4]@11 ~, ~@11 [f3,a3]@11 ~@13 [db3,f3]@12 ~", // C F Db5 F Db
  M: "[db3,f3,ab3,db4]@12 ~@6 bb3@5 ~@2 db4@5 ~ gb3@6 [d4,f4]@5 ~ [bb3,d4]@5, ~@12 gb3@11 ~@2 bb3@12 ~@11", // Db Dm Bb
  N: "~ b4@6 f4@8 ~@4 gb3@6 ~ bb3@5 [gb3,bb3]@6 gb4@7 [bb3,db4]@4, ~ ab4@5 ~ ab4@4 ~@14 eb4@9 ~@3 db4@5 ~@6", // Gb Bbm
  O: "~@2 db5@6 [gb4,bb4]@6 ~@7 eb4@5 [eb4,gb4]@6 [b3,eb4]@6 [db4,g4]@6 [bb3,eb4]@4, ~@2 bb4@5 ~@13 b3@6 ~@22", // Gb Ebm B Dbdim Eb5
  P: "[~@2 [e4,bb4]@6 [db4,g4]@9 ~@4 ab3@6 [b3,eb4]@5 ~ [ab3,b3]@6 eb4@6 ab3@6 [eb4,gb4]@6 ab3@5 ~@7 [bb3,d4]@5 ~ f4@6 [bb3,d4]@6 [ab4,b4]@7 [bb3,d4]@6 f4@5 ~ [d4,f4]@6 ~@6 bb3@6 eb4@6 bb3@6 [gb4,b4]@6 b3@6 [eb4,gb4]@6 b3@6 ~@7 bb3@6 [db4,gb4]@6 bb3@6 [eb4,gb4]@7, ~@39 ab4@10 ~@26 d4@5 ~@20 ab4@10 ~@14 gb4@12 ~@56]/4", // Edim Dbdim B Abm Ebm Bb Abm Bb …
  Q: "[bb3@6 [gb4,b4]@7 eb4@7 ~@6 bb3@5 ~ f4@6 ~@6 bb4@23 ~ [g3,bb3]@2 ~@4 [g3,bb3]@5 ~ g3@4 ~@2 g3@4 ~@3 [g3,bb3]@3 ~@3 [g3,bb3]@5 ~ [g3,bb3]@5 ~ [g3,bb3]@4 ~@2 [g3,c4]@3 ~@3 [g3,c4]@5 ~ [g3,c4,eb4]@2 ~ [g3,c4,eb4]@7 ~@2 [ab3,c4,f4]@7 ~@2 [ab3,c4,f4]@2 ~ [ab3,c4,f4]@6 ~ [ab3,c4,f4]@6 [ab3,c4,f4]@5 ~ [ab3,c4,f4]@5 ~ [ab3,c4]@11 ~ [ab3,c4]@8 ~ [ab3,c4,f4] ~@2 [ab3,c4]@5 ~ [ab3,c4]@6 [bb3,d4,f4]@7 ~@2 [bb3,d4,f4] ~@2 [bb3,d4,f4]@9 ~@4 [g3,bb3,eb4]@10 ~@2 [f3,bb3,d4]@2 ~ [f3,bb3,d4]@7 ~@2 [g3,bb3]@2 ~@4 [g3,bb3]@5 ~ g3@4 ~@2 g3@4 ~@2 [g3,bb3]@3 ~@3 [g3,bb3]@5 ~ [g3,bb3]@5 ~@2 [g3,bb3]@4 ~@2 [g3,c4]@3 ~@3 [g3,c4]@5 ~ [g3,c4,eb4]@2 ~ [g3,c4,eb4]@7 ~@2, ~@5 bb2@9 ~@70, ~@31 d4@32 ~@5 eb4@12 eb4@23 ~@2 eb4@24 ~@49 f4@20 ~@4 f4@12 ~@49 eb4@12 eb4@23 ~ eb4@24 ~@13, ~@38 bb3@18 ~@24 bb3@11 ~@184 bb3@11 ~@50]/7", // B5 Gm C5 Cm Fm Ab Fm Ab …
  R: "[eb3,ab3,c4]@7 ~@2 [eb3,ab3,c4]@2 ~ [eb3,ab3,c4]@6 [eb3,g3,c4]@6 [f3,ab3,c4]@3 ~@3 [f3,ab3,c4]@5 ~@2 [ab3,c4]@11, ~@37 f3@4 ~@7", // Ab Cm Fm Ab
  S: "~ [f3,ab3,c4]@3 ~@3 [f3,c4]@6 ~ [f3,ab3,c4]@11 ~@2 [f3,bb3,d4]@11 ~ [f3,bb3,d4]@9", // Fm F5 Fm Bb
  T: "[~@3 [g3,bb3,eb4]@10 ~@3 [b3,eb4]@12 [ab3,b3,e4]@8 ~ [ab3,b3,e4]@2 ~ ab3@4 ~@2 ab3@4 ~@2 [ab3,b3]@7 ~@2 [ab3,b3]@2 ~ [ab3,b3]@5 ~ [ab3,b3]@4 ~@2 [ab3,db4]@3 ~@4 [ab3,db4]@5 ~ [ab3,db4,e4]@2 ~ [ab3,db4,e4]@7 ~@2 [a3,db4,gb4]@7 ~@2 [a3,db4,gb4]@2 ~ [a3,db4,gb4]@6 [a3,db4,gb4]@6 [a3,db4,gb4]@5 ~ [a3,db4,gb4]@5 ~ [a3,db4]@11 ~@2 [a3,db4]@9 [a3,gb4] ~@2 [a3,db4]@5 ~ [a3,db4]@6 [b3,eb4,gb4]@9 [b3,eb4,gb4] ~@2 [b3,eb4,gb4]@12 [ab3,b3,e4]@10 ~@2 [gb3,b3,eb4]@2 ~ [gb3,b3,eb4]@7 ~@3 [ab3,b3]@2 ~@4 [ab3,b3]@5 ~ [ab3,b3,e4]@5, ~@13 gb3@14 ~@13 e4@23 ~ e4@24 ~@49 gb4@21 ~@4 gb4@12 ~@49 e4@12 ~@5, ~@40 b3@11 ~@189]/5", // Eb B E Abm Db5 Dbm Gbm A …
  U: "[~ ab3@3 [b3,e4]@2 ~ [ab3,b3]@2 ~@4 [ab3,b3]@5 ~ [ab3,b3]@5 ~ [ab3,b3]@4 ~@2 [ab3,db4]@3 ~@3 [ab3,db4]@5 ~ [ab3,db4,e4]@2 ~ [ab3,db4,e4]@7 ~@3 [e3,a3,db4]@7 ~@2 [e3,a3,db4]@2 ~ [e3,a3,db4]@6 [ab3,db4,e4]@6 gb3@6 gb4@5 ~ [a3,db4,gb4]@12 ~ [gb3,db4,gb4]@12 ~@2 [a3,db4,gb4]@11 ~@2 [b3,b4]@38 ~@14 [ab3,b3,e4]@8, ~@7 e4@6 ~@6 e4@24 ~@37 gb4@3 ~@49 [eb4,gb4]@34 ~@26]/4", // E5 Abm Db5 Dbm A Dbm Gbm Gb5 …
  V: "[~@2 [ab3,b3,e4]@6 ~@16 ab3@3 b3@3 ~@3 e4@12 ~@3, ~@17 ab3@25 e3@47 ~@7, ~@23 c4@18 ~@19 ab3@29 ~@7, ~@29 eb4@12 ~@55, ~@35 ab4@55 ~@6]/2", // E
})).s("gm_acoustic_guitar_steel").gain(0.23).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  ~@16 A B C D E F G H I J ~@9 K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL
>`.pickRestart({
  A: "~@29 x ~@18", B: "~@8 x ~@6 x ~@8 x ~@8 x ~@11 x ~@2", C: "~@3 x ~@8 x ~@4 x ~@5 x",
  D: "~ x ~@8 x ~@5 x ~@5 x ~@2 x ~@8 x ~@11 x ~", E: "~ x ~@9 x ~@5 x ~@5 x ~@2 x ~@8 x ~@11 x",
  F: "~@2 x ~@8 x ~@11 x ~@2 x ~@9 x ~@5 x ~@5", G: "~ x ~@2 x ~@4 x ~@2 x ~@3",
  H: "x ~@2 x ~@9 x ~@5 x ~@5 x ~@2 x ~@8 x ~@8 x ~", I: "~@4 x ~@8 x ~@5 x ~@5 x ~@3 x ~@5 x ~@11 x",
  J: "~@8 x ~@20 x ~@18", K: "~@36 x ~@8 x ~ x", L: "~@2 x!2 ~@4", M: "~@4 x ~@5 x ~@2 x ~@5 x ~@28",
  N: "~@4 x ~@2 x ~@2 x ~@13", O: "~@11 x ~@2 x ~@6 x ~@26", P: "~@2 x ~ x!2 ~ x ~@8",
  Q: "~@7 x ~@5 x ~@2 x ~@5 x ~@25", R: "~@13 x ~@3 x ~@5 x ~@14 x ~@6 x ~@2",
  S: "x ~@9 x ~@5 x ~@3 x ~@8 x ~@11 x ~@2 x ~@3", T: "~@2 x ~@17 x ~@8 x ~@12 x ~@2 x ~@2",
  U: "~@2 x ~ x ~ x!2 ~@2 x ~@3 x!2", V: "~@6 x ~@5 x ~@6 x ~@2 x ~@8 x ~@11 x ~@2 x ~",
  W: "~@7 x ~@11 x ~@2 x ~@8 x ~@6 x ~@8 x", X: "~@8 x ~@14 x ~@8 x ~@11 x ~@2 x",
  Y: "~@8 x ~@6 x ~@5 x ~@2 x ~@8 x ~@8 x ~@5", Z: "x ~@8 x ~@5 x ~@5 x ~@2 x ~@5 x ~@12 x ~@4",
  AA: "~@4 x ~@22 x ~@8 x ~@8 x ~@2", AB: "~@3 x ~@6 x ~@5 x ~@11 x ~@8 x ~@10",
  AC: "~ x ~@2 x ~@8 x ~@5 x ~@5 x ~@2 x ~@9 x ~@9", AD: "~@2 x ~@2 x ~@8 x ~@5 x ~@5 x ~@2 x ~@8 x ~@9",
  AE: "~@2 x ~@3 x ~@8 x ~@11 x ~@2 x ~@8 x ~@5 x ~@2", AF: "~@6 x ~@8 x ~ x ~@13 x ~@8 x ~@7",
  AG: "~@4 x ~@2 x ~@8 x ~@5 x ~@5 x ~@2 x ~@8 x ~@7", AH: "~ x ~@6 x ~@8 x ~@5 x ~@5 x ~@2 x ~@5 x ~@9",
  AI: "~@3 x ~@9 x ~@22 x ~@11", AJ: "~@5 x", AK: "~@14 x ~@2 x ~@5 x ~@11 x ~@6 x ~@5", AL: "x ~@2 x ~@4",
})).gain(0.28)

// drums · snare
const snare = s("sd").struct(`<
  ~@17 A B C D E F G H I ~@9 J K L M N O P Q R S T U V W X Y Z AA H AB AC AD AE AF AG AH Q AI
>`.pickRestart({
  A: "~@5 x!2 ~@11 x ~@17 x ~@11", B: "~@8 x ~ x ~ x ~@24 x ~@10", C: "~@13 x ~@23 x ~@10", D: "~@7 x ~@11 x ~@4",
  E: "~@14 x ~@24 x ~@8", F: "~@18 x ~ x ~@18 x ~@8", G: "~@2 x ~@2 x", H: "~@16 x ~@24 x ~@6",
  I: "~@5 x ~@8 x ~@2 x ~@30", J: "~@11 x ~@4", K: "x!2 ~@23 x ~@22", L: "~ x ~@23 x ~@22", M: "~ x ~@11 x ~@10",
  N: "~@2 x ~@24 x ~@20", O: "~ x ~@7 x ~@6", P: "~ x ~@5 x ~@4", Q: "~@4 x ~@24 x ~@18", R: "~@3 x ~@12 x ~@7",
  S: "~@2 x!3 ~@11 x ~@7", T: "~@3 x ~@7 x ~@4", U: "~@9 x ~@24 x ~@13", V: "~@5 x ~@11 x ~@6",
  W: "~@14 x!2 ~@19 x ~@12", X: "~@11 x ~@24 x ~@11", Y: "~@12 x ~@24 x ~@10", Z: "~ x ~@8 x ~@3 x ~@24 x ~@8",
  AA: "~@5 x", AB: "~@17 x ~@23 x ~@6", AC: "~@3 x ~@3 x", AD: "~@18 x ~@24 x ~@4", AE: "~@19 x ~@23 x ~@4",
  AF: "~@5 x ~@5 x", AG: "~@9 x ~@10 x ~@2 x ~@24", AH: "~@27 x!2 ~@19", AI: "~ x ~@6",
})).gain(0.32)

// drums · low tom
const low_tom = s("lt").struct("<~@22 A ~@2 B ~@10 C ~@7 D ~@3 E ~@2 F G ~@6 H I ~ J>".pickRestart({
  A: "~@9 x ~@14 x ~ x ~@21", B: "~@13 x ~@10", C: "~@2 x!2 ~@12", D: "~@3 x ~@4", E: "~@5 x ~@14 x!2 ~@26", F: "~ x",
  G: "~@5 x ~@2 x ~@15", H: "~@11 x ~@4", I: "~@37 x ~@10", J: "~ x ~@2",
})).gain(0.28)

// drums · hihat
const hihat = s("hh").struct("<~@17 A ~@18 B C D E F G H I ~@7 J ~@8 K L ~>".pickRestart({
// … 74 more lines

More by Ranieri