Strudelify

This Masquerade

George Benson

KeyA♭ majorTempo91 bpm
0:00/0:00
// This Masquerade — George Benson
// 91 bpm, 4/4, key Ab major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 226 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(91/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 · acoustic bass · "Acou Bass"
const bass = note(`<
  A B C D A E F B G H F I A J K L M N H O P Q M R S T U V W X Y Z AA AB AC AD AE AB AF AG F H@2 AH M Y AI AC M H G E Y
  AJ G E G O N D G AH G@3 AH M P AI AK F H M O P Q A AL AM AN AO@2 AP T U V AQ AR AK AS AT AU AF AV G N M O H Y AW AK A
  N G O U AJ M D G AH M AH H AH H N G E A J AX AC M G M D AY AZ F R S BA BB BC W BD BE BF AA BG BH BI BJ BK AC BL F G A
  D A Y K AK H N A E AY AJ M O H D A E N AH F G M D H J K AF H@2 M I U Q M AL W BD BE BF BM BA BE BF AQ AR AC AD AT AR
  AC AV A N G O G U BN BO G M N I AY AJ H I M O N O A E BP BQ
>`.pickRestart({
  A: "f2@4 c3@4 f2@3 c3@3 c2@2", B: "bb1@3 bb2 ~@3 f2 bb1@3 bb2 ~@2 f2!2", C: "f1@3 f2 ~@3 c2 f1@3 f2 ~@3 c2",
  D: "bb1@4 f2@4 bb1@3 f2@3 f1@2", E: "bb1@4 f1@4 bb1@3 f1@3 ~ bb1", F: "f2@3 f2 ~@3 c2 f2@3 f2@3 ~ c3",
  G: "f2 c2 f2 c2", H: "f2@4 c2@4 f2@3 c2@3 ~ f2", I: "bb1@3 bb1 f2 ~ f2@2 bb1@3 bb1 bb2 f2@2 bb1",
  J: "db2@6 ab2@2 db2@3 ab2@3 ~ ab2", K: "g2@4 eb2@4 g2@3 eb2@3 ~ g2", L: "c2@3 c2 g2 ~ g2@2 c2@3 c2 c3 g2@2 c2",
  M: "f1@4 c2@4 f2@4 c2@2 ~ c2", N: "f2@6 c2@2 f2@3 c2@3 ~ c2", O: "bb1@6 f2@2 bb1@3 f2@3 ~ f2", P: "db2 ab1 db2 ab1",
  Q: "c2@4 ab1@4 c2@3 ab1@3 ~ c2", R: "f2 c2 e2 a1", S: "eb2@3 eb2 ~@3 bb1 eb2@3 eb2@3 ~ bb2",
  T: "ab2@4 eb3@4 ab2@3 eb3@3 eb2@2", U: "db2@4 ab2@4 db2@3 ab2@3 ab1@2",
  V: "db2@2 ab2@2 db2 ~ ab2 db2, ~@11 db2@2 ~@3", W: "eb2 bb1 eb2 bb1", X: "ab2@6 eb2@2 ab2@3 eb2@3 ~ eb2",
  Y: "db2@4 ab1@4 db2@3 ab1@3 ~ db2", Z: "db2@4 ab1@4 db2@3 ab1@3 db2 ~", AA: "d2 a1 d2 a1", AB: "g2 d2 g2!2",
  AC: "c2@4 g2@4 c2@3 g2@3 g1@2", AD: "c2@2 g2@2 c2 ~ g2 c2, ~@11 c2@2 ~@3", AE: "g2@6 d2@2 g2@3 d2@3 ~ d2",
  AF: "c2@6 g2@2 c2@3 g2@3 ~ g2", AG: "c2!2 eb2 bb1", AH: "bb1 f1 bb1 f1", AI: "g1@4 eb2@4 g2@4 eb2@2 ~ eb2",
  AJ: "c2@4 ab2@4 c2@3 ab2@3 ab1@2", AK: "c2@4 g1@4 c2@3 g1@3 ~ c2", AL: "f2!2 e2 a1",
  AM: "eb2@4 bb2@4 eb2@3 bb2@3 bb1@2", AN: "ab1@4 eb2@4 ab2@4 eb2@2 ~ eb2", AO: "db2 ab2 db3 ab2",
  AP: "eb1@4 bb1@4 eb2@4 bb1@2 ~ bb1", AQ: "d2@6 a2@2 d2@3 a2@3 ~ a2", AR: "g2 d2 g2 eb2",
  AS: "c2@4 g1@4 c2@3 g1@3 c2 ~", AT: "g2 d2 g2 d2", AU: "g2@4 d2@3 d3 g2@4 eb2@4",
  AV: "c2@4 g2@4 eb2 db2 ~ bb1 g1 f1 ~ eb1", AW: "g2@3 g2 ~@3 eb2 g2@3 g2@3 ~ eb3", AX: "g2@6 eb2@2 g2@3 eb2@3 ~ eb2",
  AY: "db2@6 ab1@2 db2@3 ab1@3 ~ ab1", AZ: "c2@6 ab2@2 c2@3 ab2@3 ~ ab2", BA: "ab2@3 ab2 ~@3 eb2 ab2@3 ab2@3 ~ eb3",
  BB: "db2@3 db2 ab2@4 db3@4 ab2@2 ~ ab2", BC: "db2@3 ~ ab2@2 ~ ab2 db3@4 ab2@2 ~ ab2", BD: "ab2 eb2 ab2 eb2",
  BE: "db2@4 ab2@3 ab2 db2@4 ab2@4", BF: "db2@4 ab2@2 ~ ab2 db2@4 ab2@4", BG: "g2@4 d2@3 d3 g2@4 g2@4",
  BH: "c2@4 g2@3 g2 c2@4 g2@4", BI: "c2@4 g2@2 ~ g2 c2@4 g2@4", BJ: "g1@4 d2@4 g2@4 d2@2 ~ d2",
  BK: "g2@4 g2@4 g2@4 eb2@3 eb3", BL: "c2 g1 eb2 bb1", BM: "eb2@4 bb1@4 eb2@3 bb1@3 ~ eb2", BN: "g2 eb2 g2 eb2",
  BO: "c2 g1 c2 g1", BP: "f2@4 c2@4 f2@3 c2 ~ c2 ~ c2", BQ: "f2@3 ~@13",
})).s("gm_acoustic_bass").gain(0.11)

// chords · piano · "Acou Piano"
const piano = note(`<
  A@3 B C D E@2 F@2 G@2 H@4 I J K@2 L@2 M@3 N O P Q@2 R S T@3 U V W@2 X@3 E@2 C Y@3 Z@2 AA D AB@2 AC@2 AD AE@3 AF@4 AG@2
  AH@3 AI AJ@2 G@2 AK@2 AL AM AN AO@2 S AP@2 O AQ@3 AR U AS AT AU@2 AV AW AX D AY@4 AZ@2 BA@2 BB@4 AL BC@3 AL B BD BE@2
  D C BF BG@2 I BH@3 BI@3 BJ@3 O P BK@3 P BL@2 AR BM@2 BN BO@2 I BP BQ@2 AD BR BS@4 BT@2 BU BV AX D BW@4 AL D I BX@7
  BY@2 AL BZ@3 AA CA CB@2 R S CC@2 O P CD CE@2 BM@2 CF CG CH I J AL B CI@2 CJ@2 I CK@5 CL CM@2 D AL CN@2 CO@2 CP
>`.pickRestart({
  A: "[[eb3,ab3,c4,g4]@15 [ab3,c4,d4,g4]@16 [ab3,c4,eb4,f4]@17]/3", B: "[ab3,c4,d4,g4]", C: "[ab3,eb4,f4,c5]",
  D: "[ab3,d4,g4,c5]", E: "[[ab3,eb4,g4,c5]@15 [ab3,c4,d4,g4]@17]/2", F: "[[ab3,c4,f4]@15 [ab3,c4,e4,g4]@17]/2",
  G: "[[ab3,eb4,g4,c5]@15 [ab3,d4,g4,c5]@17]/2", // Abmaj7
  H: "[[ab3,eb4,g4,c5]@15 [b3,eb4,f4,ab4]@16 [bb3,f4,g4,eb5]@16 [bb3,e4,ab4,db5]@17]/4", I: "[ab3,c4,f4]",
  J: "[ab3,e4,g4,c5]", K: "[[ab3,eb4,f4,c5]@15 [ab3,c4,d4,g4]@17]/2",
  L: "[[b3,f4,g4,bb4,eb5]@15 [bb3,e4,ab4,db5]@17]/2", // Eb Bbm7b5
  M: "[[ab3,c4,eb4,g4]@15 [ab3,eb4,f4,c5]@9 [g3,b3,d4,gb4]@4 [g3,db4,gb4,b4]@3 [gb3,bb3,db4,f4]@17]/3", // Abmaj7 Fm7 Gmaj7 Gbmaj7
  N: "[gb3,c4,f4,a4]", O: "[f3,ab3,c4,eb4]@12 ~ [f3,ab3,c4,eb4] ~@2", P: "[f3,ab3,c4,eb4]@15 ~",
  Q: "[[gb3,bb3,db4,eb4]@15 [gb3,a3,c4,f4]@17]/2", R: "[f3,c4,eb4,ab4]@12 ~ [f3,c4,eb4,ab4] ~@2",
  S: "[f3,c4,eb4,ab4]@15 ~", // Fm7
  T: "[[f3,c4,d4,a4]@15 [f3,b3,e4,a4]@8 [f3,b3,eb4,ab4]@8 [e3,b3,d4,g4]@13 ~ [e3,b3,d4,g4] ~@2]/3", // Dm7 Fmaj7 Fm7b5 Em7
  U: "[e3,b3,d4,g4]@15 ~", V: "[f3,bb3,d4,g4]", W: "[[f3,b3,e4,a4]@7 [f3,b3,eb4,g4]@8 [f3,a3,bb3,d4]@17]/2",
  X: "[[f3,a3,bb3,d4]@8 [a3,c4,db4,f4]@7 [ab3,f4,c5]@16 [ab3,e4,g4,c5]@17]/3", // Bbmaj7 F Fm C
  Y: "[[f3,g3,bb3,b3,eb4]@15 [f3,g3,bb3,eb4]@16 [e3,ab3,bb3,db4]@17]/3", Z: "[[f3,ab3,c4]@15 [e3,ab3,c4,g4]@17]/2",
  AA: "[eb3,ab3,c4,f4]", AB: "[[b3,eb4,f4,bb4]@15 [bb3,e4,ab4,db5]@17]/2",
  AC: "[[ab3,eb4,f4,c5]@15 [ab3,d4,g4,c5]@17]/2", AD: "[ab3,c4,eb4,f4]",
  AE: "[[ab3,c4,d4,g4]@15 [ab3,c4,eb4,g4]@16 [ab3,c4,d4,g4]@17]/3", // Abmaj7
  AF: "[[ab3,eb4,f4,c5]@15 [ab3,d4,g4,c5]@16 [ab3,f4,c5]@16 [ab3,e4,g4,c5]@17]/4", // Fm7 Abmaj7 Fm C
  AG: "[[ab3,c4,eb4,g4]@15 [ab3,d4,g4,c5]@17]/2", AH: "[[ab3,eb4,g4,c5]@15 [b3,f4,g4,bb4,eb5]@16 [bb3,eb4,f4,g4]@17]/3",
  AI: "[bb3,db4,e4,ab4]", AJ: "[[ab3,c4,f4]@15 [ab3,e4,g4,c5]@17]/2", AK: "[[b3,f4,ab4,eb5]@15 [bb3,e4,ab4,db5]@17]/2",
  AL: "[ab3,eb4,g4,c5]", AM: "[ab3,eb4,f4,c5]@2 [g3,d4,e4,b4] [g3,db4,e4,b4]", AN: "[gb3,db4,eb4,bb4]",
  AO: "[[gb3,a3,c4,f4]@15 [f3,c4,eb4,ab4]@13 ~ [f3,c4,eb4,ab4] ~@2]/2", // F Fm7
  AP: "[[gb3,db4,eb4,bb4]@15 [gb3,c4,f4,a4]@17]/2", // Ebm7 F
  AQ: "[[f3,ab3,c4,eb4]@15 [f3,c4,d4,a4]@16 [f3,b3,e4,a4]@8 [f3,g3,b3,eb4]@9]/3", // Fm7 Dm7 Fmaj7 Ebaug
  AR: "[e3,b3,d4,g4]@12 ~ [e3,b3,d4,g4] ~@2", AS: "[f3,g3,bb3,d4]", AT: "[f3,a3,b3,e4]@7 [f3,b3,eb4,ab4]@9",
  AU: "[[f3,bb3,d4,a4]@15 [f3,bb3,d4,g4]@8 [a3,c4,db4,f4]@9]/2", AV: "[f3,ab3,c4,f4]", AW: "[e3,g3,ab3,c4]",
  AX: "[eb3,g3,ab3,c4]", AY: "[[ab3,c4,eb4,f4]@15 [f3,g3,bb3,b3,eb4]@16 [f3,bb3,eb4,g4]@16 [e3,bb3,db4,ab4]@17]/4",
  AZ: "[[f3,ab3,c4,f4]@15 [e3,g3,ab3,c4]@17]/2", BA: "[[eb3,f3,ab3,c4]@15 [ab3,c4,d4,g4]@17]/2",
  BB: "[[b3,eb4,f4,bb4]@15 [bb3,db4,e4,ab4]@16 [ab3,c4,eb4,g4]@16 [ab3,d4,g4,c5]@17]/4", // Bmaj7 Bbm7b5 Abmaj7
  BC: "[[ab3,c4,d4,g4]@15 [ab3,eb4,g4,c5]@16 [ab3,d4,g4,c5]@17]/3", BD: "[ab3,f4,c5]",
  BE: "[[ab3,e4,g4,c5]@15 [ab3,eb4,f4,c5]@17]/2", BF: "[b3,f4,ab4,eb5]",
  BG: "[[bb3,eb4,f4,g4]@15 [bb3,e4,ab4,db5]@17]/2", BH: "[[ab3,e4,g4,c5]@15 [ab3,c4,eb4,g4]@16 [ab3,c4,d4,g4]@17]/3",
  BI: "[[b3,f4,ab4,db5]@15 [bb3,e4,ab4,d5]@16 [ab3,eb4,g4,c5]@17]/3", // Db7 Bb7 Abmaj7
  BJ: "[[ab3,eb4,f4,c5]@8 [g3,d4,gb4,b4]@4 [g3,db4,gb4,b4]@3 [gb3,bb3,db4,eb4]@16 [gb3,a3,c4,f4]@17]/3", // Fm7 Gmaj7 Ebm7 F
  BK: "[[gb3,bb3,db4,eb4]@15 [gb3,c4,f4,a4]@16 [f3,ab3,c4,eb4]@13 ~ [f3,ab3,c4,eb4] ~@2]/3", // Ebm7 F Fm7
  BL: "[[f3,a3,c4,d4]@15 [f3,b3,e4,a4]@8 [f3,b3,eb4,ab4]@9]/2", BM: "[[e3,b3,d4,g4]@15 [f3,bb3,d4,g4]@17]/2",
  BN: "[f3,b3,e4,a4]@7 [f3,b3,eb4,ab4]@9", BO: "[[f3,g3,bb3,d4]@15 [f3,bb3,d4,g4]@8 [a3,c4,db4,f4]@9]/2",
  BP: "[ab3,c4,e4,g4]", BQ: "[[ab3,c4,eb4,f4]@15 [ab3,c4,d4,g4]@17]/2", BR: "[f3,bb3,b3,eb4]",
  BS: "[[f3,bb3,eb4,g4]@15 [e3,bb3,eb4,g4]@16 [f3,ab3,c4,f4]@16 [e3,ab3,c4,g4]@17]/4", // Eb Fm C
  BT: "[[eb3,f3,ab3,c4]@15 [ab3,d4,g4,c5]@17]/2", BU: "[f3,b3,eb4,bb4]", BV: "[e3,bb3,db4,ab4]",
  BW: "[[ab3,eb4,f4,c5]@15 [ab3,d4,g4,c5]@16 [ab3,eb4,g4,c5]@16 [ab3,c4,d4,g4]@17]/4", // Fm7 Abmaj7
  BX: "[[ab3,c4,e4,g4]@15 [ab3,eb4,g4,c5]@16 [ab3,d4,g4,c5]@16 [ab3,eb4,g4,c5]@16 [b3,f4,ab4,eb5]@16 [bb3,f4,g4,eb5]@16 [bb3,e4,ab4,db5]@17]/7", // C Abmaj7 Fm7b5 Eb Bbm7b5
  BY: "[[ab3,f4,c5]@15 [ab3,c4,e4,g4]@17]/2", BZ: "[[ab3,c4,d4,g4]@15 [f3,b3,db4,ab4]@16 [e3,ab3,bb3,db4]@17]/3",
  CA: "[eb3,ab3,c4,f4]@2 [g3,b3,d4,e4] [g3,b3,db4,gb4]", CB: "[[gb3,db4,eb4,bb4]@15 [gb3,a3,c4,f4]@17]/2",
  CC: "[[gb3,bb3,db4,f4]@15 [gb3,c4,f4,a4]@17]/2", CD: "[f3,a3,c4,e4]",
  CE: "[[f3,a3,b3,e4]@7 [f3,b3,eb4,ab4]@8 [e3,b3,d4,g4]@13 ~ [e3,b3,d4,g4] ~@2]/2", // Fmaj7 Fm7b5 Em7
  CF: "[f3,b3,e4,a4]@7 [f3,ab3,b3,eb4]@9", CG: "[f3,bb3,d4,a4]", CH: "[f3,g3,bb3,d4]@7 [a3,db4,f4,c5]@9",
  CI: "[[ab3,c4,eb4,g4]@15 [b3,f4,bb4,eb5,g5]@17]/2", CJ: "[[bb3,eb4,f4,g4]@15 [bb3,db4,e4,ab4]@17]/2",
  CK: "[[ab3,e4,g4,c5]@15 [ab3,eb4,g4,c5]@16 [ab3,d4,g4,c5]@16 [f3,g3,b3,eb4,bb4]@16 [e3,bb3,d4,ab4]@17]/5", // C Abmaj7 Eb E7
  CL: "[eb3,ab3,c4,g4]", CM: "[[ab3,d4,g4,c5]@15 [ab3,eb4,g4,c5]@17]/2", CN: "[[ab3,c4,d4,g4]@15 [ab3,c4,eb4,g4]@17]/2",
  CO: "[[ab3,c4,d4,g4]@15 [ab3,eb4,f4,c5]@11 ~ [ab3,eb4,f4,c5] ~ [ab3,eb4,f4,c5] ~ [ab3,eb4,f4,c5]]/2", // Abmaj7 Fm7
  CP: "[ab3,eb4,f4,c5] ~@15", // Fm7
})).s("gm_piano").gain(0.3)

// other · ocarina
const ocarina = note("<~@8 A@4 B@3 ~ C@8 D@3 ~ E@3 F G@8 A@4 B@3 ~ H@7 ~@171>".pickRestart({
  A: "[~@4 f4@2 ~@2 ab4@2 ~ bb4@4 c5@4 g5@4 f5@5 c5@2 ~@2 ab4@6 ~@2 c5@4 ab4@2 ~ f4@10 ~@7, ~@7 g4@2 ~@22 bb4@2 ~@6 bb4@2 ~@23]/4",
  B: "[~@7 ab4 ab4@2 ~@2 ab4@2 ~ eb5@13 eb5@2 ~ c5@10 ~@7, ~@11 g4@2 ~@35]/3",
  C: "[~@4 f4@2 ~@2 ab4@2 ~ bb4@4 c5@4 g5@4 f5@4 ~ bb4@2 ~ ab4@5 bb4@2 ~ c5@4 ab4@4 f4@10 ~@3 c4@2 ~ f4@10 ~@3 bb4@2 ~ b4@4 bb4@9 ab4@2 ~ f4@18 ~@15, ~@3 c4@2 ~@2 g4@2 ~@18 b4@2 ~@46 ab4@2 ~@18 f5@2 ~@31]/8",
  D: "[~@4 db5@2 ~@2 f5@4 gb5@2 ~ f5@5 eb5@2 ~ db5@5 eb5@2 ~ f5@4 ~ f4@2 ~ ab4@9, ~@7 eb5@2 ~@26 ab4@2 ~@11]/3",
  E: "[~@4 db5@2 ~@2 f5@4 gb5@2 ~ f5@4 eb5@5 db5@4 ab5@2 ~@2 f5@16, ~@3 ab4@2 ~@2 eb5@2 ~@22 ab5@2 ~@15]/3",
  F: "~@15 f5",
  G: "[d5@4 e5@2 ~ f5@5 g5@2 ~ ab5@4 g5@6 ~@3 f5@2 ~ g5@5 g4@2 ~ g4@4 ~ e4@2 ~ g4@10 ~@3 g4@2 ~ bb4@10 ~@3 g4@2 ~ b4@10 ~@3 g4@2 ~ c5@5 d5@2 ~ bb4@5 c5@2 ~ g4@6 ~@11, ~@27 g5@2 ~@14 g4@2 ~@18 f5@2 ~@63]/8",
  H: "[~@4 f4@2 ~@2 ab4@2 ~ bb4@4 c5@4 g5@4 f5@4 ~ bb4@2 ~ ab4@5 bb4@2 ~ c5@4 ab4@4 f4@10 ~@3 c4@2 ~ f4@10 ~@3 bb4@2 ~ b4@4 bb4@9 ab4@2 ~ f4@2 ~@15, ~@3 c4@2 ~@2 g4@2 ~@18 b4@2 ~@46 ab4@2 ~@35]/7",
})).s("gm_ocarina").gain(0.19)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  A B A B@4 C ~@3 A@3 ~@2 A@2 ~@2 A ~ A ~ A ~@3 A ~ A ~@3 A ~ A ~@2 D A ~@2 A@2 ~@8 A ~@3 A ~ A ~ E ~ A ~@6 A ~ A@2 ~@3
  A ~@2 A ~@7 A ~@6 A@2 ~ A ~ A ~ A ~ A@2 ~@2 A ~@6 E A@3 ~ A@2 ~@7 A ~ A ~@2 A@4 ~@4 A@2 ~ A ~ E ~@4 A@3 ~ A ~@2 A@2
  ~@2 A ~ A@2 ~ A E ~@3 A ~ A@2 ~@2 A ~@2 A ~@3 A@3 ~ A ~ A ~@2 A ~@5 E A ~@3 A ~@2 A@2 ~@4 A ~ A@3 ~ A@2 D ~@2
>`.pickRestart({
  A: "~@15 x", B: "~@6 x ~@2 x ~@4 x!2", C: "~@11 x ~ x!2 ~", D: "~@7 x ~ x ~@6", E: "~@10 x ~@2 x ~@2",
})).gain(0.31)

// drums · hihat
const hihat = s("hh").struct("<A@8 B A@30 C A@22 B A@31 B A@128 C A D>".pickRestart({
  A: "x!4 ~ x!2 ~ x!4 ~ x!2 ~", B: "~ x!3 ~ x!2 ~ x!4 ~ x!2 ~", C: "x!4 ~ x!2 ~ x!7 ~", D: "x",
})).gain(0.2)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<[~@7 x ~@8]!225 ~>").gain(0.1)

// drums · open hat
const open_hat = s("oh").struct("<[~@15 x]!225 ~>").gain(0.31)

// drums · crash
const crash = s("cr").struct("<~@8 x ~@53 x ~@31 x ~@130 x>").gain(0.26)

// drums · congas
const congas = s("conga:13").struct("<~@8 [~@3 x ~@7 x ~@4]!217 ~>").gain(0.66)

// drums · congas
const congas_2 = s("conga:18").struct("<~@8 [~ x!2 ~@2 x!3 ~ x!2 ~@2 x!3]!217 ~>").gain(0.66)

// drums · congas · soft notes
const congas_soft = s("conga:18").struct("<~@8 [x!4]!217 x>").gain(0.33)

// drums · ht
const ht = s("ht").struct(`<
  ~@10 A ~@15 A ~@4 B ~@7 C ~@2 A ~@41 A ~@7 A D ~@32 A ~@45 A ~@7 A ~@15 A ~@7 A ~@11 A ~@6 C E F
>`.pickRestart({
  A: "x ~ x ~ x ~@2 x ~ x ~ x!2 ~ x!2", B: "x ~ x ~ x ~@2 x ~ x ~ x!4 ~", C: "~@12 x!3 ~", D: "~@7 x ~ x ~ x!4 ~",
  E: "~@11 x ~ x ~ x", F: "x",
})).gain(0.26)

stack(bass, piano, ocarina, snare, snare_soft, hihat, hihat_soft, open_hat, crash, congas, congas_2, congas_soft, ht)

More by George Benson