Strudelify

Alles kan een mens gelukkig maken

Rene Froger

KeyB♭ majorTempo85 bpm
0:00/0:00
// Alles kan een mens gelukkig maken — Rene Froger
// 85 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 8 "#PIPE ORG" Pipe Org 3 -> reed organ
// note: Full arrangement: all 85 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(85/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 · synth strings 2 · "SYN STR 2"
const synth_strings_2 = note("<~ A@4 B C D E B C F G ~@16 B C F E H@2 F G ~@16 I J K@6 ~@24>".pickRestart({
  A: "[[c4,eb4,g4]@95 ~]/4", B: "[eb3,g3,c4]", C: "[f3,bb3,d4]", D: "[ab3,c4,eb4]@23 ~", E: "[g3,b3,d4]",
  F: "[ab3,c4,eb4]", G: "[b3,d4,g4]", H: "[[eb3,g3,c4]@23 ~ [f3,d4]@24, ~@23 bb3@24 ~]/2",
  I: "[eb3,ab3,c4] [f3,bb3,d4]", J: "[g3,b3,d4] [g3,c4,eb4]",
  K: "[[ab3,c4,eb4]@18 [g3,b3,d4]@24 [eb3,ab3,c4]@12 [f3,bb3,d4]@12 [g3,b3,d4]@12 [g3,c4,eb4]@12 [ab3,c4,eb4]@23 ~ [g3,b3,d4]@24 ~@6]/6", // Ab G Ab Bb G Cm Ab G
})).s("gm_synth_strings_2").gain(0.2)

// bass · electric bass finger · "FINGERDBA"
const bass = note(`<
  ~ A B A B A C D E A C F G H I J K F L M L H N J L F O P Q A C D E A C F G H I J K F L M L H N J L F O P Q R S T U V W
  X Y Z AA AB AC AD AE AF AG Z AA AB AC AD AE AF AG Z AA AB AC AD AE AF AH
>`.pickRestart({
  A: "c2 ~@2 c2 ~@2 c2@3 ~@2 c2 ~@2 c2 ~@2 c2@5 ~@2", B: "c2 ~@2 c2 ~@2 c2@4 ~ c2 ~@2 c2 ~@2 c2@5 ~@2",
  C: "bb1 ~@2 bb1 ~@2 bb1@4 ~ bb1 ~@2 bb1 ~@2 bb1@5 ~@2", D: "ab1 ~@2 ab1 ~@2 ab1@3 ~@2 ab1 ~@2 ab1 ~@2 ab1@5 ~@2",
  E: "g1 ~@2 g1 ~@2 g1@4 ~ b1 ~@2 b1 ~@2 b1@6 ~", F: "ab1 ~@2 ab1 ~@2 ab1@3 ~@2 ab1 ~@2 ab1 ~@2 ab1@4 ab1@3",
  G: "g1 ~@2 g1 ~@2 g1@4 ~ b1 ~@2 b1 ~@2 b1@4 d2@3", H: "eb2 ~@2 eb2 ~@2 eb2@3 ~@2 eb2 ~@2 eb2 ~@2 eb2@4 eb2@3",
  I: "d2 ~@2 d2 ~@2 d2@4 ~ d2 ~@2 d2 ~@3 d2@5 ~", J: "c2 ~@2 c2 ~@2 c2@3 ~@2 c2 ~@2 c2 ~@2 c2@4 c2@3",
  K: "bb1 ~@2 bb1 ~@2 bb1@4 ~ bb1 ~@2 bb1 ~@3 bb1@2 ~ bb1@3", L: "bb1 ~@2 bb1 ~@2 bb1@4 ~ bb1 ~@2 bb1 ~@2 bb1@4 bb1@3",
  M: "c2 ~@2 c2 ~@2 c2@3 ~@2 c2 ~@2 c2 ~@2 c2@7", N: "d2 ~@2 d2 ~@2 d2@4 ~ d2 ~@2 d2 ~@2 d2@6 ~",
  O: "bb1 ~@2 bb1 ~@2 bb1@4 ~ bb1 ~@2 bb1 ~@2 bb1@3 ~ bb1@3", P: "c2 ~@2 c2 ~@2 c2@3 ~@2 c2 ~@2 c2 ~@2 c2@3 ~ c2@3",
  Q: "bb1 ~@2 bb1 ~@2 bb1@4 ~ bb1 ~@2 bb1 ~@2 bb1@3 bb1 c2@2 bb1", R: "ab1 ~@2 ab1 ~@2 ab1@5 bb1 ~@2 bb1 ~@3 bb1@6",
  S: "b1 ~@2 b1 ~@2 b1@5 c2 ~@2 c2 ~@3 c2@3 bb1@3", T: "ab1 ~@2 ab1 ~@2 ab1@3 ~@2 f1 ~@2 f1@2 ~ f1 g1 ~@2 g1 ~@2",
  U: "g1@4 ~ g1 ~@2 g1 ~@2 g1 g1@3 g1@3 ab1 ~@2 ab1 ~@2", V: "ab1@5 bb1 ~@2 bb1@2 ~@2 bb1@3 bb1@3 b1 ~@2 b1 ~@2",
  W: "b1@4 ~ c2 ~@2 c2@2 ~@2 c2@3 bb1@3 ab1 ~@2 ab1 ~@2", X: "ab1@3 ~@2 f1 ~@2 f1 ~@2 f1 f1@3 f1@3 g1 ~@2 g1 ~@2",
  Y: "g1@4 ~ g1 ~@2 g1 ~@2 g1@3 ~ g1@3 eb2 ~@2 eb2 ~@2", Z: "eb2@3 ~@2 eb2 ~@2 eb2 ~@2 eb2@4 eb2@3 d2 ~@2 d2 ~@2",
  AA: "d2@4 ~ d2 ~@2 d2 ~@3 d2@5 ~ c2 ~@2 c2 ~@2", AB: "c2@3 ~@2 c2 ~@2 c2 ~@2 c2@4 c2@3 bb1 ~@2 bb1 ~@2",
  AC: "bb1@4 ~ bb1 ~@2 bb1 ~@3 bb1@2 ~ bb1@3 ab1 ~@2 ab1 ~@2",
  AD: "ab1@3 ~@2 ab1 ~@2 ab1 ~@2 ab1@4 ab1@3 bb1 ~@2 bb1 ~@2", AE: "bb1@4 ~ bb1 ~@2 bb1 ~@2 bb1@4 bb1@3 c2 ~@2 c2 ~@2",
  AF: "c2@3 ~@2 c2 ~@2 c2 ~@2 c2@7 bb1 ~@2 bb1 ~@2", AG: "bb1@4 ~ bb1 ~@2 bb1 ~@2 bb1@4 bb1@3 eb2 ~@2 eb2 ~@2",
  AH: "bb1@4 ~ bb1 ~@2 bb1 ~@2 bb1@4 bb1@3 eb2 ~@5",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~ A@5 B A C A B A C D B A B E B A B D B A B E B A B A B A C A B A C D B A B E B A B D B A B E B A B F G H I J K H L M
  N O P Q N O R M N O P Q N O R M N O P Q N O S
>`.pickRestart({
  A: "~@3 [eb4,g4,c5] ~@5 [eb4,g4,c5] ~@5 [eb4,g4,c5] ~@5 [eb4,g4,c5] ~@2", // Cm
  B: "~@3 [d4,f4,bb4] ~@5 [d4,f4,bb4] ~@5 [d4,f4,bb4] ~@5 [d4,f4,bb4] ~@2", // Bb
  C: "~@3 [d4,g4,b4] ~@5 [d4,g4,b4] ~@5 [d4,g4,b4] ~@5 [d4,g4,b4] ~@2", // G
  D: "~@3 [eb4,g4,bb4] ~@5 [eb4,g4,bb4] ~@5 [eb4,g4,bb4] ~@5 [eb4,g4,bb4] ~@2", // Eb
  E: "~@3 [eb4,ab4,c5] ~@5 [eb4,ab4,c5] ~@5 [eb4,ab4,c5] ~@5 [eb4,ab4,c5] ~@2", // Ab
  F: "~@3 [eb4,ab4,c5] ~@5 [eb4,ab4,c5] ~@5 [d4,f4,bb4] ~@5 [d4,f4,bb4] ~@2", // Ab Bb
  G: "~@3 [d4,g4,b4] ~@5 [d4,g4,b4] ~@5 [eb4,g4,c5] ~@5 [eb4,g4,c5] ~@2", // G Cm
  H: "~@3 [eb4,ab4,c5] ~@5 [eb4,ab4,c5] ~@5 [eb4,ab4,c5] ~@5 [d4,g4,b4] ~@2", // Ab G
  I: "~@3 [d4,g4,b4] ~@5 [d4,g4,b4] ~@5 [d4,g4,b4] ~@5 [eb4,ab4,c5] ~@2", // G Ab
  J: "~@3 [eb4,ab4,c5] ~@5 [d4,f4,bb4] ~@5 [d4,f4,bb4] ~@5 [d4,g4,b4] ~@2", // Ab Bb G
  K: "~@3 [d4,g4,b4] ~@5 [eb4,g4,c5] ~@5 [eb4,g4,c5] ~@5 [eb4,ab4,c5] ~@2", // G Cm Ab
  L: "~@3 [d4,g4,b4] ~@5 [d4,g4,b4] ~@5 [d4,g4,b4] ~@5 [eb4,g4,bb4] ~@2", // G Eb
  M: "~@3 [eb4,g4,bb4] ~@5 [eb4,g4,bb4] ~@5 [eb4,g4,bb4] ~@5 [d4,f4,bb4] ~@2", // Eb Bb
  N: "~@3 [d4,f4,bb4] ~@5 [d4,f4,bb4] ~@5 [d4,f4,bb4] ~@5 [eb4,g4,c5] ~@2", // Bb Cm
  O: "~@3 [eb4,g4,c5] ~@5 [eb4,g4,c5] ~@5 [eb4,g4,c5] ~@5 [d4,f4,bb4] ~@2", // Cm Bb
  P: "~@3 [d4,f4,bb4] ~@5 [d4,f4,bb4] ~@5 [d4,f4,bb4] ~@5 [eb4,ab4,c5] ~@2", // Bb Ab
  Q: "~@3 [eb4,ab4,c5] ~@5 [eb4,ab4,c5] ~@5 [eb4,ab4,c5] ~@5 [d4,f4,bb4] ~@2", // Ab Bb
  R: "~@3 [d4,f4,bb4] ~@5 [d4,f4,bb4] ~@5 [d4,f4,bb4] ~@5 [eb4,g4,bb4] ~@2", // Bb Eb
  S: "~@3 [d4,f4,bb4] ~@5 [d4,f4,bb4] ~@5 [d4,f4,bb4] ~@8", // Bb
})).s("gm_electric_guitar_clean").gain(0.26)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~ A B A C A D E F G D E H I J K L M N O P I J K L M N O P G D E F G D E H I J K L M N O P I J K L M N O P ~@7 Q R S T
  U V W X Y R S T U V W X Y R S T U V W X Z
>`.pickRestart({
  A: "c4 ~ c4!2 ~@2 c4 ~@2 c4 ~@5 c4@2 bb3@3 ~ c4@2 bb3", B: "c4 ~ c4!2 ~@2 c4 ~@2 c4 ~@2 c4 ~@2 c4@2 bb3@3 ~ c4@2 bb3",
  C: "c4 ~ c4 bb3 ~@2 c4 ~@2 c4 ~@5 c4@2 bb3 ~@2 bb3 ~@2 bb3", D: "d4 ~ c4 bb3 ~@2 c4 ~@8 c4 ~ bb3@3 bb3 c4@2 bb3",
  E: "c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@5 c4@2 bb3@3 ~ c4@2 c4", F: "b3 ~ c4 b3 ~@2 b3 ~@2 b3 ~@4 b3 ~@2 b3 ~@2 b3 ~@2 bb3",
  G: "~@2 c4!2 ~@2 c4 ~@2 c4 ~@5 c4@2 bb3@3 ~ c4@2 bb3", H: "b3 ~ c4 b3 ~@2 b3 ~@2 b3 ~@4 b3 ~@2 b3 ~@2 b3 ~@2 c4",
  I: "bb3 ~ bb3!2 ~@2 bb3 ~@2 bb3 ~@5 c4@2 bb3@3 ~ c4@2 bb3", J: "bb3 ~ c4 bb3 ~@2 bb3 ~@7 bb3 c4 ~ bb3@3 bb3 c4@2 bb3",
  K: "c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@5 c4@2 bb3@2 ~ bb3 bb3@2 bb3",
  L: "bb3 ~ bb3!2 ~@2 bb3 ~@2 bb3 ~@4 bb3 ~@2 bb3 ~@2 bb3 ~@2 bb3", M: "c4 ~ c4!2 ~@2 c4 ~@2 c4 ~@11 c4@2 bb3",
  N: "bb3 ~ bb3 c4 ~@2 bb3 ~@2 bb3 ~@5 c4 ~ bb3@3 bb3 c4@2 bb3", O: "c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@5 c4@2 bb3@3 ~ c4@2 bb3",
  P: "bb3 ~ c4 bb3 ~@2 bb3 ~@2 bb3 ~@4 bb3 ~@2 bb3 ~@2 bb3 c4@2 bb3", Q: "~@18 bb3 ~ bb3!2 ~@2",
  R: "bb3 ~@2 bb3 ~@5 c4@2 bb3@3 ~ c4@2 bb3!2 ~ c4 bb3 ~@2", S: "bb3 ~@7 bb3 c4 ~ bb3@3 bb3 c4@2 bb3 c4 ~@2 c4 ~@2",
  T: "c4 ~@2 c4 ~@5 c4@2 bb3@2 ~ bb3 bb3@2 bb3!2 ~ bb3!2 ~@2",
  U: "bb3 ~@2 bb3 ~@4 bb3 ~@2 bb3 ~@2 bb3 ~@2 bb3 c4 ~ c4!2 ~@2", V: "c4 ~@2 c4 ~@11 c4@2 bb3!2 ~ bb3 c4 ~@2",
  W: "bb3 ~@2 bb3 ~@5 c4 ~ bb3@3 bb3 c4@2 bb3 c4 ~@2 c4 ~@2", X: "c4 ~@2 c4 ~@5 c4@2 bb3@3 ~ c4@2 bb3!2 ~ c4 bb3 ~@2",
  Y: "bb3 ~@2 bb3 ~@4 bb3 ~@2 bb3 ~@2 bb3 c4@2 bb3!2 ~ bb3!2 ~@2",
  Z: "bb3 ~@2 bb3 ~@4 bb3 ~@2 bb3 ~@2 bb3 c4@2 bb3!2 ~@5",
})).s("gm_electric_guitar_muted").gain(0.14).pan(0.2)

// other · electric guitar muted · "MUTED GTR" · soft notes
const electric_guitar_muted_2 = note(`<
  ~ A@3 B A ~ C ~ A ~ C ~ A ~ D ~ E ~ C ~ A ~ D ~ E ~ C ~ A ~ C ~ A ~ C ~ A ~ D ~ E ~ C ~ A ~ D ~ E ~ C ~@9 F G ~@2 B G
  B ~ F G ~@2 B G B ~ F G ~@2 B G B ~
>`.pickRestart({
  A: "~@14 bb3 ~@5 bb3 ~@3", B: "~@14 bb3 ~@9", C: "~@2 c4 ~@17 bb3 ~@3", D: "~@2 c4 ~@21", E: "~@20 bb3 ~@3",
  F: "~@8 bb3 ~@5 bb3 ~@9", G: "~@20 c4 ~@3",
})).s("gm_electric_guitar_muted").gain(0.09).pan(0.2)

// chords · distortion guitar · "DISTORTIO"
const distortion_guitar = note(`<
  ~ A@4 B@2 ~@2 C D E F G H I J K L M N G H I O K L M N B@2 ~@2 P Q R S G H I J K L M N G H I O K L M T U V W@8 X@8 Y
  Z@7 AA@6
>`.pickRestart({
  A: "[[c3,g3,c4,eb4,g4]@47 ~]/4", B: "c3/2", C: "c3", D: "d3", E: "eb3", F: "g3", G: "[eb3,g3]@18 [eb3,g3]@5 ~",
  H: "[bb2,f3]@23 ~", I: "[c3,g3]@3 [c3,g3]", J: "[bb2,f3]", K: "[c3,c4]@6 [d3,d4] [eb3,eb4], ab2",
  L: "[d3,d4]@20 [eb3,eb4] [f3,f4]@3, bb2", M: "[eb3,eb4]@6 [f3,f4] [g3,g4], c3", N: "[bb2,f3,f4]",
  O: "f3@4 g3 f3@2 bb2, bb2@7 ~", P: "[c3,c4]", Q: "[d3,d4]", R: "[eb3,eb4]", S: "[g3,g4]", T: "f4@7 c4, [bb2,f3]",
  U: "[ab2,c3,ab3] [bb2,d3,bb3,d4], c4 ~@7", V: "[b2,d3,b3,d4] [c3,eb3,c4,eb4]",
  W: "[eb4@6 ~@6 f3@3 f3@3 [g2,d3,g3,d4]@24 [ab2,c3,ab3,c4]@12 [bb2,d3,bb3,d4]@12 [b2,d3,b3,d4]@12 c4@9 bb3@3 eb3@18 eb3@3 f3@3 [g2,g3,b3,d4]@24 [eb3,g3]@18 [eb3,g3]@5 ~ [bb2,f3]@23 ~ [c3,g3]@6, [ab2,eb3]@3 ~@10 [c3,eb3,eb4]@2 [ab2,ab3,eb4]@4 ~@13, ab3 ~@15, ~ c4@2 ~@29]/8", // G5 Ab Bb Bm G Eb Bb5 C5 …
  X: "[~@12 [c3,g3]@6 [bb2,f3]@24 [c3,c4]@18 [d3,d4]@3 [eb3,eb4]@3 [d3,d4]@20 [eb3,eb4] [f3,f4]@3 [eb3,eb4]@18 [f3,f4]@3 [g3,g4]@3 [bb2,f3,f4]@24 [eb3,g3]@18 [eb3,g3]@5 ~ [bb2,f3]@23 ~ [c3,g3]@6, ~@7 ab2@4 bb2@4 c3@4 ~@13]/8", // C5 Bb5 C D Eb D Eb F …
  Y: "~@2 [c3,g3] [bb2,f3]", // C5 Bb5
  Z: "[~@6 g3@3 f3@6 bb2@3 [c3,c4]@18 [d3,d4]@3 [eb3,eb4]@3 [d3,d4]@20 [eb3,eb4] [f3,f4]@3 [eb3,eb4]@18 [f3,f4]@3 [g3,g4]@3 [bb2,f3,f4]@24 [eb3,g3]@18 [eb3,g3]@5 ~ [bb2,f3]@23 ~ [c3,g3]@6, ~@3 ab2@4 bb2@4 c3@4 ~@13]/7", // C D Eb D Eb F Eb F …
  AA: "[~@12 [c3,g3]@6 [bb2,f3]@24 [c3,c4]@18 [d3,d4]@3 [eb3,eb4]@3 [d3,d4]@20 [eb3,eb4] [f3,f4]@3 [eb3,eb4]@18 [f3,f4]@3 [g3,g4]@3 [bb2,f3,f4]@24 ~@6, ~@7 ab2@4 bb2@4 c3@4 ~@5]/6", // C5 Bb5 C D Eb D Eb F …
})).s("gm_distortion_guitar").gain(0.11).pan(0.4)

// chords · guitar harmonics · "GTHARMONI"
const guitar_harmonics = note("<A B@4 ~@80>".pickRestart({
  A: "[g2,bb3,eb4,bb4]", B: "[~@59 bb4@37, c3@24 ~ g3@22 eb4@28 ~@21, ~@7 eb3@14 ~@27, ~@33 bb3@28 ~@35]/4",
})).s("gm_guitar_harmonics").gain(0.17).pan(0.4)

// chords · reed organ · "#PIPE ORG"
const reed_organ = note(`<
  ~@13 A B C D E D F B G@2 C B E B C B ~@8 A B C D E D F B G@2 C B E B C B H I J@3 K@8 L M@8 N@3 O@7
>`.pickRestart({
  A: "[eb4,g4,bb4]@23 ~", B: "[d4,f4,bb4]", C: "[eb4,g4,c5]", D: "[d4,f4,bb4]@23 ~", E: "[c4,eb4,ab4]",
  F: "[eb4,g4,c5]@23 ~", G: "[[eb4,g4] [d4,f4], bb4]/2", H: "[eb4,g4,c5] [d4,f4,bb4]",
  I: "[d4,f4,b4]@12 [eb4,g4,c5]@11 ~", // Bdim Cm
  J: "[[eb4,ab4,c5]@18 [d4,g4,b4]@23 ~ [eb4,g4,c5]@12 [d4,f4,bb4]@11 ~ [d4,f4,b4]@6]/3", // Ab G Cm Bb Bdim
  K: "[~@6 [eb4,g4,c5]@12 [eb4,ab4,c5]@24 [d4,g4,b4]@24 [eb4,g4,bb4]@23 ~ [d4,f4,bb4]@24 [eb4,g4,c5]@24 [d4,f4,bb4]@23 ~ [c4,eb4,ab4]@24 [d4,f4,bb4]@6]/8", // Cm Ab G Eb Bb Cm Bb Ab …
  L: "~@3 [eb4,g4,c5]", // Cm
  M: "[~@3 [d4,f4,bb4]@4 [eb4,g4]@4 [d4,f4]@4 [eb4,g4,c5]@4 [d4,f4,bb4]@4 [c4,eb4,ab4]@4 [d4,f4,bb4]@4 [eb4,g4,c5], ~@7 bb4@8 ~@17]/8", // Bb Eb Dm Cm Bb Ab Bb Cm
  N: "[~@3 [d4,f4,bb4]@4 [eb4,g4,bb4]@4 [d4,f4], ~@66 bb4 ~@5]/3", // Bb Eb Dm
  O: "[~@18 [eb4,g4,c5]@24 [d4,f4,bb4]@23 ~ [c4,eb4,ab4]@24 [d4,f4,bb4]@23 ~ [eb4,g4,c5]@23 ~ [d4,f4,bb4]@24 ~@6]/7", // Cm Bb Ab Bb Cm Bb
})).s("gm_reed_organ").gain(0.08).pan(0.7)

// other · marimba
const marimba = note(`<
  ~ A B C A ~@8 D E C D A E C D@2 E C D A E C D A F A ~ A F A ~ D E C D A E C D@2 E C D A E C D ~@7 G H I J K L I J M H
  I J K L I J M H I J K L I J N
>`.pickRestart({
  A: "~@2 [c5,c6] ~@3 [c5,c6] ~@4 [c5,c6] ~@3 [c5,c6] ~@4 [c5,c6] ~@3", // C
  B: "[c5,c6] ~@4 [c5,c6] ~@3 [c5,c6] ~@4 [c5,c6] ~@3 [c5,c6] ~@4 [c5,c6]", // C
  C: "~@3 [c5,c6] ~@4 [c5,c6] ~@3 [c5,c6] ~@4 [c5,c6] ~@6", // C
  D: "~@2 [bb4,bb5] ~@3 [bb4,bb5] ~@4 [bb4,bb5] ~@3 [bb4,bb5] ~@4 [bb4,bb5] ~@3", // Bb
  E: "[bb4,bb5] ~@4 [bb4,bb5] ~@3 [bb4,bb5] ~@4 [bb4,bb5] ~@3 [bb4,bb5] ~@4 [c5,c6]", F: "[c5,c6] ~@23",
  G: "~@20 [bb4,bb5] ~@3", H: "[bb4,bb5] ~@4 [bb4,bb5] ~@3 [bb4,bb5] ~@4 [bb4,bb5] ~@3 [bb4,bb5] ~@4 [bb4,bb5]",
  I: "~@3 [bb4,bb5] ~@4 [bb4,bb5] ~@3 [bb4,bb5] ~@4 [c5,c6] ~@3 [c5,c6] ~@2", // Bb C
  J: "~@2 [c5,c6] ~@3 [c5,c6] ~@4 [c5,c6] ~@8 [bb4,bb5] ~@3", // C Bb
  K: "[bb4,bb5] ~@4 [bb4,bb5] ~@3 [bb4,bb5] ~@4 [bb4,bb5] ~@5 [c5,c6] ~@3", // Bb C
  L: "[c5,c6] ~@4 [c5,c6] ~@3 [c5,c6] ~@4 [c5,c6] ~@3 [bb4,bb5] ~@4 [bb4,bb5]", // C Bb
  M: "[bb4,bb5] ~@4 [bb4,bb5] ~@3 [bb4,bb5] ~@4 [bb4,bb5] ~@5 [bb4,bb5] ~@3", // Bb
  N: "[bb4,bb5] ~@4 [bb4,bb5] ~@3 [bb4,bb5] ~@4 [bb4,bb5] ~@9", // Bb
})).s("gm_marimba").gain(0.16).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~
  [x ~@5 x ~@4 x ~@6 x ~@5]!4
  [x!4]!8
  [x ~@5 x ~@4 x ~@2 x ~@3 x ~@5]!16
  [x!4]!8
  [x ~@5 x ~@4 x ~@2 x ~@3 x ~@5]!19
  [x ~@4 x ~@2 x ~@3 x ~@5 x ~@5]!29
>`).gain(0.64)

// drums · snare
const snare = s("sd").struct("<~ A@11 B A@23 C A@15 D A@31 E>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~@3 x ~@5 x ~@5 x ~@4 x!2 ~ x", C: "~@3 x ~@5 x ~@5 x ~@5 x ~ x",
  D: "~@3 x ~@5 x ~@5 x ~@4 x!2 ~@2", E: "~ x ~ x ~ x ~@2",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct("<~ [x!7 ~]!54 [x!8] [x!5 ~ x!2]!28 [x!5 ~ x ~]>").gain(0.64)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~
  [~@11 x ~@2 x ~@9]!4
  ~@8
  [~@11 x ~@2 x ~@9]!16
  ~@8
  [~@11 x ~@2 x ~@9]!19
  [~@5 x ~@2 x ~@15]!29
>`).gain(0.32)

// drums · low tom
const low_tom = s("lt").struct("<[~@21 x!3] ~@84>").gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<A B@4 ~@23 C ~@15 D ~@15 E ~@7 F ~@7 G ~@7 H>".pickRestart({
  A: "~@18 x!3 ~@3", B: "~@6 x!3 ~@9 x!3 ~@3", C: "~@20 x!4", D: "~@20 x!2 ~@2", E: "x ~@7 x ~@5 x!4 ~@6",
  F: "~@14 x!2 ~@8", G: "x ~@7 x ~@5 x!2 ~@8", H: "x ~@11 x!6 ~@6",
})).gain(0.48)

// drums · open hat
const open_hat = s("oh").struct("<~ [~@7 x]!54 ~ [~@5 x ~@2]!29>").gain(0.48)

// … 21 more lines

More by Rene Froger