Strudelify

To The Unknown Man

Vangelis

KeyD majorTempo84 bpm
0:00/0:00
// To The Unknown Man — Vangelis
// 84 bpm, 6/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (6/4 at bar 1, 4/4 at bar 26) are rendered on a constant 6/4 grid of one bar per cycle
// note: duplicate parts dropped: ch 4 "Echo Pan | MT-32 pat" piano (copy of ch 3 "SynBass4 | MT-32 pat" piano)
// note: Full arrangement: all 52 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(84/6)

// 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 · piano · "SynBass4 | MT-32 pat"
const bass = note(`<
  A B@4 C B@3 C B D E D F G H I B J@2 I B@3 I K@2 L M N O P Q N O R S N T U@2 V W X Y N Z X AA N AB
>`.pickRestart({
  A: "~@11 a2", B: "d2!11 a1", C: "a1!12", D: "b2!11 f#2", E: "f#2!12", F: "f#2!11 c#3", G: "g2!11 d3", H: "d2!11 d3",
  I: "a2!11 a1", J: "d2!12", K: "[d2@2 d2@2 d2@2 d2@2 d2@2 d2@2 d2@2 c#2@2 d2@16 d2@2 d2@2 ~@4 d2 d2@2 d2 ~@4]/2",
  L: "d2@2 d2@2 ~@5 f#2@3 g2@2 a2@2 d2@2 d2@2 ~@4", M: "d2 d2@2 d2 ~@4 d2@2 d2@2 ~@5 g#2@3 a2@2 b2@2",
  N: "d2@2 d2@2 ~@4 d2 d2@2 d2 ~@4 d2@2 d2@2 ~@4", O: "~ g#2@3 a2@2 b2@2 d2@2 d2@2 ~@4 d2 d2@2 d2 ~@4",
  P: "d2@2 d2@2 ~@5 f#2@2 f#2 g#2!2 ~@2 d2@2 d2@2 ~@4", Q: "d2 d2@2 d2 ~@4 d2@2 d2@2 ~@5 f#2@3 g2@2 a2@2",
  R: "d2@2 d2@2 ~@5 g#2@3 a2@2 b2@2 d2@4 f#2@4", S: "g2@4 a2@3 d2 ~@11 f#2 g2 a2 ~@2",
  T: "~ f#2@3 g2@2 a2@2 d2@2 d2@2 ~@4 d2 d2@2 d2 ~@4", U: "[d2@2 d2@2 ~@5 g#2@3 a2@2 b2@2 d2@16 d3@16]/2",
  V: "d2@2 d2@2 d2@4 d2 d2@2 d2 ~@5 d3@2 d3 b2 a2 ~@2", W: "~@3 d3!2 b2 a2@2 d2@2 d2@2 ~@4 d2 d2@2 d2 ~@4",
  X: "d2@2 d2@2 ~@5 f#2@2 f#2 g2!2 a2@2 d2@2 d2@2 ~@4", Y: "d2 d2@2 d2 ~@4 d2@2 d2@2 ~@5 f#2@2 f#2 g2!2 a2@2",
  Z: "~ f#2@2 f#2 g2!2 a2@2 d2@2 d2@2 ~@4 d2 d2@2 d2 ~@4",
  AA: "d2 d2@2 d2 ~@4 d2@2 d2@2 ~@5 f#2@2 f#2 g2!2 a2@2, ~@8 d2 ~@3", AB: "~ f#2@2 f#2 g2!2 a2@2 ~@16",
})).s("gm_piano").gain(0.4).pan(0.3)

// chords · piano · "Chorale | MT-32 patc"
const piano = note("<~@19 A@2 B C@3 B D@4 E@4 F@4 G@4 H@4 I@4 J@2>".pickRestart({
  A: "[a3,d4,f#4]/2", B: "[a3,c#4,e4]", C: "[a3,d4,f#4]/3", D: "[[a3,d4,f#4] [a3,d4,f#4] [b3,e4,g#4]]/4",
  E: "[[b3,e4,g4] [b3,d4,g4]@3 [a3,d4,f#4]@8]/4", F: "[[b3,e4,g#4]@4 [b3,e4,g4]@3 [b3,d4,g4] [a3,d4,f#4]@4]/4",
  G: "[[a3,d4,f#4]@8 [b3,e4,g#4]@8 [b3,e4,g4]@4 [a3,d4,f#4] [b3,d4,g4]@3]/4", H: "[[a3,d4,f#4] [a3,d4,f#4]@2]/4",
  I: "[[a3,d4,f#4]@4 [a3,d4,f#4] [a3,d4,f#4]]/4", J: "[[a3,d4,f#4]!2 ~]/2",
})).s("gm_piano").gain(0.2)

// drums · kick
const kick = s("bd").struct("<~@27 [~@3 x ~ x] [~ x ~ x ~ x]!9 [~ x!5] [~ x ~ x ~ x]!13 [~ x ~@4]>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@27 [~@4 x!8] [x!12]!23 [x!2 ~@10]>").gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@37 [~@11 x ~@3 x ~@3 x ~@4] ~@4 [~@19 x ~@3 x] [~ x ~@6] ~@8>").gain(0.4)

stack(bass, piano, kick, hihat, open_hat)

More by Vangelis