Strudelify

Vuile huichelaar

Renee de Haan

KeyB♭ majorTempo125 bpm
0:00/0:00
// Vuile huichelaar — Renee de Haan
// 125 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 119 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(125/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 · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S D T F U V ~@32 I J K L M N O P Q R S D T F W V ~@16 I J X L M N Y P Z R S D AA
  F AB H AC F AB V AD AE ~@8
>`.pickRestart({
  A: "bb3 ~@2 d4@2 ~ bb4@2 ~ bb4 ~@2 f4 ~@2 bb4@2 ~ d4 ~@2 f4@2 ~, ~@5 f4@2 ~@17",
  B: "bb3@2 ~ d4@2 ~ bb4@2 ~ bb4@2 ~ f4@2 ~ bb4 ~@2 d4 ~@2 f4 ~@2, ~@5 f4@3 ~@16",
  C: "eb3 ~@2 g3@2 ~ eb4 ~@2 eb4 ~@2 bb3 ~@2 eb4 ~@2 g3@2 ~ bb3@2 ~, ~@5 bb3@2 ~@17",
  D: "eb3@2 ~ g3 ~@2 eb4 ~@2 eb4 ~@2 bb3@2 ~ eb4@2 ~ g3 ~@2 bb3@2 ~, ~@5 bb3@2 ~@17",
  E: "f3@2 ~ a3 ~@2 f4 ~@2 f4 ~@2 c4@2 ~ f4 ~@2 a3@2 ~ c4 ~@2, ~@5 c4@2 ~@17",
  F: "f3 ~@2 a3@2 ~ f4 ~@2 f4 ~@2 c4@2 ~ f4@2 ~ a3@2 ~ c4@2 ~, ~@5 c4@2 ~@17",
  G: "bb3 ~@2 d4 ~@2 bb4 ~@2 bb4 ~@2 f4 ~@2 bb4@2 ~ d4 ~@2 f4@2 ~, ~@5 f4@2 ~@17",
  H: "bb3@2 ~ d4@2 ~ bb4 ~@2 bb4 ~@2 f4@2 ~ bb4@2 ~ d4 ~@2 f4 ~@2, ~@5 f4@2 ~@17",
  I: "bb3 ~@2 d4@2 ~ bb4 ~@2 f4 ~@2 bb4 ~@2 f4@2 ~ d4@2 ~ f4 ~@2, ~@5 f4@2 ~@17",
  J: "bb3 ~@2 d4 ~ f4 bb4@2 ~ f4 ~@2 db4 ~@2 e4 ~@2 g4@2 ~ e4 ~@2",
  K: "f3@2 ~ a3@2 c4 f4 ~@2 c4 ~@2 f4 ~@2 c4 ~@2 a3 ~@2 c4@2 ~",
  L: "f3 ~@2 a3 ~@2 f4 ~@2 c4 ~@2 f4 ~@2 c4 ~@2 a3 ~@2 c4 ~@2, ~@5 c4@2 ~@17",
  M: "f3 ~@2 a3 ~@2 f4 ~@2 c4 ~@2 f4@2 ~ c4@2 ~ a3 ~@2 c4 ~@2, ~@5 c4@2 ~@17", N: "[f3,a3,f4] ~@5 [f3,a3,f4] ~@17",
  O: "bb3@2 ~ d4 ~ [f4,bb4]@2 ~@2 f4 ~@2 bb4 ~@2 f4 ~@2 d4@2 ~ f4 ~@2", // Bb5
  P: "f3 ~@2 a3 ~@2 f4 ~@2 c4 ~@2 f4 ~@2 c4 ~@2 a3 ~@2 f3 ~@2, ~@5 c4@2 ~@17",
  Q: "bb3 ~@2 d4@2 ~ bb4@2 ~ bb4 ~@2 f4@2 ~ bb4@2 ~ d4 ~@2 f4@2 ~, ~@5 f4@2 ~@17",
  R: "bb3@2 ~ d4@2 ~ bb4 ~@2 bb4@2 ~ f4@2 ~ bb4 ~@2 d4 ~@2 f4 ~@2, ~@5 f4@2 ~@17",
  S: "eb3 ~@2 g3@2 ~ eb4 ~@2 eb4 ~@2 bb3@2 ~ eb4 ~@2 g3@2 ~ bb3@2 ~, ~@5 bb3@2 ~@17",
  T: "f3@2 ~ a3 ~@2 f4@2 ~ f4 ~@2 c4@2 ~ f4 ~@2 a3@2 ~ c4 ~@2, ~@5 c4@2 ~@17",
  U: "bb3 ~@2 d4 ~@2 bb4 ~@2 bb4 ~@2 f4@2 ~ bb4@2 ~ d4 ~@2 f4@2 ~, ~@5 f4@2 ~@17",
  V: "bb3@2 ~ d4@2 ~ bb4 ~@2 bb4 ~@2 f4@2 ~ bb4@2 ~ d4@2 ~ f4 ~@2, ~@5 f4@2 ~@17",
  W: "bb3@2 ~ d4 ~@2 bb4 ~@2 bb4 ~@2 f4@2 ~ bb4@2 ~ d4 ~@2 f4@2 ~, ~@5 f4@2 ~@17",
  X: "f3@2 ~ a3@2 c4 f4@2 ~ c4 ~@2 f4 ~@2 c4 ~@2 a3 ~@2 c4@2 ~",
  Y: "bb3@2 ~ d4 ~ [f4,bb4]@2 ~@2 f4 ~@2 bb4 ~@2 f4 ~@2 d4 ~@2 f4 ~@2", // Bb5
  Z: "bb3@2 ~ d4@2 ~ bb4@2 ~ bb4 ~@2 f4@2 ~ bb4@2 ~ d4 ~@2 f4@2 ~, ~@5 f4@2 ~@17",
  AA: "f3@2 ~ a3 ~@2 f4 ~@2 f4 ~@2 c4 ~@2 f4 ~@2 a3@2 ~ c4 ~@2, ~@5 c4@2 ~@17",
  AB: "bb3@2 ~ d4 ~@2 bb4 ~@2 bb4 ~@2 f4 ~@2 bb4@2 ~ d4 ~@2 f4@2 ~, ~@5 f4@2 ~@17",
  AC: "f3 ~@2 a3 ~@2 f4 ~@2 f4 ~@2 c4@2 ~ f4 ~@2 a3@2 ~ c4 ~@2, ~@5 c4@2 ~@17",
  AD: "bb2 ~@2 d3@2 ~ bb3 ~@2 d3 ~@2 d4 ~@2 bb3@2 ~ f3@2 ~ bb3 ~@2, ~@5 f3@2 ~@17", AE: "bb2 ~@11",
})).s("gm_electric_guitar_muted").gain(0.48)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~ A B C D E F G H I J K L F M G N G O P Q K@2 G R S T U V W U X Y Z T U V W U AA AB AC@2 AD AE AF K AG AH AI AJ AK Y
  AL AM K AN G J K L F M G N G O P Q K@2 G R AO AC AD AE AF@2 AG AH AP AQ AK Y AL AM AF AN G J K L F M G N G O P Q K@2 G
  R K@2 G R AR AS ~@8
>`.pickRestart({
  A: "bb1@7 ~@2 bb1@3 d2@5 ~ f2@6", B: "bb1@8 ~ bb1@3 d2@6 f2@6", C: "eb1@7 ~@2 eb1@3 g1@6 bb1@6, e2 ~@23",
  D: "eb1@7 ~@2 eb1@3 g1@6 bb1@6", E: "f1@7 ~@2 f1@3 a1@6 c2@6", F: "f1@7 ~@2 f1@3 a1@6 c2@5 ~",
  G: "bb1@7 ~@2 bb1@3 d2@6 f2@6", H: "bb1@7 ~@2 bb1@3 d2@6 f2@5 ~", I: "~ bb1@7 ~ bb1@3 d2@6 f2@6",
  J: "bb1@7 ~@2 bb1@3 db2@6 e2@6", K: "f1@2 ~ f1 a1@2 c2@2", L: "f1@7 ~@2 f1@3 a1@5 ~ c2@6", M: "f1@3 ~@3 f1@5 ~@13",
  N: "f1@7 ~@2 f1@3 a1@6 c2@4 ~@2", O: "bb1@7 ~@2 bb1@3 ab1@6 f1@5 ~", P: "~@2 d1 ~@6 eb1@3 g1@6 bb1@6, eb1@7 ~@17",
  Q: "eb1@2 ~ eb1 g1@2 bb1@2", R: "bb1@7 ~@2 bb1@3 d2@6 f2@4 ~@2", S: "bb1@7 ~@2 bb1 ~@2 bb1@5 ~ f1@5 ~",
  T: "bb1@6 ~@3 bb1@2 ~ bb1@6 f1@4 ~@2", U: "f1@7 ~@2 f1 ~@2 f1@6 c2@6", V: "f1@6 ~@3 f1 ~@2 f1@6 c2@6",
  W: "f1@6 ~@3 f1@2 ~ f1@6 c2@6", X: "bb1@6 ~@3 bb1 ~@2 bb1@5 ~ f1@6", Y: "bb1@7 ~@2 bb1 ~@2 bb1@6 f1@5 ~",
  Z: "bb1@6 ~@3 bb1 ~@2 bb1@5 ~ f1@5 ~", AA: "~ bb1@6 ~@2 bb1 ~@2 bb1@5 ~ f1@6", AB: "bb1@7 ~@2 bb1 ~@2 bb1@6 f1@4 ~@2",
  AC: "~ ab1@6 ~@2 ab1@3 c2@6 eb2@6", AD: "~ db2@6 ~@2 db2@3 f2@6 ab2@6", AE: "~ db2@6 ~@2 db2@3 f2@6 ab2@5 ~",
  AF: "~ f1@6 ~@2 f1@3 a1@6 c2@6", AG: "~ bb1@6 ~@2 bb1@3 db2@6 f2@6", AH: "bb1@7 ~@2 bb1@3 db2@6 f2@4 ~@2",
  AI: "~ eb1@7 ~ eb1@2 ~ eb1@6 bb1@6", AJ: "eb1@7 ~@2 eb1@2 ~ eb1@6 bb1@5 ~", AK: "bb1@7 ~@2 bb1@2 ~ bb1@6 f1@6",
  AL: "~ c2@7 ~ c2 ~@2 c2@6 g1@6", AM: "c2@7 ~@2 c2 ~@2 c2@6 g1@5 ~", AN: "~ f1@3 ~@2 f1@4 ~@14",
  AO: "ab1@2 ~ ab1 c2@2 eb2@2", AP: "~ eb1@7 ~ eb1@2 ~ eb1@5 ~ bb1@6", AQ: "eb1@7 ~@2 eb1 ~@2 eb1@6 bb1@5 ~",
  AR: "bb1@3 bb1 d2@2 f2@2", AS: "bb1 ~",
})).s("gm_fretless_bass").gain(0.56)

// other · tenor sax
const tenor_sax = note(`<
  ~@8 A B@2 C@2 D E F@2 G@2 H@2 I J K@2 ~@31 L M@2 N@2 D E F@2 O@2 H@2 I J K@2 ~@15 L M@2 N@2 D E F@2 P@2 Q@2 I J R@2 I
  J S@2 T@2 ~@8
>`.pickRestart({
  A: "~@12 f4@5 ~ eb4@3 ~@3", B: "[~ eb4@8 d4 ~@2 d4@15 ~@3 d4@5 ~ e4@5 ~ e4@6]/2",
  C: "[eb4@7 ~@2 eb4 ~@2 eb4@19 ~@5 eb4@4 ~@2 eb4@5 ~]/2", D: "eb4@17 ~ eb4@5 ~", E: "eb4@2 ~@10 a4@8 ~ g4 ~@2",
  F: "[g4@7 ~@2 f4 ~@2 f4@20 ~@16]/2", G: "[eb4@8 ~ d4 ~@2 d4@15 ~@3 d4@6 eb4@6 f4@5 ~]/2",
  H: "[ab4@9 bb4@2 ~ g4@19 ~@5 c4@5 ~ bb3@6]/2", I: "a3@7 ~@2 a3@3 c4@5 ~ eb4@6", J: "g4@7 ~@2 g4@3 f4@6 eb4@4 ~@2",
  K: "[eb4@9 d4 ~@2 d4@20 ~@16]/2", L: "~@4 f4@3 eb4", M: "[eb4@3 ~@6 d4 ~@2 d4@15 ~@3 d4@5 ~ e4@4 ~@2 e4@6]/2",
  N: "[eb4@7 ~@2 eb4 ~@2 eb4@19 ~@5 eb4@4 ~@2 eb4@4 ~@2]/2", O: "[eb4@8 ~ d4 ~@2 d4@15 ~@3 d4@5 ~ eb4@6 f4@5 ~]/2",
  P: "[eb4@8 ~ d4 ~@2 d4@15 ~@3 d4@6 eb4@6 f4@6]/2", Q: "[ab4@9 bb4@2 ~ g4@19 ~@5 c4@6 bb3@6]/2",
  R: "[eb4@9 d4 ~@2 d4@20 ~@4 c4@6 bb3@6]/2", S: "[eb4@9 d4 ~@2 d4@20 ~@4 f4 ~@5 eb4 ~@5]/2",
  T: "[eb4@9 d4@2 ~ d4@24 ~@12]/2",
})).s("gm_tenor_sax").gain(0.56)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@25 A@2 B C D E F A G A B H D E F A I@2 J@2 K@2 F L M N O P Q R S T ~@16 I@2 J@2 K@2 F L M U F V Q R W T ~@30
>`.pickRestart({
  A: "[bb3,f4,bb4,db5]!2 ~ [bb3,f4,bb4,db5] ~ [bb3,f4,bb4,db5] ~ [bb3,f4,bb4,db5]", // Bbm
  B: "~ [f3,f4,a4,eb5]@2 [f3,c4,f4,a4,eb5]@3 ~@3 [f3,c4,f4,a4,eb5]@3 ~@3 [f3,c4,f4,a4,eb5]@3 ~@3 [f3,c4,f4,a4,eb5]@3, c4 ~@11", // F7
  C: "~ [f3,c4,f4,a4]@2 [f3,c4,f4,a4,eb5]@3 ~@3 [f3,c4,f4,a4,eb5]@3 ~@3 [f3,c4,f4,a4,eb5]@3 ~@3 [f3,c4,f4,a4,eb5]@3, eb5 ~@11", // F F7
  D: "~ [f3,c4]@2 [f3,c4,f4,a4,eb5]@3 ~@3 [f3,c4,f4,a4,eb5]@3 ~@3 [f3,c4,f4,a4]@3 ~@3 [f3,c4,f4,a4,eb5]@3, [f4,a4,eb5] ~@4 eb5@2 ~", // F5 F7 F F7
  E: "~ [f3,c4]@2 [f3,c4,f4,a4,eb5]@3 ~@3 [f3,c4,f4,a4,eb5]@3 ~@3 [f3,c4,f4,a4,eb5]@3 ~@3 [f3,c4,f4,a4,eb5]@3, [f4,a4,eb5] ~@7", // F5 F7
  F: "~ [bb3,f4,bb4,db5]@2 [bb3,f4,bb4,db5]@3 ~@3 [bb3,f4,bb4,db5]@3 ~@3 [bb3,f4,bb4,db5]@3 ~@3 [bb3,f4,bb4,db5]@3", // Bbm
  G: "~ [bb3,f4,db5]@2 [bb3,f4,bb4,db5]@3 ~@3 [bb3,f4,bb4,db5]@3 ~@3 [bb3,f4,bb4,db5]@3 ~@3 [bb3,f4,bb4,db5]@3, bb4 ~@7", // Bbm
  H: "~ [f3,c4,f4,a4]@2 [f3,c4,f4,a4,eb5]@3 ~@3 [f3,c4,f4,a4,eb5]@3 ~@3 [f3,c4,f4,a4,eb5]@3 ~@3 [f3,c4,f4,a4,eb5]@3, eb5 ~@7", // F F7
  I: "~ [eb4,ab4,c5]@2 [eb4,ab4,c5]@3 ~@3 [eb4,ab4,c5]@3 ~@3 [eb4,ab4,c5]@3 ~@3 [eb4,ab4,c5]@3", // Ab
  J: "~ [db4,f4,ab4,db5]@2 [db4,f4,ab4,db5]@3 ~@3 [db4,f4,ab4,db5]@3 ~@3 [db4,f4,ab4,db5]@3 ~@3 [db4,f4,ab4,db5]@3", // Db
  K: "~ [eb4,f4,a4,c5]@2 [eb4,f4,a4,c5]@3 ~@3 [eb4,f4,a4,c5]@3 ~@3 [eb4,f4,a4,c5]@3 ~@3 [eb4,f4,a4,c5]@3", // F7
  L: "~ [bb3,bb4,db5]@2 [bb3,f4,bb4,db5]@3 ~@3 [bb3,f4,bb4,db5]@3 ~@3 [bb3,f4,bb4,db5]@3 ~@3 [bb3,f4,bb4,db5]@3, f4 ~@7", // Bbm
  M: "~ [eb4,gb4,bb4,eb5]@2 [eb4,gb4,bb4,eb5]@3 ~@3 [eb4,gb4,bb4,eb5]@3 ~@3 [eb4,gb4,bb4,eb5]@3 ~@3 [eb4,gb4,bb4,eb5]@3", // Ebm
  N: "[eb4,gb4,bb4,eb5]!2 ~ [eb4,gb4,bb4,eb5] ~ [eb4,gb4,bb4,eb5] ~ [eb4,gb4,bb4,eb5]", // Ebm
  O: "~ [bb3,bb4,db5]@2 [bb3,f4,bb4,db5]@3 ~@3 [bb3,f4,bb4,db5]@3 ~@3 [bb3,f4,bb4,db5]@3 ~@3 [bb3,f4,bb4,db5]@3, f4 ~@11", // Bbm
  P: "~ bb4@2 [bb3,f4,bb4,db5]@3 ~@3 [bb3,f4,bb4,db5]@3 ~@3 [bb3,f4,bb4,db5]@3 ~@3 [bb3,f4,bb4,db5]@3, [bb3,f4,db5] ~@7", // Bbm
  Q: "~ [c4,e4,g4,c5]@2 [c4,e4,g4,c5]@3 ~@3 [c4,e4,g4,c5]@3 ~@3 [c4,e4,g4,c5]@3 ~@3 [c4,e4,g4,c5]@3", // C
  R: "[c4,e4,bb4,c5]!2 ~ [c4,e4,bb4,c5] ~ [c4,e4,bb4,c5] ~ [c4,e4,bb4,c5]", // C7
  S: "[f3,f4,a4,c5]!2 ~ [f3,f4,a4,c5] ~ [f3,f4,a4,c5] ~ [f3,f4,a4,c5]", T: "~ [f3,f4,a4,c5]@2 ~@3 [f3,f4,a4,c5]@3 ~@15",
  U: "~ eb4@2 [eb4,gb4,bb4,eb5]@3 ~@3 [eb4,gb4,bb4,eb5]@3 ~@3 [eb4,gb4,bb4,eb5]@3 ~@3 [eb4,gb4,bb4,eb5]@3, [gb4,bb4,eb5] ~@7", // Ebm
  V: "~ [bb3,bb4]@2 [bb3,f4,bb4,db5]@3 ~@3 [bb3,f4,bb4,db5]@3 ~@3 [bb3,f4,bb4,db5]@3 ~@3 [bb3,f4,bb4,db5]@3, [f4,db5] ~@7", // Bb Bbm Db
  W: "~ [f3,f4,a4,c5]@2 [f3,f4,a4,c5]@3 ~@3 [f3,f4,a4,c5]@3 ~@3 [f3,f4,a4,c5]@3 ~@3 [f3,f4,a4,c5]@3", // F
})).s("gm_acoustic_guitar_steel").gain(0.4)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~ A B C D E F A G H I J K L M N J A B C O E P A@2 ~@32 Q R J K L M N J A B C O E F A@2 ~@16 H R J K L M N J A B C O E
  P A G E P A G A S ~@8
>`.pickRestart({
  A: "~@6 [f4,bb4,d5] ~@11 [f4,bb4,d5] ~@5", B: "~@7 [f4,ab4,bb4,d5] ~@11 [f4,ab4,bb4,d5] ~@4",
  C: "~@6 [g4,bb4,eb5]@2 ~@10 [g4,bb4,eb5] ~@5", D: "~@6 [g4,bb4,eb5]@2 ~@10 bb4 [g4,eb5]@2 ~@3",
  E: "~@6 [f4,a4,eb5] ~@11 eb5 [f4,a4] ~@4", F: "~@6 [f4,a4,eb5] ~@12 [f4,a4] ~@4, ~@9 eb5 ~@2",
  G: "~@6 [f4,bb4,d5] ~@12 [f4,bb4,d5] ~@4", H: "~@6 [d4,f4,bb4] ~@11 [f4,bb4] d4 ~@4",
  I: "~@6 bb4 [d4,f4] ~@10 [db4,g4] e4 ~@4", J: "~@6 [c4,f4,a4] ~@11 [c4,f4,a4] ~@5",
  K: "~@6 [c4,f4,a4] ~@12 [c4,f4,a4] ~@4", L: "~@6 [c4,f4,a4] ~@11 [c4,a4] f4 ~@4",
  M: "~ [c4,eb4,a4] ~@5 [c4,eb4,a4] ~@16", N: "~@6 [d4,f4,bb4] ~@11 [d4,f4,bb4] ~@5",
  O: "~@6 [g4,bb4,eb5]@2 ~@11 [g4,bb4,eb5] ~@4", P: "~@6 [f4,a4,eb5] ~@12 [f4,a4,eb5] ~@4",
  Q: "~@6 [d4,f4,bb4] ~@11 bb4 [d4,f4] ~@4", R: "~@7 [d4,f4,bb4] ~@10 [db4,g4] e4 ~@4", S: "[f4,bb4] d5 ~@22",
})).s("gm_distortion_guitar").gain(0.48)

// chords · pad new age · "FANTASIA"
const pad_new_age = note(`<
  A B@2 C@2 D E F@2 G H I J K L M@2 N O@3 ~@36 P H I J K L M@2 N O@3 ~@20 Q H I J R L S@2 N O@3 ~@7 T U@2 ~@8
>`.pickRestart({
  A: "~@2 [d5,f6] [c5,eb6]", B: "[~ [c5,eb6]@8 [bb4,d6]@3 ~ bb4@17 [bb4,d6]@6 [c5,eb6]@6 [d5,f6]@6, ~@2 d6@3 ~@3]/2",
  C: "[~@9 [eb5,g6]@3 ~ [bb4,eb6]@23 ~ a4@5 [g4,bb5]@6, ~ [d5,f6]@10 ~@25 c6@5 ~@7]/2", // Eb Eb5 Gm Dm
  D: "[f4,a5]@9 ~ f4@2 [a4,c6]@6 [c5,eb6]@6, ~@9 a5@2 ~@13", E: "[eb5,g6]@9 ~ [eb5,g6]@2 [d5,f6]@6 [c5,eb6]@6",
  F: "[~ [c5,eb6]@8 [bb4,d6]@3 [bb4,d6]@36]/2", G: "~ [d5,g5]@8 ~ [d5,f5]@2 ~ [d5,f5]@5 [bb5,d6]@6", H: "[d6,f6]",
  I: "~ f5@8 c5@3 a5@6 [a5,c6]@6, c5@9 f5@5 ~@10", J: "[c6,eb6]@12 ~ [a5,c6]@5 [g5,bb5]@6", K: "[eb5,a5]",
  L: "~ [eb5,a5]@5 ~@6 [f6,a6]@9 [eb6,g6]@3", // Ebdim F Eb
  M: "[~ [eb6,g6]@8 ~ [d6,f6]@3 [d6,f6]@23 ~ f6@8 [g5,eb6]@3, ~@12 a5@3 ~]/2", // Eb Dm Cm
  N: "~ c6@8 bb5@2 ~ bb5@3 f5@3 bb5@3 d6@3", O: "[f6@33 ~@6 g6@3 eb6@4 ~@2 bb5@22 ~@2, ~@47 g6@2 ~@23]/3",
  P: "~ g5@9 [d5,f5]@2 ~ f5@5 [bb5,d6]@6, d5@9 ~@3 d5@5 ~@7", Q: "~ g5@9 [d5,f5]@3 [d5,f5]@5 [bb5,d6]@6, d5@3 ~@5",
  R: "~ eb5@23, a5", S: "[~ [eb6,g6]@8 [d6,f6]@3 ~ [d6,f6]@23 ~ f6@8 [g5,eb6]@3, ~@12 a5@3 ~]/2",
  T: "~@12 [f5,d6]@5 ~ [eb5,c6]@4 ~@2", U: "[[eb5,c6]@9 ~ [d5,bb5]@2 [d5,bb5]@24 ~@12]/2",
})).s("gm_pad_new_age").gain(0.48)

// other · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  ~@31 A@2 B ~@5 C D ~@6 E F ~@3 G ~@2 H I ~@22 E F ~@3 G ~@2 H I ~@30
>`.pickRestart({
  A: "[~ gb5@8 f5@10 ~@2 eb5 f5 eb5@4 db5@2 ~ c5@3 db5@2 ~ [c5,db5]@2 ~ bb4@3 ab4@3 gb4@2 ~, ~@19 c5 ~@4]/2", // Dbmaj7
  B: "~ f4@22 ~", C: "~ bb4@7 ~ bb4 ~ bb4@4 a4@3 bb4@3 c5@3, ~@5 c5 ~@6",
  D: "~ db5 ~@2 db5 bb4@4 a4@2 ~ bb4@9 ~@3, ~ c5 ~@6", E: "~@2 bb4@11 ~@2 bb4@3 c5@3 db5@2 ~",
  F: "~ eb5@4 db5@3 ~ c5 ~ c5@4 ~ bb4@7 ~, ~@11 db5 ~@12", G: "~@9 f4@3 bb4@3 db5@3 f4@5 ~",
  H: "~ f4@2 g4@3 a4@3 bb4@3 c5@2 bb4@3 a4@3 ~ gb4@3", I: "f4 ~@5 f4@2 ~@16",
})).s("gm_acoustic_guitar_nylon").gain(0.64)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@25 A@2 B@4 C@2 D@2 B@4 C@2 E@2 D@2 F@2 C@2 G@2 H@4 I J ~@16 E@2 D@2 F@2 C@2 G@2 H@4 I J ~@30
>`.pickRestart({
  A: "[~ db5@47, f4]/2", B: "[~ f4@95]/4", C: "[~ [f4,bb4,db5]@47]/2", D: "[~ [f4,db5]@47]/2",
  E: "[~ [eb4,ab4,c5]@47]/2", F: "[~ [f4,a4,c5]@47]/2", G: "[~ [gb4,bb4,eb5]@47]/2",
  H: "[~ [bb4,db5]@48 [e4,g4,c5]@47]/4", I: "~ [f4,a4,c5]@23", J: "~ [f4,a4,c5]@2 ~@3 [f4,a4,c5]@3 ~@15",
})).s("gm_string_ensemble_2").gain(0.32)

// chords · string ensemble 2 · "SLOWSTRING" · soft notes
const string_ensemble_2_soft = note("<~@25 A@7 ~ B@2 C@5 ~@3 D@2 ~@6 E@2 ~@22 D@2 ~@6 F@3 ~@33>".pickRestart({
  A: "[~ bb4@48 [a4,c5]@96 ~@23]/7", B: "[~ bb4@47]/2", C: "[~ [a4,c5]@96 ~@23]/5", D: "[~ ab4@47]/2",
  E: "[~ [e4,f4]@47]/2", F: "[~ [e4,f4]@48 ~@23]/3",
})).s("gm_string_ensemble_2").gain(0.16)

// chords · piano · "A.PIANO 1"
const piano = note("<~@41 A@2 B@2 C@4 D@4 E@2 F G ~@16 H@2 B@2 I@4 D@4 E@2 F J ~@20 K@8 ~@2>".pickRestart({
  A: "[~ c5@21 ~ [ab5,c6,eb6] [ab5,c6,eb6]@9 ~@2 [eb5,ab5,c6] [eb5,ab5]@6 [c5,eb5,ab5]@6, [ab3,ab4]@47 ~, [eb5,ab5]@7 ~@5 c6@4]/2", // Ab Ab5 Ab Ab5
  B: "[~@3 f5, ab5@7 f4 ab4 db5 f4 ab4@5, f5@3 db4@5, ~ db3@47, ~ db5@14 ab3@33]/2",
  C: "[~@24 a5@14 ~@9 f5@2 ~@44 bb5@3, f3@18 c5@3 a4@17 ~@4 f4@3 c5@4 bb3@17 f5@21 bb3@5 f5@4, ~@3 c4@35 ~ f3@10 db5@11 db5@9 bb5@21 db5@5 ~, ~@6 f4@32 ~@3 c4@9 ~@13 bb4@32 ~, ~@9 a4@3 c5@3 f5@23 ~@6 a4@6 ~@7 f4@38 ~]/4",
  D: "[~@14 eb5 ~@8 bb5 ~ f5 ~ db5 ~@3 f5, ~ eb3@32 gb4@3 gb5@3 f5@6 db5@18 db5@3 f5@6 bb5@6 f5@6 db5@12, ~ gb5@8 gb4@3 bb4@3 eb5@3 gb4@3 bb4@25 ~@14 bb4@36, ~@3 bb3@43 ~@8 bb3@42, ~@6 eb4@40 ~@11 f4@39]/4",
  E: "[~@42 c6@5 ~, c4@12 g5@21 c5@6 g5@8 ~, ~@3 g4@12 c6@21 e5@11 ~, ~@6 c5@21 c4@20 ~, ~@9 e5@21 g4@17 ~]/2",
  F: "~@7 c5, [f3,a5]@3 a4, ~ c4@7, ~ f4@3, ~@3 a4 c5 f5@3", G: "~ c5@2 ~@3 [f2,f3]@5 ~@13, [a4,f5] ~@11",
  H: "[[c5,eb5,ab5]@22 ~ [ab5,c6,eb6] [ab5,c6,eb6]@9 ~@2 [eb5,ab5,c6] [eb5,ab5]@6 [c5,eb5,ab5]@6, [ab3,ab4], ~@3 c6]/2", // Ab Ab5 Ab
  I: "[~@24 a5@14 ~@9 f5@2 ~@44 bb5@3, f3@18 c5@3 a4@17 ~@4 f4@3 c5@4 bb3@17 f5@21 bb3@9, ~@3 c4@35 ~ f3@10 db5@11 db5@9 bb5@21 db5@2 f5@4, ~@6 f4@32 ~@3 c4@9 ~@13 bb4@33, ~@9 a4@3 c5@3 f5@23 ~@6 a4@6 ~@7 f4@39]/4",
  J: "~ [a4,c5]@2 ~@3 [f2,f3]@5 ~@13, f5 ~@11", // Am F
  K: "[~@25 d5@167, ~@23 bb2@48 ~@121, ~ [bb3,f4]@2 ~@5, ~@25 bb4@48 ~@119]/8", // Bb5
})).s("gm_piano").gain(0.48)

// drums · kick
const kick = s("bd").struct("<~ A@13 B A@41 C A@5 B A@25 B A@5 B A@14 D E ~@8>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x!2 ~@2", C: "~ x ~ x ~@8", D: "x ~@2 x!2 ~@2 x", E: "x",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct("<~ A@13 B A@9 C ~@32 A@5 B A@9 C ~@16 A@5 B A@9 C A@3 C D E ~@8>".pickRestart({
  A: "~ x ~ x", B: "x!2 ~@2", C: "~@2 x ~@2 x!3", D: "~ x ~@2", E: "x",
})).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<~@8 A ~@7 A ~@47 A ~@31 A ~@12 A ~@9>".pickRestart({
  A: "~@7 x",
// … 35 more lines

More by Renee de Haan