Strudelify

I Will Come to You

Hanson

KeyB♭ minorTempo75 bpm
0:00/0:00
// I Will Come to You — Hanson
// 75 bpm, 4/4, key A# minor. 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. Source detail keeps the original performance.
setcpm(75/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.

// bass · electric bass pick
const bass = note(`<
  ~@7 A B C D E F G H I J K L M N C O P Q C R S T U F V W X Y Z Q C R AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ
  AR AS AT AU AV AS AW AX AY@2
>`.pickRestart({
  A: "~@14 bb2 ab2", B: "db2@3 db2 c2@2 ab1@2", C: "eb2@3 db2 bb1@2 ab1@2", D: "gb1@6 bb1@2 ab1@6 bb1 ab1",
  E: "db2@5 ~ db2 ~ db2@4 db2@2 c2@2", F: "bb1@6 db2 f2 eb2@6 bb1@2", G: "ab1@3 ab1 db2@2 c2@2",
  H: "bb1@6 db2 f2 eb2@6 gb1@2", I: "ab1@2 bb1 ab1 db2@2 f1@2", J: "gb1@6 db2 eb2 db2@4 gb1@4",
  K: "f1@6 c2@2 bb1@4 bb1@2 c2 db2", L: "eb2@6 bb1 db2 eb2@4 gb1@4", M: "ab1@3 ab2!2 eb2 f2 ab2",
  N: "db2@3 db2 c2@2 ab1 c2", O: "gb1@5 ab1 bb1@2 ab1@4 bb1@2 ab1@2", P: "db2@6 c2 bb1 ab1@4 bb1@2 ab1@2",
  Q: "db2@6 f1 gb1 ab1@4 c2@2 db2 ~", R: "gb1@4 gb2 db2 gb1@2 ab1@4 bb1@2 ab1@2", S: "db2@3 db2 db2@2 c2@2",
  T: "bb1@6 db2@2 eb2@6 eb2 bb1", U: "ab1@2 bb1 ab1 db2@2 c2@2", V: "ab1 ~ ab1@4 ab1@2 db2@4 f1@4",
  W: "gb1@6 db2 eb2 gb2@4 gb1@4", X: "f1@4 c2@4 bb1@3 ~ bb1@2 db2@2", Y: "eb2@6 eb2 db2 bb1@4 gb1@4",
  Z: "ab1@6 ab1!2 ab1@2 ab1@2 bb1@2 ab1 ~", AA: "db2@3 db2 db2@2 f2@2", AB: "eb2@6 bb1 db2 eb2@3 ~ eb2@2 db2@2",
  AC: "bb1@6 f1 ab1 bb1@4 bb1@2 ab1 bb1", AD: "c2@6 ab1 bb1 c2@6 bb1 c2", AE: "db2@6 ab1 bb1 db2@2 f2@2 eb2@2 db2@2",
  AF: "eb2@5 ab1 bb1 db2 eb2@5 ~ db2@2", AG: "bb1@6 f2 ab2 bb2@4 ab1@3 ~", AH: "gb1@6 db2 eb2 ab2 gb2@3 eb2@2 db2@2",
  AI: "ab1@6 eb2 gb2 ab2@3 gb2 eb2@2 db2@2", AJ: "c2 ~@3", AK: "~@2 eb2 d2", AL: "c2@4 c2@2 g1 eb1 f1@5 ~ f1 c2",
  AM: "bb1@2 bb1@4 bb1@2 eb1@4 bb1 c2 eb2 d2", AN: "c2@6 gb1 g1 bb1@2 c2@4 bb1@2", AO: "ab1@6 bb1 c2 eb2@2 ab2@4 ab1@2",
  AP: "a1@6 eb2 f2 a2@2 a1@3 ~ a1@2", AQ: "bb1@6 f2 ab2 bb2@2 bb2 ab2 bb2 ab2 f2 ~", AR: "eb2@3 eb2 d2@2 bb1 d2",
  AS: "f2@3 eb2 c2@2 bb1@2", AT: "ab1@5 bb1 c2@2 bb1@4 c2@2 bb1@2", AU: "eb2@6 d2 c2 bb1@4 c2@2 bb1@2",
  AV: "eb2@6 g1 ab1 bb1@4 d2@2 eb2 ~", AW: "ab1@4 ab2 eb2 ab1@2 bb1@4 c2@2 bb1@2", AX: "eb2@3 eb2 eb2@2 g2@2",
  AY: "[f1@6 g1 ab1 bb1@15 ~@9]/2",
})).s("gm_electric_bass_pick").gain(0.35)

// chords · piano
const piano = note(`<
  A B C D E F G H I J 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 Y Z AA AB AK AL AM AN AO AP AQ AR AS
  AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI@2
>`.pickRestart({
  A: "[db2,db3,ab3,db4,f4,ab4]@6 [ab3,c4,eb4,ab4]@5 ~ bb3 ~ eb4 ab4, ~@3 ab2@5, ~@13 c4@2 ~", // Db Ab
  B: "[eb2,eb3,bb3,gb4]@5 ~ [bb2,f3,bb3,db4,f4]@6 [ab2,f3,bb3,db4]@3 ~", // Ebm Bbm Bbm7
  C: "[gb2,db3,bb3,db4]@6 ab3 bb3 [ab2,eb3,gb3,bb3,eb4]@7 ~, gb3@5 ~@11", // Gb Ebm
  D: "[ab3,eb4]@2 ~@2 ab3@2 f3 ~@3 db4@4 ~@2, [db2,ab2,db3]@7 ~ [ab2,gb3,bb3,eb4]@6 ~@2, f3 ~@3, ~@2 db4@5 ~@9", // Ab5 Db5 Ebm
  E: "[db4,f4,ab4]@4 ~@2 f4 ab4 [ab3,c4,eb4,ab4]@3 ~ [ab3,c4,eb4]@3 ~, [db2,db3]@7 ~ ab2@8, ab3@3 ~ ab3@4 ~@8, ~@5 db4@2 ~@9", // Db Ab Db
  F: "[bb3,eb4,gb4]@4 ~@3 gb4 [bb2,f3,bb3,db4,f4]@4 [ab2,f3,bb3,db4]@4, [eb2,eb3]@3 eb4 ~@4, ~@4 gb3@3 ~@9, ~@5 bb3@2 ~@9", // Ebm Bbm Bbm7 Eb
  G: "[ab3,bb3,db4]@4 ~@2 bb3 db4 [ab2,eb3,gb3,bb3,eb4]@6 [gb3,bb3,db4] eb4, [gb2,db3]@7 ~@9, ~@4 gb3@3 ~@9, ~@5 ab3@2 ~@9", // Bbm7 Ebm Gb Gb5
  H: "[f3,ab3,db4,f4]@4 ~@2 db4 f4 [gb3,bb3,eb4]@3 ~ [gb3,bb3,db4]@2 [bb3,eb4]@2, [db2,db3]@7 ~ ab2@8, ~@4 f3@3 ~@7 gb3 ~, ~@5 ab3@2 ~@9", // Db Ebm Gb Eb5 Db
  I: "[ab3,db4,f4]@4 ~@2 db4 f4 [ab3,c4,eb4]@3 ~ [c4,ab4]@4, [db2,db3]@7 ~@9, ~@4 f3@3 ~ c3@7 ~, ~@5 ab3@2 ~@9", // Db Ab Fm Db
  J: "[gb3,bb3,gb4]@4 ~@2 eb4 gb4 [bb2,f3,bb3,db4,f4]@4 [ab2,f3,bb3,db4]@4, [eb2,eb3] ~, ~@4 gb3@3 ~@9, ~@5 bb3@2 ~@9", // Gb Bbm Bbm7 Eb
  K: "[gb3,bb3,db4]@4 ~@2 db4 eb4 [gb3,bb3,eb4]@3 ~ [gb3,bb3,db4]@2 eb4@2, [gb2,db3] ab2, ~@4 ab3@3 ~@7 gb3 ~, ~@5 bb3@2 ~@9", // Gb Ebm Gb Gb5
  L: "[f3,ab3,db4]@6 ~ ab3 [f3,ab3,f4]@4 [f3,ab3,eb4]@2 f4@2, db2@7 ~, db3@4 db3@3 ~, ~@6 f3@2 ~@6 f3 ~", // Db Fm Fm7
  M: "[f3,bb3,db4,f4]@4 [f3,bb3]@2 [f4,bb4]@2 [bb3,eb4]@6 bb3 eb4, bb2@6 db4 ~ [eb2,eb3,gb4]@8", // Bbm Bb5 Eb5 Ebm
  N: "[bb3,db4,gb4]@3 ~ [bb3,db4,gb4]@2 ab4 ~ [db2,db3,ab3,db4,f4,ab4]@4 [c3,ab3,c4,f4,ab4]@4, [ab2,eb3]@7 ~@9", // Gb Db Fm Ab5
  O: "[bb3,db4,f4]@4 ~@2 f4 bb4 [bb3,eb4,gb4]@4 [bb3,eb4,gb4,bb4]@3 ~, bb2 [eb2,eb3], f3@5 db4@2 ~@9, ~@4 bb3@3 ~@9", // Bbm Ebm Eb
  P: "[bb3,db4,bb4]@6 ~ db4 [ab3,db4,f4,ab4]@3 ~ [ab3,db4,eb4]@2 f4 ~, [ab2,eb3,gb4]@4 [db2,db3]@3 ~, ~@3 bb3 ~@4", // Bbm Db Absus4 Ab7 Db
  Q: "[bb3,db4,f4]@6 ~@2 [bb3,f4,bb4]@7 ~, [gb2,gb3]@15 ~, ~@3 bb3 ~@4, ~@7 db4@7 ~@2", // Bbm Bb5 Gb
  R: "[c4,eb4,ab4]@5 ~ [c4,eb4,c5] ~ [db4,f4,bb4]@4 [db4,f4,bb4,db5]@3 ~, [f2,f3] bb2, ~@3 ab4 f3@3 ~", // Ab Cm Bbm F
  S: "[db4,gb4,bb4]@6 ~ db4 [bb3,db4,gb4,bb4]@3 ~ [bb3,db4,gb4,bb4]@2 [bb3,db4,ab4] ~, [eb2,eb3]@4 [eb2,eb3]@3 ~, ~@3 bb3 ~@4", // Gb Bbm7 Eb
  T: "[bb3,db4]@6 bb3 db4 [bb3,db4,ab4]@3 ~ [bb3,db4,bb4]@3 ~, [ab2,gb3,gb4]@4 [ab2,gb3]@3 ~", // Bbm Bbm7 Bbm Ab7
  U: "[db4,f4,ab4]@4 ~@2 f4 ab4 [c3,ab3,c4,eb4,ab4]@4 [ab3,c4,eb4]@4, [db2,db3]@5 db4@2 ~@9, ~@4 ab3@3 ~@9", // Db Ab Db
  V: "[gb3,bb3,eb4]@4 ~@2 eb4 gb4 [bb2,f3,bb3,db4,f4]@4 [ab2,f3,ab3,db4]@4, [eb2,eb3,gb4]@5 bb3@2 ~@9, ~@4 gb3@3 ~@9", // Ebm Bbm Db Ebm
  W: "bb3@3 ~ [bb3,db4,gb4]@2 [bb3,db4,bb4] ~ [bb3,db4,gb4]@3 ~ [bb3,db4,ab4]@3 ~, [gb2,db3,gb3]@3 ~ [ab2,gb3]@3 ~", // Gb Bbm Gb Bbm7 Gb5 Ab7
  X: "[ab3,db4]@4 ~@2 f4 ab4 [bb3,db4,gb4]@3 ~ [bb3,db4,ab4]@3 ~, [db2,db3,f4]@5 db4@2 ~@9, ~@4 ab3@3 ~ [ab2,gb3]@6 ~@2", // Db5 Gb Bbm7 Db Ab7
  Y: "[db4,f4,ab4,db5]@3 ~@3 f4 ab4 [ab3,c4,eb4,ab4]@4 ab3@2 [c4,eb4]@2, [db2,db3]@5 db4@2 ~@7 ab4 ~, ~@4 ab3@3 ~ c3@6 ~@2", // Db Ab Cm Db
  Z: "[gb3,bb3,eb4,gb4]@4 ~@2 eb4 gb4 [bb2,f3,bb3,db4,f4]@4 [ab2,f3,ab3,db4]@4, [eb2,eb3] ~, ~@4 gb3@3 ~@9, ~@5 bb3@2 ~@9", // Ebm Bbm Db Eb
  AA: "~@2 [db4,gb4]@2 bb4@2 [db4,gb4]@2 [bb3,db4]@3 ~ [bb3,db4,ab4]@3 ~, [gb2,db3,gb3,bb3]@7 ~ [ab2,gb3]@7 ~", // Gb5 Bbm Bbm7 Gb Ab7
  AB: "[ab3,db4,f4]@6 ~ db4 [ab3,db4,f4]@3 ~ [c3,ab3,c4,f4,ab4]@3 ~, [db2,db3]@11 ~@5, ~@3 ab3 ~@4", // Db Fm Db
  AC: "db4@2 f4@2 ~@2 db5 ~ [eb2,eb3,gb4,bb4]@6 eb4 gb4, bb2 ~, f3@3 ~@5, ~@4 [db4,f4,bb4]@4 eb4@5 ~@3", // Ebm Bbm
  AD: "[db4,gb4,bb4]@3 ~ [db4,gb4,bb4]@2 c5@2 [db2,db3,db4]@4 [c3,c4]@4, [ab2,gb3]@3 ~ [f4,ab4]@4", // Gb Db C Ab7 Fm
  AE: "[db4,f4,bb4]@4 ~@2 bb4 db5 [db4,gb4,bb4]@4 [db4,gb4,bb4]@2 [db4,ab4] ~, bb2@4 [eb2,eb3]@3 ~, ~@4 db4@3 ~@9, ~@5 f4@2 ~@9", // Bbm Gb Db5 Eb
  AF: "[ab2,gb3,gb4,ab4]@6 [db4,gb4,ab4]@2 [db2,db3,db4,f4]@6 ab3 db4, db4@3 ~@5 ab4@4 ~@4", // Ab7 Dbsus4 Db
  AG: "[bb3,db4,f4]@6 bb3 db4 [bb3,db4,bb4]@4 [bb3,db4,f4]@3 ~, [gb2,db3,gb3]@15 ~", // Bbm Gb5
  AH: "[c4,eb4,ab4]@3 ~ [c4,eb4,ab4,c5]@4 [bb2,f3,f4,bb4]@6 bb4 c5, [f2,f3]@8 db4@5 ~ [db4,f4]@2", // Ab Bb5 F Db
  AI: "[db4,gb4,bb4,db5]@5 ~ [db4,gb4,bb4] ~ [bb3,db4,gb4]@6 [bb3,db4,f4] ~, [eb2,eb3]@7 ~", // Gb Bbm Eb
  AJ: "[bb3,db4,eb4]@6 ~ db4 [ab2,gb3,bb3,db4,gb4,bb4]@4 [ab2,gb3,bb3,db4,ab4]@3 ~, [ab2,gb3] ~, ~@3 bb3 ~@4", // Eb7 Gb Ab7
  AK: "[gb4,bb4,eb5,gb5]@4 ~ bb4 eb5 [gb4,bb4] [gb4,bb4,eb5,gb5]@3 ~ [eb3,gb4,bb4,eb5]@3 ~, eb2@15 ~, eb3@11 ~@5, ~@2 gb4 ~@5", // Ebm Gb Ebm
  AL: "[f4,bb4,db5,f5]@5 ~ db4 f4 [db4,f4,bb4,db5]@3 ~ [db4,f4,bb4]@3 ~, [bb1,bb2]@6 ~@2 [bb1,bb2]@7 ~", // Bbm Bb
  AM: "[eb4,ab4,eb5]@5 ~ ab4 c5 [ab4,c5,eb5,ab5]@3 ~ [bb4,eb5,gb5]@4, [c2,c3]@6 ~@2 [c2,c3]@7 ~", // Ab5 Ab Ebm C
  AN: "[ab4,db5,f5]@5 ~ eb4 f4 [f4,ab4,db5]@3 ~ [f4,ab4,db5]@2 [f4,ab4,db5]@2, [db2,db3]@8 [db2,db3]@7 ~, ~@12 db4 ~ db4 ~", // Db
  AO: "[eb4,gb4,bb4]@5 ~ gb4 bb4 [gb4,bb4,eb5,gb5]@4 [gb4,bb4,eb5]@4, [eb2,eb3]@3 ~ [eb2,eb3]@3 ~", // Ebm Eb
  AP: "[f4,bb4,db5,f5]@5 ~ db4 f4 [bb1,bb2,f4,bb4]@2 [f4,c5]@2 [db4,f4,bb4]@2 [db4,f4] ~, [bb1,bb2]@8 [db4,db5] ~ db4 ~ [ab1,ab2]@4, ~@7 ab4", // Bbm Bb5 F5 Bbm Db Bb Db Ab
  AQ: "[db4,gb4,bb4]@5 ~ bb4!2 [gb1,ab4,bb4,db5,gb5]@4 [ab4,bb4,db5,f5]@2 [ab4,bb4,eb5] ~, [gb1,gb2]@4 gb2@3 ~, ~@3 ab4 ~@4", // Gb Bbm7 Absus2 Gb
  AR: "[gb4,bb4,eb5]@5 ~ [gb4,bb4,eb5,gb5]!2 [gb4,bb4,eb5]@2 [f4,bb4,f5] ~ [eb4,bb4,eb5] ~ [gb4,bb4,eb5,gb5] ~, ab2@7 ~, ~@8 gb5 ~ db5@2 ~@4", // Ebm Bb5 Eb5 Ebm
  AS: "[c2,c3,g4,c5,eb5,g5] ~@7", AT: "~@8 [eb2,eb3,eb4,g4,bb4,eb5]@3 ~ [d2,d3,d4,g4,bb4,d5]@3 ~",
  AU: "[g4,c5,eb5]@4 ~@2 eb5 g5 [f1,f2,ab4,c5,f5,ab5]@6 [ab4,c5] ~, [c2,c3]@5 c5@2 ~@7 f5@2, ~@4 g4@3 ~@9", // Cm Fm Ab C
  AV: "[bb1,bb2,ab4,c5,eb5]@6 [ab4,c5,eb5] ~ [g4,bb4,eb5]@4 ~@2 eb5 g5, ~@8 [eb2,eb3]@5 bb4@2 ~, ~@12 g4@3 ~", // Ab Eb
  AW: "[c3,g4,c5,eb5,g5]@4 [eb3,g3,c4]@2 [g4,c5,eb5] ~ [c3,eb3,c4,c5,eb5]@4 ~ c5 eb5 g5, ~@8 g4@3 ~ g4@2 ~@2", // Cm
  AX: "[ab1,ab2,g4,c5,eb5,g5]@5 ~ [eb3,ab3,c4,g4,c5,eb5] ~ [eb3,ab3,c4,g4,c5,eb5]@4 ~ c5 [g4,eb5] f5, ~@6 g4 ~", // Abmaj7 Cm
  AY: "[a1,a2,g4,c5,eb5,g5]@6 [g4,c5,eb5] ~ [a2,f3,a3,c5,eb5]@4 ~@2 eb5 f5, ~@8 g4@3 ~ g4@3 ~, ~@13 c5@2 ~", // Am7b5 Cm F7
  AZ: "[ab4,c5,eb5,g5]@4 [ab4,c5,f5]@4 [bb2,ab4,c5,eb5] ~ [bb2,ab4,c5,f5]@4 ~@2, bb1@7 ~, bb2@7 ~@9", // Abmaj7 Fm Ab Fm
  BA: "[eb4,g4,bb4]@4 ~@2 g4 bb4 [d3,bb3,d4,f4,bb4]@4 [bb3,d4,f4]@4, [eb2,eb3]@5 eb4@2 ~@9, ~@4 bb3@3 ~@9", // Eb Bb Eb
  BB: "[ab3,c4,f4]@4 ~@2 f4 ab4 [c3,g3,c4,eb4,g4]@4 [bb2,g3,bb3,eb4]@4, [f2,f3,ab4]@5 c4@2 ~@9, ~@4 ab3@3 ~@9", // Fm Cm Eb Fm
  BC: "c4@3 ~ [c4,eb4,ab4]@2 [c4,eb4,c5] ~ [c4,eb4,ab4]@3 ~ [c4,eb4,bb4]@3 ~, [ab2,eb3,ab3]@3 ~ [bb2,ab3]@3 ~", // Ab Cm Ab Cm7 Ab5 Bb7
  BD: "[bb3,eb4]@4 ~@2 g4 bb4 [c4,eb4,ab4]@3 ~ [c4,eb4,bb4]@3 ~, [eb2,eb3,g4]@5 eb4@2 ~@9, ~@4 bb3@3 ~ [bb2,ab3]@6 ~@2", // Eb5 Ab Cm7 Eb Bb7
  BE: "[eb4,g4,bb4,eb5]@3 ~@3 g4 bb4 [bb3,d4,f4,bb4]@4 bb3@2 [d4,f4]@2, [eb2,eb3]@5 eb4@2 ~@7 bb4 ~, ~@4 bb3@3 ~ d3@6 ~@2", // Eb Bb Dm Eb
  BF: "[ab3,c4,f4,ab4]@4 ~@2 f4 ab4 [c3,g3,c4,eb4,g4]@4 [bb2,g3,bb3,eb4]@4, [f2,f3] ~, ~@4 ab3@3 ~@9, ~@5 c4@2 ~@9", // Fm Cm Eb F
  BG: "~@2 [eb4,ab4]@2 c5@2 [eb4,ab4]@2 [c4,eb4]@3 ~ [c4,eb4,bb4]@3 ~, [ab2,eb3,ab3,c4]@7 ~ [bb2,ab3]@7 ~", // Ab5 Cm Cm7 Ab Bb7
  BH: "[bb3,eb4,g4]@6 ~ eb4 [bb3,eb4,g4]@3 ~ [d3,bb3,d4,g4,bb4]@3 ~, [eb2,eb3]@11 ~@5, ~@3 bb3 ~@4", // Eb Gm Eb
  BI: "[c4@6 ~ c4 [ab3,c4,eb4,g4]@7 ~ [ab3,c4,f4]@7 ~ [eb2,eb3,bb3,eb4,g4,bb4]@6 ~@2, [f2,f4,ab4]@4 bb1@7 ~@5, ~@3 ab3 ~@12]/2", // Abmaj7 Fm Eb Fm
})).s("gm_piano").gain(0.29)

// other · harmonica
const harmonica = note("<~@17 A ~@11 B C ~ D E ~@5 F ~@2 G@2 ~ H I J ~@16 K@2>".pickRestart({
  A: "~@7 db4@2 c4@2 db4@2 c4 bb3 ~", B: "~@10 ab4!2 bb4 ab4@2 f4", C: "f4 eb4 db4@5 ~@9",
  D: "~ eb4!2 db4 eb4@2 eb4 db4 f4@2 eb4 db4 db4@2 eb4 ~", E: "~@2 eb4 db4 eb4@3 bb4@2 gb4@2 f4!2 eb4 db4@2",
  F: "~@9 f4 eb4 db4 eb4 db4@2 ~", G: "[~@2 eb4 eb4@2 ~ eb4@2 bb4@2 ab4 ~ bb4@2 ab4 ab4@2 eb4 f4@10 ~@4]/2",
  H: "~@2 f4 eb4 f4@2 eb4 bb4@2 ab4@2 gb4 f4 eb4 db4@2", I: "~@2 gb4 ~ gb4@2 f4 f4@3 eb4@2 gb4 f4@2 eb4",
  J: "eb4@3 bb3 eb4@2 ~@2", K: "[~@10 bb4@2 ab4@2 bb4 ab4@2 g4 g4@10 ~@4]/2",
})).s("gm_harmonica").gain(0.45).pan(0.6)

// chords · pad warm
const pad_warm = note(`<
  ~@12 A B C D E F G H I J K L M N O P Q R S T U V W X M N O P Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR
  AO AS AT AU AV AW
>`.pickRestart({
  A: "[bb2,db3]@7 ~ [bb2,eb3]@4 [bb2,db3]@3 ~", B: "bb2@4 c3@3 ~ [f2,ab2,db3]@3 ~ [f2,ab2,c3]@3 ~, gb2 ~",
  C: "[f2,bb2,db3]@7 ~ [gb2,bb2,eb3]@6 [gb2,bb2,db3] ~", D: "[gb2,bb2,eb3]@7 ~ [ab2,db3,f3]@7 ~",
  E: "[bb2,db3]@5 [c3,eb3] [db3,f3]@2", F: "[ab2,c3,eb3]@8 [bb2,db3]@7 ~", G: "[gb2,bb2,eb3]@15 ~",
  H: "[gb2,bb2,eb3]@4 [gb2,bb2,f3]@3 ~ [db3,gb3]@4 [eb3,ab3]@4", I: "[db3,f3]@8 [eb3,ab3,c4]@7 ~",
  J: "[eb3,gb3,bb3] [f3,bb3,db4]", K: "[gb3,bb3,db4]@7 ~ [gb3,bb3]@4 [db3,ab3]@3 ~",
  L: "[db3,f3]@7 ~ [gb3,bb3]@3 ~ [gb3,bb3]@2 ~@2, ~@8 db3@7 ~", M: "[db3,f3,ab3]@7 ~ [eb3,ab3,c4]@7 ~",
  N: "[eb3,gb3,bb3]@7 ~ [f3,bb3,db4]@7 ~", O: "[gb3,bb3,db4]@7 ~ [gb3,bb3]@8", P: "[f3,ab3]@11 ~ [c3,f3,ab3]@4",
  Q: "[db3,f3,bb3]@6 ~@2 [eb3,gb3,bb3]@3 ~ [gb3,bb3,eb4]@4", // Bbm Ebm
  R: "[gb3,bb3,db4]@3 ~ [gb3,bb3,eb4]@3 ~ [ab3,db4,f4]@3 ~ [ab3,c4,f4]@4", S: "[bb3,db4,f4]@8 [bb3,eb4,gb4]@7 ~",
  T: "[bb3,db4,gb4]@8 [ab3,db4,f4]@7 ~", U: "[bb3,db4,f4]@11 ~ [bb3,db4]@4", V: "[c4,eb4]@8 [bb3,db4]@7 ~",
  W: "[bb3,eb4,gb4]@8 [bb3,db4,f4]@3 ~ [bb3,eb4]@4", X: "[bb3,db4]@8 [ab3,c4,eb4]@7 ~",
  Y: "[gb3,bb3,eb4]@5 ~ [eb3,gb3,bb3] ~ [eb3,gb3,bb3]@7 ~", Z: "[f3,bb3,db4]@6 [db3,f3,bb3] ~ [db3,f3,bb3]@7 ~",
  AA: "[eb3,ab3,eb4]@6 [eb3,ab3] ~ [eb3,ab3]@4 [gb3,bb3,gb4]@4", AB: "[ab3,db4,f4]@5 ~ [f3,ab3,db4] ~ [f3,ab3,db4]@7 ~",
  AC: "[gb3,bb3,eb4]@11 ~ [eb3,gb3,bb3]@4", AD: "[f3,bb3,db4]@11 ~ [f3,ab3,db4]@4",
  AE: "[gb3,ab3,db4]@4 [gb3,bb3]@4 [gb3,c4]@3 ~ [gb3,db4]@4", AF: "[ab3,bb3,eb4]@8 [bb3,db4,gb4]@7 ~",
  AG: "[c4,eb4,g4]@3 ~@13", AH: "~@8 [g3,bb3,eb4]@3 ~ [f3,bb3,d4,f4]@3 ~", AI: "[g3,c4,eb4]@7 ~ [ab3,c4,f4]@7 ~",
  AJ: "[ab3,c4,eb4]@4 [ab3,c4,f4]@4 [bb3,eb4,g4]@7 ~", // Ab Fm Eb
  AK: "[eb4,g4]@2 [c4,eb4] ~ [g3,c4] ~ [c4,eb4] ~ [eb4,g4]@4 [c4,eb4]@3 ~", // Eb Cm C5 Cm Eb Cm
  AL: "g4@2 [c4,eb4] ~ [g3,c4] ~ [c4,eb4] ~ [eb4,g4]@4 [c4,eb4]@3 ~, eb4 ~@15", // Cm C5 Cm Eb Cm
  AM: "g4@2 [c4,eb4] ~ [a3,c4] ~ [c4,eb4] ~ [eb4,g4]@3 ~ [c4,eb4]@3 ~, eb4 ~@15", // Cm Am Cm Eb Cm
  AN: "[ab3,c4,g4]@4 [ab3,c4,f4]@4 [ab3,c4,eb4]@3 ~ [ab3,c4,f4]@3 ~", AO: "[bb3,eb4,g4]@8 [bb3,d4,f4]@7 ~",
  AP: "[c4,f4,ab4]@8 [c4,eb4,g4]@7 ~", AQ: "[c4,eb4,ab4]@2 [ab3,c4,eb4] [ab3,c4,f4]",
  AR: "[bb3,eb4,g4]@7 ~ [ab3,c4,f4]@8", AS: "[c4,f4,ab4]@7 ~ [c4,eb4,g4]@8",
  AT: "[bb3,c4,eb4]@7 ~ [ab3,c4,eb4]@4 [ab3,c4,f4]@4", AU: "[g3,bb3,eb4]@7 ~",
  AV: "[ab2,f3,ab3,c4]@2 [ab2,g3,bb3] [ab2,f3,ab3]", AW: "[eb3,g3] [c3,f3] [g2,bb2,eb3] ~, ab2 ~",
})).s("gm_pad_warm").gain(0.31).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@8 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B C D A B A B A B A B A B A B A B E
  F
>`.pickRestart({
  A: "x!3 ~@3 x ~ x ~@5 x ~", B: "x!2 ~ x!2 ~ x ~ x ~@5 x ~", C: "x", D: "~@4 x ~@2 x", E: "x!2", F: "~ x",
})).gain(0.35)

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

// drums · clap
const clap = s("cp").struct("<~@8 [~ x ~ x]!40 ~ [~@3 x] [~ x ~ x]!14 ~@2>").gain(0.35)

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

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@12 A B C D E F G H ~@20 A B C D E F G H ~@18>".pickRestart({
  A: "~@2 x!3 ~ x!5 ~@3 x!2", B: "x ~ x!3 ~ x!5 ~ x ~@3", C: "x ~ x!3 ~ x!5 ~ x ~ x!2",
  D: "x ~ x ~ x ~ x!3 ~ x ~@3 x ~", E: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x!2", F: "x ~ x ~ x ~@3 x ~ x ~ x ~ x!2",
  G: "x ~ x ~ x ~ x!5 ~ x ~ x!2", H: "x ~ x ~ x ~ x!2 ~@8",
})).gain(0.35)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@11 A ~@7 B ~@5 C ~ D ~@3 C ~@3 E ~ C ~ D ~@7 B ~ F ~@3 C ~ D ~@5 C ~ D ~ G
>`.pickRestart({
  A: "~@9 x ~@4 x ~", B: "~@11 x ~@2 x ~", C: "~@7 x", D: "~@13 x ~ x", E: "~@12 x ~@2 x", F: "~@10 x!2 ~@2 x!2",
  G: "~@3 x ~@4",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@12 A B ~ A ~ C ~ D ~@20 A B ~ A ~ C ~ D ~@18>".pickRestart({
  A: "~@3 x", B: "~@7 x", C: "~@3 x ~@4", D: "~ x",
})).gain(0.3)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@11 A ~@7 B ~@5 C ~ D ~@3 C ~@3 E ~ C ~ D ~@7 B ~ F ~@3 C ~ D ~@5 C ~ D G@2
>`.pickRestart({
  A: "~@8 x ~@3 x!2 ~ x", B: "~@13 x ~ x", C: "~@15 x", D: "~@3 x", E: "~@7 x", F: "~@9 x ~@3 x ~@2", G: "~@7 x ~@8",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@12 A ~@3 A ~@3 A ~@3 A ~ A ~ A ~@3 A ~@2 A@2 ~ A ~ A ~@3 A ~@3 A B A ~ A ~ A ~ A ~@3 A ~ A ~ C D
>`.pickRestart({
  A: "x", B: "~@2 x!2", C: "x!2", D: "~ x",
})).gain(0.35)

// drums · ride
// … 9 more lines

More by Hanson