Strudelify
De oude muzikant cover art

1973 · Ben Cramer

De oude muzikant

Ben Cramer

KeyD majorTempo192 bpm
0:00/0:00
// De oude muzikant — Ben Cramer
// 192 bpm, 3/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 204 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(192/3)

// 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.

// chords · accordion
const accordion = note(`<
  A B A B C D A E A B F G H@4 I J A B C D K B A L M N O P Q R S T U B A B V W X Y X Z AA AB AC@4 AD AE X Z V W AF Z X AG
  AH AI AJ AK AL AM AN AO AP AQ AR AS AT AM AU AV AW AX AW AX V W X Y X Z AA AB AC@4 AD AE X Z V W AF Z X AG AH AI AJ AK
  AL AM AN AO U B A B V W X Y X Z AA AB AC@4 AD AE X Z V W AF Z X AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AM AU AV AW
  AX AY AZ BA BB BC BD BC BE BF BG BH@4 BI BJ BC BE BA BB BK BE BC BL BM BN BO BP BQ BR BS BT BU BV BW BX BY BR BZ CA
  CB@2 CC@4 CD CE CF CG
>`.pickRestart({
  A: "d5@11 f#5@5", B: "b5@11 a5@5", C: "[d5,d6]@10 ~ f#5@5", D: "[b5,c#6]@11 a5@5", E: "[a5,b5]@11 a5@5",
  F: "[a4,c#5]@3 [a#4,d5]@2 [b4,d#5]@3 [c5,e5]@3 [c#5,f5]@2 [d5,f#5]@2 ~", // A A# B C C# D
  G: "[d#5,g5]@3 [e5,g#5]@2 [f5,a5]@3 [f#5,a#5]@3 [g5,b5]@2 [g#5,c6]@2 ~", // D# E F F# G G#
  H: "[a5,c#6]@2 a5@2 ~ [a5,c#6]@2 a5@2 g5@2 a5!2 ~ g5@2, ~@4 g5@2 ~@5 c#6@2 ~@3", I: "~@5 c#5@2 ~ c#5@2 ~ e5@2 e5@2 ~",
  J: "[g5,b5]@11 [f#5,a5]@5", K: "[d5,b5]@11 f#5@5", L: "d5@11 c5@5", M: "b4@5 d5@5 ~ g5@5", N: "a5@10 ~ g5@5",
  O: "[e5,g5]@10 ~ [d5,g5]@5", P: "[c#5,g5]@11 [b4,g5]@5", Q: "[f#5,b5]@11 [f#5,a5]@5", R: "[f#5,a5]",
  S: "[g5,c#6]@2 a5@2 c#6 [g5,c#6]@2 a5@2 c#6@2 ~ a5@2 c#6@2, ~@11 [g5,c#6]@2 ~@3", T: "[g5,c#6]@5 a5@5 ~ [g5,c#6]@5",
  U: "[d5,b5]@10 ~ [f#5,a5]@5", V: "[d4,d5]@10 ~ f#4@5", W: "[b4,c#5]@11 a4@5", X: "d4@10 ~ f#4@5",
  Y: "[a4,b4]@11 a4@5", Z: "b4@10 ~ a4@5", AA: "[a3,c#4]@3 [a#3,d4]@2 [b3,d#4]@2 ~ [c4,e4]@3 [c#4,f4]@2 [d4,f#4]@2 ~",
  AB: "[d#4,g4]@2 ~ [e4,g#4]@2 [f4,a4]@3 [f#4,a#4]@3 [g4,b4]@2 [g#4,c5]@2 ~", // D# E F F# G G#
  AC: "[a4,c#5] ~ a4@2 ~ [a4,c#5]@2 a4@2 g4@2 a4 a4@2 g4@2, ~@4 g4@2 ~@5 c#5@2 ~@3", // A
  AD: "~@5 c#4@2 ~ c#4@2 ~ e4@2 e4@2 ~", AE: "[g4,b4]@11 [f#4,a4]@5", AF: "[d4,b4]@11 f#4@5", AG: "d4@11 c4@5",
  AH: "b3@5 d4@5 ~ g4@5", AI: "a4@10 ~ g4@5", AJ: "[e4,g4]@10 ~ [d4,g4]@5", AK: "[c#4,g4]@11 [b3,g4]@5",
  AL: "[f#4,b4]@11 [f#4,a4]@5", AM: "[f#4,a4]",
  AN: "[g4,c#5]@2 a4@2 c#5 [g4,c#5]@2 a4 ~ c#5@2 ~ a4 ~ c#5@2, ~@11 [g4,c#5]@2 ~@3", AO: "[g4,c#5]@5 a4@5 ~ [g4,c#5]@5",
  AP: "f#4@2 a4@2 ~ f#4@2 a4@2 d5@2 ~ a4@2 d5@2, ~@4 d5@2 ~@5 f#4@2 ~@3", AQ: "d5@5 c#5@5 ~ c5@5, f#4",
  AR: "e5@11 d5@5, b4", AS: "c#5@11 b4@5, g4", AT: "b4@11 a4@5, f#4",
  AU: "g4@2 a4@2 c#5 g4@2 a4 ~ c#5@2 ~ a4@2 c#5 ~, ~@11 g4@2 ~@3", AV: "g4@5 a4@5 ~ [g4,c#5]@5",
  AW: "[d4,d5]@11 [f#4,f#5]@5", AX: "[b4,b5]@11 [a4,a5]@5",
  AY: "[a#4,d5]@3 [c5,d#5]@2 [c#5,e5]@3 [d5,f5]@2 ~ [d#5,f#5]@2 [e5,g5]@3", // A# Cm C#m Dm D#m Em
  AZ: "[f5,g#5]@3 [f#5,a5]@2 a#5@2 ~ b5@2 ~ c6@2 d6@3, ~@5 g5@5 ~ a5@5", BA: "[d#4,d#5]@11 g4@5",
  BB: "[c5,d5]@11 a#4@5", BC: "d#4@10 ~ g4@5", BD: "[a#4,c5]@10 ~ a#4@5", BE: "c5@11 a#4@5",
  BF: "[a#3,d4]@2 ~ [b3,d#4]@2 [c4,e4]@3 [c#4,f4]@2 ~ [d4,f#4]@2 [d#4,g4]@3", // A# B C C# D D#
  BG: "[e4,g#4]@3 [f4,a4]@2 [f#4,a#4]@3 [g4,b4]@2 ~ [g#4,c5]@2 [a4,c#5]@3", // E F F# G G# A
  BH: "[a#4,d5]@2 a#4@2 ~ d5@2 a#4@2 g#4@2 a#4 a#4@2 g#4@2, ~@2 g#4 ~@5, ~@5 a#4 ~@5 d5@2 ~@3", // A#
  BI: "~@5 d4@3 d4@3 f4@2 f4@2 ~", BJ: "[g#4,c5]@11 [g4,a#4]@5", BK: "[d#4,c5]@10 ~ g4@5", BL: "d#4@10 ~ c#4@5",
  BM: "c4@5 d#4@5 ~ g#4@5", BN: "a#4@10 ~ g#4@5", BO: "[f4,g#4]@10 ~ [d#4,g#4]@5", BP: "[d4,g#4]@11 [c4,g#4]@5",
  BQ: "[g4,c5]@11 [g4,a#4]@5", BR: "[g4,a#4]",
  BS: "[g#4,d5]@2 a#4@2 d5 [g#4,d5]@2 a#4@2 d5@2 ~ a#4@2 d5@2, ~@11 [g#4,d5]@2 ~@3", // G#dim
  BT: "[g#4,d5]@5 a#4@5 ~ [g#4,d5]@5", BU: "g4 ~ a#4@2 ~ g4@2 a#4@2 d#5 ~@2 a#4@2 d#5@2, ~@4 d#5@2 ~@5 g4@2 ~@3",
  BV: "d#5@5 d5@5 ~ c#5@5, g4", BW: "f5@11 d#5@5, c5", BX: "d5@10 ~ c5@5, g#4", BY: "c5@10 ~ a#4@5, g4",
  BZ: "g#4@2 a#4@2 ~ g#4@2 a#4@2 d5@2 ~ a#4@2 d5@2, ~@4 d5@2 ~@5 g#4@2 ~@3", CA: "g#4@5 a#4@5 ~ [g#4,d5]@5",
  CB: "[g#4,d5]/2", CC: "[d#4@10 ~ g4@5 c5@11 a#4@5, d#5]/2",
  CD: "[d#4,a#4]@3 [e4,b4]@2 [f4,c5]@2 ~ [f#4,c#5]@3 [g4,d5]@2 [g#4,d#5]@3", // D#5 E5 F5 F#5 G5 G#5
  CE: "[a4,e5]@3 [a#4,f5]@2 [b4,f#5]@3 [c5,g5]@3 [c#5,g#5]@2 [d5,a5]@2 ~", CF: "[d#5,a#5]@3 ~@8 [f4,g#4,d5]@5",
  CG: "[d#4,g4,d#5]@5 ~@11", // D#
})).s("gm_accordion").gain(0.4)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@38 A B A B A B@2 C B C B C B D A B A B A B A E F A F@2 A@2 B C A G H@2 A@2 B@2 A B A B A B A B A B@2 C B C B C B D A
  B A B A B A E F A F@2 A@2 B C A B A I A B A B A B@2 C B C B C B D A B A B A B A E F A F@2 A@2 B C A G H@2 A@2 B@2 A B
  J K L J L J L J@2 M J M J M J N L J L J L J L O P L P@2 L@2 J M L Q R@2 L@2 J S J@2 L J L J T ~ U V
>`.pickRestart({
  A: "d2@11 ~@5", B: "a1@11 ~@5", C: "e2@11 ~@5", D: "e2@9 ~@2 a1@5", E: "d2@11 f#1@5", F: "g1@11 ~@5",
  G: "d2@5 e2@5 ~ f#2@5", H: "g2@11 ~@5", I: "a1@5 b1@5 ~ c#2@5", J: "a#1@11 ~@5", K: "a#1@8 ~@3 d2@5", L: "d#2@11 ~@5",
  M: "f2@11 ~@5", N: "f2@9 ~@2 a#1@5", O: "d#2@11 g1@5", P: "g#1@11 ~@5", Q: "d#2@5 f2@5 ~ g2@5", R: "g#2@11 ~@5",
  S: "f1@11 ~@5", T: "a#1@5 ~@11", U: "d#2@5 ~@6 a#1@4 ~", V: "d#2@5 ~@11",
})).s("gm_electric_bass_finger").gain(0.21)

// other · piano · "A.PIANO 1"
const piano = note(`<
  A B A B A B A B A B C D C D C D C D A B A B A B A B E F E F A B C D A B A B A B A B A B C D C D C D C D A B A B A B A
  B E F E F A B C D A B E F A B C D A B A B A B A B A B C D C D C D C D A B A B A B A B E F E F A B C D A B A B G B A B
  A B C D C D C D C D A B A B A B A B E F E F A B C D A B E F A B C D A B H I J K L K L K M N M N M N M N L K L K L K L
  K O P O P L K M N L K O P L K M N Q R S@4 T ~ U V
>`.pickRestart({
  A: "d3@5 f#3@5 ~ a3@5, d2", B: "d4@5 a3@5 ~ f#3@5", C: "c#4@5 a3@5 ~ e3@5, a2@5 ~@3", D: "a3@5 c#4@5 ~ e3@5",
  E: "g3@5 b3@5 ~ d4@5, g2", F: "g4@5 d4@5 ~ b3@5", G: "~@5 d3@4 ~@2 d3@4 ~", H: "a#3@5 d4@5 ~ f4@5, a#2",
  I: "a#4@5 f4@5 ~ d4@5", J: "~@5 d#3@4 ~@2 d#3@4 ~", K: "d#4@5 a#3@5 ~ g3@5", L: "d#3@5 g3@5 ~ a#3@5, d#2",
  M: "d4@5 a#3@5 ~ f3@5, a#2@11 ~@5", N: "a#3@5 d4@5 ~ f3@5", O: "g#3@5 c4@5 ~ d#4@5, g#2", P: "g#4@5 d#4@5 ~ c4@5",
  Q: "[a#3,a#4]", R: "[a#3,f4,a#4]", S: "~@5 [g3,a#3,d#4]@3 ~@3 [g3,a#3,d#4]@2 ~@3", T: "[f3,a#3,d4]@3 ~@13",
  U: "~@11 [f3,a#3,d4]@3 ~@2", V: "[d#3,g3,a#3] ~@7",
})).s("gm_piano").gain(0.36).pan(0.4)

// other · alto sax
const alto_sax = note(`<
  ~@38 A B C B D E F@2 ~@8 A B C B A B G@4 H@4 A I G@2 J@2 B K L@2 ~@2 A B C M ~@12 A B C M A B G@4 H@4 ~@4 A B C B D E
  F@2 ~@8 A B C B A B G@4 H@4 A I G@2 J@2 B K L@2 ~ N O A I P Q@2 P R S@4 T U Q@2 O A I P O B I V W X O P Y@2 Z AA AB X
  O P ~@4 AC U AC AD AE ~ AF AG
>`.pickRestart({
  A: "d4", B: "c#4", C: "b3", D: "d4@11 c#4@5", E: "b3@11 a3@4 ~", F: "a3/2", G: "b3/2", H: "a3/4", I: "c4",
  J: "[a3@27 d4@5]/2", K: "a3@11 g3@5", L: "f#3/2", M: "a3", N: "~@5 c#4@5 ~ d4@5", O: "d#4", P: "a#3", Q: "d#4/2",
  R: "a3@10 ~ a#3@5", S: "d4/4", T: "a#3@11 d4@5", U: "c4@10 ~ a#3@5", V: "g#3", W: "f4@11 d#4@5", X: "d4@11 c4@5",
  Y: "g#3/2", Z: "g3", AA: "d#4@5 d4@5 ~ c#4@5", AB: "c4@11 d#4@5", AC: "d#3@10 ~ g3@5", AD: "c4@10 ~ a#3@4 ~",
  AE: "a#3 ~@3", AF: "~@11 d4@4 ~", AG: "d#4 ~@7",
})).s("gm_alto_sax").gain(0.45)

// drums · kick
const kick = s("bd").struct("<x!201 ~ [x ~@10 x ~@4] x>").gain(0.64)

// drums · rim
const rim = s("rim").struct(`<
  ~@81 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@90
>`.pickRestart({
  A: "x",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct(`<
  ~@115 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A B@38 ~ C B@4 A ~ D A
>`.pickRestart({
  A: "x", B: "~@5 x ~@5 x ~@4", C: "~@11 x ~@4", D: "x ~@10 x ~@4",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct(`<
  A@39 B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B ~@48
>`.pickRestart({
  A: "x ~@4 x ~@5 x ~@4", B: "x ~@4 x ~@10",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@39 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~@48
>`.pickRestart({
  A: "~@11 x ~@4",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct("<~@38 A ~@76 A ~@78 A@7 ~ B A>".pickRestart({
  A: "x", B: "x ~@10 x ~@4",
})).gain(0.64)

// drums · ride
const ride = s("rd").struct("<~@156 x!38 ~@10>").gain(0.64)

stack(accordion, bass, piano, alto_sax, kick, rim, snare, hihat, open_hat, crash, ride)

More by Ben Cramer