Strudelify

Garnerama

Claude Bolling

KeyE♭ majorTempo46 bpm
0:00/0:00
// Garnerama — Claude Bolling
// 46 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 73 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(46/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 · "A.PIANO 2"
const piano = note(`<
  A B C D E F G H I J C K E L G M N ~@8 O P Q R S T U V W P X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR
  AS AT AU AV AW AH AX AY AZ BA BB BC BD BE ~@3
>`.pickRestart({
  A: "[c3,eb3,g3,bb3]@7 ~ [b2,d3,gb3,a3]@7 ~ [bb2,db3,f3,ab3]@7 ~ [a2,d3,e3,g3]@7 ~", // Cm7 Bm7 Bbm7 Asus4
  B: "[ab2,c3,eb3,g3]@7 ~ [ab3,c4,eb4]@7 ~ c2@7 ~ [ab3,c4,eb4]@7 ~", // Abmaj7 Ab
  C: "~@8 [e3,ab3,b3,eb4]@7 ~ [ab3,b3,eb4,gb4]@7 ~ [e3,ab3,b3,eb4]@7 ~, e2@31 ~", // Emaj7 Abm7 Emaj7
  D: "~@8 [f3,ab3,b3,eb4]@7 ~ [b3,eb4]@7 ~ [b3,eb4]@7 ~, [db2,ab2]@23 ~@9", // Fm7b5 B Db5
  E: "~@8 [c3,e3,g3,b3]@7 ~ [e3,g3,b3,d4]@7 ~ [c3,e3,g3,b3]@7 ~, [c2,g2]@31 ~", // Cmaj7 Em7 Cmaj7 C5
  F: "gb2@7 ~ [gb3,a3,c4,e4]@7 ~@9 gb2@7 ~", G: "f2@7 ~ [eb3,g3,a3]@7 ~ [eb3,g3,a3,d4]@7 ~ [eb3,g3,a3,c4]@7 ~",
  H: "bb1@7 ~ [ab3,bb3,d4]@7 ~ bb1@7 ~ [ab3,b3,d4]@7 ~", // Bb7 Abdim
  I: "eb2@7 ~ [g3,bb3,eb4]@7 ~ [bb2,ab3,db4]@7 ~ [eb3,g3,db4]@3 ~ [a2,db3,g3]@3 ~", // Eb Bbm7 Eb7 A7
  J: "[ab2,c3,eb3,g3]@7 ~ [ab3,c4,eb4,g4]@7 ~ ab1@7 ~ [ab3,c4,eb4,g4]@7 ~", // Abmaj7
  K: "~@8 [f3,ab3,b3,eb4]@7 ~ [b3,eb4,d6,g6]@7 ~ [b3,eb4,d6,f6]@7 ~, [db2,ab2]@31 ~", // Fm7b5 G Bdim Db5
  L: "gb2@7 ~ [gb3,a3,c4,e4]@7 ~@9 g2@7 ~", M: "d2@7 ~ [ab3,bb3,d4]@7 ~ bb1@7 ~ [ab3,bb3,d4]@7 ~",
  N: "eb2@7 ~ [g3,bb3,eb4]@7 ~ g2@15 ~", O: "~ [ab2,eb3,c4]@7 ~ [ab3,c4,eb4,g4]@7 ~ ab1@7 ~ [ab3,c4,eb4,g4]@7",
  P: "~ [e2,b2]@7 ~ [e3,ab3,b3,eb4]@7 ~ [ab3,b3,eb4,gb4]@7 ~ [e3,ab3,b3,eb4]@7", // E5 Emaj7 Abm7 Emaj7
  Q: "~@9 [f3,ab3,b3,eb4]@7 ~ [b3,eb4]@7 ~ [b3,eb4]@7, ~ [db2,ab2]@23 ~@8", // Fm7b5 B Db5
  R: "~@9 [c3,e3,g3,b3]@7 ~ [e3,g3,b3,d4]@7 ~ [c3,e3,g3,b3]@7, ~ [c2,g2]@31", S: "~ gb2@7 ~ [gb3,a3,c4,e4]@7 ~@9 gb2@7",
  T: "~ f2@7 ~ [eb3,g3,a3]@7 ~ [eb3,g3,a3,d4]@7 ~ [eb3,g3,a3,c4]@7", // Am7b5 Ebmaj7 Am7b5
  U: "~ bb1@7 ~ [ab3,bb3,d4]@7 ~ bb1@7 ~ [ab3,b3,d4]@7", // Bb7 Abdim
  V: "~ eb2@3 ~ bb2@3 ~ eb3@3 ~ g3@3 ~ [c3,eb3,g3,bb3]@3 ~ [b2,d3,gb3,a3]@3 ~ [bb2,db3,f3,ab3]@3 ~ [a2,db3,e3,g3]@3", // Cm7 Bm7 Bbm7 A7
  W: "~ [ab2,c3,eb3,g3]@7 ~ [ab3,c4,eb4,g4]@7 ~ ab1@7 ~ [ab3,c4,eb4,g4]@7", // Abmaj7
  X: "~ [db2,ab2]@7 ~ [f3,ab3,b3,eb4]@7 ~ [b3,eb4]@7 ~ [b3,eb4]@7", // Db5 Fm7b5 B
  Y: "~ [c2,g2]@7 ~ [c3,e3,g3,b3]@7 ~ [e3,g3,b3,d4]@7 ~ [c3,e3,g3,b3]@7", // C5 Cmaj7 Em7 Cmaj7
  Z: "~ gb2@7 ~ [gb3,a3,c4,e4]@7 ~ gb2@7 ~ [gb3,a3,c4,e4]@7", AA: "~ f2@7 ~ [a3,c4,eb4,g4]@7 ~ f2@7 ~ [a3,c4,eb4,g4]@7",
  AB: "~ bb1@7 ~ [bb2,ab3]@7 ~ [ab3,bb3]@7 ~@8", // Bb7 Absus2
  AC: "~ eb2@7 ~ [g3,bb3,eb4]@7 ~@2 [bb2,ab3,db4]@7 [eb3,g3,db4]@3 ~@2 [a2,g3]@2, ~@29 db3@3", // Eb Bbm7 Eb7 A7
  AD: "~ [ab2,c3,eb3,g3]@7 ~@2 [ab3,eb4,g4]@7 ab1@7 ~ [ab3,c4,eb4,g4]@7, ~@9 c4@7 ~@16", // Abmaj7
  AE: "~@2 e2@7 ~ [e3,ab3,b3,eb4]@7 ~ [ab3,eb4,gb4]@7 ~ [e3,eb4]@6, ~ b2@7 ~@9 b3@7 ~ [ab3,b3]@7", // Emaj7 Ab7 Emaj7 Abm
  AF: "~@2 db2@7 ~ [f3,ab3,b3,eb4]@7 ~@15, ~ ab2@7 ~@24", // Fm7b5
  AG: "~ [c2,g2]@7 ~@2 [g3,b3,c4,e4]@7 ~ [g3,a3,c4,e4]@7 ~ [g3,b3,c4,e4]@6", // C5 Cmaj7 Am7 Cmaj7
  AH: "~@2 [gb2,e3,a3]@7 ~ [gb3,a3,c4,e4]@7 ~ [gb2,e3,a3]@7 ~ [gb3,a3,c4,e4]@6", // Gbm7 Gbm7b5 Gbm7 Gbm7b5
  AI: "~@2 [f2,c3,a3]@7 ~ [a3,c4,eb4,g4]@7 ~ [f2,c3,a3]@7 ~ [a3,c4,eb4,g4]@6", // F Am7b5 F Am7b5
  AJ: "~@2 bb1@7 ~ [ab3,bb3,d4,g4]@7 ~ bb1@7 ~ [ab3,bb3,d4,g4]@6", // Gm
  AK: "~@2 eb2 ~ bb2 ~ c3 ~ eb3 ~ f3 ~ g3 ~ bb3 ~ c4 ~ [bb2,ab3,db4]@7 ~ [eb3,g3,db4]@6", // Bbm7 Eb7
  AL: "~@2 [ab2,gb3]@7 ~ ab1@7 ~ [ab2,eb3]@7 ~ ab1@6", // Ab7 Ab5
  AM: "~@2 db2@7 ~ [db3,f3,b3]@7 ~ [gb2,db3]@7 ~ [gb3,bb3,db4,f4]@6", AN: "~@2 [b2,a3]@7 ~ b1@7 ~ [b2,gb3]@7 ~ b1@6",
  AO: "~@2 e2@7 ~ [e3,ab3,d4]@7 ~ [a2,e3]@7 ~ [a3,db4,e4,ab4]@6", // E7 A5 Amaj7
  AP: "~@2 [d2,f3]@7 ~ [a3,c4,d4,f4]@7 ~ [g2,f3,b3]@7 ~ [g3,b3,d4,f4]@6", // Dm Dm7 G7
  AQ: "~@2 [e2,g3]@7 ~ [g3,b3,d4,e4]@7 ~ [a2,e3,g3,c4]@7 ~ [a3,c4,e4,g4]@6", // Em Em7 Am7
  AR: "~@2 [f2,c3,ab3]@7 ~ [f3,ab3,c4,eb4]@7 ~ [bb2,ab3,d4]@7 ~ bb1@6", // Fm Fm7 Bb7
  AS: "~@2 eb2@7 ~ [g3,bb3,eb4]@7 ~ [d2,f3]@7 ~ [g2,f3,b3]@6", // Eb Dm G7
  AT: "~@2 [ab2,c3,eb3,g3]@7 ~ [ab3,c4,eb4,g4]@7 ~ ab1@7 ~ [ab3,c4,eb4,g4]@6", // Abmaj7
  AU: "~@10 [e3,ab3,b3,eb4]@7 ~ [ab3,b3,eb4,gb4]@7 ~ [e3,ab3,b3,eb4]@6, ~ e2@15", // Emaj7 Abm7 Emaj7
  AV: "~@2 [db2,ab2]@7 ~ [f3,ab3,b3,eb4]@7 ~ [db2,ab2]@7 ~ [f3,ab3,b3,eb4]@6", // Db5 Fm7b5 Db5 Fm7b5
  AW: "~@2 [c2,g2]@7 ~ [c3,e3,g3,b3]@7 ~ [e3,g3,b3,d4]@7 ~ [c3,e3,g3,b3]@6", // C5 Cmaj7 Em7 Cmaj7
  AX: "~@2 [f2,eb3,a3]@7 ~ [a3,c4]@7 ~ [f2,eb3,a3]@7 ~ [a3,c4,eb4,g4]@6", // F7 Am F7 Am7b5
  AY: "~@2 [bb2,d3,ab3]@7 ~ [ab3,bb3,d4,g4]@7 ~ bb1@7 ~ [ab3,b3,d4,g4]@6", // Bb7 Gm G
  AZ: "~@2 [eb2,bb2,g3]@7 ~ [bb3,eb4,g4]@7 ~ [bb2,ab3]@7 ~ [eb3,g3]@6", // Eb Bb7 Eb
  BA: "~@2 [ab2,eb3]@7 ~ [ab3,c4,eb4,g4]@7 ~ bb1@7 ~ [ab3,b3,d4]@6", // Ab5 Abmaj7 Abdim
  BB: "~@2 [eb2,bb2,g3]@7 ~ [bb3,eb4,g4]@7 ~@9 [eb3,g3]@6, ~@18 [bb2,ab3]@7 ~@7, ~@19 db4@13", // Eb Bb7
  BC: "~@18 bb1@7 ~ [e2,b2] ~ [eb2,bb2] ~ [d2,a2] ~, ~ [ab2,eb3]@15", // E5 Eb5 D5 Ab5
  BD: "[db2,ab2] ~@2 [c2,g2,e3]@15 ~ [b1,gb2]@13, ~@2 bb3@15 ~ [eb3,bb3]@14", // Db5 C B5 Eb5
  BE: "~@3 [bb1,f2]@15 ~ [e2,b2,ab3]@13, ~@2 [eb3,ab3]@15 ~@15", // Bb5 E Ab5
})).s("gm_piano").gain(0.37).pan(0.4)

// chords · piano · "A.PIANO 2" · soft notes
const piano_soft = note("<~@17 A B C D E F G H ~@45 I J ~>".pickRestart({
  A: "ab2@15 ~ ab2@15 ~", B: "~ db2@15 ~ gb2@7 gb2@7 ~", C: "b2@15 ~@2 b2@15", D: "~ e2@15 ~ a2@7 ~ a2@7",
  E: "~ [d3,f3,a3,c4]@7 ~ [d3,f3,a3,c4]@7 ~ [g2,f3,b3]@7 ~ [g2,f3,b3]@7", // Dm7 G7
  F: "~ [e2,d3,g3]@7 ~ [e2,d3,g3]@7 ~ [a2,c3,e3,g3]@7 ~ [a2,c3,e3,g3]@7", // Em7 Am7
  G: "~ [f2,c3,ab3]@7 ~ [f3,ab3,c4,eb4]@7 ~ [bb2,ab3,d4]@7 ~ bb1@7", // Fm Fm7 Bb7
  H: "~ eb2@7 ~ [g3,bb3,eb4]@7 ~ [d2,f3]@7 ~ [g2,f3,b3]@7", // Eb Dm G7
  I: "~@3 g3@8 [eb3,g3,bb3,d4]@8 [eb3,bb3,d4]@7 ~@6, ~ bb2@15, ~@3 eb2@29, ~@19 g3@13", J: "~@27 [eb2,bb2,g3]@5",
})).s("gm_piano").gain(0.25).pan(0.4)

// bass · fretless bass · "ACOU BASS"
const bass = note(`<
  A B C D E F G H I J C D E F G H K B L M N O N P Q R S T U V W X Y R S T U V W X Z AA S AB AC AD AE AF AG AH AI AJ AK
  AL AK AM AN AH AO AP AQ AD AE AF AR AS AR AT AU AV AW@3
>`.pickRestart({
  A: "c3@7 ~ b2@7 ~ bb2@7 ~ a2@7 ~", B: "ab2@15 ~ ab2@15 ~", C: "e2@15 ~ e2@15 ~", D: "db2@15 ~ db2@15 ~",
  E: "c2@15 ~ c2@15 ~", F: "gb2@15 ~ gb2@15 ~", G: "f2@15 ~ f2@15 ~", H: "bb1@15 ~ bb1@15 ~",
  I: "eb2@15 ~ bb1@7 ~ eb2@3 ~ a1@3 ~", J: "ab1@15 ~ ab2@15 ~", K: "eb2@15 ~ bb2@7 ~ g2@7 ~", L: "db2@15 ~@2 gb2@15",
  M: "b2@15 ~@2 b2@15", N: "~ e2@15 ~ a2@15", O: "~ d2@15 ~ g2@15", P: "~ f2@15 ~ bb2@15",
  Q: "~ eb2@7 ~ eb2@7 ~ d2@7 ~ g2@7", R: "~ ab2@15 ~ ab2@15", S: "~ e2@15 ~ e2@15", T: "~ db2@15 ~ db2@15",
  U: "~ c2@15 ~ c2@15", V: "~ gb2@15 ~ gb2@15", W: "~ f2@15 ~ f2@15", X: "~ bb1@15 ~ bb1@15",
  Y: "~ eb2@15 ~ c3@3 ~ b2@3 ~ bb2@3 ~ a2@3", Z: "~ eb2@15 ~ bb1@7 ~ eb2@3 ~ a1@3", AA: "~ ab1@15 ~ ab2@15",
  AB: "~ db2@15 ~@2 db2@14", AC: "~ c2@15 ~@2 c2@14", AD: "~@2 gb2@15 ~ gb2@14", AE: "~@2 f2@15 ~ f2@14",
  AF: "~@2 bb1@15 ~ bb1@14", AG: "~@2 eb2@15 ~ bb2@7 ~ g2@6", AH: "~@2 ab2@15 ~ ab2@14", AI: "~@2 db2@15 ~ gb2@14",
  AJ: "~@2 b2@15 ~ b2@14", AK: "~@2 e2@15 ~ a2@14", AL: "~@2 d2@15 ~ g2@14", AM: "~@2 f2@15 ~ bb2@14",
  AN: "~@2 eb2@7 ~ eb2@7 ~ d2@7 ~ g2@6", AO: "~@2 e2@15 ~ e2@14", AP: "~@2 db2@15 ~ db2@14", AQ: "~@2 c2@15 ~ c2@14",
  AR: "~@2 eb2@15 ~ bb2@7 ~ eb2@6", AS: "~@2 ab1@15 ~ bb1@14", AT: "~@2 ab1@15 ~ bb1@7 ~ e2 ~ eb2 ~ d2 ~",
  AU: "db2 ~@2 c2@15 b1@14", AV: "~@3 bb1@15 ~ e2@13", AW: "[~ eb2@21 ~@10]/3",
})).s("gm_fretless_bass").gain(0.3).pan(0.2)

// chords · electric guitar clean · "E.GUITAR"
const electric_guitar_clean = note(`<
  ~ A B C D E F G H A B C D E F I J K L M N O P Q R S T U V W X Y Z S T U V W X Y AA AB AC AD AE AF AG AH AI AJ AK AL AM
  AN AO AP AQ AJ AC AR AE AF AG AH AI AS AT AU AV AW AX@3
>`.pickRestart({
  A: "[g3,ab3,c4,eb4]@15 ~ [g3,ab3,c4,eb4]@15 ~", B: "e3@15 ~ e3@15 ~", C: "[f3,ab3,b3,eb4]@15 ~ [f3,ab3,b3,eb4]@15 ~",
  D: "[g3,b3,c4,e4]@15 ~ [g3,b3,c4,e4]@15 ~", E: "[gb3,a3,db4,e4]@15 ~ [gb3,a3,db4,e4]@15 ~",
  F: "[g3,a3,c4,eb4]@15 ~ [g3,a3,c4,eb4]@15 ~", G: "[ab3,bb3,d4]@15 ~ [ab3,bb3,d4]@15 ~",
  H: "[g3,bb3,eb4]@15 ~ [ab3,bb3,db4,f4]@7 ~ [g3,db4,eb4]@3 ~ [g3,a3,db4,eb4]@3 ~", // Eb Bbm7 Eb7
  I: "[ab3,bb3,d4]@15 ~@2 [ab3,bb3,d4]@15", J: "[g3,bb3,eb4]@15 ~@2 [ab3,f4]@7 [g3,db4,eb4]@7 ~, ~@16 [bb3,db4]@7 ~@9",
  K: "~ [g3,c4,eb4]@31, ab3@31 ~", L: "~ [ab3,b3,db4,f4]@15 ~ [gb3,bb3,db4]@15",
  M: "~ [gb3,d4]@15 ~ [gb3,a3,b3,d4]@15, [a3,b3]@15 ~@17", N: "~ [ab3,d4,e4]@15 ~ [a3,db4,e4]@15",
  O: "~ [f3,a3,c4,d4]@15 ~ [g3,b3,d4,f4]@15", P: "~ [g3,b3,d4,e4]@15 ~ [a3,c4,e4]@15",
  Q: "~ [ab3,c4,eb4,f4]@15 ~ [ab3,bb3,d4]@15", R: "~ [g3,bb3,eb4]@15 ~ [f3,a3,c4,d4]@7 ~ [g3,b3,d4,f4]@7",
  S: "~ [g3,ab3,c4,eb4]@15 ~ [g3,ab3,c4,eb4]@15", T: "~ e3@15 ~ e3@15", U: "~ [f3,ab3,b3,eb4]@15 ~ [f3,ab3,b3,eb4]@15",
  V: "~ [g3,b3,c4,e4]@15 ~ [g3,b3,c4,e4]@15", W: "~ [gb3,a3,db4,e4]@15 ~ [gb3,a3,db4,e4]@15",
  X: "~ [g3,a3,c4,eb4]@15 ~ [g3,a3,c4,eb4]@15", Y: "~ [ab3,bb3,d4]@15 ~ [ab3,bb3,d4]@15",
  Z: "~ [g3,bb3,eb4]@15 ~ [g3,bb3,c4,eb4]@3 ~@5 [ab3,bb3,db4,f4]@3 ~ [g3,a3,db4,e4]@3", // Eb Cm7 Bbm7 A7
  AA: "~ [g3,bb3,eb4]@15 ~@2 [ab3,bb3,db4,f4]@7 [g3,db4,eb4]@3 ~@2 [g3,a3,db4,eb4]@2", // Eb Bbm7 Eb7
  AB: "~ [g3,ab3,c4,eb4]@15 ~@2 [g3,ab3,c4,eb4]@14", AC: "~@2 e3@15 ~ e3@14",
  AD: "~@2 [f3,b3,eb4]@15 ~ [f3,ab3,b3,eb4]@14, ~ ab3@15 ~@16", AE: "~@2 [g3,b3,c4,e4]@15 ~ [g3,b3,c4,e4]@14",
  AF: "~@2 [gb3,a3,db4,e4]@15 ~ [gb3,a3,db4,e4]@14", AG: "~@2 [g3,a3,c4,eb4]@15 ~ [g3,a3,c4,eb4]@14",
  AH: "~@2 [ab3,bb3,d4]@15 ~ [ab3,bb3,d4]@14", AI: "~@2 [g3,bb3,eb4]@15 ~ [ab3,bb3,db4,f4]@7 ~ [g3,db4,eb4]@6",
  AJ: "~@2 [g3,ab3,c4,eb4]@15 ~ [g3,ab3,c4,eb4]@14", AK: "~@2 [ab3,b3,db4,f4]@15 ~ [gb3,bb3,db4]@14",
  AL: "~ [gb3,a3,b3,d4]@15", AM: "~@2 [ab3,d4,e4]@15 ~ [a3,db4,e4]@14", AN: "~@2 [f3,a3,c4,d4]@15 ~ [g3,b3,d4,f4]@14",
  AO: "~@2 [g3,b3,d4,e4]@15 ~ [a3,c4,e4]@14", AP: "~@2 [ab3,c4,eb4,f4]@15 ~ [ab3,bb3,d4]@14",
  AQ: "~@2 [g3,bb3,eb4]@15 ~ [f3,a3,c4,d4]@7 ~ [g3,b3,d4,f4]@6", AR: "~@2 [f3,ab3,b3,eb4]@15 ~ [f3,ab3,b3,eb4]@14",
  AS: "~@2 [g3,ab3,c4,eb4]@15 ~ [ab3,b3,d4,f4]@14", AT: "~@2 [g3,bb3,eb4]@15 ~@2 [ab3,bb3,db4,f4]@7 [g3,bb3,db4,eb4]@6",
  AU: "~@2 [ab3,c4,eb4]@15 ~ [ab3,bb3,d4]@7 ~ e3 ~@2 [g3,db4,eb4] [a3,c4] [gb3,d4]", // Ab Bb7 Eb7 Am D
  AV: "[ab3,b3,db4,f4] ~@2 [g3,bb3,eb4,e4]@15 ~ b2@13", AW: "~@3 [ab3,bb3,db4,f4]@15 ~ e3@13",
  AX: "[~ [g3,bb3,d4,eb4]@21 ~@10]/3", // Ebmaj7
})).s("gm_electric_guitar_clean").gain(0.13).pan(0.1)

// drums · hihat
const hihat = s("hh").struct("<~ A@17 B C D E@11 F E@7 G H I J K L M@18 N L O P ~@5>".pickRestart({
  A: "x ~@3 x ~@2 x!2 ~@3 x ~@2 x", B: "~ x ~@7 x ~@4 x ~@2 x ~@6 x ~@5 x ~", C: "x ~@8 x ~@5 x ~ x ~@6 x ~@5 x ~",
  D: "~ x ~@7 x ~@5 x ~ x ~@7 x ~@4 x ~", E: "~ x ~@7 x ~@5 x ~ x ~@7 x ~@5 x",
  F: "~ x ~@7 x ~@7 x ~@3 x ~@3 x ~@3 x ~@2", G: "~ x ~@7 x ~@5 x ~@2 x ~@6 x ~@5 x",
  H: "~ x ~@8 x ~@4 x ~ x ~@7 x ~@5 x", I: "~ x ~@8 x ~@4 x ~@2 x ~@7 x ~@4 x", J: "~ x ~@8 x ~@5 x ~ x ~@7 x ~@4 x",
  K: "~@2 x ~@7 x ~@5 x ~ x ~@7 x ~@4 x", L: "~ x ~@3 x ~@2 x!2 ~@3 x ~@2", M: "x!2 ~@3 x ~@2 x!2 ~@3 x ~@2",
  N: "x!2 ~@3 x ~@3 x ~ x ~ x ~ x", O: "x ~ x ~@7 x ~@5 x ~@2 x ~@6 x ~@5", P: "x!2 ~@3 x ~@2 x!2 ~@6",
})).gain(0.21).pan(0.1)

// drums · open hat
const open_hat = s("oh").struct("<~@71 [~@31 x] ~>").gain(0.05).pan(0.1)

// drums · crash
const crash = s("cr").struct("<~@68 [~@3 x ~@15 x ~@12]!2 [~@3 x ~@28] ~@2>").gain(0.13).pan(0.1)

// drums · ride
const ride = s("rd").struct("<~@17 A@2 B C@5 ~@24 D@8 ~@10 E F ~@4>".pickRestart({
  A: "~ x ~ x", B: "~@9 x ~@14 x ~@7", C: "~@9 x ~@15 x ~@6", D: "~@5 x ~@7 x ~@2", E: "~@13 x!3", F: "x",
})).gain(0.15).pan(0.1)

stack(piano, piano_soft, bass, electric_guitar_clean, hihat, open_hat, crash, ride)

More by Claude Bolling