Strudelify
Het pizzalied (Effe wachte...) cover art

Feest Met André

Het pizzalied (Effe wachte...)

Andre van Duin

KeyA♭ majorTempo115 bpm
0:00/0:00
// Het pizzalied (Effe wachte...) — Andre van Duin
// 115 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 161 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(115/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 · fretless bass · "FRETLESS"
const bass = note(`<
  ~ A B C D E F G@6 H I J ~ A B C D E F G@6 H I J ~ A B C D E F G@6 H I J ~ A B C D E F G@6 H I J ~ A B C D E F G@6 H I
  K ~ A B C D E F G@6 H I K ~ A B C D E F G@6 H I K ~ A B C D E F G@6 H I K ~ A B C D E F G@6 H I K ~ A B C D E F G@6 H
  I K ~
>`.pickRestart({
  A: "ab2@2 ~ ab2 eb2@2 gb2@2 ab2@3 ab2 eb2@2 ab2@2", B: "db2@3 db2 ~ db2 ab2@2 ab2@2 ~ [eb2,ab2]@3 f2@2, ~@2 f2 ~@5",
  C: "db2@2 ~ db2 f2@2 gb2@2 ab2@2 ~ ab2 eb2@2 ab2@2", D: "eb2@3 eb2 bb2@3 eb2 ab2@2 ~ ab2 eb2@2 f2@2",
  E: "ab2@2 ~ ab2 eb2@2 f2@2 ab2@3 ab2 eb2@2 f2@2", F: "ab2@3 ab2 eb2@2 f2@2 ab2@2 ~ ab2 eb2@2 f2@2",
  G: "ab2@2 ~ ab2 eb2@2 f2@2 ab2@2 ~ ab2 eb2@2 f2@2",
  H: "ab2 ~ ab2 gb2 ab2 ~ eb2@2 ab2 ~ ab2 gb2 ~ [bb2,b2] ~ gb2, ~@12 ab2@3 ~", // Bmaj7
  I: "ab2 ~ ab2 gb2 ab2@2 eb2@2 ab2 ~ ab2 gb2 ~ b2 ~ gb2, ~@3 ab2",
  J: "ab2 ~ ab2 gb2 ab2@2 ~ eb2 ab2 ~ ab2 gb2 ab2 b2 ab2 gb2",
  K: "ab2 ~ ab2 gb2 ab2@2 eb2 ~ ab2 ~ ab2 gb2 ab2 b2 ab2 gb2",
})).s("gm_fretless_bass").gain(0.3)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~ A B C D ~@8 E F G ~ A B C D ~@8 E F G ~ A B C D ~@8 E F G ~ A B C D ~@8 E F G ~ A B C D ~@8 E F G ~ A B C D ~@8 E F
  G ~ A B C D ~@8 E F G ~ A B C D ~@8 E F G ~ A B C D ~@8 E F G ~ A B C D ~@8 E F G ~
>`.pickRestart({
  A: "eb5@4 ab4@2 ~ bb4 [c5,eb5]@7 ~, c5@7 db5@2 ~@7, ~@8 b4 ~@7", B: "db5@4 ab5@3 db5 [c5,eb5]@8, f5 ~",
  C: "db5@3 ~ ab5@3 [db5,f5] [c5,eb5]@3 ~ [ab4,c5]@3 eb5, f5@3 ~@5", D: "[bb4,db5]@3 ~ bb4@3 ~ ab4@6 ~@2",
  E: "~@4 ab5@2 eb5 ~@3 ab5 gb5 ~ b5 ab5 ~, ~@6 ab5 ~", F: "~@4 ab5@2 eb5@2 ~@2 ab5 gb5 ab5 b5 ab5 ~",
  G: "~@4 ab5@2 eb5 ~@3 ab5 gb5 ab5 b5 ab5 ~",
})).s("gm_string_ensemble_1").gain(0.36).pan(0.9)

// chords · electric guitar muted · "+FUNK GTR"
const electric_guitar_muted = note(`<
  ~ A B C D E F G H I J H J K L M ~ A B C D E F G H I J H J ~@4 A B C D E F G H I J H J K L M ~ A B C D E F G H I J H J
  ~@4 A B C D E F G H I J H J ~@4 A B C D E F G H I J H J K L M ~ A B C D E F G H I J H J ~@4 A B C D E F G H I J H J K
  L M ~ A B C D E F G H I J H J ~@4 A B C D E F G H I J H N ~@4
>`.pickRestart({
  A: "[ab4,c5] eb4 [ab4,c5] ~@3 eb4 ~ [eb4,ab4,c5] ~ [eb4,ab4] [ab4,c5] ~@2 [ab4,c5] ~", // Ab Ab5 Ab
  B: "f4 [ab4,db5] f4 ~@3 [ab4,db5]!2 eb4 [ab4,c5] eb4 ~ [ab4,bb4,c5] ~ [ab4,c5] ~", // Db5 Ab
  C: "f4 [ab4,db5] ~@2 [f4,ab4,db5] ~@4 [ab4,c5] ~@2 [eb4,ab4,c5] ~ [ab4,c5] ~, ~@4 eb4 ~@3", // Db5 Db Ab
  D: "eb4 [g4,bb4] ~@2 [g4,bb4] ~ [g4,bb4] ~ eb4 [ab4,c5] eb4 ~@3 ab4 ~, ~@3 eb4@2 ~@11", // Gm Ab
  E: "[c4,eb4,ab4]!3 ~@2 [c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~@2 [c4,eb4,gb4,ab4] ~@2 [c4,eb4,ab4] ~", // Ab Ab7 Ab
  F: "[c4,eb4,ab4] ~ eb4 ~@2 [eb4,ab4] c4 ~ [c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~, ~ [c4,eb4,ab4]@2 ~@13", // Ab Ab5 Ab
  G: "[c4,eb4,ab4]!2 eb4 ~@2 [eb4,ab4] c4 ~ [c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~", // Ab Ab5 Ab
  H: "[c4,eb4,ab4]!2 ab4 ~@2 [c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~", // Ab
  I: "[c4,eb4,ab4]!3 ~@3 [c4,eb4,ab4] ~ [c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~@2 c4 ~", // Ab
  J: "[c4,eb4,ab4]!3 ~@2 [c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~", // Ab
  K: "[c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] [eb4,ab4] ~ [c4,eb4,ab4] ~ [c4,eb4,ab4]!2 ~", // Ab Ab5 Ab
  L: "[c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4]!2 ~ [c4,eb4,ab4] ~ [c4,eb4,ab4]!2 ~", // Ab
  M: "[c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~ [c4,eb4,ab4]!2 ~", // Ab
  N: "[c4,eb4,ab4]!3 ~@2 [c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~@2 [c4,eb4,ab4] ~@2 [c4,ab4] ~", // Ab Fm
})).s("gm_electric_guitar_muted").gain(0.35)

// chords · brass section · "+BRASS 2"
const brass_section = note(`<
  ~ A B C@2 ~@2 D E F G H I J K L M N B C@2 ~@2 D E F G H I J K L M A B C@2 ~@2 D E F G H I J K L M N B C@2 ~@2 D E F G
  H I J K L M N B C@2 ~@2 D E F G H I J K L ~ A B C@2 ~@2 D E F G H I J K L O N B C@2 ~@2 D E F G H I J K L O A B C@2
  ~@2 D E F G H I J K L O N B C@2 ~@2 D E F G H I J K L O N B C@2 ~@2 D E P G H I J K L ~
>`.pickRestart({
  A: "eb5@4 ab4 ~@2 [bb4,db5] [c5,eb5]@8, c5@7 ~@9", B: "db5@3 ~ ab5@2 ~ db5 [c5,eb5]@8, f5 ~",
  C: "[db5@4 ab5@3 ~ eb5@4 ab4@3 ~ [bb4,db5]@4 bb4@3 ab4 ~@5 c4@2 eb4, f5@7 db5@2 ~@6 eb5@2 ~@15, ~@8 c5@7 ~@9 ab4@8]/2", // Bbm
  D: "[eb4,ab4,c5] [ab2,ab3] ~@6", E: "[eb4,ab4,c5]@2 [ab4,c5] [ab2,ab3]@2 ~@9 [c4,eb4,ab4] ~, ~ eb4 ~@6",
  F: "[c4,eb4,ab4]@3 [ab2,ab3]@2 ~@11", G: "[c4,eb4,ab4]@2 ab2@4 ~@8 [c4,eb4,ab4] ~, ~@2 ab3 ~@13",
  H: "[c4,eb4,ab4] [ab2,ab3] ~@6", I: "[ab2,ab3,c4,eb4,ab4]@2 ~ [c4,eb4,ab4] ~@12, ~@3 [ab2,ab3]@3 ~@10",
  J: "[c4,eb4,ab4]@2 [c4,eb4,ab4]@2 ~@4 [c4,eb4,ab4] ~ [c4,eb4] ~@5, ~@5 ab4 ~@2", // Ab Cm
  K: "[c4,eb4,ab4]@4 [c4,eb4,ab4]!2 ~@2", L: "[c4,eb4,ab4]!2 ~@2 [eb4,ab4] [c4,eb4,ab4] ~@2, ~@8 c4 ~@7",
  M: "[eb4,ab4] c4 ~@14", // Ab5
  N: "[ab3,c4,eb4] ~ [ab3,c4,eb4,ab4]@2 ab4 ~@2 [bb4,db5] [c5,eb5]@8, c5@7 ~@9, eb5 ~@3, ab4 ~@7", // Ab Bbm Cm
  O: "[c4,eb4,ab4] ~@15", P: "[c4,eb4,ab4]@2 ~ ab3@2 ~@11, ~ ab2 ~@6",
})).s("gm_brass_section").gain(0.33)

// bass · tuba
const bass_2 = note("<~@13 A B A C D ~@27 A B A C D ~@14 C D ~@27 A B A C D ~@27 A B A C D ~@14 C D ~@15>".pickRestart({
  A: "ab2!2 ~@2 ab2!2 ~@2", B: "ab2@7 ~ ab2@2 ab2@2 ~@4", C: "ab2 ~@15", D: "[ab2,ab3] ab2 ~@6",
})).s("gm_tuba").gain(0.4).pan(0.6)

// other · orchestral harp · "HARP"
const orchestral_harp = note("<~@21 A ~ B ~@29 A ~ B ~@13 A ~ B ~@29 A ~ B ~@29 A ~ B ~@13 A ~ B ~@9>".pickRestart({
  A: "ab3 c4 eb4 ab4 c5 eb5 ab5 c6 eb6 ab6 c7 ab6 eb6 c6 ab5 eb5",
  B: "[ab2,c3] [eb3,ab3] [c4,eb4] [ab4,c5] [eb5,ab5] [c6,eb6] [ab6,c7] [eb6,ab6] [ab5,c6] [c5,eb5] [eb4,ab4] [ab3,c4] [c3,eb3] [eb2,ab2] [ab2,ab5] [eb6,ab6]", // Ab Ab5 Cm Ab Ab5 Cm Ab Ab5 …
})).s("gm_orchestral_harp").gain(0.3).pan(0)

// other · tubular bells · "TUBULARBEL"
const tubular_bells = note("<~@12 A ~@15 A ~@15 A ~@15 A ~@15 A ~@15 A ~@15 A ~@15 A ~@15 A ~@15 A ~@4>".pickRestart({
  A: "~@12 ab4 ~ eb4 ~",
})).s("gm_tubular_bells").gain(0.4).pan(0.9)

// other · agogo
const agogo = note("<~@85 A B C D E F G H ~@68>".pickRestart({
  A: "ab4 ~ ab4 ~ eb4 ~@2 [ab4,c5] ~ [eb4,ab4,c5] ~ ab4 eb4 ~ eb4 ~", // Ab
  B: "[eb4,ab4] ~ ab4 ~ eb4 ~@2 [c5,eb5] ~ eb5 ~ eb5 c5 ~ ab4 ~", // Ab5 Cm
  C: "ab4 ~ ab4 ~ eb4 ~@3 [eb4,ab4] ~ [eb4,ab4] ab4 eb4 ~ eb4 ~", // Ab5
  D: "[ab4,c5] ~@3 [eb4,ab4] ~@2 ab4 ~ ab4 ~ ab4 eb4 ~ eb4 ~", // Ab Ab5
  E: "[eb4,ab4] ~ [eb4,ab4] ~ eb4 ~@2 [eb4,ab4] ~ ab4 ~ ab4 eb4 ~ eb4 ~", // Ab5
  F: "eb5 ~ eb5 ~ c5 ~@2 c5 ~ c5 ~ c5 ab4 ~ ab4 ~", G: "ab4 ~ ab4 ~ eb4 ~@2 ab4 ~ ab4 ~ ab4 eb4 ~ eb4 ~",
  H: "ab4!3 ~ ab4 [eb4,ab4] ~ ab4 ~ ab4 ~ ab4!2 ~ ab4 ~", // Ab5
})).s("gm_agogo").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~ A@15 B A@15 B A@15 B A@15 B A@15 ~ A@15 B A@15 B A@15 B A@15 B A@15 ~>".pickRestart({
  A: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x", B: "x ~@3 x ~@3 x ~@3 x ~@2 x",
})).gain(0.41)

// drums · rim
const rim = s("rim").struct("<[x!4] ~@79 [x!4] ~@80>").gain(0.36)

// drums · snare
const snare = s("sd").struct(`<
  ~ A@4 B A@2 C A@7 C D A@2 E A@4 B A@2 F A@3 C A@4 B A@2 C A@7 C D A@2 E A@4 B A@2 F A@3 C D A@2 E A@4 B A@2 F A@3 ~
  A@4 B A@2 C A@7 C D A@2 E A@4 B A@2 F A@3 C A@4 B A@2 C A@7 C D A@2 E A@4 B A@2 F A@3 C D A@2 E A@4 B A@2 F A@3 ~
>`.pickRestart({
  A: "~@2 x ~@3 x!2", B: "~@4 x ~@6 x!2 ~ x ~", C: "x ~ x ~@3 x!2", D: "~@5 x ~@6 x ~ x ~", E: "x!2 ~ x",
  F: "x ~ x!4 ~ x ~ x!2 ~ x!2 ~@2",
})).gain(0.41)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@17 A@3 ~@9 A@3 ~@17 A@3 ~@9 A@3 ~ A@3 ~@9 A@3 ~@17 A@3 ~@9 A@3 ~@17 A@3 ~@9 A@3 ~ A@3 ~@9 A@3 ~
>`.pickRestart({
  A: "~@3 x ~@3 x",
})).gain(0.2)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@6 B ~ A B A B A@2 B C B A D ~ A@2 B@2 A@3 ~ B E A C A@6 B ~ A B A B A@2 B C B A D ~ A@2 B@2 A@3 ~ B E A C B A D ~
  A@2 B@2 A@3 ~ B E A ~ A@6 B ~ A B A B A@2 B C B A D ~ A@2 B@2 A@3 ~ B E A C A@6 B ~ A B A B A@2 B C B A D ~ A@2 B@2
  A@3 ~ B E A C B A D ~ A@2 B@2 A@3 ~ B E A ~
>`.pickRestart({
  A: "x!16", B: "x!15 ~", C: "~ x ~@14", D: "x!13 ~ x!2", E: "x!2 ~ x!13",
})).gain(0.36)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@8 A ~@8 B@3 A ~@8 B@3 ~@8 A ~@8 B@3 A ~@8 B@3 ~ B@3 A ~@8 B@3 ~@8 A ~@8 B@3 A ~@8 B@3 ~@8 A ~@8 B@3 A ~@8 B@3 ~ B@3
  A ~@8 B@3 ~
>`.pickRestart({
  A: "~@11 x ~@2 x ~", B: "x!4",
})).gain(0.2)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@7 A ~@2 A ~ A ~@2 A B A ~ C ~@3 A@2 ~@4 A D ~ B ~@6 A ~@2 A ~ A ~@2 A B A ~ C ~@3 A@2 ~@4 A D ~ B A ~ C ~@3 A@2 ~@4
  A D ~@8 A ~@2 A ~ A ~@2 A B A ~ C ~@3 A@2 ~@4 A D ~ B ~@6 A ~@2 A ~ A ~@2 A B A ~ C ~@3 A@2 ~@4 A D ~ B A ~ C ~@3 A@2
  ~@4 A D ~@2
>`.pickRestart({
  A: "~@15 x", B: "x", C: "~@13 x ~@2", D: "~ x ~@6",
})).gain(0.36)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@8 A ~@7 B C D@2 A ~@8 C D C B ~@7 A ~@7 B C D@2 A ~@8 C D C B C D@2 A ~@8 C D C ~@8 A ~@7 B C D@2 A ~@8 C D C B ~@7
  A ~@7 B C D@2 A ~@8 C D C B C D@2 A ~@8 C D C ~
>`.pickRestart({
  A: "~@2 x ~@2 x ~ x ~@8", B: "~@9 x ~ x!2 ~ x ~", C: "~@3 x ~@7 x ~@4", D: "~@3 x ~@7 x ~@2 x!2",
})).gain(0.36)

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

// drums · cowbell
const cowbell = s("cb").struct(`<
  ~@16 A@4 ~@9 A@4 ~@15 A@4 ~@9 A@7 ~@9 A@3 ~@16 A@4 ~@9 A@4 ~@15 A@4 ~@9 A@7 ~@9 A@3 ~
>`.pickRestart({
  A: "x ~ x ~ x ~ x ~@2 x ~ x!2 ~ x ~",
})).gain(0.31)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@16 A B C B ~@9 D B D A ~@15 A B C B ~@9 D B D A B C B ~@9 D B D ~@16 A B C B ~@9 D B D A ~@15 A B C B ~@9 D B D A B
  C B ~@9 D B D ~
>`.pickRestart({
  A: "x!5 ~ x ~@9", B: "x!5 ~@4 x ~ x!2 ~@3", C: "x ~ x ~ x ~@4 x ~ x!2 ~@3", D: "x ~@2 x!2 ~@4 x ~ x!2 ~@3",
})).gain(1.31)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  ~@16 A B C B ~@9 B@3 A ~@15 A B C B ~@9 B@3 A B C B ~@9 B@3 ~@16 A B C B ~@9 B@3 A ~@15 A B C B ~@9 B@3 A B C B ~@9
  B@3 ~
>`.pickRestart({
  A: "~@9 x ~ x!2 ~ x!2", B: "~@3 x ~@3 x", C: "~@3 x ~@2 x ~@7 x ~",
})).gain(1.31)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@8 A ~@7 A@5 ~@7 A@5 ~@7 A ~@7 A@5 ~@7 A@9 ~@7 A@4 ~@8 A ~@7 A@5 ~@7 A@5 ~@7 A ~@7 A@5 ~@7 A@9 ~@7 A@4 ~
>`.pickRestart({
  A: "~ x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~",
})).gain(1.82)

// … 14 more lines

More by Andre van Duin