Strudelify

Efteling Music

René merkelbach

KeyB♭ majorTempo120 bpm
0:00/0:00
// Efteling Music — René merkelbach
// 120 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 5, 4/4 at bar 5, 2/4 at bar 7, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: duplicate parts dropped: ch 2 "Cello" cello (copy of ch 16 "Sousafoon" tuba); ch 12 "Viool" violin (copy of ch 15 "Xylofoon" xylophone)
// note: Transcription provider: pdmx. https://musescore.com/score/2411676; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 74 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · contrabass · "Contrabas"
const bass = note(`<
  A B C D E F G H I J A B C D E F G H I J K L M N O P Q R S T U V A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA
  AB AC AD AE AF AG AH AI AJ AK AL AM AN AM AN
>`.pickRestart({
  A: "~@4 f2 g2@2 a2", B: "bb2@2 a2@2 g2 f2 d2 bb1", C: "c2@3 d2 d2@4", D: "c2@2 c2 d2 d2@2 bb1@2", E: "eb2 f2 g2@2",
  F: "f2!2 g2 a2 bb2 f2 d2 bb1", G: "g2@3 f2 bb1@4", H: "c2 f2!2 eb2 d2 g1 bb1 d2", I: "eb2@2 d2@2 c2@3 bb1", J: "bb1",
  K: "~@5 eb2!2 d2", L: "c2 f1!4 f2!2 eb2", M: "d2 f1 ~ bb1 d2 f1 ~ g2 f2@2 f2@2 f2@2 d2@2", N: "c2!3 d2 e2 c2 bb1 g1",
  O: "a1!2 bb1!2 d2@2 c2@2", P: "bb1@3 c2 c2@4", Q: "ab1!3 a1 a1@4", R: "bb1 c2 g2 f2", S: "c2 g2 gb2 d2",
  T: "d2 f2 eb2 bb1", U: "f2", V: "f2!2 ~ f2 f2@2 f2@2 f2@2 f2@2 g2@2 a2@2",
  W: "f2!2 ~ f2 f2@2 f2@2 f2@2 f1@2 f1@2 f1@2", X: "eb2 d2 c2 bb1", Y: "c2@2 f2!3 f1!3", Z: "eb2@2 d2@2 c2@2 bb1 d2",
  AA: "c2@4 f2!2 ~ f2 f2@4 f1@2 eb2@2", AB: "d2 bb1 d2 f2", AC: "f2@4 eb2@2 bb1 c2", AD: "d2 a1 c2 gb1",
  AE: "a1@4 g1 a1 bb1 c2", AF: "[eb1,gb1]@2 ~ [f1,ab1] [gb1,bb1]@2 ~ bb0",
  AG: "[eb1,gb1]!2 [f1,ab1] [gb1,bb1] [ab1,db2]@4", AH: "[eb1,gb1]@2 [eb1,gb1] [f1,ab1] [gb1,bb1]@2 [bb0,eb1]@2",
  AI: "[d1,f1] [b0,d1]", AJ: "[eb1,gb1]@2 ~ [f1,ab1] [gb1,bb1]@2 bb0@2",
  AK: "[eb1,gb1]!2 ~ [eb1,gb1] [f1,ab1]@2 [gb1,bb1]@2 [ab1,b1]@8", // Ebm Fm Gb Abm
  AL: "[eb1,gb1]@2 [eb1,gb1] [f1,ab1] [gb1,bb1]@2 [eb1,gb1]@2", AM: "~@2 eb2@2 ab2 gb2 ~ f2 ~@2 eb2@2 ab2 gb2 ~ f2",
  AN: "~@2 eb2@2 ab2 gb2 ~ f2 ab2 gb2 ~ f2 ab2 gb2 ~ f2",
})).s("gm_contrabass").gain(0.32)

// other · viola · "Alt viool"
const viola = note(`<
  A B C D E F G H I J A B C D E F G H I J K L M N O P Q R S T U V A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA
  AB AC AD AE AF AG AH AI AJ AK AL AM AN AM AN
>`.pickRestart({
  A: "~@4 f4 g4@2 a4", B: "bb4@2 a4@2 g4 f4 d4 bb3", C: "c4@3 d4 d4@4", D: "c4@2 c4 d4 d4@2 bb3@2", E: "eb4 f4 g4@2",
  F: "f4!2 g4 a4 bb4 f4 d4 bb3", G: "g4@3 f4 bb3@4", H: "c4 f4!2 eb4 d4 g3 bb3 d4", I: "eb4@2 d4@2 c4@3 bb3", J: "bb3",
  K: "~@5 eb4!2 d4", L: "c4 f3!4 f4!2 eb4", M: "d4 f3 ~ bb3 d4 f3 ~ g4 f4@2 f4@2 f4@2 d4@2", N: "c4!3 d4 e4 c4 bb3 g3",
  O: "a3!2 bb3!2 d4@2 c4@2", P: "bb3@3 c4 c4@4", Q: "ab3!3 a3 a3@4", R: "bb3 c4 g4 f4", S: "c4 g4 gb4 d4",
  T: "d4 f4 eb4 bb3", U: "f4", V: "f4!2 ~ f4 f4@2 f4@2 f4@2 f4@2 g4@2 a4@2",
  W: "f4!2 ~ f4 f4@2 f4@2 f4@2 f3@2 f3@2 f3@2", X: "eb4 d4 c4 bb3", Y: "c4@2 f4!3 f3!3", Z: "eb4@2 d4@2 c4@2 bb3 d4",
  AA: "c4@4 f4!2 ~ f4 f4@4 f3@2 eb4@2", AB: "d4 bb3 d4 f4", AC: "f4@4 eb4@2 bb3 c4", AD: "d4 a3 c4 gb3",
  AE: "a3@4 g3 a3 bb3 c4", AF: "[eb3,gb3]@2 ~ [f3,ab3] [gb3,bb3]@2 ~ bb2",
  AG: "[eb3,gb3]!2 [f3,ab3] [gb3,bb3] [ab3,db4]@4", AH: "[eb3,gb3]@2 [eb3,gb3] [f3,ab3] [gb3,bb3]@2 [bb2,eb3]@2",
  AI: "[d3,f3] [b2,d3]", AJ: "[eb3,gb3]@2 ~ [f3,ab3] [gb3,bb3]@2 bb2@2",
  AK: "[eb3,gb3]!2 ~ [eb3,gb3] [f3,ab3]@2 [gb3,bb3]@2 [ab3,b3]@8", // Ebm Fm Gb Abm
  AL: "[eb3,gb3]@2 [eb3,gb3] [f3,ab3] [gb3,bb3]@2 [eb3,gb3]@2", AM: "~@2 eb4@2 ab4 gb4 ~ f4 ~@2 eb4@2 ab4 gb4 ~ f4",
  AN: "~@2 eb4@2 ab4 gb4 ~ f4 ab4 gb4 ~ f4 ab4 gb4 ~ f4",
})).s("gm_viola").gain(0.15)

// bass · tuba · "Sousafoon"
const bass_2 = note(`<
  A B C D E F G H I J A B C D E F G H I J K L M N O P Q R S T U V A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA
  AB AC AD AE AF AG AH AI AJ AK AL AM AN AM AN
>`.pickRestart({
  A: "~@4 f3 g3@2 a3", B: "bb3@2 a3@2 g3 f3 d3 bb2", C: "c3@3 d3 d3@4", D: "c3@2 c3 d3 d3@2 bb2@2", E: "eb3 f3 g3@2",
  F: "f3!2 g3 a3 bb3 f3 d3 bb2", G: "g3@3 f3 bb2@4", H: "c3 f3!2 eb3 d3 g2 bb2 d3", I: "eb3@2 d3@2 c3@3 bb2", J: "bb2",
  K: "~@5 eb3!2 d3", L: "c3 f2!4 f3!2 eb3", M: "d3 f2 ~ bb2 d3 f2 ~ g3 f3@2 f3@2 f3@2 d3@2", N: "c3!3 d3 e3 c3 bb2 g2",
  O: "a2!2 bb2!2 d3@2 c3@2", P: "bb2@3 c3 c3@4", Q: "ab2!3 a2 a2@4", R: "bb2 c3 g3 f3", S: "c3 g3 gb3 d3",
  T: "d3 f3 eb3 bb2", U: "f3", V: "f3!2 ~ f3 f3@2 f3@2 f3@2 f3@2 g3@2 a3@2",
  W: "f3!2 ~ f3 f3@2 f3@2 f3@2 f2@2 f2@2 f2@2", X: "eb3 d3 c3 bb2", Y: "c3@2 f3!3 f2!3", Z: "eb3@2 d3@2 c3@2 bb2 d3",
  AA: "c3@4 f3!2 ~ f3 f3@4 f2@2 eb3@2", AB: "d3 bb2 d3 f3", AC: "f3@4 eb3@2 bb2 c3", AD: "d3 a2 c3 gb2",
  AE: "a2@4 g2 a2 bb2 c3", AF: "[eb2,gb2]@2 ~ [f2,ab2] [gb2,bb2]@2 ~ bb1",
  AG: "[eb2,gb2]!2 [f2,ab2] [gb2,bb2] [ab2,db3]@4", AH: "[eb2,gb2]@2 [eb2,gb2] [f2,ab2] [gb2,bb2]@2 [bb1,eb2]@2",
  AI: "[d2,f2] [b1,d2]", AJ: "[eb2,gb2]@2 ~ [f2,ab2] [gb2,bb2]@2 bb1@2",
  AK: "[eb2,gb2]!2 ~ [eb2,gb2] [f2,ab2]@2 [gb2,bb2]@2 [ab2,b2]@8", // Ebm Fm Gb Abm
  AL: "[eb2,gb2]@2 [eb2,gb2] [f2,ab2] [gb2,bb2]@2 [eb2,gb2]@2", AM: "~@2 eb3@2 ab3 gb3 ~ f3 ~@2 eb3@2 ab3 gb3 ~ f3",
  AN: "~@2 eb3@2 ab3 gb3 ~ f3 ab3 gb3 ~ f3 ab3 gb3 ~ f3",
})).s("gm_tuba").gain(0.48).pan(1)

stack(bass, viola, bass_2)