Strudelify

Du bist Leben fur mich

Brunner & Brunner

KeyB♭ majorTempo127 bpm
0:00/0:00
// Du bist Leben fur mich — Brunner & Brunner
// 127 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 114 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(127/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 · piano
const piano = note(`<
  A@7 B@2 C D E F C D G H I J K L@2 M@2 N@7 O@6 P Q@2 C D E R C D G H I J K L@2 M@2 N@7 S@6 P T U V W X@2 Y Z AA N@7 S@6
  AB@7 AC AD AE@8 AF@3 P T AG
>`.pickRestart({
  A: "[~@10 [eb5,eb6]@2 [d5,d6]@2 [eb5,eb6]@4 [bb4,bb5]@2 ~@2 [bb4,bb5]@2 ~@2 [eb5,eb6]@2 [d5,d6]@2 [eb5,eb6]@4 [bb4,bb5]@3 ~ [bb4,bb5]@2 ~@2 [eb5,eb6]@2 [d5,d6]@2 [eb5,eb6]@4 [c5,c6]@2 ~@2 [c5,c6]@3 ~ [ab4,ab5]@2 [bb4,bb5]@2 [c5,c6]@10 ~@2 [f5,f6]@2 [e5,e6]@2 [f5,f6]@4 [c5,c6]@2 ~@2 [c5,c6]@2 ~@2 [f5,f6]@2 [e5,e6]@2 [f5,f6]@4 [c5,c6]@2 ~@2 [c5,c6]@2 ~@2 [d5,d6]@2 [eb5,eb6]@2 [d5,d6]@2]/7", // Eb D Eb Bb Eb D Eb Bb …
  B: "[~@2 [c5,c6]@2 [bb4,bb5] ~ [bb4,bb5]@4 [c5,c6]@2 [bb4,bb5]@2 [d5,d6]@8 ~@10]/2", C: "[db5,f5,bb5]@7 ~",
  D: "[f5,ab5,c6]@3 ~", E: "[bb4,db5,gb5,bb5]@7 ~@3 [db5,db6]@5 ~", F: "[db5,f5,ab5,db6]@5 ~@3",
  G: "[eb5,gb5,bb5]@13 ~@3", H: "[c5,eb5,ab5]@15 ~", I: "[bb4,db5,bb5]@6 [c5,eb5,c6]@5 ~ [db5,f5,db6]@3 ~",
  J: "[c5,eb5,c6]@3 ~@3 [eb5,gb5,eb6] ~, ~@3 [db5,f5,db6]@4 ~", K: "[db5,f5,db6] ~",
  L: "[[gb5,bb5,gb6]@3 ~@4 [gb5,bb5,gb6]@2 [f5,ab5,f6]@5 ~ [f5,ab5,f6]]/2", // Gb Fm
  M: "[~@2 [eb5,ab5,eb6]@5 ~ [bb4,bb5]@2 [c5,c6]@4 [db5,db6]@12 ~@2 [ab3,ab4]@4]/2", // Ab5 Bb C Db Ab
  N: "[[d4,f4,bb4]@10 [eb5,eb6]@2 [d5,d6]@2 [eb5,eb6]@4 [bb4,bb5]@2 ~@2 [bb4,bb5]@2 ~@2 [eb5,eb6]@2 [d5,d6]@2 [eb5,eb6]@4 [bb4,bb5]@3 ~ [bb4,bb5]@2 ~@2 [eb5,eb6]@2 [d5,d6]@2 [eb5,eb6]@4 [c5,c6]@2 ~@2 [c5,c6]@3 ~ [ab4,ab5]@2 [bb4,bb5]@2 [c5,c6]@10 ~@2 [f5,f6]@2 [e5,e6]@2 [f5,f6]@4 [c5,c6]@2 ~@2 [c5,c6]@2 ~@2 [f5,f6]@2 [e5,e6]@2 [f5,f6]@4 [c5,c6]@2 ~@2 [c5,c6]@2 ~@2 [d5,d6]@2 [eb5,eb6]@2 [d5,d6]@2]/7", // Bb Eb D Eb Bb Eb D Eb …
  O: "[~@2 [c5,c6]@2 [bb4,bb5] ~ [bb4,bb5]@4 [c5,c6]@2 [bb4,bb5]@2 [d5,d6]@8 ~@4 [eb4,eb5]@2 [d4,d5]@2 [eb4,eb5]@4 [c4,c5]@2 ~@2 [c4,c5]@2 ~@2 [eb4,eb5]@2 [d4,d5]@2 [eb4,eb5]@4 [c4,c5]@3 ~ [c4,c5]@3 ~ [eb4,eb5]@2 [d4,d5]@2 [eb4,eb5]@4 [bb3,bb4]@2 ~@2 [eb4,eb5]@3 ~ [f4,f5]@2 [g4,g5]@2 [f4,f5]@10 ~@6 [c4,c5]@2, ~@15 [bb3,bb4], ~@23 [d4,d5]]/6", // C Bb C Bb D Eb D Eb …
  P: "[bb3,bb4] ~@3", // Bb
  Q: "[~@2 [bb3,bb4]@2 [bb3,bb4]@2 [bb3,bb4]@4 [eb4,bb4,eb5]@4 [bb4,eb5,bb5]@7 ~@3 [c5,c6]@5 ~@3, [eb4,eb5]@5 ~@11]/2", // Bb Eb5 C Eb
  R: "f5@4 ~@8 [db4,db5]@3 ~, [ab5,db6]@15 ~, db5@3 ~, ~@4 [f4,f5]@11 ~, ~@8 [eb4,eb5]@7 ~", // Db Db5 F Eb
  S: "[~@2 [c5,c6]@2 [bb4,bb5] ~ [bb4,bb5]@4 [c5,c6]@2 [bb4,bb5]@2 [d5,d6]@8 ~@4 [eb4,eb5]@2 [d4,d5]@2 [eb4,eb5]@4 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 ~@2 [eb4,eb5]@2 [d4,d5]@2 [eb4,eb5]@4 [c4,c5]@2 [c4,c5] ~ [c4,c5]@3 ~ [eb4,eb5]@2 [d4,d5]@2 [eb4,eb5]@4 [bb3,bb4]@2 [bb3,bb4]@2 [eb4,eb5]@3 ~ [f4,f5]@2 [g4,g5]@2 [f4,f5]@10 ~@6 [c4,c5]@2, ~@15 [bb3,bb4], ~@23 [d4,d5]]/6", // C Bb C Bb D Eb D Eb …
  T: "~ [bb3,bb4]!2 [bb3,bb4]@2 ~@3, [eb4,eb5]@5 ~@3", U: "~@12 [c5,c6]@3 ~", V: "~ [bb4,bb5]@2 [bb4,bb5]@3 ~@2",
  W: "~@4 [c5,eb5,ab5]@3 [bb5,d6,f6]", // Ab Bb
  X: "[~@12 [eb5,eb6]@2 [bb4,bb5]@5 ~@13, ~@2 g6@17 ~@13, ~ bb5@6 ~@9, ~ eb6@5 ~@10, ~@5 f5@2 ~@9]/2", // Eb Bb
  Y: "~ [ab4,ab5] ~ [f5,f6], [f4,f5] [c5,c6]", Z: "[ab5,eb6,ab6]@5 ~@3", AA: "~@3 [ab3,ab4]",
  AB: "[[bb3,bb4]@4 ~@6 [eb5,eb6]@2 [d5,d6]@2 eb5@2 ~@2 [bb3,bb4,bb5]@2 [bb3,bb4,bb5]@2 [bb3,bb4,bb5]@4 ~@2 [d5,d6]@2 [eb5,eb6]@4 [bb4,bb5]@2 [bb4,bb5] ~ [bb4,bb5] ~@3 [eb4,eb5]@2 [d4,d5]@2 [eb4,eb5]@4 [c4,c5]@2 ~@2 [c4,c5]@2 ~@2 [eb4,eb5]@2 [d4,d5]@2 [eb4,eb5]@4 [c4,c5]@3 ~ [c4,c5]@3 ~ [eb4,eb5]@2 [d4,d5]@2 [eb4,eb5]@4 [bb3,bb4]@2 [bb3,bb4]@2 [eb4,eb5]@3 ~ [f4,f5]@2 [g4,g5]@2 [f4,f5]@10 ~@6 [c4,c5]@2, ~@7 eb6@6 [eb5,eb6]@2 ~@39 [d4,d5]@2, ~@8 [eb4,eb5]@5 ~@40 [bb3,bb4]@3]/7", // Bb Eb D Bb D Eb Bb Eb …
  AC: "[bb3,bb4]@2 ~@3 [eb5,eb6] [d5,d6] [eb5,eb6]", // Bb Eb D Eb
  AD: "~ [bb4,bb5]@2 ~@4 [eb5,eb6], ~@3 [bb4,bb5]@5, ~@5 [eb5,eb6]@2 ~, ~@3 [d5,d6]", // Bb Eb Bb Eb D
  AE: "[~ [bb4,bb5]@2 ~@6 [c5,c6]@2 ~@14 [c5,c6]@2 ~@6 [c5,c6]@2 ~@7 [bb4,bb5] ~@14 [c4,c5]@2 ~@4 [eb4,eb5], ~@3 [bb4,bb5]@10 [ab4,ab5]@14 [c5,c6]@6 ~@2 [c5,c6]@3 eb5@8 [bb4,bb5]@15 [eb4,eb5]@2 ~, ~@5 [eb5,eb6]@2 [eb5,eb6]@14 [f5,f6] [e5,e6]@8 [e5,e6]@9 [d5,d6]@2 [c5,c6]@2 [bb4,bb5]@2 c6@10 [eb4,eb5]@4 [c4,c5]@5, ~@6 [d5,d6]@9 [c5,c6]@8 [f5,f6]@6 [f5,f6]@2 [f5,f6]@14 c5@2 d5@6 [eb4,eb5] [d4,d5]@8 [d4,d5]@2, ~@11 [c5,c6]@3 [bb4,bb5]@16 ~@7 [d5,d6] eb6@9 d6@16 ~]/8", // Bb C Bb C Eb Bb Ab C …
  AF: "[~ [c4,c5]@2 ~@6 [bb3,bb4] ~@13 [c4,c5], ~@3 [c4,c5]@10 [f4,f5] [g4,g5]@8 [d4,d5]@2, ~@5 [eb4,eb5]@2 [eb4,eb5]@4 [eb4,eb5]@13, ~@2 [d4,d5]@5 [bb3,bb4], ~@10 [bb3,bb4]@5 [f4,f5]@9]/3", // C Bb C F G D Eb D …
  AG: "[eb5,g5,eb6] ~@15", // Eb
})).s("gm_piano").gain(0.29).pan(0.6)

// chords · pad warm
const pad_warm = note(`<
  ~@9 A B C D A B E F G H I J@3 K@2 ~@14 L M B C N A B E F G H I J@3 K@2 ~@15 O@4 P@2 Q@2 ~@35
>`.pickRestart({
  A: "[bb3,db4,f4]", B: "[ab3,c4,f4]", C: "[bb3,db4,gb4]", D: "ab3@11 a3@5, [db4,f4]", E: "[bb3,eb4,gb4]",
  F: "[ab3,c4,eb4]@15 ~", G: "[db4,gb4,bb4,db5]", H: "[f4,a4,c5]", I: "[f4,bb4,db5]",
  J: "[[bb4,db5,gb5]@9 [ab4,db5,f5]@8 [ab4,c5,eb5]@7]/3", K: "[[ab4,db5] ~, f5@31 ~]/2", L: "~@2 [c4,c5] [db4,db5]",
  M: "[bb3,f4], db4 ~@15", N: "[db4,f4], ab3@3 ~", O: "[[f3,bb3,d4]@12 [ab3,c4]@3 [g3,bb3]@17, ~@3 eb4@5]/4",
  P: "[f3,ab3,c4]/2", Q: "[[bb3,d4,f4]@3 ~]/2",
})).s("gm_pad_warm").gain(0.47)

// other · tubular bells
const tubular_bells = note(`<
  ~@23
  [~@4 db4@2 ~@2 f4@2 ~@2 ab4@3 ~]
  [bb4@5 ~@3]
  ~@29
  [~@4 db4@2 ~@2 f4@2 ~@2 ab4@3 ~]
  [bb4@5 ~@3]
  ~@58
>`).s("gm_tubular_bells").gain(0.43).pan(0.4)

// other · orchestra hit
const orchestra_hit = note("<A B ~@6 C D ~@26 E D ~@29 E F ~@9 G H ~@10 E I ~@5 E I ~@11 E I ~@2>".pickRestart({
  A: "~@7 bb2", B: "eb3 ~@3", C: "~@2 f3 ~ c4 ~ db4 ~", D: "bb3@3 ~@13", E: "~@14 f3 ~", F: "bb3 ~@15", G: "~@7 bb3",
  H: "eb4@3 ~@13", I: "bb3 ~@7",
})).s("gm_orchestra_hit").gain(0.36).pan(0.3)

// bass · electric bass finger
const bass = note(`<
  ~ A@4 B@2 C D E@2 F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC U AD AE AF AG E@2 F G H I J K L M N O P Q R S AH
  AI V W X Y AD AA AJ AC AI AD AE AK AL AM AN AO AP X AQ AR AS AH AI V W X Y AD AA AJ AC AI AD AE AK AL AJ AC AI AD AE
  AH AI V W X Y AD AA AJ AC AI AD AE AK AT
>`.pickRestart({
  A: "[eb1@2 ~@2 eb1@3 ~ eb1 ~ eb1@3 ~ eb1@5 ~ eb1@2 ~ eb1!2 ~ eb1@3 ~ ab1@5 ~ ab1@2 ~ eb1 ab1 ~ ab1@3 ~ ab1@5 ~ ab1@3 eb1 ab1 ~ ab1@4 g1@2]/4",
  B: "[f1@2 ~@2 f1@3 c1 f1@2 f1@3 ~ f1@5 ~ f1@3 c1 f1@2 f1@4 ~@2]/2", C: "bb1@3 ~ bb1@3 f1 bb1 ~ bb1@5 ~", D: "bb1@3 ~",
  E: "[bb1@3 ~ bb1 ~ bb1@3 ~ bb1@4 f1@5 ~ f1@2 ~ c1 f1 ~ f1@3 ~ f1 ~]/2", F: "gb1@3 ~ gb1@3 db1 gb1 ~ gb1@2 ~@2 gb1@2",
  G: "db1@3 ~ db1@2 ~ db1!2 ~ db1@2 eb1@2 f1@2", H: "bb1@3 ~ bb1@2 ~ bb1!2 ~ bb1@3 ~ bb1@2",
  I: "f1@3 ~ f1@3 c1 f1 ~ f1@3 ~ f1 ~", J: "eb1@3 ~ eb1@2 ~ eb1!2 ~ eb1@4 gb1@2",
  K: "ab1@2 ~@2 ab1@2 ~ eb1 ab1@2 ab1@3 ~ ab1 ~", L: "gb1@3 ~ gb1@2 ~ gb1!2 ~ gb1@3 ~ gb1@2",
  M: "f1@3 ~ f1@3 db1 f1 ~ f1@2 ~@2 f1@2", N: "bb1@3 ~ bb1@2 ~ bb1!2 ~ bb1@4 ab1@2",
  O: "gb1@3 ~ gb1@3 db1 gb1 ~ gb1@3 ~@3", P: "db2@3 ~ db2@2 ~ db2 ~@2 db2@3 ~ db2@2",
  Q: "ab1@3 ~ ab1@2 ~ eb1 ab1 ~ ab1@3 ~ ab1@2", R: "db2@3 ~ db2@2 ~ db2!2 ~ db2@3 ~ db2@2",
  S: "bb1@3 ~ bb1@2 ~ bb1!2 ~ bb1@5 ~", T: "eb1@3 ~ eb1@2 bb0 ~ eb1 ~ eb1@5 ~",
  U: "eb1@3 ~ eb1@2 ~ bb0 eb1 ~ eb1@3 ~ eb1@2", V: "ab1@3 ~ ab1@3 eb1 ab1 ~ ab1@4 eb1@2",
  W: "ab1@3 ~ ab1@2 ~ ab1!2 ~ ab1@4 g1@2", X: "f1@3 ~ f1@2 ~ f1!2 ~ f1@4 c1@2", Y: "f1@3 ~ f1@3 ~ f1@3 ~ f1@4",
  Z: "bb1@3 ~ bb1@2 ~ f1 bb1 ~ bb1@4 f1@2", AA: "bb1@3 ~ bb1@3 ~ bb1@3 ~ bb1@3 ~",
  AB: "c2@3 ~ c2@2 ~ g1 c2 ~ c2@3 ~ c2@2", AC: "ab1@3 ~ ab1@2 ~ ab1 ~@2 ab1@3 ~ ab1@2",
  AD: "bb1@3 ~ bb1@2 ~ bb1!2 ~ bb1@4 f1@2", AE: "bb1@3 ~ bb1@7 ~ bb1@3 ~",
  AF: "eb1@3 ~ eb1@2 ~ bb0 eb1 ~ eb1@3 ~ eb1 ~", AG: "eb1@3 ~ eb1@4 c2@4 db2@3 ~",
  AH: "eb1@3 ~ eb1@2 ~ eb1!2 ~ eb1@5 ~", AI: "eb1@3 ~ eb1@2 ~ eb1!2 ~ eb1@3 ~ eb1@2",
  AJ: "c2@3 ~ c2@2 ~ c2!2 ~ c2@3 ~ c2@2", AK: "eb1@3 ~ eb1@2 ~ eb1!2 ~ eb1@3 ~ eb1 ~",
  AL: "eb1@3 ~ eb1@3 eb1!2 ~ eb1@3 ~ eb1 ~", AM: "bb1@3 ~ bb1@2 ~ bb1!2 ~ bb1@3 ~ bb1 ~",
  AN: "bb1@3 ~ bb1@2 ~ bb1 ab1 ~ ab1@3 ~ ab1@2", AO: "eb1@3 ~ eb1@2 ~ eb1!2 ~ eb1@3 ~ bb0@2",
  AP: "eb1@3 ~ eb1@2 ~ eb1!2 ~ eb1@6", AQ: "f1@3 ~ f1@2 ~ f1@2 ~ f1@2 g1@2 ab1@2",
  AR: "bb1@2 ~@2 bb1@2 ~ bb1!2 ~ bb1@4 f1@2", AS: "bb1@2 ~@2 bb1@2 ~ bb1!2 ~@7", AT: "eb1@3 ~@13",
})).s("gm_electric_bass_finger").gain(0.39)

// other · timpani
const timpani = note("<A B ~@34 C D ~@29 C D ~@21 C D ~@5 C D ~@11 C D ~@2>".pickRestart({
  A: "~@14 bb1 ~", B: "eb2 ~@7", C: "~@14 c2 ~", D: "f2 ~@15",
})).s("gm_timpani").gain(0.4).pan(0.6)

// other · french horn
const french_horn = note(`<
  ~@16 A B ~@14 C D ~@4 E F B G ~@5 A B H I J K ~@10 C L ~@27 M N L ~@11 C O ~@6
>`.pickRestart({
  A: "~ c4 db4 eb4", B: "bb3", C: "d4@2 eb4 f4", D: "c4@5 ~@3", E: "~@5 g3 bb3 ab3", F: "g3@2 c4 db4", G: "c4@15 ~",
  H: "c4@3 db4@3 eb4@2", I: "db4@2 ~ f4, ~@4 eb4@3 ~", J: "gb4", K: "f4", L: "c4@13 ~@3", M: "eb4@7 f4",
  N: "g4 f4 eb4 d4", O: "c4@7 ~",
})).s("gm_french_horn").gain(0.45).pan(0.6)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~ A@2 B@2 C@2 D ~@16 E F@2 G@2 H@2 I@2 J K L M@2 ~@17 E F@2 G@2 H@2 I@2 J K L M@2 F@2 N@4 H@2 O@2 F@2 G@2 H@2 I@2 J P
  L M@2 F@2 J K L M@2 F@2 G@2 H@2 I@2 J K L M@2 Q@2
>`.pickRestart({
  A: "[g3,bb3,eb4]/2", B: "[ab3,c4,eb4]/2", C: "[ab3,c4,f4]/2", D: "[bb3,d4,f4]", E: "[bb4,d5]@15 ~",
  F: "[g4,bb4,eb5]/2", G: "[ab4,c5,eb5]/2", H: "[f4,ab4,c5]/2", I: "[f4,bb4,d5]/2", J: "[g4,c5,eb5]", K: "[ab4,c5,eb5]",
  L: "[g4,bb4,eb5]", M: "[bb4,d5,f5]/2", N: "[[f4,bb4,d5]@12 [ab4,c5]@3 [g4,bb4]@17, ~@3 eb5@5]/4",
  O: "[[bb4,d5,f5]@3 ~]/2", P: "[c5,eb5] ~@15, ab4", Q: "[[g4,bb4,eb5]@9 ~@7]/2",
})).s("gm_string_ensemble_1").gain(0.11)

// other · alto sax
const alto_sax = note(`<
  ~@8 A B C D@2 B E F@2 G H I J K L@2 M@7 N@5 O P@2 A Q@2 R@2 B E S@2 T H U@2 K L@2 M@7 N@5 O P@2 V@4 W@2 X Y@8 Z@6 AA@2
  AB@5 AC@7 AD@6 AE@2 ~
>`.pickRestart({
  A: "~@7 f2", B: "bb2@3 ~ bb2 ~ bb2@4 c3@2 db3@2 c3@2", C: "f2@3 ~@9 f2@2 ab2@2",
  D: "[bb2 ab2@2 ~ gb2 bb2@2 ab2@3 ~@5 f2]/2", E: "~@2 f2@4 ~@6 bb2 ~ bb2 ~", F: "[bb2@2 ab2@6 gb2@4 f2@2 eb2@9 ~@9]/2",
  G: "bb2@3 c3@3 db3@2", H: "c3@3 db3@3 eb3@2", I: "db3@4 eb3 f3@3", J: "gb3@6 gb3 ~ gb3@3 ~ f3@2 eb3@2",
  K: "~@2 db3@4 f3 ~ f3@4 eb3@2 db3@2", L: "[~@2 c3@6 bb2@2 c3@3 ~ db3@13 ~@5]/2",
  M: "[~@10 eb4@2 d4@2 eb4@4 bb3 ~ bb3 ~ bb3@2 ~@2 eb4@2 d4@2 eb4@4 bb3 ~ bb3 ~ bb3@2 ~@2 eb4@2 d4@2 eb4@4 c4 ~ c4 ~ c4@3 ~ ab3@2 bb3@2 c4@10 ~@2 f4@2 e4@2 f4@4 c4 ~ c4 ~ c4@2 ~@2 f4@2 e4@2 f4@4 c4 ~ c4 ~ c4@2 ~@2 d4@2 eb4@2 d4@2]/7",
  N: "[~@2 c4@2 bb3 ~ bb3@4 c4@2 bb3@2 d4@8 ~@4 eb4@2 d4@2 eb4@4 c4 ~ c4 ~ c4@2 ~@2 eb4@2 d4@2 eb4@4 c4 ~ c4 ~ c4@3 ~ eb4@2 d4@2 eb4@4 bb3 ~ bb3@2 eb4@3 ~ f4@2 g4@2 f4@2]/5",
  O: "f4 ~", P: "[~@4 f4@3 ~ eb4 ~ d4@3 ~ eb4@5 ~@13]/2",
  Q: "[bb2@3 ~ bb2@2 ~@4 c3@2 db3@2 c3@4 f2@5 ~@5 f2@2 ab2@2]/2", R: "[bb2 ab2@2 ~ gb2 bb2@2 ab2@3 ~@6]/2",
  S: "[bb2@6 ab2@2 gb2@2 f2@4 eb2@9 ~@9]/2", T: "gb2@3 bb2@3 db3@2",
  U: "[db3 ~ db3@2 ~@8 f3@2 gb3@6 ~@2 gb3 ~ gb3@3 ~ f3@2 eb3@2]/2",
  V: "[~@6 eb4@2 d4@2 c4@3 ~ c4@4 bb3@3 ~ bb3 ~ bb3@4 c4@2 bb3@6 ~@2 g3@2 ab3@4 g3@2 f3@4 g3@6 ~@8]/4",
  W: "[~@6 g3@2 ab3@4 bb3 ~ bb3@4 ab3@4 ~@10]/2", X: "~@4 ab3@4 c4@4 eb4@3 ~",
  Y: "[eb4@10 d4@2 c4@2 bb3@10 ~@2 eb4@2 d4@2 eb4@4 bb3 ~ bb3 ~ bb3@2 ~@2 eb4@2 d4@2 eb4@4 bb3 ~ bb3 ~ bb3@2 ~@2 eb4@2 d4@2 eb4@4 c4 ~ c4 ~ c4 ~@3 ab3@2 bb3@2 c4@10 ~@2 f4@2 e4@2 f4@4 c4 ~ c4 ~ c4@2 ~@2 f4@2 e4@2 f4@4 c4 ~ c4 ~ c4@2 ~@2 d4@2 eb4@2 d4@2]/8",
  Z: "[~@2 c4@2 bb3 ~ bb3@4 c4@2 bb3@2 d4@8 ~@4 eb4@2 d4@2 eb4@4 c4 ~ c4 ~ c4@2 ~@2 eb4@2 d4@2 eb4@4 c4 ~ c4 ~ c4@3 ~ eb4@2 d4@2 eb4@4 bb3 ~ bb3@2 eb4@3 ~ f4@2 g4@2 f4@10 ~@8]/6",
  AA: "[~@4 [f3,f4]@3 ~ [eb3,eb4] ~@5 [f3,f4]@4 [eb3,eb4]@7 ~@7]/2", // F Eb F Eb
  AB: "[~@10 [eb3,eb4]@2 [d3,d4]@2 [eb3,eb4]@4 c4 ~ c4 ~ c4@2 ~@2 eb4@2 d4@2 eb4@4 c4 ~ c4 ~ c4@3 ~ eb4@2 d4@2 eb4@4 bb3@2 bb3@2 eb4@3 ~ f4@2 g4@2 f4@10 ~@8]/5", // Eb D Eb
  AC: "[~@4 f4@3 ~ eb4 ~ eb4@2 d4@2 eb4@4 bb3 ~ bb3 ~ bb3@2 ~@2 eb4@2 d4@2 eb4@4 bb3 ~ bb3 ~ bb3@2 ~@2 eb4@2 d4@2 eb4@4 c4 ~ c4 ~ c4@3 ~ ab3@2 bb3@2 c4@10 ~@2 f4@2 e4@2 f4@4 c4 ~ c4 ~ c4@2 ~@2 f4@2 e4@2 f4@4 c4 ~ c4 ~ c4@2 ~@2 d4@2 eb4@2 d4@2]/7",
  AD: "[~@2 c4@2 bb3 ~ bb3@4 c4@2 bb3@2 d4@8 ~@4 eb4@2 d4@2 eb4@4 c4 ~ c4 ~ c4@2 ~@2 eb4@2 d4@2 eb4@4 c4 ~ c4 ~ c4@3 ~ eb4@2 d4@2 eb4@4 bb3@2 bb3@2 eb4@3 ~ f4@2 g4@2 f4@10 ~@8]/6",
  AE: "[~@4 f4@3 ~ eb4 ~ d4@3 ~ eb4@18]/2",
})).s("gm_alto_sax").gain(0.63)

// drums · kick
const kick = s("bd").struct("<~ A@22 B C A@22 B A@6 B C A@14 D A@7 E A@14 D A@19 ~>".pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x!2", C: "x!3 ~ x ~ x ~", D: "x ~ x ~ x!3 ~", E: "x ~ x!3 ~@3",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct("<A B@7 C B@15 D B@7 E B@6 F B@7 G B@7 H B@7 I B@14 J B@7 K B@19 I B@5 I L>".pickRestart({
  A: "~@12 x!2 ~@2", B: "~ x ~ x", C: "~@11 x!2 ~@3", D: "~@4 x ~ x!2 ~ x!2 ~ x!3 ~", E: "~@2 x ~ x ~ x!4 ~@2 x ~ x!2",
  F: "~@3 x!2 ~@2 x ~@4 x ~@3", G: "~@4 x ~@6 x!2 ~@3", H: "~@5 x ~ x ~@2 x ~ x!4", I: "~@2 x ~ x ~@7 x ~ x!2",
  J: "~@4 x ~@2 x!2 ~@7", K: "~@2 x!3 ~ x!3 ~@2 x!2 ~ x!2", L: "x",
})).gain(0.27)

// drums · clap
const clap = s("cp").struct("<~@78 [~ x] ~@35>").gain(0.27)

// drums · low tom
const low_tom = s("lt").struct("<[~@7 x] ~@7 [~@13 x!2 ~] ~@105>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B C B A B C D A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C A B C B A B C B A B C B A B C B A B C
  B A B C B A B C B A B C A B C B A B C E A B C B A B C B A B C B A B C A B C B A@2 B C B A B C B A B C B A B ~
>`.pickRestart({
  A: "~ x!7", B: "x ~ x ~ x!3 ~ x ~ x ~ x ~ x!2", C: "x!8", D: "x", E: "x ~ x ~ x!3 ~ x ~@7",
})).gain(0.27)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~ A B A B A B A ~ 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@2 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@2 B A B A B A C A B A B A B A B A B A B A B A@2 B A B A@2 B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", B: "~ x ~ x ~@3 x ~ x ~ x ~ x ~@2", C: "~ x ~ x ~@3 x ~@8",
})).gain(0.09)

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A@2 ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 A ~@3 A ~@3 A
  ~@3 A ~@3 A ~@3 A ~@2 A ~@3 A@2 ~@3 A ~@3 A ~@3 A ~ A
>`.pickRestart({
  A: "x",
})).gain(0.27)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~
  [~ x ~ x ~ x ~ x]!7
  ~
  [~ x ~ x ~ x ~ x]!69
  [~ x ~ x ~@4]
  [~ x ~ x ~ x ~ x]!34
// … 18 more lines

More by Brunner & Brunner