Strudelify

Kopa Koopavond

Paul de Leeuw

KeyB♭ minorTempo128 bpm
0:00/0:00
// Kopa Koopavond — Paul de Leeuw
// 128 bpm, 4/4, key A# minor. 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 130 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(128/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 · electric bass finger · "FINGERDBA"
const bass = note(`<
  ~ A B A C D E F G D E H G I J K L D E D M N O P Q R S A B A C D E F G D E H G I J K L D E D M N O P Q R S A B A C D E
  F G D E H G I J K L D E D M N O P Q R S A B A B T U V W X Y V Z AA AB AC AD AE AF D E F G D E H G I J K L D E D M N O
  P Q R S A B A C ~ A B A B A AF
>`.pickRestart({
  A: "f2@2 ~ f2 ~@2 c2@4 f2@3 e2@3", B: "eb2@2 ~ eb2 ~@2 bb1@4 eb2@3 e2@3", C: "eb2@3 e2@3 ~@10",
  D: "eb2@2 bb1@2 ab1@2 eb2 ab1", E: "db2@4 ab1@4 db2@3 db2 ab1@4", F: "g1@3 d2 g2@4 c2@4 c2@4",
  G: "f2@2 c2@2 f2@2 c2 ~", H: "g1@3 ~ g1@4 c2@4 c2@4", I: "bb1@2 ~ c2@3 f2@2 ~@8", J: "bb1@3 c2@3 f2@2 ~@8",
  K: "bb1 c2", L: "f2@2 e2@2 eb2 ~@3", M: "db2@4 ab1@4 db2 ~ bb1@3 ~ bb1@2", N: "eb2 bb1 ab1 eb2",
  O: "bb1@2 f2@2 bb2@2 f2 bb1", P: "eb2 bb1 ab1!2", Q: "f1!2 bb1!2", R: "eb1 f1 gb1 g1 ab1 a1 bb1 b1", S: "c2@15 ~",
  T: "f2@3 f2 c2@4 f2@3 f2 c2@4", U: "f2@3 f2 c2@4 f1@3 gb1@3 g1@2", V: "ab1@3 ab1 eb2@4 ab2@3 ab2 eb2@4",
  W: "ab1@3 ab1 eb2@4 ab1@3 a1@3 bb1@2", X: "b1@3 b1 gb2@4 b2@3 b2 gb2@4", Y: "b1@3 b1 gb2@4 b1@3 bb1@3 a1@2",
  Z: "ab1@3 ab1 eb2@4 ab1@3 g1@3 gb1@2", AA: "f1", AB: "e1", AC: "eb2@3 eb2 bb1@4 eb2@2 eb2@3 e2@3",
  AD: "f2@3 f2 c2@4 f2@2 f2@3 e2@3", AE: "eb2@3 eb2 bb1@4 eb2@3 eb2 bb1@4", AF: "eb2@3 e2@2 ~@11",
})).s("gm_electric_bass_finger").gain(0.38)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~ A B C D E F G H E F G H I@2 J K E F E L M N O P Q R A B C D E F G H E F G H I@2 J K E F E L M N O P Q R A B C D E F
  G H E F G H I@2 J K E F E L M N O P Q R A B A B ~@14 E F G H E F G H I@2 J K E F E L M N O P Q R A B C D ~ A B A B ~@2
>`.pickRestart({
  A: "[f3,c4,eb4,g4]@9 ~ [f3,c4,eb4,g4]@3 [e3,b3,d4,gb4]@3", // Cm Bm
  B: "[eb3,bb3,db4,f4]@9 ~ [eb3,bb3,db4,f4]@2 ~ [e3,b3,d4,gb4]@2 ~", // Bbm Bm
  C: "[f3,c4,eb4,g4]@9 ~ [f3,c4,eb4,g4]@2 ~ [e3,b3,d4,gb4]@2 ~", // Cm Bm
  D: "[eb3,bb3,db4,f4]@2 ~ [e3,b3,d4,gb4]@2 ~ [c4,eb4,g4] ~@9, ~@3 f3 ~@4", // Bbm Bm Cm
  E: "[eb3,db4,gb4,bb4]@7 ~ [eb4,gb4,db5]@4 [eb4,gb4,c5]@3 ~, ~ ab2", // Ebm7 Cdim
  F: "[db3,c4,f4,ab4]@7 ~ [db3,bb3,db4,ab4]@8, ~@4 f4@3 ~", G: "[g3,db4,f4,bb4] [c3,bb3,e4,g4]",
  H: "[f3,ab3,eb4,g4]@7 ~ [f3,ab3,c4,d4,f4]@7 ~", I: "[g3,bb3,e4]@2 ~ [bb3,c4,g4]@2 ~ [ab3,c4,f4] ~@9",
  J: "[ab3,bb3,db4,f4]@7 ~@5 g4@3 ~, ~@8 [bb3,c4,e4]@7 ~", K: "[c4,f4,ab4]@3 ~ [c4,e4,g4]@3 ~ [c4,eb4,gb4]@2 ~@6",
  L: "[db3,c4,f4,ab4]@7 ~@3 [eb4,f4,ab4,c5]@4 [d4,f4,ab4,bb4] ~", // Dbmaj7 Fm7 Bb7
  M: "[eb3,db4,gb4,bb4]@7 ~ [eb4,gb4,db5]@3 ~ [eb4,gb4,c5]@3 ~, ~@8 ab3@7 ~", // Ebm7 Cdim
  N: "[bb3,eb4,ab4,c5]@3 [bb3,d4,f4,bb4]@4 ~", O: "[eb3,db4,gb4,bb4]@7 ~ [ab3,eb4,gb4,c5]@7 ~",
  P: "[f3,eb4,ab4,c5]@7 ~ [bb3,d4,f4,bb4]@7 ~", Q: "[eb3,db4,gb4,bb4]", R: "[e4,g4,bb4]@13 ~@3",
})).s("gm_epiano2").gain(0.25)

// chords · tenor sax
const tenor_sax = note(`<
  ~ A B A C ~@2 D E F G ~@2 H I ~ J F ~@2 K F L ~@4 A M A C ~@2 D E F G N O H I ~ J F ~@2 K F L ~@4 A M A C ~@2 D E F G
  N O H I ~ J F ~@2 K F L ~@4 A M A P Q@2 R@2 S@2 T@2 U V W ~@2 X ~@2 D E F G N O H I ~ J F ~@2 K F L ~@4 A M A C ~@6 X
>`.pickRestart({
  A: "[c4,eb4,g4]@2 ~ [c4,eb4,g4] ~@6 [c4,eb4,g4]@3 [b3,d4,gb4]@3", // Cm Bm
  B: "[bb3,db4,f4]@2 ~ [bb3,db4,f4] ~@6 [bb3,db4,f4]@3 [b3,d4,gb4]@3", // Bbm Bm
  C: "[bb3,db4,f4]@3 [b3,d4,gb4]@3 [c4,eb4,g4] ~@9", D: "[f3,f4] [e3,e4]", E: "[eb3,eb4]@8 [d3,d4]@7 ~",
  F: "~@6 [eb4,gb4]!2 ~@8", G: "~@2 [eb4,ab4]@3 ~ [eb4,ab4] ~ [db4,ab4]@2 ~@6",
  H: "[db4,e4,g4,bb4]@2 ~ [c4,e4,g4,bb4] ~@2 [c4,f4,ab4] ~@9", // Dbdim C7 Fm
  I: "[db4,e4,g4,bb4]@3 [c4,e4,g4,bb4] ~@2 [c4,f4,ab4] ~@9", J: "[eb4,ab4,c5]@4 [e4,g4,c5]@3 ~ [gb4,c5] ~@7",
  K: "~@10 [f4,ab4,bb4]@4 [f4,ab4,bb4] ~", L: "[f4,ab4]@3 ~ [f4,ab4]@2 [f4,ab4]@8 ~@2",
  M: "[bb3,db4,f4]@2 ~ [bb3,db4,f4] ~@2 f4 eb4 [ab3,bb3] [db3,eb3,gb3] ~@3 [b3,d4,gb4]@3, ~@3 [gb3,db4] ~@4", // Bbm Absus2 Ebm7 Bm Gb5
  N: "[bb3,db4,f4]@7 ~ [bb3,f4]@4 [b3,gb4]@4, ~ db4", O: "[c4,eb4,g4] [c4,f4], ~@8 ab3@5 ~@3",
  P: "[bb3,f4]@5 ~@11, db4@3 ~@13", Q: "[[c4,eb4,g4]@6 [c4,eb4,g4]@18 [c4,eb4,g4]@3 [db4,e4,ab4]@3 [d4,f4,a4]@2]/2",
  R: "[[eb4,gb4,bb4]@24 [eb4,gb4,bb4]@3 [e4,g4,b4]@3 [f4,ab4,c5]@2]/2", // Ebm Em Fm
  S: "[[gb4,a4,db5]@24 [gb4,a4,db5]@3 [f4,ab4,c5]@3 [e4,g4,b4]@2]/2", T: "[[eb4,gb4,bb4]@3 ~]/2",
  U: "[f3,bb3,eb4,g4]@15 ~", V: "[e3,a3,d4,gb4]@15 ~", W: "~@12 [eb4,g4] ~@3",
  X: "[eb3,bb3,db4,f4]@3 [e3,b3,d4,gb4]@3 [f3,c4,eb4,g4]@3 ~@7", // Bbm Bm Cm
})).s("gm_tenor_sax").gain(0.19).pan(0.9)

// chords · trumpet
const trumpet = note(`<
  ~ A B C D ~@4 E F ~@2 G H ~ I J ~@2 K J L ~@2 M N C O C D ~@4 E F P ~ G H ~ I J ~@2 K J L ~@2 M N C O C D ~@4 E F P ~
  G H ~ I J ~@2 K J L ~@2 M N C O C Q R S T U V W X Y ~@5 Z ~@4 E F P ~ G H ~ I J ~@2 K J L ~@2 M N C O C D ~ C O C AA
  AB AC
>`.pickRestart({
  A: "[f2,f3,eb4,g4]@2 ~ [f2,f3,eb4,g4] ~@6 [f2,f3,g4]@3 [e2,e3,d4,gb4]@3, ~@9 eb4@3 ~@4", // Cm Fsus2 D
  B: "[eb2,eb3,db4,f4]@2 ~ [eb2,eb3,db4,f4] ~@6 [eb2,eb3,db4,f4]@3 [e2,e3,d4,gb4]@3", // Db D
  C: "[f2,f3,eb4,g4]@2 ~ [f2,f3,eb4,g4] ~@6 [f2,f3,eb4,g4]@3 [e2,e3,d4,gb4]@3", // Cm D
  D: "[eb2,eb3,db4,f4]@3 [e2,e3,d4,gb4]@3 [f2,f3]@2 ~@8, ~@6 [eb4,g4] ~@9", E: "~@6 [eb4,gb4,bb4,db5]!2 ~@8",
  F: "~@2 [f4,ab4,c5,eb5]@3 f5 eb5 ~ [f4,bb4,db5]@3 ~@5, ~@3 ab4@2 ~@3", // Fm7 Bbm
  G: "[bb2,e4,bb4]@2 ~ [c3,e4,bb4] ~@2 [f3,f4,ab4] ~@9", H: "[bb2,e4,bb4]@3 [c3,e4,bb4] ~@2 [f3,f4,ab4] ~@9",
  I: "[c4,eb4,c5]@3 ~ [c4,e4,c5]@3 ~ [eb4,gb4] ~@7, ~@4 c5 ~@3", J: "~@6 [gb4,bb4,db5]!2 ~@8",
  K: "~@10 [c5,eb5]@3 [c5,db5,eb5,f5] [bb4,d5] ~", L: "[c5,eb5]@3 [b4,d5] [c5,eb5]@2 [bb4,d5]@7 ~@3",
  M: "[eb2,eb3] ~ [f2,f3] ~ [gb2,gb3] ~ [g2,g3] ~ [ab2,ab3] ~ [a2,a3] ~ [bb2,bb3] ~ [b2,b3] [a5,bb5]", // Eb F Gb G Ab A Bb B …
  N: "[c3,c4], c6@7 ~, b5 ~@15", // C
  O: "[eb2,eb3,db4,f4]@2 ~ [eb2,eb3,db4,f4] ~@2 [db4,f4]@2 [db4,eb4,gb4] ~@4 [e2,e3,d4,gb4]@3, ~@6 bb4 ~@9", // Db Ebm7 D
  P: "~@3 gb4", Q: "[eb2,eb3,db4,f4]@5 ~@11", R: "~@10 c5!4 ~ g5", S: "~ g5 ~ f5 c5@10 ~@2", T: "~@10 eb5!4 ~ bb5",
  U: "~ bb5 ~ ab5 eb5@10 ~@2", V: "~@10 gb5!4 ~ db6", W: "~ b5 ~ db6@10 ~@3",
  X: "~@10 eb5 ab5 bb5@2 [ab5,a5] ~, ~@12 a5 ~@3", Y: "eb5@11 ~@5", Z: "[eb2,eb3,bb5]@3 [e2,e3,b5]@3 [f2,f3,c6]@2 ~@8",
  AA: "[eb2,eb3,db4,f4]@2 ~@5 [b3,d4,gb4]", // Db Bm
  AB: "[f2,f3,c4,eb4,g4]@2 ~ [f2,f3,c4,eb4,g4] ~@6 [f2,f3,eb4,g4]@3 [e2,e3,d4,gb4]@3", // Cm D
  AC: "[eb2,eb3,db4,f4,bb5]@3 [e2,e3,b5]@3 [f2,f3,c6]@2 ~@8", // Bbm E5 F5
})).s("gm_trumpet").gain(0.46).pan(0.1)

// chords · trumpet · soft notes
const trumpet_soft = note(`<
  ~@22 A ~@2 B ~@2 C ~@8 D E ~@9 A ~@2 B ~@2 C ~@8 D E ~@9 A ~@2 B ~@2 C ~@22 D E ~@9 A ~@2 B ~@2 C ~@4 C ~ F ~@2
>`.pickRestart({
  A: "~@3 [bb4,db5] ~@12", B: "~@12 [e5,f5] gb5 [g5,ab5] ~", C: "~@7 ab4 ~ bb3 ~@6", D: "f4@7 ~ f4@4 ~@4",
  E: "g4@4 f4@3 ~", F: "~@6 [bb3,db4,f4]@7 ~@3",
})).s("gm_trumpet").gain(0.23).pan(0.1)

// chords · muted trumpet · "MT TRUMPE"
const muted_trumpet = note(`<
  ~ A B C D ~@8 E F ~@10 G H ~@12 E F ~@10 G H ~@12 E F ~@10 G H ~@26 E F ~@10 G H ~@11
>`.pickRestart({
  A: "[c5,eb5,g5]@2 ~ [c5,eb5,g5] ~@6 [c5,eb5,g5]@3 [b4,d5,gb5]@2 ~", // Cm Bm
  B: "[bb4,db5,f5]@2 ~ [bb4,db5,f5] ~@6 [bb4,db5,f5]@2 ~ [b4,d5,gb5]@2 ~", // Bbm Bm
  C: "[c5,eb5,g5]@2 ~ [c5,eb5,g5] ~@6 [c5,eb5,g5]@2 ~ [b4,d5,gb5]@2 ~", // Cm Bm
  D: "[bb4,db5,f5]@2 ~ [b4,d5,gb5]@2 ~ [c5,eb5,g5] ~@9", E: "[g4,bb4]@2 ~ [g4,bb4] ~@2 [f4,ab4] ~@9",
  F: "[g4,bb4]@3 [g4,bb4] ~@2 [f4,ab4] ~@9", G: "~@14 [g5,ab5] [a5,bb5]", H: "c6@7 ~, b5 ~@15",
})).s("gm_muted_trumpet").gain(0.54).pan(0.4)

// chords · muted trumpet · "MT TRUMPE" · soft notes
const muted_trumpet_soft = note("<~@25 A ~@25 A ~@25 A ~@39 A ~@12>".pickRestart({
  A: "~@12 [e5,f5] gb5 ~@2", // Fmaj7
})).s("gm_muted_trumpet").gain(0.24).pan(0.4)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~ A B C D ~@2 E F ~@6 G H I@2 J K L M N O P Q R B C D I@2 S T U@3 V ~@2 G H I@2 J K L M N O P Q R B C D I@2 S T U@3 V
  ~@2 G H I@2 J K L M N O P Q R B C W X@2 Y@2 Z@2 AA@2 AB AC AD AE AF AG I@2 S T U@3 V ~@2 G H I@2 J K L M N O P Q R B C
  D ~ A B C W AH AI
>`.pickRestart({
  A: "[g4,g5]@2 ~ [g4,g5] ~@6 [f3,ab3,c4,eb4,g4,g5] ~@2 [e3,g3,b3,d4,gb4,gb5] ~@2, [f3,ab3,c4,eb4]@9 ~@7", // G Fm7 Em7 Fm7
  B: "[f4,f5]@2 ~ [f4,f5] ~@6 [eb3,bb3,db4,f4,f5] ~@2 [e3,g3,b3,gb4,gb5] ~@2, [eb3,gb3,bb3,db4]@10 gb3@2 ~ d4@2 ~", // F Bbm Em Ebm7
  C: "[g4,g5]@3 [g4,g5] ~@6 [f3,ab3,c4,eb4,g4,g5] ~@2 [e3,g3,b3,d4,gb4,gb5] ~@2, [f3,ab3,c4,eb4]@9 ~@7", // G Fm7 Em7 Fm7
  D: "[eb3,gb3,bb3,db4,f4,f5]@3 [e3,g3,b3,d4,gb4,gb5]@3 [f3,ab3,c4,eb4,g4,g5] ~@9", E: "f4 e4", F: "eb4@4 d4@3 ~",
  G: "[db4,f4,bb4]@7 ~ [bb3,e4,g4]@7 ~", H: "[c4,f4,ab4]@3 ~ [c4,e4,g4]@2 ~@2 [c4,eb4,gb4]@2 ~@6",
  I: "[[eb3,gb3,bb3,db4]@7 ~ [gb3,bb3,db4]@3 ~@2 bb4 ~@2 [c4,c5]@6 bb3@10, gb4@15 ab4@15 ~@2, [bb4,db5]@11 c5@2 ~@9 bb4@8 ~@2, ~@12 c4@2 bb3@2 [f3,ab3,f4]@15 ~]/2", // Ebm7 Gb C Bbm Fm
  J: "bb3@6 c4 bb3, [gb3,gb4,bb4], db4@11 ~@5", K: "c4@3 bb3 ~@4, [f3,ab3,f4,ab4]@9 ~@7",
  L: "[bb4,db5]@11 c5@2 bb4 ~@2, [gb3,bb3,db4,gb4]@15 ~", M: "[eb3,ab3,c4,eb4,ab4,c5]@6 [f3,ab3,bb3,d4,f4,bb4]@9 ~",
  N: "~ gb4@6 ~ [eb3,ab3,c4,eb4,ab4,c5]@8, [gb3,bb3,db4,eb4,bb4]@7 ~@9", // Ab Ebm7
  O: "[eb3,ab3,c4,eb4,ab4,c5]@7 ~ [f3,ab3,bb3,d4,f4,bb4]@7 ~", P: "[gb3,bb3,db4,eb4,gb4,bb4]@15 ~",
  Q: "[bb3,c4,e4,g4], [e3,g3] ~@15", // C7 Em
  R: "[g4,g5]@3 g4@7 [f3,ab3,eb4,g5] ~@2 [e3,g3,b3,d4,gb4,gb5] ~@2, [f3,ab3,c4,eb4]@5 [c4,g4]@3, ~@3 g5 ~@12", // G Fm7 Em7 Fm7 C5
  S: "f4@4 ~@2 c4 bb3, [gb3,gb4,bb4], bb3@13 ~@3, db4@11 ~@5, ~ e4", T: "[f3,ab3,eb4,f4,ab4]@4 d4@3 ~, c4@3 ~@5",
  U: "[[eb3,gb3,bb3,db4]@7 ~ [gb3,bb3,db4]@3 ~@2 bb4 ~@2 [c4,c5]@6 [bb3,bb4]@9 ~ f4@7 ~ [bb3,e4,g4]@7 ~, gb4@15 ab4@15 ~ db4@7 ~@10, [bb4,db5]@11 c5@2 ~@35, ~@12 c4@2 bb3@2 [f3,ab3,f4]@15 bb3@9 ~@8]/3", // Ebm7 Gb C Bb Edim Bbm Fm
  V: "[ab3,eb4,g4]@7 ~ [ab3,c4,f4]@7 ~", W: "[eb3,gb3,bb3,db4,f4,f5]",
  X: "[[c4,eb4,g4]@5 ~ [c4,eb4,g4]@17 ~ [c4,eb4,g4]@2 ~ [db4,e4,ab4]@2 ~ [d4,f4,a4] ~]/2", // Cm Dbm Dm
  Y: "[[eb4,gb4,bb4]@23 ~ [eb4,gb4,bb4]@2 ~ [e4,g4,b4]@2 ~ [f4,ab4,c5] ~]/2", // Ebm Em Fm
  Z: "[[gb4,a4,db5]@23 ~ [gb4,a4,db5]@2 ~ [f4,ab4,c5]@2 ~ [e4,g4,b4] ~]/2", // Gbm Fm Em
  AA: "[[eb4,gb4,bb4]@23 ~ [eb4,gb4,bb4]@2 ~ [d4,f4,a4]@2 ~ [db4,e4,ab4] ~]/2", AB: "[c4,eb4,g4]@15 ~",
  AC: "[b3,d4,gb4]@7 ~", AD: "[eb3,gb3,bb3,db4,f4]@9 ~ [eb3,gb3,bb3,db4,f4]@2 ~ [e3,g3,b3,d4,gb4]@2 ~",
  AE: "[f3,ab3,c4,eb4,g4]@9 ~ [f3,ab3,c4,g4] ~@2 [e3,g3,b3,d4] ~@2, ~@10 eb4@2 ~ gb4@2 ~", // Fm7 Fm Em7
  AF: "[eb3,gb3,bb3,db4,f4]@15 ~", AG: "[eb3,gb3,bb3,db4,f4]@2 ~ [e3,g3,b3,d4,gb4]@2 ~ [f3,ab3,c4,eb4,g4]@2 ~@8",
  AH: "~@3 [g4,g5] ~@6 [f3,ab3,c4,eb4,g4,g5] ~@2 [e3,g3,b3,d4,gb4,gb5] ~@2", // G Fm7 Em7
  AI: "[eb3,gb3,bb3,db4,f4,f5]@2 ~ [e3,g3,b3,d4,gb4]@2 ~ [f3,ab3,c4,eb4,g4]@2 ~@8", // Ebm7 Em7 Fm7
})).s("gm_string_ensemble_1").gain(0.24)

// other · french horn · "FR.HORN"
const french_horn = note(`<
  ~ A B C D ~@2 E F ~@7 G ~@10 A H C D ~@2 E F ~@7 G ~@10 A H C D ~@2 E F ~@7 G ~@10 A H C I J@2 K@2 L@2 M@2 N O ~@6 E F
  ~@7 G ~@10 A H C D ~ A H C P Q R
>`.pickRestart({
  A: "eb4@2 ~ eb4 ~@6 eb4@3 d4@3", B: "db4@2 ~ db4 ~@6 db4@3 d4@3", C: "eb4@3 eb4 ~@6 eb4@3 d4@3",
  D: "db4@3 d4@3 eb4@2 ~@8", E: "f4 e4", F: "eb4@7 ~ d4@7 ~", G: "ab3@3 ~ g3@3 ~ gb3 ~@7", H: "db4@2 ~ db4 ~@9 d4@3",
  I: "db4@5 ~@11", J: "[[c4,eb4,g4]@6 [c4,eb4,g4]@18 [c4,eb4,g4]@3 [db4,e4,ab4]@3 [d4,f4,a4]@2]/2",
  K: "[[eb4,gb4,bb4]@24 [eb4,gb4,bb4]@3 [e4,g4,b4]@3 [f4,ab4,c5]@2]/2", // Ebm Em Fm
  L: "[[gb4,a4,db5]@24 [gb4,a4,db5]@3 [f4,ab4,c5]@3 [e4,g4,b4]@2]/2", M: "[[eb4,gb4,bb4]@3 ~]/2",
  N: "[f3,bb3,eb4,g4]@15 ~", O: "[e3,a3,d4,gb4]@15 ~", P: "db4@5 ~ [bb3,db4,f4]@7 ~@3", Q: "~@3 eb4 ~@6 eb4@3 d4@3",
  R: "db4 ~@7",
})).s("gm_french_horn").gain(0.2).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@3 B A@8 C D E A@4 F A@4 G H A@3 B A@8 C B E A@4 F A@4 G H A@3 B A@7 I D B E A@4 F A@4 G H A@12 H@2 A@3 B A@7 I D B
  E A@4 F A@4 G H A@3 B J A@5 B
>`.pickRestart({
  A: "x!4", B: "x ~@2 x ~@2 x ~@9", C: "x ~@2 x ~@2 x ~@5 x ~@3", D: "x ~@2 x ~@2 x ~@7 x ~", E: "x!2",
  F: "x ~ x ~ x!2 ~ x", G: "x!2 ~ x ~ x ~ x", H: "x", I: "x ~@3 x ~@3 x ~@2 x ~@2 x ~", J: "~@15 x",
})).gain(0.8)

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

// drums · low tom
const low_tom = s("lt").struct(`<
  A B@2 ~@5 A ~@3 A ~@3 C ~@8 D A B@2 ~ A ~@3 A ~@3 A ~@3 A ~@3 E ~@4 D A C ~@6 A ~@3 A@2 ~@2 C ~@3 E ~@4 D A C ~ C D
  ~@13 F ~@3 A ~@3 A@2 ~@2 C ~@3 E ~@4 D A B@2 ~@2 A C ~ C D C G
>`.pickRestart({
  A: "~@7 x", B: "~@14 x!2", C: "~@6 x!2", D: "~@15 x", E: "~ x", F: "~@3 x ~@10 x ~", G: "~@3 x ~@12",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@3 B C D C D C D C E B F G@2 H I H J H I H I K L A@3 B C D C D C D C E B@2 M L H I H N H I H I O L A P A B C D C D
  C D C Q B@2 M R H I H N H I H I O L A P A@2 H I H I H I H I ~ S H I H B C D C D C D C Q B@2 M R H I H N H I H I O L
  A@3 B L A P A@3 B
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~@3 x ~@4", C: "~@3 x ~@2 x!2 ~@3 x ~@2 x!2", D: "~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2",
  E: "~@2 x!2 ~@2 x!2 ~@8", F: "~@3 x ~@2 x ~", G: "x!4", H: "x ~@2 x ~@2 x!3 ~@2 x ~@2 x!2",
  I: "x ~ x!2 ~@2 x!3 ~ x!2 ~@2 x!2", J: "x ~ x!2 ~@2 x!4 ~@4 x!2", K: "x ~@2 x!2 ~ x!3 ~@2 x ~@2 x!2", L: "~@3 x",
  M: "x", N: "x ~ x!2 ~@2 x!2 ~ x ~@4 x!2", O: "~ x ~@2", P: "~ x ~ x ~ x!3", Q: "~@2 x!2 ~@2 x!2 ~@4 x ~@3",
// … 100 more lines

More by Paul de Leeuw