Strudelify

Nicas Dream

Art Blakely

KeyB♭ minorTempo174 bpm
0:00/0:00
// Nicas Dream — Art Blakely
// 174 bpm, 4/4, key A# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 5/4 at bar 239, 4/4 at bar 240, 3/4 at bar 242, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5830952; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 245 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(174/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.

// other · trumpet
const trumpet = note(`<
  A B C D ~@2 E F@2 G@2 H@2 I@2 J K L@2 M@2 N@2 O@2 G@2 H@2 I@2 J K L@2 M@2 P@2 Q R S@2 T U V W Q R S@2 T U X Y@3 G@2
  H@2 I@2 J K L@2 M@2 Z AA AB AC AD AE V AF AG ~@121 Q R S@2 T U V W Q R S@2 T U X Y@3 G@2 H@2 I@2 J K L@2 M@2 Z AH AI
  AJ AK L@4 ~ AL AM ~ AN@2 ~
>`.pickRestart({
  A: "f5@3 ~@9 eb5@3 ~", B: "~@8 db5@3 ~@5", C: "a4 db5 b4 a4 f4 eb4 b3 a3", D: "bb3 ~@7", E: "~@3 f4",
  F: "[b4 c5@21 bb4@2 ~@2 f4@4 db4@2]/2", G: "[f4@7 f4]/2", H: "[c5@3 db5@2 a4@3 c5@14 bb4@2 ~@2 f4@4 db4@2]/2",
  I: "[eb4@3 f4@2 db4@3 eb4@20 db4@4]/2", J: "bb4", K: "bb4@3 ab4 ~ f4@2 db4", L: "eb4/2",
  M: "[eb4 f4 eb4 f4 gb4@8 f4 ~@2 db4]/2", N: "[c4@7 f4]/2", O: "[c5@11 bb4 ~ f4@2 db4]/2", P: "[c4@7 ~]/2",
  Q: "~@2 f4@2 db4@3 eb4", R: "f4 db4@2 eb4", S: "[f4@2 gb4@2 ab4@2 bb4 b4@7 bb4@2]/2", T: "a4@2 bb4 bb3 ~ db4@2 eb4",
  U: "f4 db4@2 c4", V: "eb4", W: "gb4 d4 e4 gb4@5", X: "eb4@6 f4 gb4",
  Y: "[~@2 f4@2 e4@2 f4@2 db5@4 a4@2 ~@2 b4 ~@21 bb4@2 ~@2 f4@4 db4@2, ~@14 c5@23 ~@11]/3", Z: "c4",
  AA: "c4@4 bb3 db4 f4 a4", AB: "c5 a4@7", AC: "bb4 g4@7", AD: "ab4 f4@7", AE: "gb4 eb4@7",
  AF: "~@2 f4 gb4 f4 eb4 b3 a3", AG: "bb3 ~@3", AH: "~@3 f3", AI: "c4@3 bb3", AJ: "f4@3 eb4", AK: "gb4 f4 eb4 db4",
  AL: "~@2 db5 f5 eb5 db5 b4 a4", AM: "gb4 e4 f4@2 ~@4", AN: "[d5 eb5@31]/2",
})).s("gm_trumpet").gain(0.3)

// other · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  A B C D ~@35 E F G@2 H I J K E F G@2 H I L ~@16 M N O P Q R S T ~@121 E F G@2 H I J K E F G@2 H I L ~@28 U@2 ~
>`.pickRestart({
  A: "f5@3 ~@9 eb5@3 ~", B: "~@8 db5@3 ~@5", C: "a4 db5 b4 a4 f4 eb4 b3 a3", D: "bb3 ~@7", E: "~@2 f4@2 db4@3 eb4",
  F: "f4 db4@2 eb4", G: "[f4@2 gb4@2 ab4@2 bb4 b4@7 bb4@2]/2", H: "a4@2 bb4 bb3 ~ db4@2 eb4", I: "f4 db4@2 c4",
  J: "eb4", K: "gb4 d4 e4 gb4@5", L: "eb4@6 f4 gb4", M: "~@4 g3 bb3 db4 f4", N: "a4 f4@7", O: "g4 eb4@7", P: "f4 db4@7",
  Q: "eb4 bb3@7", R: "b3", S: "~@2 db5 eb5 db5 gb4 f4 b3", T: "bb3 ~@3", U: "c4/2",
})).s("gm_alto_sax").gain(0.3)

// other · alto sax · "Alto Saxophone" · soft notes
const alto_sax_soft = note(`<
  ~@7 A B C D A B E F D ~ G@2 H ~@3 A B C D A B E F D ~ G@2 H ~ I@2 ~@16 A B C D A B E F D ~ G@2 H ~ I@2 ~@144 A B C D A
  B E F D ~ G@2 H ~ J ~@9 K L ~@4
>`.pickRestart({
  A: "c4@3 c4 ~ c4@2 b3", B: "bb3", C: "bb3@3 bb3 ~ bb3@2 a3", D: "ab3", E: "gb4@11 eb4@2 gb4@3", F: "f4@3 db4",
  G: "[bb3@3 b3@3 bb3@10]/2", H: "~ gb4 ~ gb4 eb4@4", I: "[f3@3 ~]/2", J: "f3", K: "~@2 db5 f5 eb5 db5 b4 a4",
  L: "gb4 e4 f4@2 ~@4",
})).s("gm_alto_sax").gain(0.2)

// other · trombone
const trombone = note(`<
  A B C D ~@3 E F G H E F I J K ~ L M N O P Q E F G H E F I J K ~ L R S O T U V@2 W@2 X Y F Z V@2 W@2 X Y AA ~ E F G H E
  F I J K ~ L M N AB AC AD AE AF AG AH AI AJ AK ~@121 V@2 W@2 X Y F Z V@2 W@2 X Y AA ~ E F G H E F I J K ~ L M N AL AM
  ~@9 AN AO ~ AP@2 ~
>`.pickRestart({
  A: "bb3@3 ~@9 ab3@3 ~", B: "~@8 gb3@3 ~@5", C: "a3 db4 b3 a3 f3 eb3 b2 a2", D: "bb2 ~@7", E: "f3 ~@2 f3 ~ f3 ~ e3",
  F: "eb3", G: "eb3 ~@2 eb3 ~ eb3 ~ d3", H: "db3", I: "~ db4@2 eb4", J: "db4@3 ab3@2 f3@3 b3@8", K: "bb3 ~@3",
  L: "gb3@3 f3@3 gb3@2", M: "gb3@5 f3@2 e3", N: "eb3 ~@3", O: "~@7 c4", P: "f4@11 db4@2 bb3@3", Q: "a3@3 ~",
  R: "gb3@11 bb3@2 db4@3", S: "b3 ~@3", T: "f4@11 db4@2 bb4@3", U: "a4@3 ~", V: "[~@2 bb3@2 f3@3 ab3@3 db3@4 f3@2]/2",
  W: "[f3@2 eb3@2 db3@2 f3 eb3@5 ~@2 f3@2]/2", X: "db3@2 eb3 eb2 ~ bb2@2 c3", Y: "db3 ab3@2 eb3", Z: "e3 c3 d3 e3@5",
  AA: "eb3@6 bb3 c4", AB: "~@7 c3", AC: "f3@2 ~ f3 ~ f3 ~ ab3", AD: "eb3@4 eb3 g3 bb3 db4", AE: "f4 db4@7",
  AF: "eb4 c4@7", AG: "db4 bb3@7", AH: "c4 ab3@7", AI: "gb3", AJ: "~@2 f3 gb3 f3 eb3 b2 a2", AK: "bb2 ~@3",
  AL: "~@4 a3 ~@2 c3", AM: "f3", AN: "~@2 db3 f3 eb3 db3 b2 a2", AO: "gb2 e2 f2@2 ~@4", AP: "eb4/2",
})).s("gm_trombone").gain(0.2)

// chords · piano
const piano = note(`<
  A B C D E F G H@2 I@2 H@2 I J I J K L M N O P H@2 I@2 H@2 I Q I J K R S T U@2 V@2 W@2 X Y Z AA AB@2 AC@2 AD AE AF ~
  H@2 I@2 H@2 I J I J K L M N O P AG AH AI AJ AK ~@25 AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA H@4 I@2 H@2 I AW I
  AW AX BB BC BD H BE BF BG AW BH BI BJ AW BH BF BG AW BK BI BJ AW BL BM@2 BN@2 BM@2 BN AW BO AW AX AY AZ BA H@4 I@2 H@2
  I AW I AW AX BB BC BD H@2 BF BG AW BH BI BJ AW BH BF BG AW BK BI BJ AW BD V@2 W@2 X Y Z AA AB@2 AC@2 AD AE AF ~ H@2
  I@2 H@2 I J I J K L M N U@2 ~@7 BP ~ BQ BR BS BT ~
>`.pickRestart({
  A: "[eb3,bb3,gb4,bb4,f5] ~@5 [db3,ab3,e4,ab4,eb5] ~", B: "~@4 [b2,gb3,d4,gb4,db5] ~@3",
  C: "[f3,f4,a4,db5,e5]@3 [f3,f4,a4,db5,e5] ~@4", D: "~@3 bb2, ~@3 [f3,bb3,db4,f4,a4]@5",
  E: "ab2 ~@2 ab2, ~@3 [eb3,ab3,b3,eb4,g4]@5", F: "bb2 ~@2 bb2, ~@3 [f3,bb3,db4,f4,a4]@5",
  G: "ab2@2 ~ [eb3,ab3,b3,eb4,g4]@5", H: "[bb2,db4,bb4,f5]@3 bb4 bb4@4, ~@6 [bb2,db4,f5]@9 ~",
  I: "[ab2,b3,ab4,eb5]@3 ab4 ab4@4, ~@6 [ab2,b3,eb5]@9 ~", // Abm
  J: "[db3,f3,ab3,db4,f4,b4]@3 [f4,b4] [f4,b4]@4, ~@6 [db3,f3,ab3,db4]@9 ~", // Db7 Fdim Db
  K: "[gb3,gb4,bb4,db5,f5]@3 [db3,db4,f4,ab4,eb5]@3 [g2,c4,e4,g4,bb4,e5]@2", L: "[c4,e4,g4,bb4,e5] ~@3, g2@3 ~@5",
  M: "[f2,b3,eb4,gb4]@6 [f2,b3,eb4,gb4]@9 ~", N: "~@6 [f3,f4,a4,c5,ab5]@9 ~",
  O: "[bb2,f3,bb3,db4,a4,f5]@6 [bb2,f3,bb3,db4,a4,f5]@9 ~", P: "[bb2,db4,f4]@6 [f2,f3,c4,eb4,a4]@9 ~",
  Q: "[db2,f3,ab3,db4,f4,b4]@3 [f4,b4] [f4,b4]@4, ~@6 [db2,f3,ab3,db4]@9 ~", R: "[g2,c4,e4,g4,bb4,e5]@3 ~@5",
  S: "[f3,b3,eb4,gb4]@6 [f3,b3,eb4,gb4]@9 ~", T: "~@6 [a3,c4,f4,bb4,eb5]@9 ~",
  U: "[[bb2,f3,bb3,db4,a4,f5]@6 [bb2,f3,bb3]@9 ~ [bb2,g4]@6 ~@10, ~@6 [db4,a4,f5]@15 ~@11]/2", // Bbm Bb5 Eb Dbaug
  V: "[~@2 [db3,ab3,db4,eb4,gb4]@3 ~ [db3,ab3,db4,eb4,gb4]@3 ~ [db3,ab3,db4,eb4,gb4,bb4]@3 ~ [ab3,f4,b4,d5]@2]/2", // Dbsus4 Ebm7 Abdim
  W: "[[f4,a4,c5,eb5]@4 [g3,eb4,bb4,db5]@4 [db4,f4,ab4,bb4]@4 [f4,a4,c5,eb5]@2 [bb3,ab4,c5,eb5,g5]@13 ~ [bb2,f3,bb3,d5,g5]@4]/2", // F7 Eb7 Bbm7 F7 Cm7 Gm7
  X: "[a2,db4,e4,a4,g5]@4 [eb3,eb4,g4,bb4,db5]@11 ~", Y: "~@2 [bb2,gb3,b3,db4,e4,ab4]@3 ~ [ab2,c4,eb4,gb4]@2",
  Z: "[db3,e4,ab4,c5]@15 ~", AA: "[e3,e4,g4,b4,d5]@6 [g3,a4,d5,e5,gb5]@9 ~",
  AB: "[~@2 [db3,ab3,db4,eb4,gb4]@3 ~ [db3,ab3,db4,eb4,gb4]@3 ~ [db3,ab3,db4,eb4,gb4,bb4]@3 ~ [ab3,b3,d4,f4]@2]/2", // Dbsus4 Ebm7 Abdim
  AC: "[[f3,f4,a4,c5,eb5]@4 [eb3,eb4,g4,bb4,db5]@4 [db3,db4,f4,ab4,bb4]@4 [f3,f4,a4,c5,eb5]@2 [bb3,ab4,c5,eb5,g5]@13 ~ [bb2,f3,bb3,d5,g5]@4]/2", // F7 Eb7 Bbm7 F7 Cm7 Gm7
  AD: "[eb3,eb4,g4,bb4,db5]@15 ~", AE: "~@2 [bb2,gb3,b3,db4,e4,ab4]@3 ~ [ab2,ab3,c4,eb4,gb4,eb5]@2",
  AF: "[db3,e4,ab4,c5]@11 ~@5", AG: "[bb2,f3,bb3,db4,a4,f5]@15 ~", AH: "[ab2,b3,ab4,eb5]@15 ~",
  AI: "[gb2,db3,gb3,bb3,db4,gb4,e5]@15 ~", AJ: "[c3,eb4,gb4,ab4]@15 ~", AK: "[b2,gb3,b3,eb4,gb4,a4]@15 ~",
  AL: "~ f4 c5 a4 bb4 c5 db5 eb5", AM: "e5@2 f5@2 gb5 g5 ~ gb5 f5@2 eb5@2 db5@2 c5@2", AN: "bb4 f4@3 ~@4",
  AO: "~@2 bb4 db5 f5@3 db5", AP: "eb5@4 b4 bb4 ~ ab4 g4@6 bb4@2", AQ: "ab4 ~@3", AR: "~@3 f4 bb4 db5 c5 eb5",
  AS: "db5 f5 eb5 gb5 f5 eb5 db5 c5", AT: "b4 db5 eb5 gb5 bb5 g5 ab5 gb5",
  AU: "f5@2 ab5@2 eb5 f5 eb5 d5 db5@2 c5@2 b4@2 eb5@2", AV: "bb4@3 [ab3,db4,f4] [ab3,db4,f4]@4, ~@6 bb4@9 ~",
  AW: "[db3,ab3,db4,f4,b4]@6 [db3,ab3,db4,f4,b4]@9 ~", AX: "[gb3,db4,gb4,bb4,e5]@6 [gb3,db4,gb4,bb4,e5]@9 ~",
  AY: "[c3,g3,c4,e4,bb4,d5]@6 [c3,g3,c4,e4,bb4,d5]@9 ~", AZ: "[f3,c4,f4,a4,eb5,g5]@6 [f3,c4,f4,a4,eb5,g5]@9 ~",
  BA: "[f3,c4,f4,a4,eb5,ab5]@6 [f3,c4,f4,a4,eb5,ab5]@9 ~", BB: "[c3,g3,c4,e4,g4,bb4]@6 [c3,g3,c4,e4,g4,bb4]@9 ~",
  BC: "[f3,c4,f4,a4,c5,eb5]@6 [f3,c4,f4,a4,c5,eb5]@9 ~", BD: "[f3,c4,f4,a4,c5,eb5,ab5]@6 [f3,c4,f4,a4,c5,eb5,ab5]@9 ~",
  BE: "[bb2,db4,bb4,f5]@3 bb4 bb4@4, ~@6 [bb2,d4,f5]@9 ~", BF: "[eb3,gb4,eb5,bb5]@3 eb5 eb5@4, ~@6 [eb3,gb4,bb5]@9 ~",
  BG: "[ab2,c4,ab4,eb5,gb5]@3 ab4 ab4@4, ~@6 [ab2,c4,eb5,gb5]@9 ~", BH: "[bb2,d4,bb4,f5,ab5]@6 [bb2,d4,bb4,f5,a5]@9 ~",
  BI: "[eb3,g4,eb5,bb5]@3 eb5 eb5@4, ~@6 [eb3,g4,bb5]@9 ~", // Eb
  BJ: "[eb3,gb4,eb5,bb5]@3 ab4 ab4@4, ~@6 [ab2,c4,eb5,gb5]@9 ~", // Ebm Ab7
  BK: "[bb2,d4,bb4,f5,ab5]@3 bb4 bb4@4, ~@6 [bb2,d4,f5,ab5]@9 ~", BL: "[f3,c4,f4,a4,eb5]@6 [f3,c4,f4,a4,eb5]@9 ~",
  BM: "[bb2,db4,bb4,f5,ab5]@3 bb4 bb4@4, ~@6 [bb2,db4,f5,ab5]@9 ~", // Bbm7
  BN: "[ab2,b3,ab4,eb5,gb5]@3 ab4 ab4@4, ~@6 [ab2,b3,eb5,gb5]@9 ~", // Abm7
  BO: "[bb2,bb3,db4,f4,bb4,ab5]@3 [ab3,db4,f4] [ab3,db4,f4]@4, ~@6 [db3,bb4]@9 ~", BP: "[b1,b2,b3]@15 ~",
  BQ: "~@6 gb2 f2", BR: "b1 a1 bb1@4 ~@2", BS: "~@2 ab3 eb4 ab3 eb4 ab4 eb5", BT: "ab4 eb5 ab5 eb6 ab5 eb6 ab5 eb6",
})).s("gm_piano").gain(0.2)

// bass · acoustic bass
const bass = note(`<
  A B C D ~@3 E F G@2 E F H I H J K ~@5 E F G@2 E F H I H J K ~@5 L M N O P Q R S T M N O P Q U ~ E F G@2 E F H I H J K
  ~@10 V D ~@8 W E X G Y E X H I Z E X G Y E D ~ E F G@2 E F G I G I AA AB AC@2 E F E F G@2 E F G I G I AD AB AC@2 F@2
  AE G I F AE AF I F AE G I F AE AF I AC E F G@2 E F G I G I AA AB AC@2 E F E F G@2 E F G I G I AD AB AC@2 F@2 AE G I F
  AE AF I F AE G I F AE AF I AC L M N O P Q R S T M N O P Q U ~ E F G@2 E F H I H J K ~@4 W AG AH AI AJ AK AJ AK AL ~@6
>`.pickRestart({
  A: "g2 ~@2 f2", B: "~@2 eb2 ~", C: "a2 db3 b2 a2 f2 eb2 b1 a1", D: "bb1 ~@3", E: "bb1@2 ~ f2 ~@2 f1@2",
  F: "bb1@2 ~ f2 ~@2 bb1@2", G: "ab1@2 ~ eb2 ~@2 ab1@2", H: "ab1@2 ~ eb2 ~@2 eb2@2", I: "db2@2 ~ ab2 ~@2 db2@2",
  J: "db2@2 ~ ab2 ~@2 ab1@2", K: "bb1@3 b1@3 bb1@2", L: "~ db3 ab2 gb2", M: "eb2!2 gb2@2 g2@2 ab2@2",
  N: "c3@2 db3@2 b2@2 b2 c3", O: "eb3 c3 ab2 g2", P: "f2 e2 eb2@2 db2@2 g2@2", Q: "f2 e2 db2 gb2", R: "db3 b2 ab2 f2",
  S: "gb2 d2 e2 gb2 db3@2 e3@2", T: "f3 db3 ab2 gb2", U: "db3@2 b2@2 ab2@2 f2 f1", V: "~@2 f2 gb2 f2 eb2 b1 a1",
  W: "~@3 f1", X: "bb1@2 ~ f2 ~@2 bb1 a1", Y: "ab1@2 ~ eb2 ~@2 ab1 a1", Z: "d2@2 ~ db2 ~ c2 ~ b1",
  AA: "gb2@2 ~ db3 ~@2 gb2@2", AB: "c2@2 ~ g2 ~@2 c2@2", AC: "f2@2 ~ c3 ~@2 f2@2", AD: "gb1@2 ~ db2 ~@2 gb1@2",
  AE: "eb2@2 ~ bb2 ~@2 eb2@2", AF: "eb2@2 ~ bb2 ~@2 ab2@2", AG: "a1@3 g1", AH: "db2@3 c2", AI: "eb2 db2 c2 bb1",
  AJ: "gb1@5 bb1 ~ gb1", AK: "b1", AL: "b1 ~",
})).s("gm_acoustic_bass").gain(0.3)

// drums · kick
const kick = s("bd").struct("<A B ~@37 C@15 D ~@63 E ~@47 E ~@32 C@15 D ~@30>".pickRestart({
  A: "~@4 x!2 ~ x!2 ~@7", B: "x!2 ~ x!2 ~@11", C: "x!4", D: "x", E: "~@5 x!3",
})).gain(0.2)

// drums · rim
const rim = s("rim").struct(`<
  ~@3 A B A C A B A B A B A B A D ~@2 E F G H A B A B A B A B A D ~@2 E F G H ~@16 A B A B A B A B A D ~@2 E F G I ~@8 A
  B A B A B A B A B A B A B A B ~ A B A B A J ~@143
>`.pickRestart({
  A: "x ~ x ~ x!4", B: "~ x!2 ~ x!4", C: "x ~ x!3 ~ x!2", D: "x ~ x!3 ~@3", E: "~@4 x!4", F: "~ x!2 ~ x!3 ~",
  G: "~@2 x ~ x!4", H: "~ x!7", I: "~ x!3 ~@4", J: "~ x ~@6",
})).gain(0.2)

// drums · snare
const snare = s("sd").struct("<~@18 A ~@15 A ~@4 B@2 ~ B@12 ~@12 A ~@132 B@2 ~ B@12 ~@12 A ~@18>".pickRestart({
  A: "~ x!7", B: "~ x ~ x",
})).gain(0.2)

// drums · low tom
const low_tom = s("lt").struct("<~@242 [~@12 x!4] [x!16] [x!4 ~@12]>").gain(0.3)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@118 [~ x ~ x ~@4] ~@47 [~ x ~ x ~@4] ~@78>").gain(0.2)

// drums · hihat
const hihat = s("hh").struct("<~@39 A@2 B A@12 C ~@22 D ~@41 E ~@47 E ~@31 A@2 B A@12 C ~@30>".pickRestart({
  A: "x ~ x!3 ~ x!2", B: "~@2 x ~@3 x!2", C: "x", D: "x ~@2 x!2 ~@3", E: "x ~@2 x ~ x ~ x",
})).gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<~@77 [~@5 x ~ x!2 ~@7] ~@167>").gain(0.2)

// drums · open hat
const open_hat = s("oh").struct(`<
  A B C ~@14 D ~ C ~ C ~@11 D ~ C ~ C ~@3 E ~@13 C ~@9 D ~ C ~ C ~ C@4 ~ C F G ~@16 H ~@6 I ~@98 E ~@23 D ~@19
>`.pickRestart({
  A: "x ~@2 x", B: "~ x", C: "x", D: "x ~@2 x ~@2 x ~", E: "x!4", F: "~@4 x ~@2 x", G: "~ x ~ x ~@4", H: "x!2 ~ x ~@4",
  I: "~@5 x ~@2",
})).gain(0.2)

// drums · high tom
const high_tom = s("ht").struct("<~@77 [x!2 ~ x!2 ~@11] ~@167>").gain(0.2)

// drums · crash
const crash = s("cr").struct("<~@244 [~ x ~@2]>").gain(0.3)

// drums · ride
const ride = s("rd").struct(`<
  ~@103 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 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@3 B A B A B A B A B A B A B A B ~@16 A B A B A B A B A C ~@2 D E A B A B
  A B F@3 ~@7
>`.pickRestart({
  A: "x ~ x ~ x!4", B: "~ x!2 ~ x!4", C: "x ~ x!3 ~@3", D: "x ~@3 x!4", E: "~ x!2 ~ x!3 ~", F: "x!8",
})).gain(0.2)

// drums · cowbell
const cowbell = s("cb").struct("<~@78 A B C B C B C B C B C B C B C B C A B C B C B D ~@143>".pickRestart({
  A: "~@5 x!3", B: "x ~ x ~@2 x ~ x", C: "~ x ~ x ~ x ~ x", D: "~ x ~@6",
})).gain(0.2)

stack(
  trumpet, alto_sax, alto_sax_soft, trombone, piano, bass, kick, rim, snare, low_tom, low_tom_soft, hihat, mid_tom,
  open_hat, high_tom, crash, ride, cowbell
)