Strudelify
Vuile huichelaar cover art

1988 · Vuile Huichelaar / Amsterdam

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, A@4 for four bars: edit a riff to change every repeat.

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~ A@2 B C D@2 A@2 E F G@3 H I J A@2 B C D@2 A@2 ~@32 E F G@3 H I J A@2 B C D@2 A@2 ~@16 E F G@3 H I J A@2 B C D@2 A@2
  D@2 A@2 K L ~@8
>`.pickRestart({
  A: "bb3@2 ~@2 f4@2 bb4 ~@2 bb4@2 ~ f4@2 ~ bb4 ~@2 d4 ~@2 f4 ~@2, ~@3 d4@2 ~@19",
  B: "eb3 ~@3 bb3@2 eb4 ~@2 eb4 ~@2 bb3@2 ~ eb4 ~@2 g3@2 ~ bb3@2 ~, ~@3 g3@2 ~@19",
  C: "eb3@2 ~ g3 bb3@2 eb4 ~@2 eb4 ~@2 bb3@2 ~ eb4@2 ~ g3 ~@2 bb3@2 ~",
  D: "f3 ~@3 c4@2 f4 ~@2 f4 ~@2 c4@2 ~ f4@2 ~ a3@2 ~ c4@2 ~, ~@3 a3@2 ~@19",
  E: "bb3 ~@3 f4@2 bb4 ~@2 f4 ~@2 bb4 ~@2 f4@2 ~ d4@2 ~ f4 ~@2, ~@3 d4@2 ~@19",
  F: "bb3 ~@2 d4 f4 ~ bb4@2 ~ f4 ~@2 db4 ~@2 e4 ~@2 g4@2 ~ e4 ~@2",
  G: "f3 ~@2 a3 c4@2 f4 ~@2 c4 ~@2 f4 ~@2 c4 ~@2 a3 ~@2 c4 ~@2", H: "[f3,a3,f4] ~@5 [f3,a3,f4] ~@17",
  I: "bb3@2 ~ d4 [f4,bb4]@2 ~@3 f4 ~@2 bb4 ~@2 f4 ~@2 d4@2 ~ f4 ~@2", // Bb5
  J: "f3 ~@2 a3 c4@2 f4 ~@2 c4 ~@2 f4 ~@2 c4 ~@2 a3 ~@2 f3 ~@2",
  K: "bb2 ~@3 f3@2 bb3 ~@2 d3 ~@2 d4 ~@2 bb3@2 ~ f3@2 ~ bb3 ~@2, ~@3 d3@2 ~@19", L: "bb2 ~@11",
})).s("gm_electric_guitar_muted").gain(0.48)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~ A@2 B C D@2 A@3 E D@3 F A G A H I C D@2 A J K@2 L@4 K@4 L@4 M K N@2 O P D@2 Q R S T K@2 U@2 D F A E D@3 F A G A H I
  C D@2 A J N@2 O P D@2 Q R S T K@2 U@2 D V A E D@3 F A G A H I C D@2 A J D@2 A J W X ~@8
>`.pickRestart({
  A: "bb1@7 ~@2 bb1@3 d2@6 f2@6", B: "eb1@7 ~@2 eb1@3 g1@6 bb1@6, e2 ~@23", C: "eb1@7 ~@2 eb1@3 g1@6 bb1@6",
  D: "f1@2 ~ f1 a1@2 c2@2", E: "bb1@7 ~@2 bb1@3 db2@6 e2@6", F: "f1@3 ~@3 f1@5 ~@13", G: "f1@7 ~@2 f1@3 a1@6 c2@5 ~",
  H: "bb1@7 ~@2 bb1@3 ab1@6 f1@5 ~", I: "~ d1 ~@7 eb1@3 g1@6 bb1@6, eb1@7 ~@17", J: "bb1@7 ~@2 bb1@3 d2@6 f2@4 ~@2",
  K: "bb1@7 ~@2 bb1 ~@2 bb1@6 f1@5 ~", L: "f1@7 ~@2 f1 ~@2 f1@6 c2@6", M: "bb1@7 ~@2 bb1@2 ~ bb1@6 f1@6",
  N: "ab1@2 ~ ab1 c2@2 eb2@2", O: "~ db2@6 ~@2 db2@3 f2@6 ab2@6", P: "db2@6 ~@3 db2@3 f2@6 ab2@5 ~",
  Q: "~ bb1@6 ~@2 bb1@3 db2@6 f2@6", R: "bb1@7 ~@2 bb1@3 db2@6 f2@4 ~@2", S: "~ eb1@7 ~ eb1@2 ~ eb1@6 bb1@6",
  T: "eb1@7 ~@2 eb1@2 ~ eb1@6 bb1@5 ~", U: "c2@7 ~@2 c2 ~@2 c2@6 g1@6", V: "~ f1@3 ~@2 f1@4 ~@14",
  W: "bb1@8 ~ bb1@3 d2@6 f2@6", X: "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 C@2 D E F@2 G@2 H@2 I J K@2 ~@15 L M@2 C@2 D E F@2 G@2 H@2 I J N@2 I
  J O@2 P@2 ~@8
>`.pickRestart({
  A: "~@12 f4@5 ~ eb4@3 ~@3", B: "[eb4@8 ~ d4 ~@2 d4@15 ~@3 d4@5 ~ e4@4 ~@2 e4@6]/2",
  C: "[eb4@7 ~@2 eb4 ~@2 eb4@19 ~@5 eb4@4 ~@2 eb4@4 ~@2]/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@9 d4 ~@2 d4@20 ~@4 c4@5 ~ bb3@6]/2", O: "[eb4@9 d4 ~@2 d4@20 ~@4 f4 ~@5 eb4 ~@5]/2",
  P: "[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@2 C D E A@3 B@2 C D E A F@2 G@2 H@2 E A I J A@2 K L M N ~@16 F@2 G@2 H@2 E A I J E A K L O N ~@30
>`.pickRestart({
  A: "[bb3,f4,bb4,db5]!2 ~ [bb3,f4,bb4,db5] ~ [bb3,f4,bb4,db5] ~ [bb3,f4,bb4,db5]", // Bbm
  B: "~ [f3,f4,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,a4] ~@11", // F7 F
  C: "~ 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, [f3,f4,a4,eb5] ~@4 eb5@2 ~", // F7 F F7
  D: "~ 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, [f3,f4,a4,eb5] ~@7", // F7
  E: "~ [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
  F: "~ [eb4,ab4,c5]@2 [eb4,ab4,c5]@3 ~@3 [eb4,ab4,c5]@3 ~@3 [eb4,ab4,c5]@3 ~@3 [eb4,ab4,c5]@3", // Ab
  G: "~ [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
  H: "~ [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
  I: "~ [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
  J: "[eb4,gb4,bb4,eb5]!2 ~ [eb4,gb4,bb4,eb5] ~ [eb4,gb4,bb4,eb5] ~ [eb4,gb4,bb4,eb5]", // Ebm
  K: "~ [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
  L: "[c4,e4,bb4,c5]!2 ~ [c4,e4,bb4,c5] ~ [c4,e4,bb4,c5] ~ [c4,e4,bb4,c5]", // C7
  M: "[f3,f4,a4,c5]!2 ~ [f3,f4,a4,c5] ~ [f3,f4,a4,c5] ~ [f3,f4,a4,c5]", N: "~ [f3,f4,a4,c5]@2 ~@3 [f3,f4,a4,c5]@3 ~@15",
  O: "~ [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@2 D@2 A@2 E F G H G I E G A J C@2 D@2 A@2 ~@32 E F G H G I E G A J C@2 D@2 A@2 ~@16 E F G H G I E G A J C@2
  D@2 A K D@2 A K A L ~@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 [f4,a4,eb5] ~@11 [f4,eb5] a4 ~@4",
  E: "~@6 [d4,f4,bb4] ~@11 [d4,f4,bb4] ~@5", F: "~@6 bb4 [d4,f4] ~@10 [db4,e4,g4] ~@5",
  G: "~@6 [c4,f4,a4] ~@11 [c4,f4,a4] ~@5", H: "~@6 [c4,f4,a4] ~@12 [c4,f4,a4] ~@4",
  I: "~ [c4,eb4,a4] ~@4 eb4 [c4,a4] ~@16", J: "~@6 ab4 [f4,bb4,d5] ~@11 [f4,ab4,bb4,d5] ~@4",
  K: "~@6 [f4,bb4,d5] ~@12 [f4,bb4,d5] ~@4", L: "[f4,bb4,d5] ~@23",
})).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@2 P ~@36 Q H I J K L M@2 N O@2 P ~@20 Q H I J K L M@2 N O@2 P ~@7 R S@2 ~@8
>`.pickRestart({
  A: "~@2 [d5,f6] [c5,eb6]", B: "[~ eb6@8 [bb4,d6]@3 [bb4,d6]@18 [bb4,d6]@6 [c5,eb6]@6 [d5,f6]@6, c5@3 ~@13]/2",
  C: "[~@9 [eb5,g6]@3 ~ eb6@23 [a4,c6]@6 [g4,bb5]@6, ~ [d5,f6]@10 ~ bb4@23 ~@13]/2", // Eb Am Gm Dm
  D: "[f4,a5]@3 [f4,a5] [a4,c6]@2 [c5,eb6]@2", E: "[eb5,g6]@9 ~ eb5@2 [d5,f6]@6 [c5,eb6]@6, ~@3 g6 ~@4",
  F: "[~ eb6@8 [bb4,d6]@3 [bb4,d6]@36, c5@3 ~@13]/2", G: "~ [d5,g5]@8 ~ [d5,f5]@2 ~ f5@5 [bb5,d6]@6, ~@12 d5@5 ~@7",
  H: "[d6,f6]", I: "[c5,f5]@3 c5 a5@2 [a5,c6]@2, ~@9 f5@5 ~@10", J: "[c6,eb6]@12 ~ c6@5 [g5,bb5]@6, ~@12 a5@5 ~@7",
  K: "[eb5,a5]", L: "~ [eb5,a5]@5 ~@6 [f6,a6]@9 [eb6,g6]@3",
  M: "[~ g6@8 ~ d6@2 ~ f6@23 [a5,f6]@9 [g5,eb6]@3, eb6@8 ~ f6@3 d6@24 ~@12]/2", // Dm Cm
  N: "~ c6@8 bb5@2 ~ bb5@3 f5@3 bb5@3 d6@3", O: "[f6@33 ~@6 g6@3 eb6@4 g6@2]/2", P: "bb5@11 ~",
  Q: "[d5,g5]@9 ~ f5@2 [d5,f5]@5 ~ [bb5,d6]@6, ~@3 d5 ~@4", R: "~@12 [f5,d6]@5 ~ [eb5,c6]@4 ~@2",
  S: "[[eb5,c6]@9 [d5,bb5]@2 ~ [d5,bb5]@24 ~@12]/2", // Cm Gm
})).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 J ~@3 G ~@2 H I ~@30
>`.pickRestart({
  A: "[~ gb5@8 f5@10 ~@2 eb5 f5 eb5@4 db5@2 ~ c5@3 db5@2 ~@2 c5@2 bb4@3 ab4@3 gb4@2 ~, ~@18 [c5,db5] ~@5]/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: "~ bb4@11 ~@3 bb4@3 c5@3 db5@2 ~",
  F: "~ eb5@4 db5@3 ~ c5 db5 c5@4 bb4@7 ~@2", G: "~@9 f4@3 bb4@3 db5@3 f4@5 ~",
  H: "~ f4@2 g4@3 ~@2 bb4@3 ~ c5@2 bb4@3 a4@3 ~ gb4@3, ~@3 a4@2 ~@7", I: "f4 ~@5 f4@2 ~@16",
  J: "~ eb5@4 db5@3 ~ c5 db5 c5@4 ~ bb4@7 ~",
})).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 A@2 B@4 C@2 D@2 A@2 E@2 C@2 F@2 G@4 H I ~@16 D@2 A@2 E@2 C@2 F@2 G@4 J I ~@30
>`.pickRestart({
  A: "[~ [f4,db5]@47]/2", B: "[~ f4@95]/4", C: "[~ [f4,bb4,db5]@47]/2", D: "[~ [eb4,ab4,c5]@47]/2",
  E: "[~ [f4,a4,c5]@47]/2", F: "[~ [gb4,bb4,eb5]@47]/2", G: "[~ [bb4,db5]@48 [e4,g4,c5]@47]/4", H: "~ [f4,a4]@23, c5",
  I: "~ [f4,a4,c5]@2 ~@3 [f4,a4,c5]@3 ~@15", J: "~ [f4,a4,c5]@23",
})).s("gm_string_ensemble_2").gain(0.32)

// chords · string ensemble 2 · "SLOWSTRING" · soft notes
const string_ensemble_2_soft = note("<~@25 A@2 B@5 ~ C@2 B@5 ~@3 D@2 ~@6 E@2 ~@22 D@2 ~@6 E@2 ~@34>".pickRestart({
  A: "bb4/2", B: "[~ [a4,c5]@96 ~@23]/5", C: "[~ bb4@47]/2", D: "[~ ab4@47]/2", E: "[~ [e4,f4]@47]/2",
})).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 A@2 B@2 C@4 D@4 E@2 F G ~@20 H@8 ~@2>".pickRestart({
  A: "[[c5,eb5,ab5]@21 ~ [ab5,c6,eb6] ~ [ab5,c6,eb6]@9 ~ [eb5,ab5,c6] ~ [eb5,ab5]@6 [c5,eb5,ab5]@6, [ab3,ab4]@47 ~, ~@3 c6]/2", // Ab Ab5 Ab
  B: "[~@3 f5, ab5@7 f4 ab4 db5 f4 ab4@5, f5@3 db4@5, db5@5 ab3@11, ~ db3@47]/2",
  C: "[~@24 a5@14 ~@8 f5@2 ~@45 bb5@3, f3@18 c5@3 a4@17 ~@4 f4@7 bb3@17 f5@21 bb3@4 f5@4 ~, ~@3 c4@35 ~ f3@11 ~@13 bb4@32 ~, ~@6 f4@32 ~@2 c4@5 c5@5 ~@7 f4@38 ~, ~@9 a4@3 c5@3 f5@23 ~@5 a4@5 db5@12 db5@9 bb5@21 db5@5 ~]/4",
  D: "[~@14 eb5 ~@8 bb5 ~ f5 ~ db5 ~@3 f5, eb3@11 gb4 gb5 f5@2 db5@6 db5 f5@2 bb5@2 f5@2 db5@4, ~ 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: "[a4,c5,f5]@2 ~@4 [f2,f3]@5 ~@13",
  H: "[~@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 ~@4 x ~@17", 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",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<~ [x!7 ~]!55 ~ [x!7 ~]!31 ~ [x!7 ~]!21 x ~@8>").gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@8 A ~@7 A ~@47 A ~@31 A ~@12 A ~@9>".pickRestart({
  A: "~@3 x",
})).gain(0.72)

// drums · open hat
const open_hat = s("oh").struct("<~ [~@7 x]!55 [x!2 ~@2] [~@7 x]!31 [x!2 ~@2] [~@7 x]!21 ~@9>").gain(0.56)

// drums · high tom
const high_tom = s("ht").struct("<~@8 A ~@7 A ~@47 A ~@31 A ~@12 A ~@9>".pickRestart({
  A: "~@5 x ~@2",
})).gain(0.72)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@7 A ~@4 B ~@2 A ~@39 A ~@4 B ~@2 A ~@23 A ~@4 B ~@2 A ~@7 A ~@4 A ~@8
>`.pickRestart({
  A: "x", B: "~ x ~@2",
})).gain(0.56)

// drums · tambourine
const tambourine = s("tb").struct("<~ A@24 ~@32 A@16 ~@16 A@20 B C ~@8>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "x",
})).gain(0.56)

stack(
  electric_guitar_muted, bass, tenor_sax, acoustic_guitar_steel, distortion_guitar, pad_new_age, acoustic_guitar_nylon,
  string_ensemble_2, string_ensemble_2_soft, piano, kick, snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash,
  tambourine
)

More by Renee de Haan