Strudelify

Disperato

Masini

KeyB♭ minorTempo120 bpm
0:00/0:00
// Disperato — Masini
// 120 bpm, 4/4, key A# minor. 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 2 Deep Snare -> synth drum
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 131 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · piano
const piano = note("<A@7 B@8 C@7 D@8 E@8 F@7 G@8 H@7 I@8 J@3 K@4 L@8 M@7 N@8 O@4 P@3 Q@4 R@4 S@7 T@4 U@7>".pickRestart({
  A: "[~@2 g4@30 ab4@30 [f4,d5]@61 g4@30 ~ ab4@30 [f4,d5]@40, ~ bb4@111, ~@2 eb4@61 ~@60 eb4@61 ~@40, ~@16 c5@46 ~@15 c5@35]/7", // Dm
  B: "[~@22 g4@30 ab4@30 ~ d5@61 g4@30 ab4@30 ~ [f4,d5]@51, ~@21 bb4@235, ~@21 eb4@61 f4@61 ~ eb4@61 ~@51, ~@26 c5@46 ~@15 c5@41]/8", // Dm
  C: "[~@10 g4@30 ab4@31 [f4,d5]@61 g4@30 ab4@30 ~ [f4,d5]@31, ~@5 bb4@107, ~@10 eb4@61 ~@61 eb4@61 ~@31, ~@20 c5@46 ~@15 c5@31]/7", // Dm
  D: "[~@30 g4@30 ab4@31 [f4,d5]@61 g4@30 ab4@30 ~ [f4,d5]@43, ~@15 bb4@113, ~@30 eb4@61 ~@61 eb4@61 ~@43, ~@60 c5@91 ~@31 c5@74]/8", // Dm
  E: "[~@18 g4@30 [ab4,c5]@30 ~ f4@30 ~@61 [f4,f5]@30 ~ d4@55, ~@9 bb4@119, ~@18 eb4@61 d5@61 eb5@61 ~@55, ~@109 g4@61 ~@86]/8", // Ab F
  F: "[~@3 g3@15 ab3@15 [f3,d4]@30 g3@15 ab3@15 [f3,d4]@19, ~@3 bb3@109, ~@3 eb3@30 ~@30 eb3@30 ~@19, ~@18 c4@45 ~@15 c4@34]/7", // Dm
  G: "[~@11 g3@15 [ab3,c4]@15 f3@15 ~@30 [f3,f4]@15 [d3,f3]@27, ~@11 bb3@117, ~@11 eb3@30 d4@30 eb4@30 ~@27, ~@28 g3@15 ~@21]/8", // Ab F Dm
  H: "[~@6 [g4,bb4]@30 [ab4,c5]@30 [bb4,d5]@45 ~ [d4,c5]@15 [eb4,g4,bb4]@30 [ab4,c5]@30 [bb4,d5]@37, ~@3 f5@51 ~@2 f5@56, ~@6 eb5@60 ~@61 eb5@60 ~@37]/7", // Gm Ab Bb D7 Eb Ab Bb
  I: "[~@8 [d4,c5]@15 [bb3,eb4,g4,bb4]@30 ab4@30 d4@30 [g3,bb3,g4,bb4,d5]@30 ~@30 f4@30 [bb3,d4,f4,bb4,d5]@53, ~@8 f5@73 ~@2 f5@173, ~@23 eb5@60 f4@60 [eb4,g4,bb4,eb5]@60 ~@53, ~@53 [c4,c5]@60 ~@143]/8", // D7 Eb Gm Bb Eb C
  J: "[~@7 gb5@15 [f5,ab5]@15 ~@30 [eb4,c5,ab5]@29, ~@7 [db4,db5,bb5]@60 ~@29, ~@37 [eb5,gb5]@59]/3", // Fm Ab Gb Ebm
  K: "[~ [f4,f5]@30 [db4,bb4]@30 [eb4,b4,eb5]@30 bb4@30 a4@7, ~ db5@60 ~@30 [f4,c5,f5]@37, ~@31 gb5@60 ~@37]/4", // F Gb Abm F5
  L: "[~@8 [d4,bb4,d5]@15 ~@30 [ab5,c6]@29 ~ bb5@44 ~ c6@15 [g5,bb5]@29 ~ c6@30 ~@45 f5@8, ~@23 f5@179 ~ [db5,db6]@53, ~@23 eb6@59 ~ d6@60 eb6@61 ~@52, ~@173 ab5@83]/8", // Gm Ab Gm Db
  M: "[~@8 db4@29 ~ [b4,eb5]@30 [f4,db5,f5]@45 [eb4,ab4,eb5]@15 [bb4,db5]@29 ~ [eb4,b4,eb5]@30 [f4,db5,f5]@36, ~ ab5@31, ~@7 gb5@59 ~@62 gb5@59 ~@37, ~@7 [bb4,db5]@29 ~ eb4@31 ~@156]/7", // B Db Ab5 Bbm Abm Db Bbm
  N: "[~@24 [db4,db5]@30 [eb4,eb5]@33 ~@27 [bb4,f5]@29 ~@46 f4@15 ab5@45 f4@4 eb4@3, ~@9 [eb4,ab4,eb5]@18 ~@61 db5@29 ~@27 db5@104 ~@8, ~@3 db6@28 ~, ~@57 bb5@15 gb5@29 ~ f5@22 ~@4, ~@144 gb4@61 ~@44 [ab4,eb5]@7]/8", // Db Eb Bb5 Ab5
  O: "[~@8 db4@30 [eb4,b4,eb5]@30 [db5,f5]@45 eb5@15, ~@2 gb5@15 ~@15]/4", // Abm Db
  P: "[[db4,bb4,db5]@5 [eb4,b4,eb5]@5 [f4,db5,f5]@6, gb5@61 ~@35]/3", // Gb Abm Db
  Q: "[~@9 eb4@15 db4@30 eb5@24 ~@36 bb4@14, ~@9 eb5@13 ~@2 gb5@59 ~ f5@44, ~@12 db5@13 ~@2 b4@33 ~@4, ~@54 eb4@33 ~@41]/4",
  R: "[~@19 [db4,f5,ab5]@13, ~ db5@7, ~@4 [db4,bb5]@15 ~@13, ~@16 gb5@57 ~@55, ~@23 db6@41]/4", // Db Gb
  S: "[~@9 [db4,bb4,db5]@30 [eb4,b4,eb5]@30 [f4,db5,f5]@45 [eb4,ab4,eb5]@15 [bb4,db5]@29 ~ [eb4,b4,eb5]@30 [f4,db5,f5]@35, ~@9 ab5@215, ~@9 gb5@59 ~@61 gb5@59 ~@36]/7", // Gb Abm Db Ab5 Bbm Abm Db
  T: "[~@25 [db4,db5]@30 [eb4,eb5]@33 ~@27 [bb4,f5,bb5]@13, ~@10 [eb4,ab4,eb5]@18 ~@61 db5@29 ~@10, ~@25 db6@103]/4", // Db Eb Bb5 Ab5
  U: "[~@77 [db4,ab4]@120 ~@27, ~@17 f4@180 ~@27]/7", // Db5
})).s("gm_piano").gain(0.16)

// chords · piano · soft notes
const piano_soft = note("<~@36 A@3 ~@36 B@8 ~@4 C ~@4 D@3 ~ E@2 F@8 ~ G@3 ~@7 H ~@4 I@8 ~>".pickRestart({
  A: "[~@9 f4@61 ~@26]/3", B: "[~@23 [g5,bb5]@30 ~@203, ~@23 f6@226 ~@7]/8", C: "db4", D: "[~@20 f4@61 ~@15]/3",
  E: "[~@12 db4@45 ~@7]/2", F: "[~@8 [bb4,db5]@29 ~@31 f4@45 eb4@15 ~@120 bb4@8, ~ ab5@31]/8",
  G: "[~@20 ab4@61 ~@15]/3", H: "~ db4@31", I: "[~@21 f4@60 [db5,f5,ab5]@175, ~@81 bb4@51 ~@124]/8",
})).s("gm_piano").gain(0.08)

// chords · piano
const piano_2 = note("<~@53 A@2 B C@4 D@8 ~@15 E@4 F@3 G@8 H@4 I@8 J@7 K@3 L@6 M@5>".pickRestart({
  A: "[~@7 [eb2,g3,bb3]@29 [ab2,eb3,ab3,bb3,c4]@28, ~@6 eb3@29 ~@29]/2", // Eb Ab
  B: "~@3 bb3@17 ~ [bb3,eb4]@11, ~ bb2@15, ~ d4@10 ~@5, ~@2 f3@17 ~@2 g3@8 ~@3", // Eb5
  C: "[[f3,bb3,d4]@12 ~@4 [d2,d3,f3,bb3,c4]@15 [eb2,eb3,g3,bb3]@30 [eb3,ab3,bb3]@25 ~@5 [f3,bb3]@18 [g3,bb3]@9 ~@3 [f3,bb3,d4]@7, ~@61 [ab2,c4]@30 bb2@37, ~@91 d4@21 ~@16, ~@109 eb4@12 ~@7]/4", // Bb Eb Ebsus4 Bb5 Gm Bb Ab
  D: "[~@8 [d2,d3,f3,c4,f4]@13 ~@2 [eb2,eb3]@30 [ab2,c4,f4]@30 [d3,c4]@30 [g2,bb3]@30 [eb2,eb3,bb3]@30 [f2,eb4,f4]@30 [bb1,bb2,f3,bb3,d4]@53, ~@23 eb4@58 ~@2 f4@59 ~@114, ~@23 bb3@55 ~@178, ~@23 g3@27 ~@3 ab3@28 ~@62 [g3,eb4]@28 ~@2 [g3,bb3]@26 ~@57]/8", // Dm7 Eb Fm D7 Gm Eb5 F7 Bb …
  E: "[~@8 [gb2,bb3,db4,gb4,ab4]@30 [b2,b3,eb4,gb4,ab4]@30 [ab3,db4,f4]@15 ~@3 [bb3,db4,gb4]@11 ~ [ab3,db4,f4]@15 [ab3,db4,eb4]@10 ~@5, ~@68 db3@45 f2@15]/4", // Gb Abm7 Db Gb Db Absus4
  F: "[[gb3,ab3,bb3,db4]@23 ~@7 [gb3,b3,eb4]@25 ~@5 [ab3,db4,f4]@17 ~ [bb3,db4,gb4]@2 ~@10 [ab3,db4,f4]@6, gb2@29 ~ b2@30 db3@36]/3", // Gb B Db Gb Db
  G: "[~@9 [f2,ab3,db4,eb4]@15 [gb3,ab3,bb3,db4]@24 ~@6 [gb3,b3,eb4]@24 ~@6 [ab3,db4,f4]@26 ~@4 [bb3,db4]@24 ~@6 [gb2,gb3,bb3,db4]@30 [gb3,bb3,db4]@24 ~@6 [ab3,db4,f4]@10 ~ [ab3,db4,f4]@2 ~@6 [bb3,db4,gb4]@2 ~@9 [ab3,db4,f4]@9 ~@6 [ab3,db4,f4] ~@3 [f2,ab3,db4,eb4]@3, ~@24 gb2@29 ~ b2@29 ~ db3@30 f4@84 ~@58, ~@114 bb2@30 ~@30 ab2@29 ~ [db2,db3]@50 ~@2]/8", // Db Gb B Db Bbm Gb Db Gb …
  H: "[~@8 [bb3,db4,gb4,ab4]@24 ~@6 [b2,ab4]@29 ~ [ab3,db4,f4]@17 ~@2 [bb3,gb4]@2 ~@9 [ab3,db4,f4]@15 [ab3,db4,eb4]@10 ~@5, ~@8 gb2@27 ~@3 gb4@26 ~@23 db4 ~@25 f2@15, ~@19 [b3,eb4]@11 ~@4 db3@23 ~@7]/4", // Gb E Db Ebm Db Absus4 B
  I: "[[gb3,ab3,bb3,db4]@23 ~@7 [gb3,b3,eb4]@25 ~@5 [ab3,db4,f4]@17 ~@2 [bb3,db4,gb4]@2 ~@9 [ab3,db4]@11 ~@4 [f2,ab3,db4,eb4]@15 [gb3,bb3,db4]@15 ~@4 [gb3,bb3,db4] ~@10 [b2,b3,eb4]@30 [f3,ab3,b3,eb4]@17 ~@2 [f3,ab3,b3] ~@10 [bb2,f3,bb3,db4]@30 [gb2,gb3,bb3,db4]@16, gb2@29 ~ b2@30 db3@45 ~@15 gb2@29 ~@31 f2@30 ~@46, ~@90 f4@15 ~@45 gb3@27 ~@22 eb4@2 ~@9 ab3@27 ~@19]/8", // Gb B Db Gb Db5 Db Gb B …
  J: "[~@3 [bb3,db4] ~@10 [gb3,bb3,db4]@25 ~@6 [ab3,db4,f4]@10 ~ [ab3,db4,f4]@2 ~@5 [bb3,db4,gb4] ~@10 [ab3,db4,f4]@14 ~@2 [ab3,db4,eb4]@14 ~ [bb3,db4,gb4,ab4]@24 ~@6 [b2,ab4]@29 ~ [ab3,db4,f4]@17 ~ [bb3,gb4]@2 ~@10 [ab3,db4,f4]@15 [ab3,db4,eb4]@10 ~@4, ~@3 gb3@2 ~@9 ab2@30 db2@59 ~@2 gb2@27 ~@3 [b3,eb4]@22 ~@8 db3@45 f2@14, ~@45 db3@59 ~@31 gb4@26 ~@22 db4 ~@40]/7", // Bbm Gb Db Gb Db Absus4 Gb E …
  K: "[~ [gb3,ab3,bb3,db4]@23 ~@7 [gb3,b3,eb4]@25 ~@5 [ab3,db4,f4]@17 ~@2 [bb3,db4]@2 ~@9 [ab3,db4,f4]@5, ~ gb2@29 ~ b2@30 db3@35, ~@79 gb4@2 ~@15]/3", // Gb B Db Bbm Db
  L: "[~@10 [f2,ab3,db4,eb4]@15 [gb3,ab3,bb3,db4]@24 ~@6 [gb3,b3,eb4]@24 ~@6 [ab3,db4,f4]@26 ~@4 [bb2,f4]@30 [ab3,bb3,db4,f4]@25 ~@5 [ab2,bb3,db4,f4]@17, ~@25 gb2@29 ~ b2@29 ~ db3@30 [bb3,db4]@24 ~@6 gb2@29 ~@18]/6", // Db Gb B Db Bb5 Bbm7 Bbm
  M: "[~@35 eb4@8 f4@7 ab4@11 ~ db5@71 ~@27, ~@13 db2@120 ~@27, ~@20 db3@113 ~@27, ~@24 ab3@19 ~@117, ~@7 db4@4 ~@29]/5",
})).s("gm_piano").gain(0.27)

// chords · piano
const piano_3 = note("<~@25 A@2 ~@2 B ~ C ~ D@2 E@5 F@3 ~@2 G@8 ~@78>".pickRestart({
  A: "[~@25 d5@27 ~@12, ~@15 f5@10 ~@39, ~@20 c5@13 ~@31]/2", B: "~@9 eb4@5 f4@5 ~ d4@6 ~@6, ~@19 db4@2 ~@11",
  C: "~ g4@10 ab4@16 ~@5", D: "[~@3 g4@5 c5@5 gb4 g4@26 ~@24]/2",
  E: "[~@10 [f3,ab3,c4]@27 bb3@3 ~ [d3,f3,bb3]@31 ~@15 [c4,d4]@3 f4@11 ~ [eb3,g3]@52 ~@6, ~@10 eb3@25 ~@52 bb3@15 bb3@58, ~@87 f3@2 ~@71]/5", // Fm Bb Csus2 Eb
  F: "[~@43 f2@4 [bb1,f3]@4 [f3,f4]@9 ~@2 [g2,bb2,eb3]@30 ~@4, ~@2 [d3,f3,bb3]@37 bb2@8 [bb3,c4,d4]@13 ~@36, ~@36 bb1@5 ~@55]/3", // Bb5 F Eb Bb
  G: "[~@7 [c4,d4]@4 f4@9 ~@2 [eb3,g3,bb3]@19 [eb3,g3,bb3]@11 [eb3,ab3,c4]@30 [bb1,f3,bb3,d4]@23 f4@3 [g3,bb3,d4]@33 ~ [eb2,g3,bb3,eb4]@30 [f3,bb3,eb4,f4]@15 [f3,bb3,c4]@15 [bb1,d3,f3,bb3]@41 ~@13, ~@7 [f3,bb3]@14 ~ eb2@30 ~@204]/8", // Csus2 Eb Ab Bb Gm Eb Ebsus2 Fsus4 …
})).s("gm_piano").gain(0.23)

// chords · pad warm
const pad_warm = note("<A@7 B@8 C@6 D E@8 F@8 G@7 H@8 ~@78>".pickRestart({
  A: "[~@2 [eb4,f4,g4]@30 [c4,eb4,ab4]@30 [bb2,d4,f4]@61 [eb4,f4,g4]@30 ~ [c4,eb4,ab4]@30 ~ d4@39, ~ bb4@111, ~@2 eb3@61 ~@60 eb3@61 [bb2,f4]@40]/7", // Eb Ab Bb Eb Ab Bb5
  B: "[~@22 [eb4,f4,g4]@30 [c4,eb4,ab4]@30 ~ [bb2,d4,f4]@61 [eb4,f4,g4]@30 [c4,eb4,ab4]@31 [bb2,d4,f4]@51, ~@11 bb4@117, ~@22 eb3@61 ~@61 eb3@61 ~@51]/8", // Eb Ab Bb Eb Ab Bb
  C: "[~@10 [eb4,f4,g4]@30 [c4,eb4,ab4]@31 [bb2,d4,f4]@61 [eb4,f4,g4]@30 [c4,eb4,ab4]@30, ~@5 bb4@91, ~@10 eb3@61 ~@61 eb3@60]/6", // Eb Ab Bb Eb Ab
  D: "~ [bb2,d4,f4]@31", // Bb
  E: "[~@30 [eb4,f4,g4]@30 [c4,eb4,ab4]@30 ~ [bb2,d4,f4]@61 [eb4,f4,g4]@30 [c4,eb4,ab4]@31 [bb2,d4,f4]@43, ~@15 bb4@113, ~@30 eb3@61 ~@61 eb3@61 ~@43]/8", // Eb Ab Bb Eb Ab Bb
  F: "[~@18 [eb4,f4,g4]@30 [c4,eb4,ab4]@30 ~ [g3,d4]@61 [eb4,f4,g4]@30 [bb3,c4,eb4]@30 ~ [bb2,d4,f4]@55, ~@9 bb4@119, ~@18 eb3@61 ~@61 eb3@61 ~@55]/8", // Eb Ab G5 Eb Cm7 Bb
  G: "[~@3 [eb4,f4,g4]@15 [c4,eb4,ab4]@15 [d4,f4]@30 [eb4,f4,g4]@15 [c4,eb4,ab4]@15 [bb2,d4,f4]@19, ~@3 bb4@109, ~@6 eb3@60 bb2@45 ~@15 eb3@60 ~@38]/7", // Eb Ab Dm Eb Ab Bb
  H: "[~@11 [eb4,f4,g4]@15 [c4,eb4,ab4]@15 bb2@15 g3@15 [eb3,eb4,f4,g4]@15 [f3,c4,eb4]@15 [bb2,d4,f4]@27, ~@11 bb4@75 bb4@42, ~@11 eb3@30 [d4,f4]@30 ~@57]/8", // Eb Ab Eb F7 Bb Dm
})).s("gm_pad_warm").gain(0.3)

// other · string ensemble 2
const string_ensemble_2 = note("<~@22 A@8 B@8 ~@93>".pickRestart({
  A: "[~@14 [bb3,d4,f4]@15 eb2@31 ab2@30 bb2@61 eb2@30 ~ ab2@30 bb2@44]/8", // Bb
  B: "[~@2 d2@15 eb2@31 ab2@30 d2@30 ~ g2@30 eb2@30 ~ f2@30 bb2@56]/8",
})).s("gm_string_ensemble_2").gain(0.45)

// bass · electric bass finger
const bass = note("<~@38 A@2 B@5 C@8 A@2 D@5 E@8 F@2 G H@8 I@7 J K@3 L@8 M N@2 J O@8 P@6 Q R@3 S@5 T@6>".pickRestart({
  A: "[~@6 eb1@29 ~ ab1@28]/2", B: "[~@2 bb1@45 d1@15 eb1@30 ab1@30 bb1@38]/5",
  C: "[~@7 d1@15 eb1@29 ~ ab1@30 bb1@30 g1@30 eb1@29 ~ f1@30 bb1@54]/8",
  D: "[~@2 bb1@45 d1@14 ~@2 eb1@29 ~ ab1@30 bb1@37]/5",
  E: "[~@8 d1@15 eb1@30 ab1@30 d2@30 g1@30 eb1@30 f1@30 bb1@53]/8", F: "[~@7 gb1@14 ~ f1@15 eb1@27]/2",
  G: "~@3 ab1@15 c2@14",
  H: "[~ db2@15 f1@14 ~ gb1@30 b1@30 f1@25 ~ [c2,c3]@4 [f2,f3]@14 ~ d1@15 eb1@30 ab1@29 ~ bb1@30 bb1@15]/8", // C F
  I: "[d1@15 eb1@30 ab1@29 ~ db2@45 f1@15 gb1@29 ~ b1@30 ~ db2@28]/7", J: "~@2 db2@15 f1@14 ~",
  K: "[gb1@29 ~ b1@29 ~ db2@27 ~@3 db2@6]/3",
  L: "[~@9 f1@14 ~ gb1@29 ~ b1@29 ~ db2@29 ~ bb1@30 gb1@29 ~ ab1@29 ~ db2@44 ~ db2@3 ~ f1@3]/8", M: "~ gb1@3",
  N: "[~@2 gb1@2 ~@2 b1@29 ~ db2@23 ~@3 db2 ~]/2",
  O: "[gb1@29 ~ b1@17 ~@2 b1@2 ~@5 b1@4 db2@27 ~@3 db2@15 f1@14 ~ gb1@24 ~@3 gb1 ~@2 b1@24 ~@3 b1 ~@2 f1@29 ~ bb1@29 ~ gb1@16]/8",
  P: "[~@11 gb1@2 ~ ab1@30 db1@59 ~@2 gb1@29 ~ b1@30 db2@27]/6", Q: "~@3 db2@15 f1@14",
  R: "[~ gb1@29 ~ b1@29 ~ db2@27 ~@3 db2@5]/3", S: "[~@10 f1@14 ~ gb1@29 ~ b1@29 ~ db2@29 ~ bb1@30 gb1@15]/5",
  T: "[~@5 ab1@10 db1@40 ~@9]/6",
})).s("gm_electric_bass_finger").gain(0.4)

// other · synth drum
const synth_drum = note(`<
  ~@51 A B C D E F G H I J K L M N O P Q R S A F G H I J K L M N O T Q R C D E U V W X Y Z AA AB AC AD AC AE C D E U V W
  X Y Z AA AB AC AD A Q R S A F G H I J K L M ~@6
>`.pickRestart({
  A: "~@18 b3 ~@13", B: "~@23 b3!2 ~@7", C: "~@21 b3 ~@10", D: "~@19 b3 ~@12", E: "~@17 b3 ~@14", F: "~@16 b3 ~@15",
  G: "~@14 b3 ~@17", H: "~@12 b3 ~@19", I: "~@10 b3 ~@21", J: "~@8 b3 ~@23", K: "~@6 b3 ~@25", L: "~@4 b3 ~@27",
  M: "~@2 b3 ~@29", N: "b3 ~@29 b3 ~", O: "~@28 b3 ~@3", P: "~@18 b3!2 ~@6 b3 ~@5", Q: "~@24 b3 ~@7", R: "~@22 b3 ~@9",
  S: "~@20 b3 ~@11", T: "~@26 b3 ~@5", U: "~@15 b3 ~@16", V: "~@13 b3 ~@18", W: "~@11 b3 ~@20", X: "~@9 b3 ~@22",
  Y: "~@7 b3 ~@24", Z: "~@5 b3 ~@26", AA: "~@3 b3 ~@28", AB: "~ b3 ~@29 b3", AC: "~@29 b3 ~@2", AD: "~@27 b3 ~@4",
  AE: "~@23 b3 ~@8",
})).s("gm_synth_drum").gain(0.75)

// chords · drawbar organ
const drawbar_organ = note("<~@53 A B@6 C@8 D@3 E@8 F@6 G@2 H I@2 J@8 K@2 L@2 M@3 N@8 O@2 P@2 Q R@6 S@7>".pickRestart({
  A: "~@7 [f4,bb4]@25", // Bb5
  B: "[~@5 c5@14 ~@16 [f4,d5]@45 c5@15 bb4@30 c5@30 bb4@37, ~@5 ab4@30 ~@45 f4@112, ~@19 bb4@60 ~@113]/6", // Dm
  C: "[~@8 [f4,c5]@15 bb4@30 c5@29 ~@61 eb5@60 d5@53, ~@23 f4@60 c5@30 bb4@143, ~@53 f5@60 ~@143, ~@49 f4@79]/8", // F5
  D: "[~@7 gb4@14 ~ ab4@15 eb4@28 ~@2 [c4,eb4,ab4]@29, ~@7 [db4,bb4]@60 ~@29, ~@22 f4@12 ~@3 gb4@59]/3", // Ab Gb
  E: "[~ [db4,f4,ab4]@30 [bb3,db4,gb4]@30 [b3,eb4,gb4]@30 bb3@30 a3@30 [eb3,eb4,g4,bb4]@30 [ab3,ab4,c5]@30 [f4,bb4,d5]@15 ~@4 [g4,bb4,eb5]@11 [f4,bb4,d5]@15, ~@91 [c4,f4]@60 f5@75 ~@30, ~@151 eb5@60 bb3@45]/8", // Db Gb B Eb Ab Bb Eb Bb …
  F: "[[d3,f4,c5]@15 [eb3,g4,bb4]@30 [ab3,ab4,c5]@30 [ab4,db5,f5]@45 [ab4,db5,f5]@11 ~@5 [gb4,bb4]@30 [b3,eb4]@26, ~@15 [eb5,f5]@60 [db3,db4]@56 ~@61]/6", // Dm7 Eb Ab Db Gb B Ebsus2 Db
  G: "[~@4 f4@45 [ab3,eb4]@15, ~ db4@15]/2", H: "bb3@29 ~ [b3,eb4]@2", I: "[~@7 [db4,f4]@9]/2",
  J: "[~@9 [ab3,eb4]@15 bb3@30 [b3,eb4]@30 ~@60 gb4@56 ~@4 ab4@47 ~@2 [ab3,eb4]@3, ~@12 db5@111 ~@5, ~@21 db4@43, ~@84 f4@169 ~@3, ~@57 bb4@45 ~@26]/8", // Ab5 B Ab5
  K: "[~@4 [bb3,db4]@15 [b3,eb4]@13]/2", L: "[~@4 f4@45 eb4@15, ~ db4@15]/2",
  M: "[bb3@29 ~ [b3,eb4]@30 [db4,f4]@36, db5]/3", // B Db
  N: "[~@9 [eb4,eb5]@15 bb3@30 eb4@30 ~@30 bb3@30 ~@90 ab3@22, ~@24 db5@60 ab5@120 ~ db5@51, ~@27 b3@30 ~@15 db4@56, ~@21 f4@15 ~@28]/8", // Eb
  O: "[~@9 [bb3,db4]@30 [b3,eb4]@25]/2", P: "[~@5 f4@45 [ab3,eb4]@14, ~@5 db4@59]/2", Q: "~ bb3@29 ~ [b3,eb4]",
  R: "[~@29 f4@44 ~ [ab3,eb4]@15 bb3@30 [b3,eb4]@30 ~@30 bb4@13, ~@29 db4@97 ~@23 [db4,f4]@43, ~@89 db5@103]/6", // Ab5 B Db
  S: "[~@17 bb3@60 ab3@120 ~@27, ~@17 [db4,f4]@180 ~@27]/7", // Db
})).s("gm_drawbar_organ").gain(0.08)

// other · overdriven guitar
const overdriven_guitar = note("<~@68 A@3 B@4 C@2 D@2 E@4 F@3 ~@10 G@2 H@2 ~@31>".pickRestart({
  A: "[~@7 gb3@15 f3@15 eb3@30 ab2@15 c3@14]/3", B: "[~ db3@15 f2@15 gb2@30 b2@30 f2@29 ~ f2@7, ~@60 gb2 ~@3]/4",
  C: "[~@8 d4@4 f4@7 g3@41 ~@4]/2", D: "[c4@15 bb3@3 ~ c4@3 ~ bb3@27 ~@3 db4@4 c4@4 bb3@3]/2",
  E: "[d4@4 f4@7 ~ g4@45 eb4@2 ~ ab4@11 ~ g4@3 f4@9 ~@3 eb4@3 f4@4 ab4@4 f4@4 eb4@3 db4@4 ab3@4 bb3@3 ~ db4@3 f4@4 ab4@4]/4",
  F: "[db5@3 ~ db5@64 ~@28]/3", G: "[~@27 db6@32 ~@2 f5@3, ~@13 ab5 ~@18]/2", H: "[eb5 db5@9 ~@6]/2",
})).s("gm_overdriven_guitar").gain(0.46)

// drums · kick
const kick = s("bd").struct(`<
  ~@38 A ~ B C ~ D ~ E ~ F ~ G ~ H I A J B K L M N O P Q R S T U V W X Y Z AA M AB O P Q AC S AD U AE W X AF B AG L D AH
  AI AJ F AK G AL AM AN A AF B K AO D AP AI AQ F AK AR AL AS AT W AU Y AV AA AW AX O AY Q AC S T ~@4
>`.pickRestart({
  A: "~@3 x ~@12", B: "~ x ~@14", C: "~@15 x ~@14 x ~", D: "~@13 x ~@2", E: "~@7 x ~@14 x ~@9", F: "~@9 x ~@6",
  G: "~@7 x ~@8", H: "~@5 x ~@10", I: "~@5 x ~@21 x ~@4", J: "~ x ~@6", K: "x ~@14 x", L: "~@7 x",
  M: "~@23 x ~@3 x ~@4", N: "~@21 x ~@3 x ~@6", O: "~@23 x ~@8", P: "~@21 x ~@10", Q: "~@19 x ~@12", R: "~@17 x ~@14",
  S: "~@15 x ~@16", T: "~@13 x ~@18", U: "~@11 x ~@20", V: "~@5 x ~@3 x ~@10 x ~@3 x ~@7", W: "~@7 x ~@24",
  X: "~@5 x ~@26", Y: "~@3 x ~@28", Z: "~ x ~@29 x", AA: "~@29 x ~@2", AB: "~@25 x ~@6", AC: "~@13 x ~@3 x ~@14",
  AD: "~@10 x ~@2 x ~@18", AE: "~@6 x ~@2 x ~@11 x ~@10", AF: "~@2 x ~@12 x", AG: "x ~@12 x ~ x",
  AH: "~@5 x ~@18 x ~@7", AI: "~@11 x ~@4", AJ: "~@4 x!2 ~@2", AK: "~ x", AL: "~@3 x ~@4",
  AM: "~@6 x ~@3 x ~@10 x ~@3 x ~@6", AN: "~ x ~@2", AO: "~@6 x!2", AP: "~@3 x", AQ: "~@17 x ~@2 x ~@11",
  AR: "~@11 x ~@2 x ~@17", AS: "~@7 x ~@6 x ~@14 x ~@2", AT: "~@5 x ~@2 x ~@23", AU: "~@5 x ~@25 x",
  AV: "~ x ~@25 x ~@3 x", AW: "~@27 x ~@4", AX: "~@6 x ~@18 x ~@6", AY: "~@17 x ~@3 x ~@10",
})).gain(0.32)

// drums · low tom
const low_tom = s("lt").struct("<~@38 A ~ B C ~ D ~ E ~ F ~ G ~ H ~@15 I J ~@6 K ~@6 L ~@14 M ~@26 N ~@6>".pickRestart({
  A: "~@3 x ~@12", B: "~ x ~@14", C: "~@15 x", D: "~@13 x ~@2", E: "~@11 x ~@4", F: "~@9 x ~@6", G: "~@7 x ~@8",
  H: "~@5 x ~@10", I: "~@24 x ~@3 x ~@2 x", J: "~@3 x ~@28", K: "~ x ~@6", L: "~@7 x", M: "~@29 x ~@2",
  N: "~@13 x ~@18",
})).gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct("<~@52 [~@27 x ~@4] ~@78>").gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@51 A B ~@13 C D ~@6 A E ~@6 D ~@14 F ~@25 G H ~@6>".pickRestart({
  A: "~@29 x ~@2", B: "~@2 x!3 ~@3", C: "~@15 x", D: "~@13 x ~@18", E: "~ x ~@30", F: "~@21 x ~@3 x ~@6",
  G: "~@13 x ~@2", H: "~@3 x ~@12",
})).gain(0.36)

// drums · tambourine
const tambourine = s("tb").struct("<~@112 [~@7 x ~@6 x ~@14 x ~@2] [~@5 x ~@26] ~@17>").gain(0.24)

// drums · cowbell
const cowbell = s("cb").struct("<~@52 [~@23 x ~@8] ~@78>").gain(0.28)

// drums · crash
const crash = s("cr").struct(`<
  ~@52 A B ~@2 C D ~@2 E ~@3 F ~@3 G H ~ I J ~@2 K ~@3 L ~@3 G ~@6 M ~@3 N ~@2 O P ~@6 Q ~@7 M ~@6 R ~@3 S F D ~@4
>`.pickRestart({
  A: "~@27 x ~@4", B: "~@6 x ~@14 x ~@10", C: "~@15 x", D: "~@13 x ~@18", E: "~@23 x ~@8", F: "~@15 x ~@16",
  G: "~@7 x ~@14 x ~@9", H: "~@5 x ~@26", I: "~@31 x", J: "~@7 x ~@8", K: "~@8 x ~@14 x ~@8", L: "x ~@14 x ~@14 x ~",
  M: "~@9 x ~@14 x ~@7", N: "~ x", O: "~@29 x ~@2", P: "~ x ~@2", Q: "~@3 x", R: "~@10 x ~@14 x ~@6", S: "~@17 x ~@14",
})).gain(0.16)

// drums · ride
const ride = s("rd").struct(`<
  ~@48 A ~@34 B C D E F C G H I J K L M N O P Q N R S Q T U F C G V I J K W I J K X M N R S Q T Y ~@6
>`.pickRestart({
  A: "~@31 x", B: "~@7 x ~@7 x ~@6 x ~@7 x ~", C: "~@5 x ~@7 x ~@6 x ~@7 x ~@3", D: "~@4 x ~@6 x ~@6 x ~@7 x ~@5",
  E: "~@2 x ~@6 x ~@6 x ~@7 x ~@7", F: "x ~@6 x ~@7 x ~@6 x ~@7 x ~", G: "~@3 x ~@7 x ~@6 x ~@7 x ~@5",
  H: "~ x ~@7 x ~@6 x ~@7 x ~@6 x", I: "~@7 x ~@6 x ~@7 x ~@6 x ~@2", J: "~@5 x ~@6 x ~@7 x ~@6 x ~@4",
// … 71 more lines

More by Masini