Strudelify

Donna Lee

Parker Charlie

KeyA♭ majorTempo200 bpm
0:00/0:00
// Donna Lee — Parker Charlie
// 200 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 95 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(200/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 B C@2 D@3 E F G H@2 I@2 J@2 K L M@2 N O P Q R S T U@3 V W X@2 Y@2 Z@2 AA@2 AB AC AD@2 AE AF AG@2 AH@8 AI AJ AK AL AM
  AN AO AP AQ AR@3 AS AT AU@5 AV AW@2 AX AY@2 L M@2 N O AZ BA BB BC T U@3 V
>`.pickRestart({
  A: "[c4,f4,bb4,c5,eb5,ab5]@5 ~@19", B: "~ a3@13 ~@10, [eb4,a4]@3 ~",
  C: "[[d4,bb4]@26 ~@8 e5@2 f5@3 bb4@3 ~@6, ab3@41 ~@7]/2", // Gm
  D: "[ab3@21 ~@15 e4@12 ~ c4@19 ~@4, db4@41 ~@7 ab3@18 ~@6, ~@6 g4@3 ~@3 eb4@4 ~@2, ~@25 g3@40 ~@7]/3",
  E: "~@2 [eb3,db4] ~@5 [gb3,c4]@3 ~, ~@3 [gb4,bb4]@2 ~@11 [c5,e5]@3 ~@5", F: "~ eb4@16 ~@7, [f4,ab4,eb5]@17 ~@7",
  G: "[eb4,e4,ab4,eb5]@3 ~ [db4,db5]@3 ~@17, ~ [e4,ab4] ~@6", // Emaj7 Db E
  H: "[~ ab3@12 ~@23 c5@10 ~@2, [c4,eb4,g4]@13 ~@10 a4@12 ~@13, ~ g3@8 ~@15 [a3,eb4]@18 ~@6]/2", // Cm Adim
  I: "[d5@30 ~@7 f5@2 gb5@2 g5@3 ~@4, [ab3,d4]@7 ~, ~@18 e5 ~@5]/2", // Abdim
  J: "[[ab3,f4]@7 ~@5 e4@2 ~@2, db4@7 ~, c4@5 ~@3 g3@6 ~@2]/2", // Db
  K: "[g3,ab3,c4,eb4]@2 ~@14 [ab3,bb4] g3 ~@6, ~@8 [c4,eb5] ~@3", L: "~ [eb4,a4]@13 ~@2 [a3,eb4,a4]@2 ~@6, ~@16 f5 ~@7",
  M: "[~ ab3@23 ~@12 [eb4,ab4,db5,gb5]@3 ~ [ab3,d4,g4]@5 ~@3, g4@7 ~@5, d4@13 ~@11, d5@23 ~@16 [c5,f5]@9]/2", // Ebm7 G F5
  N: "[bb3,e4,e5] ~@5", O: "[db4,e4]@5 ~ d4@6 [eb4,gb4]@5 ~ [e4,g4]@4 ~@2, [e3,bb3]@17 ~@7, c5@2 f4 ~@5",
  P: "~ ab3@13 ~@10, [f4,ab4]@3 ~, [g3,c4]@7 ~@5", // Fm C5
  Q: "~@4 c5@2 e5@2 ~ f5@2 ~ gb5@2 ~ g5@2 ~ ab5@3 bb5@2 ~, [bb3,e4]@19 ~@5", R: "[g3,ab3,c4,c6] ~@5",
  S: "e5@2 ~@3 eb5 ~ e5@2 ~ eb5@3 d5@9 ~@2, [bb3,e4]@7 ~", T: "[d4,c5]@5 ~, ab3@3 ~",
  U: "[~@3 [b3,ab4,d5] ~@5 b3@2 ~ ab3@9 ~@3 c4@4 ~@12 eb3@6 ~@14 g3@12, ~@11 b4@11 ~ [eb4,ab4]@4 ~@12 a3@8 ab3@10 ~@15, ~@48 db3@23 ~]/3", // Abdim Ab5
  V: "~ c3@4 ~@19, ab3 ~@7", W: "[ab3,db4,f4]@4 ab4@2 db5@2 ~@2 f5@2 e5@2 ~@2 [g3,db4,eb5]@3 db5@2 ~ b4 ~, ~@8 e4 ~@3",
  X: "[~@5 c5@3 ~@2 bb4@2 ~ ab4@4 ~@2 c5@3 ~@6 gb4@2 f4@4 ~@12 eb4@2, ~ [ab3,c4]@21 a4@2 a3@22 ~@2, ~ g3@14 ~@8 eb3@23 ~@2]/2", // Ab
  Y: "[~ d4@3 bb4@2 ~@4 eb4 ~@2 c5@2 ~@3 e4@3 ~ db5@2 ~@4 f4@3 d5@5 ~@12, ab3@37 ~@11, ~ d3@35 ~@12]/2",
  Z: "[~@4 c5@2 db5@3 f5@2 ~ ab5@4 f5@2 db5@3 c5@3 ~@4 c5@2 db5@2 ~@2 f5@2 eb5@2 ~ c5@2 ~ bb4@4 ab4@2, db4@7 ~, eb5@3 ~@21 g5@3 ~@11 db5@2 ~@8, ~ [ab3,f4]@18 ~@6 g3@23, ~ c4@12 ~@35]/2", // Db
  AA: "[g4@3 ab4@3 bb4@5 ~ eb4@5 ~ f4@2 ~@7 bb4@3 db5@2 ~@2 c5@2 ab4@3 e4@3 eb4@3 db4@2 ~, ab3@19 ~@3 gb4@4 ~@22, c4@17 ~@5 db4@11 ~@15, ~@23 eb3@11 ~@14]/2",
  AB: "~@6 db4@3 eb4@2 ~ ab3@6 ~@6, ab3@7 ~@17, c4@5 ~@19, ~ f3@7 ~@16", AC: "~@4 eb4@3 ~@2 e4@2 ~@2 b3@5 ab3@3 ~@3",
  AD: "[~@10 ab3 ~@2 c4@2 eb4@2 ~ g4@2 ~@4 ab4@2 ~@2 a4@2 c5@2 ~ eb5@2 ~ [eb4,gb5]@4 c5@2 f5@3 ~@2 d4, ~@22 bb4@4 ~@10 a3@3 ~@9]/2", // Ebm
  AE: "d5@3 ~ eb5@2 ~ e5@2 ~ f5@2 ~ bb4@3 c5@3 db5@2 ~ d5@2, ab3 ~@23",
  AF: "~ g4@2 ~@3 a4@3 ~ bb4@2 ~ e4@3 f4@2 gb4@3 g4@3, ~ ab4 ~@4",
  AG: "[~@4 f4@3 g4@2 ~ ab4@2 ~ bb4@2 ~ c5@3 db5@3 e5@2 g5@3 eb5@2 ~ e5@3 g5@2 ~ c6@4 ~@2 bb5@4 ~@2, ab4 ~@7 g3@8, ~ db4@44 ~@3]/2",
  AH: "[~ ab3 ~@8 eb5@2 ~@4 eb5 ~ c5@3 ~@8 f5@2 ~@3 f5@2 ~@2 c5@3 ~@2 c5@3 ~@5 d5@3 bb4@4 ~@2 ab4@5 ~ c5@3 g4@4 ~@2 c5@3 ~@7 f4@6 ~@3 eb4 ~@4 ab4@2 ~ c5@3 ~@3 gb4@3 bb4@3 d5@4 ~@2 ab4@2 ~@2 c5@3 e5 ~ bb4@3 ~ d5@2 f5@2 ~ g5@4 ~@8 f5@3 e5@2 ~ f5@3 ~ c5@2 ab4@3 ~@6 b4@3 bb4@3 gb4@2 ~ e4@3 ~ eb4@2 d4@3 db4@2 ~, ~ c4@23 eb4@20 ~@2 d5@3 ~@29 gb4@6 ~@12 e4@3 ~@69 c5@3 ~@21, ~ ab5@3 ~@2 ab5@186, ~@2 ab3@15 ~@8 a3@21 ~ ab3@44 ~@5 bb3@44 ~@3 [ab3,c4]@24 ~ bb3@14 ~@10, ~@47 d4@32 ~@3 d4@8 ~@7 e3@44 ~@3 g3@20 ~@5 e3@20 ~@3]/8", // Ab
  AI: "c4@4 c5@2 ~ b4@3 c5@2 ~ f5@3 g5@2 ~@4 a5@2, ~@3 ab5",
  AJ: "e4@4 g5@2 e5@2 ~ db5@2 ~ c5@3 bb4@3 ab4@3 g4@2 ~, [bb3,ab5] ~@3", // Bb7
  AK: "[ab3,c4,d4,ab4]@3 ~ f4@2 g4@2 ~@2 ab4@2 bb4@3 ~ c5@3 ~@3 [ab3,b3,d4,b4]@2", // Dm7b5 Abdim
  AL: "~@3 g5@2 d5@2 b4 ~ ab4@2 ~@2 b4@2 ~ eb5@2 d5@2 db5@2 c5@2, ~@6 f5 ~@5",
  AM: "~@3 g4@2 ~ f4@2 gb4@2 ~@2 a4@2 gb4@2 f4 ~ eb4@2 d4 ~ c4@2, bb4 ab4 ~@3 db5@2 ~@5, ~ [ab3,c4]@4 ~@19", // Ab
  AN: "db4@6 c4@3 ~ bb3@2 ab3@6 g3@2 ~@2 bb3@2", AO: "ab3@2 ~@2 eb3@3 ~@3 eb3@2 gb3@4 ~@2 gb3@5 ~",
  AP: "f3@4 ~@2 f3@5 ~ e3@12", AQ: "~ eb5@7, [eb3,c4,g4,ab4], ~ c5@23",
  AR: "[~@15 g5@8 ~@4 bb5@34 ~@11, ~@10 a3@13 [ab3,d4]@40 ~@9, ~@11 eb4@13 ~@48, ~@6 a4@6 c5@19 ~@5, ~@13 [g4,c5]@11 ~ [g4,f5]@37 ~@10]/3", // Abdim C5 G7
  AS: "[ab3,db4,f4,db5] ~@7", AT: "~@7 g3 ~@10 g3@6, ~@3 [db4,g4] ~@4 [db4,e4,g4]@4",
  AU: "[~@2 ab3@17 ~@4 [ab3,db4,bb4]@4 ~@12 [c4,f4]@8 ~ f3@24 b3@24 [eb3,c4]@6 ~@18, ~ [c4,eb4]@18 ~@3 gb4@4 ~@13 gb3@7 ~ ab3@55 ~@18, ~@47 eb4@51 ~@22, ~@18 e3@5 ~@7]/5", // Bbm7 F5 Cm
  AV: "~@6 [a3,eb5,g5] ~@9 a3@7 ~, ~@5 eb4@2 ~@8 [eb4,c5,eb5]@8 ~", // Am7b5 Cm
  AW: "[d5@16 ~@9 [c5,eb5]@4 ~@2 [db5,e5]@3 ~@3 [d5,f5]@7 ~@4, [ab3,d4]@7 ~]/2", // Cm Dbm Dm Abdim
  AX: "~ [ab3,f4]@2 ~@21, [db4,db5] ~@11", // Db
  AY: "[~@6 [g3,db4,g4,bb4,eb5] ~@9 [g3,db4,eb4]@7 ~ [c4,f4]@5 ~@11 [ab3,bb4] g3 ~@6, ~@15 [g4,db5,gb5]@8 [bb4,eb5]@5 ~@12 [c4,eb5]@2 ~@6]/2", // Eb7 F5 Absus2 Gb Eb5 Cm
  AZ: "ab3 ab3@13 ~@2 f4 ~ ab4@3 bb4 ~@2, ab4@3 ~, f4@2 ~, [g3,c4]@7 ~@5", // C5
  BA: "bb4@2 b4@2 ~@2 [bb4,f5]@3 ~ [e3,bb3] ~ ab4@2 ~@2 f4@2 ab4@3 ~@3, f5 ~@5", BB: "[g3,ab3,c4]@19 ~@5",
  BC: "e5@2 ~@3 eb5 ~ e5@2 ~ eb5@3 db5@9 ~@2, [bb3,e4]@7 ~", // Bbdim
})).s("gm_piano").gain(0.45)

// chords · piano
const piano_2 = note("<A B C@2 D E F G H I F J C@2 D E F J C@2 K@2 L M L N O P Q R F R ~@63>".pickRestart({
  A: "[ab3,c4,eb4]", B: "[f3,a3,c4,eb4]", C: "[bb3,d4,f4,ab4]/2", D: "[bb3,db4,f4,ab4]", E: "[eb3,bb3,db4,g4]",
  F: "[ab3,c4,eb4,ab4]", G: "[eb3,bb3,db4,gb4] [d3,gb3,a3,c4]", H: "[db3,f3,ab3]", I: "[db3,b3,e4,ab4]",
  J: "[f3,c4,eb4,a4]", K: "[c4,e4,g4,bb4]/2", L: "[f3,c4,f4,ab4,c5]", M: "[c4,e4,bb4,eb5]", N: "[c4,e4,bb4,c5]",
  O: "[f4,ab4,c5]", P: "[ab3,b3,d4,f4]", Q: "[ab3,c4,eb4,ab4] [f3,c4,eb4,a4]", R: "[bb3,db4,f4,ab4] [eb3,bb3,db4,g4]",
})).s("gm_piano").gain(0.25).pan(0.3)

// bass · acoustic bass
const bass = 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 AK AL AM AN AO AP AQ@2 AR AS AT AU
  AV@2 AW AX AY AZ BA BB BC@2 BD@2 BE BF BG BH BI BJ@2 BK@3 BL BM@2 BN BO@2 BP BQ BR BS BT BU@2 BV U BW BX BY Y BZ AA AB
  CA CB CC
>`.pickRestart({
  A: "ab1@12 eb2@11 ~", B: "f1@2 c2 b1", C: "bb1@11 ~ f2@12", D: "bb1@6 c2@5 ~ db2@4 ~@2 c2@3 ~@3",
  E: "bb1@9 ~@3 bb1@6 e1@4 ~@2", F: "eb1@7 ~@3 eb1@2 bb1@5 ~ a1@5 ~", G: "ab1@2 eb2 ab1",
  H: "eb2@4 ~@2 eb2@4 ~@2 d2@4 ~@2 d2@5 ~", I: "db2@11 ~ ab1@11 ~", J: "db2@5 ~ eb2@4 ~@2 e2@4 ~@2 db2@6",
  K: "ab1@11 ~ c2@5 ~ gb1@4 ~@2", L: "f1@6 c2@6 f2@11 ~", M: "bb1@9 c2@2 ~", N: "d2@3 c2",
  O: "bb1@6 c2@5 ~ db2@5 ~ bb1@6", P: "eb2@6 db2@5 ~ c2@4 ~@2 bb1@4 ~@2", Q: "ab1@3 ~@2 ab1 eb2@3 ab1@3", R: "f1 c2",
  S: "bb1@7 ~@3 bb1@2 f1@12", T: "bb1@6 c2@5 ~ db2@6 b1@2 ~@4", U: "c2 e2", V: "c2@5 ~ d2@6 eb2@6 c2@6", W: "f1 ab1",
  X: "c2@6 bb1@6 ab1@5 ~ g1@5 ~", Y: "f1@6 g1@4 ~@2 ab1@4 f1@2 b1@5 ~", Z: "c2@6 d2@5 ~ eb2@5 ~ e2@6",
  AA: "f2@6 e2@4 ~@2 f2@5 ~ c2@5 ~", AB: "ab1@12 b1@11 ~", AC: "ab1@5 ~ gb1@6 f1@6 a1@6",
  AD: "bb1@5 ~ e1@5 ~ eb1@6 g1@5 ~", AE: "ab1 f1", AF: "e1@3 eb1@2 ~", AG: "ab1@6 c2@6 eb2@5 ab1@6 ~",
  AH: "f1@5 g1@6 ~ ab1@5 ~ a1@6", AI: "bb1@6 d2@6 f2@5 ~ bb1@6", AJ: "ab2@6 g2@6 gb2@5 ~ f2@6",
  AK: "bb1@6 c2@5 ~ db2@6 e1@6", AL: "eb1@6 f1@5 ~ gb1@5 ~ g1@6", AM: "ab1@5 bb1@6 ~ c2@5 ~ ab1@5 ~",
  AN: "eb2@4 ~@2 eb2@5 ~ d2@4 ~@2 d2@6", AO: "db2 f2 ab2 f2", AP: "~ db2@5 eb2@5 ~@2 e2@5 a1@6",
  AQ: "[~@5 bb1@6 ~ c2@5 ~ gb1@5 f1@6 g1@6 ~ ab1@5 ~ a1@6, ab1@7 ~@41]/2", AR: "bb1@6 c2@6 db2@5 ~ d2@6",
  AS: "f2@6 gb2@5 ~ g2@5 ~ ab2@6", AT: "bb1@6 c2@6 ~ db2@5 bb1@6", AU: "eb2@6 db2@6 c2@5 ~ bb1@5 ~",
  AV: "[ab1@6 c2@5 eb2@3 ~@3 gb1@6 f1@6 a1@6 ~ c2@5 a1@5 ~@2, ~@4 eb2 ~@7]/2", AW: "bb1@2 ~ bb1@3 c2@2 ~ c2@2 ~",
  AX: "db2@4 ~@2 db2@5 ~ d2@5 ~ b1@5 ~", AY: "c2@6 d2@6 eb2@5 ~ e2@4 ~@2",
  AZ: "c3@3 c2@2 bb2@6 ab2@6 ~ g2@6, ~@3 b1 ~@20", BA: "f2@6 g2@5 ~ ab2@6 db2@6", BB: "c2@6 bb1@6 ab1@6 g1@5 ~",
  BC: "[f1@6 g1@4 ~ ab1@4 ~ f1@2 db2@5 c2@7 bb1@6 ab1@6 g1@5 ~]/2",
  BD: "[~@5 g1@5 ~ ab1@6 bb1@6 ab1@6 ~ b1@6 d2@6 f2@5 ~, f1@7 ~@41]/2", BE: "ab1@5 gb1@6 ~ f1@6 a1@6",
  BF: "bb1@5 ~ e2@5 eb2@6 ~ a1@5 ~", BG: "ab1@5 ~ gb1@6 f1@5 a1@7", BH: "bb1@5 ~ e1@6 eb1@5 g1@5 ~@2",
  BI: "ab1@8 ~ bb1@3 c2@5 ~@7", BJ: "[~@4 f2@3 ~ g2@2 ~ a2@5 ~ f2@3 ~@3 bb2@4 ~@5 bb2@3 ~ f2@2 ~@4 f2@3 d2@3]/2",
  BK: "[~@3 d2@2 ~ bb1@14 ~@3 c2@2 db2@5 ~ c2@3 ~@2 bb1@5 ~ e1@2 ~@3 eb1@9 ~@2 g1@2 bb1@6 g1@2 ~@4]/3",
  BL: "~@3 c2@3 ~@2 db2@2 ~ eb2@5 ~ c2@2 ~@2 eb2@3",
  BM: "[~@2 gb2@2 bb2@4 ~@3 a2@6 gb2@4 ~@2 ab2@9 ~ gb2@3 f2@8 ~@2 gb2@2]/2",
  BN: "ab2@3 ~ e2@3 ~@2 e2@3 db2@5 ~ ab1@4 ~@2",
  BO: "[~@12 eb2@3 db2@2 c2@2 ~ bb1@2 ~ a1@3 c2@2 ~ eb2@3 gb2@3 f2@5 ~ c2@3 ~@4]/2",
  BP: "d2@9 ~ bb1@3 eb2@8 ~ c2@2, ~@13 d2 ~@10", BQ: "e2@8 ~ db2@3 f2@2 ~@2 d2@2 g2@3 ~@3",
  BR: "ab2@5 ~ f2@6 db2@5 ~ e2@4 ~@2", BS: "eb2@4 ~@2 eb2@5 ~ a1@4 ~@2 a1@4 ~@2", BT: "ab1@2 ~ ab1 eb2@2 ab1@2",
  BU: "[f1@12 c2@11 bb1@7 ~@3 bb1@3 f1@12]/2", BV: "bb1@6 ~ c2@5 db2@6 b1@2 ~@4", BW: "~ c2@5 d2@6 eb2@6 c2@6",
  BX: "~ f1@11 ab1@12", BY: "c2@6 bb1@6 ~ ab1@5 g1@5 ~", BZ: "c2@6 ~ d2@5 eb2@5 ~ e2@6",
  CA: "ab1@5 ~ gb1@6 f1@6 ~ a1@5", CB: "~ bb1@5 ~ e1@5 ~ eb1@5 g1@5 ~", CC: "ab1 ~@3",
})).s("gm_acoustic_bass").gain(0.4)

// other · vibraphone
const vibraphone = note("<A B C D E F G H I J K L M@2 N O P B C Q R S T U V W X Y Z AA AB ~@64>".pickRestart({
  A: "~@12 g5@2 ab5@2 g5@2 f5@3 e5@3", B: "eb5 db5 c5 bb4 a4 c4 eb4 f4",
  C: "gb4@2 ab4@2 gb4@2 f4@3 eb4@3 d4@3 f4@3 ab4@3 c5@3", D: "g4 f4 ~@4 e4 d4", E: "eb4 a3 bb3 db4 f4 ab4 c5 eb5",
  F: "db5 e4 f4 c5 b4 g4 eb4 db4", G: "c4 eb4 g4 bb4 ab4 ~ eb4 f4", H: "gb4 bb4 db5 f5 e5 c5 ~@2",
  I: "eb5@5 db5 c5 bb4", J: "eb5 db5 ~@2 gb5 e5 eb5 db5", K: "c5!2 db5 d5 eb5 db5 c5 bb4",
  L: "a4@3 c5@3 eb5@3 f5@3 gb5@2 ab5@2 gb5@2 f5@3 eb5@3",
  M: "[d5@3 c5@3 b4@3 a4@3 bb4@3 ab4@3 ~@3 d4@2 ~ g4@2 gb4@2 f4@2 e4@3 ~@15, ~@23 f4@3 ~@22]/2",
  N: "eb5 db5 f4 ab4 c5 bb4 ab4 f4", O: "g4@3 bb4@3 db5@3 eb5@3 e5@2 gb5@2 e5@2 eb5@3 db5@3",
  P: "c5@3 ~@9 g5@2 ab5@2 g5@2 f5@3 e5@3", Q: "g4 f4 ~@4 g4 f4", R: "e4 f4 g4 ab4 bb4 ab4 g4 f4",
  S: "db5@2 eb5@2 db5@2 c5@3 bb4@3 ab4@2 bb4@2 ab4@2 g4@3 e4@3", T: "f4 ~@3", U: "~@7 b4",
  V: "c5 b4 c5 db5 d5 db5 d5 eb5", W: "e5 eb5 e5 eb5 d5 db5 c5 bb4",
  X: "ab4@2 ~@2 ab4@2 g4@3 ab4@3 bb4@3 ab4@3 g4@3 f4@3, ~ bb4@5 ~@6", Y: "b3 d4 f4 ab4 b4 g5 f5 e5",
  Z: "eb5 db5 c5 bb4 a4 gb4 f4 eb4", AA: "db4 f4 ab4 c5 bb4 ab4 g4 eb4", AB: "ab4 ~@7",
})).s("gm_vibraphone").gain(0.3).pan(0.7)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@5 A ~@3 B ~@5 C ~@5 A ~@3 B ~@5 C ~@63>".pickRestart({
  A: "~ x ~@4", B: "~@5 x!2 ~@5", C: "~@2 x",
})).gain(0.2)

// drums · clap
const clap = s("cp").struct(`<
  ~@2 A B ~ C ~ D E F D B F@2 G B ~@2 A B ~ C ~ D E F D B F@2 G B ~@2 A B ~ C ~ D E F D B F@2 G B ~@2 A B ~ C ~ D E F D
  B F@2 G B ~@18 A B ~ C ~ D E F D B F@2 ~
>`.pickRestart({
  A: "~@5 x!2 ~@5", B: "~@9 x ~ x", C: "~@8 x!2 ~ x", D: "~@5 x ~@6", E: "~ x", F: "~@2 x", G: "~@11 x",
})).gain(0.4)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  A@2 B A B C A D@2 A E@2 B A F G A@2 B A B C A D@2 A E@2 B A F G A@2 B A B C A D H A E@2 A@2 F G A@2 B A B C A D H A
  E@2 A@2 F G A@2 B A B C A D H A E@2 A@2 F G A@2 B A B C A D@2 A E@2 B A ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@3 x ~@4 x!2 ~@2", C: "x!2 ~ x", D: "~@2 x!2 ~ x!2 ~@2 x ~@2", E: "~@3 x ~@4 x ~@2 x",
  F: "~@3 x ~@4 x ~@3", G: "~@2 x ~@6 x ~ x", H: "~@2 x!2 ~ x ~@3 x ~@2",
})).gain(0.45)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@8 A ~@2 B ~@2 B C ~@8 A ~@2 B ~@2 B C ~@8 A ~@2 B ~@2 B C ~@8 A ~@2 B ~@2 B C ~@8 A ~@2 B ~@2 B C ~@8 A ~@2 B ~@3
>`.pickRestart({
  A: "~ x!2 ~", B: "~@3 x", C: "~ x ~@2",
})).gain(0.35)

// drums · china
const china = s("cr").struct("<~@40 A ~@2 B C ~@11 A ~@2 B C ~@33 D>".pickRestart({
  A: "~ x", B: "~@11 x", C: "~@2 x", D: "x",
})).gain(0.5)

// drums · ride
const ride = s("rd").struct(`<
  ~@32 A@3 B C D B A E B D F A F B G A@3 B C D B A E B D F A F B G ~@16 A@3 B C D B A E B D F A F H
>`.pickRestart({
  A: "x ~@2 x ~ x!2 ~@2 x ~@2", B: "x ~ x!2 ~@2 x ~@2 x ~ x", C: "x ~@2 x ~@2 x ~@2 x ~ x",
  D: "x ~@2 x ~@2 x ~ x!2 ~@2", E: "x ~@2 x ~ x!2 ~@2 x ~ x", F: "x ~ x!2 ~@2 x ~@2 x ~@2",
  G: "x ~@2 x ~ x!2 ~ x!2 ~@2", H: "x!2 ~@4",
})).gain(0.4)

stack(piano, piano_2, bass, vibraphone, kick, kick_soft, clap, pedal_hat, open_hat, china, ride)

More by Parker Charlie