Strudelify
Mooi was die tijd cover art

Het Mooiste Van

Mooi was die tijd

Corry Konings

KeyE majorTempo115 bpm
0:00/0:00
// Mooi was die tijd — Corry Konings
// 115 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 6/4 at bar 6, 4/4 at bar 8) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 116 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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@5 A@8 B@3 C A D E@2 F A@6 B@4 A D E@2 G A@2 B@4 E@3 H A@3 I A@4 B@3 C A D E@2 F A@6 B@4 A D E@2 G A@2 B@4 E@3 H A J
  E@2 K A L M B@4 E@3 H A D E@2 N O P A Q R@2
>`.pickRestart({
  A: "e2@2 ~ e2 ~ e2 b1 c#2", B: "a1@5 ~ a1@2 ~@2 a1@2 e1@2 f#1@2", C: "a1@5 ~ a1@2 ~@2 a1@2 b1@2 c#2@2",
  D: "e2@2 ~@2 e2@3 ~ d#2@3 ~ c#2@3 ~", E: "b1@5 ~ b1@2 ~@2 b1@2 f#1@2 g#1@2", F: "b1@2 ~@2 b1@4 c#2@4 d#2@3 ~",
  G: "b1@2 ~ b1 ~ b1 c#2 d#2", H: "b1@5 ~ b1@2 ~@2 b1@2 d#2@4", I: "e2 c#2 d2 d#2", J: "e2@4 e2@3 ~ d#2@3 ~ c#2@3 ~",
  K: "b1@5 ~ b1@6 d#2@4", L: "e1@2 ~ e1 g#1@2 b1@2, f#1 ~@15", M: "e2@7 ~", N: "b1@5 ~ b1@2 d#2@4 f#2@4", O: "b1@15 ~",
  P: "e2@5 ~ e2@2 ~@2 e2@2 b1@2 c#2@2", Q: "e1@4 ~@2 e1@3 ~ e1@2 e1@2 e1@2", R: "[e1@3 ~]/2",
})).s("gm_electric_bass_finger").gain(0.3)

// chords · pan flute
const pan_flute = note(`<
  A B C D@5 ~ E@8 F@2 G H I@3 ~@10 J@5 K@3 L M@2 N@2 O@4 P@8 F@2 G H I@3 ~@10 J@5 K@3 Q@3 N@2 R@2 ~@20 S@2 T U@2
>`.pickRestart({
  A: "~@8 [b4,e5,g#5]@3 ~ [b4,e5,g#5] ~ [b4,e5,g#5]@2", // E
  B: "~@2 [b4,e5,g#5] ~ [b4,e5,g#5]@2 ~@2 [b4,e5,g#5]@2 ~@2 [b4,e5,g#5] ~ [b4,e5,g#5]@2", // E
  C: "~@2 [b4,e5,g#5] ~ [b4,e5,g#5]@2 ~@2 [d5,f#5,a5]@2 ~@2 [d5,f#5,a5]@2 ~@2", // E D
  D: "[[a4,d5,e5] ~ [a4,c#5,e5]@3 ~ [b4,e5,g#5]@64 ~@10]/5", // Asus4 A E
  E: "[~@8 [g#4,b4]@3 ~ [a4,c#5]@2 [g#4,b4]@21 ~ [c#5,e5]@3 ~ [c#5,e5]@3 ~ [c#5,e5] ~ [c#5,e5]@7 ~ [b4,d#5] ~ [b4,d#5]@3 ~ [c#5,e5]@2 [b4,d#5]@4 [a4,c#5]@33 ~ [c#5,e5]@3 ~ [c#5,e5]@3 ~ [c#5,e5]@2 [c#5,f#5]@13 ~ c#5@2 [a4,c#5]@2, ~@124 e5 ~@3]/8", // G#m A G#m C#m B C#m B A …
  F: "[~@2 [g#4,b4]@29 ~]/2", G: "~@4 [b4,d#5]@3 ~ [b4,d#5]@3 ~ [b4,d#5] ~ [b4,d#5]@2",
  H: "~@2 [a4,c#5]@7 ~ [a4,c#5]@3 [g#4,b4]@3", I: "[[a4,c#5]@4 [g#4,b4]@8 [f#4,a4]@3 [e4,g#4]@32 ~]/3",
  J: "[[d#4,a4]@11 ~ [d#4,f#4]@2 [b3,d#4]@25 ~ [c#4,e4]@4 [d#4,f#4]@3 ~ b3@7 ~ [b3,g#4]@3 ~ [b3,g#4]@2 [b3,g#4]@4 [d4,b4]@9 g#4@2 ~ f#4@2, ~@47 g#4@7 ~@23 d4@2 ~]/5", // D#dim D#m B C#m D#m E G
  K: "[e4@4 a3@19 ~ [a3,c#4]@4 [b3,d#4]@2 [c#4,e4]@9 ~ [c#4,e4]@2 [c#4,e4]@3 ~ [c#4,e4]@2, c#4@23 ~@25]/3", // A B C#m
  L: "~@2 [c#4,a4]@8 [a3,c#4]@2 ~ [a3,c#4]@2 ~", M: "[[a3,c#4]@3 [a3,b3]@20 ~ [a4,b4]@4 [a4,c#5]@2 [a4,d#5]@2]/2",
  N: "[~@2 [a4,d#5]@3 ~ d#5@2 [a4,d#5]@4 [a4,e5]@2 [b4,g#5]@7 ~ [a4,f#5]@4 [a4,f#5]@4 [g#4,e5]@2, ~@6 a4 ~@25]/2", // Adim A5 E D C#m
  O: "[~ [g#4,e5]@61 ~@2]/4", // C#m
  P: "[~@8 [g#4,b4]@3 ~ [a4,c#5]@2 [g#4,b4]@21 ~ [c#5,e5]@3 ~ [c#5,e5]@3 ~ [c#5,e5] ~ [c#5,e5]@7 ~ [b4,d#5] ~ [b4,d#5]@3 ~ [c#5,e5]@2 [b4,d#5]@4 [a4,c#5]@33 ~ [c#5,e5]@3 ~ [c#5,e5]@3 ~ [c#5,e5]@2 [d#5,f#5]@13 ~ c#5@2 [a4,c#5]@2, ~@124 e5 ~@3]/8", // G#m A G#m C#m B C#m B A …
  Q: "[~@2 [c#4,a4]@8 [a3,c#4]@2 ~ [a3,c#4]@2 ~ a3@3 [a3,b3]@20 ~ [a4,b4]@4 [a4,c#5]@2 [a4,d#5]@2, ~@15 c#4@4 ~@29]/3", // F#m A Asus2 A Adim
  R: "[~ [g#4,e5]@17 ~@14]/2", S: "[b4,e5,g#5]@3 ~ [b4,e5,g#5] ~ [b4,e5,g#5]@3 ~ [b4,e5,g#5] ~ [b4,e5,g#5]@2 ~@2",
  T: "[d5,f#5,a5]@2 ~@2 [d5,f#5,a5]@2 ~@2 [a4,d5,e5] ~ [a4,c#5,e5]@5 ~", U: "[[b4,e5,g#5]@3 ~]/2",
})).s("gm_pan_flute").gain(0.14).pan(0.6)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@24 A@8 B@2 C@4 D E@4 F@4 G ~@18 A@8 B@2 C@4 D H@8 G I J@6 K@3 L@5 M N O P@3 Q@2 R S@2
>`.pickRestart({
  A: "[[b4,g#5]@8 [b4,g#5]@4 [c#5,a5]@2 [b4,g#5]@22 [e5,c#6]@4 [e5,c#6]@4 [e5,c#6]@2 [e5,c#6]@7 [d#5,b5]@2 ~ [d#5,b5]@4 [e5,c#6]@2 [d#5,b5]@4 [c#5,a5]@34 [e5,c#6]@4 [e5,c#6]@4 [e5,c#6]@2 [a5,c#6]@14 [e5,c#6]@2 [c#5,a5]@2]/8", // E F#m E C#m G#m C#m G#m F#m …
  B: "[~ [b4,g#5]@9 b4@2 e5@2 [b4,g#5]@2]/2", // E
  C: "[[d#5,a5]@12 [d#5,f#5]@2 [b4,d#5]@26 [c#5,e5]@4 [d#5,f#5]@3 ~ b4@8 [b4,g#5]@4 [b4,g#5]@2 [b4,g#5]@2, ~@47 g#5@8 ~@9]/4", // D#dim D#m B C#m D#m E
  D: "~@2 [d5,b5]@9 g#5@2 ~ f#5@2, ~@13 d5@2 ~", // G
  E: "[[c#5,e5]@4 a4@19 ~ [a4,c#5]@4 [b4,d#5]@2 [c#5,e5]@10 [c#5,e5]@2 [c#5,e5]@3 ~ [c#5,e5]@4 [c#5,a5]@8 [a4,c#5]@3 [a4,c#5]@3]/4", // C#m A B C#m F#m A
  F: "[[a4,c#5]@3 [a4,b4]@21 [a4,b4]@4 [a4,c#5]@2 [a4,d#5]@4 [a4,d#5]@4 [a4,d#5]@2 [a4,d#5]@4 [a4,e5]@2 [b4,g#5]@7 ~ [a4,f#5]@4 [a4,f#5]@4 [g#4,e5]@2]/4", // A Asus2 A Adim A5 E D C#m
  G: "~ [g#4,e5]@15", // C#m
  H: "[[c#5,e5]@4 a4@19 ~ [a4,c#5]@4 [b4,d#5]@2 [c#5,e5]@10 [c#5,e5]@2 [c#5,e5]@3 ~ [c#5,e5]@4 [c#5,a5]@8 [a4,c#5]@3 [a4,c#5]@2 ~ a4@3 [a4,b4]@21 [a4,b4]@4 [a4,c#5]@2 [a4,d#5]@4 [a4,d#5]@4 [a4,d#5]@2 [a4,d#5]@4 [a4,e5]@2 [b4,g#5]@7 ~ [a4,f#5]@4 [a4,f#5]@4 [g#4,e5]@2, ~@63 c#5@3 ~@62]/8", // C#m A B C#m F#m A Asus2 A …
  I: "~ b4 e5 [b4,g#5]", // E
  J: "[[d#5,a5]@11 [d#5,f#5]@3 [b4,d#5]@25 ~ [c#5,e5]@3 ~ d#5@3 [b4,g#5]@8 ~ [b4,g#5]@3 [b4,g#5]@3 [b4,g#5]@4 [d5,b5]@20 ~@2 [d5,g#5]@4 [d5,f#5]@2 [c#5,e5]@2, ~@43 f#5@4 ~@49]/6", // D#dim D#m B C#m E G Ddim D …
  K: "[~@2 [a4,c#5]@21 ~ [a4,c#5]@4 [b4,d#5]@2 [c#5,e5]@10 [c#5,e5]@2 [c#5,e5]@3 ~ [c#5,e5]@2]/3", // A B C#m
  L: "[~@2 [c#5,a5]@10 [a4,c#5]@2 [a4,c#5]@4 [a4,b4]@21 ~ [a4,b4]@4 [a4,c#5]@2 [a4,d#5]@4 [a4,d#5]@3 ~ d#5@2 [a4,d#5]@4 [a4,e5]@2 [b4,g#5]@8 [a4,f#5]@3 ~ [a4,f#5]@4 e5@2, ~@54 a4 ~@23 g#4 ~]/5", // F#m A Asus2 A Adim A5 E D
  M: "[g#4,e5]", N: "~ [g#4,e5] [f#4,d#5] [e4,c#5]", O: "[d#4,b4]@7 ~ [d#4,b4]@3 ~ c#5@2 [f#4,d#5]@2, ~@11 e4@2 ~@3",
  P: "[~@2 [f#4,d#5]@3 ~ [f#4,d#5] ~ [f#4,d#5]@4 [g#4,e5]@2 [b4,g#5]@7 ~ [a4,f#5]@3 ~ [a4,f#5]@16 ~@2 [g#4,e5]@3 ~]/3", // D#m C#m E D C#m
  Q: "[g#4,e5]/2", R: "[f#4,d5] [e4,c#5]", S: "[[g#4,e5]@3 ~]/2",
})).s("gm_string_ensemble_1").gain(0.25)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  ~@5 A@8 B@4 A@2 C@3 A@6 B@4 A D C@3 A E B@4 C F@3 A@8 B@4 A@2 C@3 A@6 B@4 A D C@3 A E B@4 C F@3 A G C@3 A E H B@4 C
  F@3 A D C F@2 I J@2 K L@2
>`.pickRestart({
  A: "[g#3,b3,e4]@2 ~ [g#3,b3,e4]@2 ~@3", B: "[a3,c#4,e4]@2 ~ [a3,c#4,e4]@2 ~@3",
  C: "[f#3,b3,d#4]@2 ~ [f#3,b3,d#4]@2 ~@3", D: "[g#3,b3,e4] ~@7", E: "[g#3,d4,e4]@2 ~ [g#3,d4,e4]@2 ~@3",
  F: "[f#3,b3,d#4]@4 ~@2 [f#3,b3,d#4]@3 ~@7", G: "[g#3,b3,e4] ~@3", H: "[g#3,d4,e4] ~@15", I: "[f#3,b3,d#4] ~@7",
  J: "[g#3,b3,e4]@5 ~ [g#3,b3,e4]@6 ~@4", K: "[f#3,a3,d4]@7 ~ [e3,a3,c#4]@6 ~@2", L: "[[g#3,b3,e4]@3 ~]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.25).pan(0.4)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@5 A B@3 A B@3 C D@3 A B E F@2 A B A B@3 C D@3 A G E F@2 A B C D@3 E F@3 A B@3 A B@3 C D@3 A B E F@2 A B A B@3 C D@3
  A G E F@2 A B C D@3 E F@3 A G E F@2 A B G C D@3 E F@3 A G E F@2 H I J K L@2
>`.pickRestart({
  A: "[e2,b2,e3] ~ [e2,b2,e3] ~@3 e3!2 [e2,b2,e3] ~ [e2,b2,e3] ~@5", // E5
  B: "[e2,b2,e3] ~ [e2,b2,e3] ~@3 e3!2 [e2,b2,e3] ~ [e2,b2,e3] ~@3 e3!2", // E5
  C: "[a2,e3,a3] ~ [a2,e3,a3] ~@3 a3!2 [a2,e3,a3] ~ [a2,e3,a3] ~@5", // A5
  D: "[a2,e3,a3] ~ [a2,e3,a3] ~@3 a3!2 [a2,e3,a3] ~ [a2,e3,a3] ~@3 a3!2", // A5
  E: "[b2,f#3,b3] ~ [b2,f#3,b3] ~@3 b3!2 [b2,f#3,b3] ~ [b2,f#3,b3] ~@5", // B5
  F: "[b2,f#3,b3] ~ [b2,f#3,b3] ~@3 b3!2 [b2,f#3,b3] ~ [b2,f#3,b3] ~@3 b3!2", G: "[e2,b2,e3] ~@15",
  H: "[b2,f#3,b3] ~@15", I: "e3@2 [e2,b2,e3] ~@3 e3!2 [e2,b2,e3] ~ [e2,b2,e3] ~@3 e3!2",
  J: "[e2,b2,e3] ~ [e2,b2,e3] ~@3 e3!2 [e2,b2,e3] ~ [e2,b2,e3]@2 ~@2 e3!2", // E5
  K: "[d3,f#3,a3] ~ [d3,f#3,a3]@2 ~@2 f#3 ~ [a2,e3,a3] ~ [a2,e3,a3]@4 ~@2", L: "[[e2,b2] ~, g#3@3 ~]/2",
})).s("gm_electric_guitar_muted").gain(0.25).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~@5 A@28 B A@56 B A@5 C A@9 B A@3 C A@3 C ~>".pickRestart({
  A: "x!2", B: "x!4", C: "x",
})).gain(0.35)

// drums · snare
const snare = s("sd").struct("<~@5 A@3 B A@14 C A@9 ~ A@16 B A@14 C A@24 ~ A@5 ~ A@9 ~ A@3 ~ A@3 ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@5 x ~@3 x!2", C: "~@2 x ~@2 x!3",
})).gain(0.35)

// drums · low tom
const low_tom = s("lt").struct("<~@4 [~@15 x] ~@85 [~@7 x] ~@15 [~@7 x] ~@9>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@5 A@28 ~ B@17 A@24 ~ B@14 ~ B@5 ~ B@9 ~ B@3 ~ B@3 ~@2>".pickRestart({
  A: "x ~ x ~ x!4", B: "x ~ x ~ x!3 ~",
})).gain(0.4)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@5 A@28 ~ A@41 ~ A@14 ~ A@5 ~ A@9 ~ A@3 ~ A@3 ~@2>".pickRestart({
  A: "~ x ~ x ~@4",
})).gain(0.25)

// drums · mid tom
const mid_tom = s("mt").struct("<~@4 [~@7 x] ~@85 [~@3 x] ~@15 [~@3 x] ~@9>").gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@33 A B@17 ~@24 A B@13 ~ A B@5 ~ B@9 A B@3 ~ B@3 ~@2>".pickRestart({
  A: "x!4", B: "~@7 x",
})).gain(0.35)

// drums · high tom
const high_tom = s("ht").struct("<~@90 [~@5 x ~@2] ~@15 [~@5 x ~@2] ~@9>").gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@5 A ~@3 A ~@14 A ~@9 A ~@16 A ~@14 A ~@24 A ~@4 A ~@8 A ~ A ~@2 A@2 ~@2 A ~
>`.pickRestart({
  A: "x",
})).gain(0.25)

stack(
  bass, pan_flute, string_ensemble_1, acoustic_guitar_nylon, electric_guitar_muted, kick, snare, low_tom, hihat,
  hihat_soft, mid_tom, open_hat, high_tom, crash
)

More by Corry Konings