Strudelify

Incantations, Part 4

Mike Oldfield

KeyE minorTempo190 bpm
0:00/0:00
// Incantations, Part 4 — Mike Oldfield
// 190 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 3/4 at bar 7, 4/4 at bar 8, 3/4 at bar 18, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 2 marimba (copy of ch 1 "Incantatio" marimba); ch 6 marimba (copy of ch 2 xylophone); ch 7 celesta (copy of ch 5 glockenspiel)
// note: Full arrangement: all 533 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(190/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.

// chords · electric guitar muted · "Incantatio"
const electric_guitar_muted = note(`<
  A B C D E F@2 G H I J K@2 L M@2 N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH@2 AI AJ AK AL AM AN AO AP AQ AR AS
  AT AU AV AW AX ~@479
>`.pickRestart({
  A: "~@2 [a2,e3] ~@2 [a2,e3] ~@2 [a2,e3]@2 ~ f#3@2 [a2,e3] ~@2", // A5
  B: "[a2,e3]@3 f#3@3 a2 ~@2 [e3,b3] ~@2 [e3,b3] ~ [e3,b3] ~", C: "~@4 [d3,a3] ~@2 a3 ~@2 [d3,a3] ~@4 [b2,e3]",
  D: "~@2 [b2,e3] ~@2 [b2,e3]@2 ~ f#3@3 [b2,e3] ~ [b2,e3]@3", // E5
  E: "f#3@3 b2 ~@2 [g3,d4] ~@2 [g3,d4] ~ [g3,d4] ~@2 [d3,a3]@2", // G5 D5
  F: "[~ [d3,a3] ~@2 [d3,a3] ~@2 [a2,e3] ~ [a2,e3] ~@2 [a2,e3]@2 ~ f#3@3 [a2,e3] ~@2 [a2,e3]@3 f#3@2 a2 ~@2 [e3,b3] ~@2]/2", // D5 A5 E5
  G: "[e3,b3] ~@2 [e3,b3] ~@4 [d3,a3] ~@5 [d3,a3] ~", H: "~@4 [b2,e3] ~@2 [b2,e3] ~ [b2,e3]@2 ~ [b2,e3]@2 ~ [b2,e3]",
  I: "~@2 [b2,e3]@3 [b2,e3]@5 [e3,a3] ~@2 [d3,g3] ~@2", // E5 A5 G5
  J: "[d3,g3] ~@2 [c#3,f#3]@2 [c#3,f#3] ~@2 [b2,e3] ~@2 [b2,e3] ~@2 [a2,d3] ~", // G5 F#5 E5 D5
  K: "[~ [a2,e3] ~@2 [a2,e3] ~ [a2,e3]@2 ~ f#3@3 [a2,e3] ~@2 [a2,e3]@3 f#3@2 a2 ~@2 [e3,b3] ~@2 [e3,b3] ~@2 [e3,b3] ~@2]/2", // A5 E5
  L: "~@3 [d3,a3] ~@4 [d3,a3] ~@5 [b2,e3] ~", // D5 E5
  M: "[~ [b2,e3] ~ [b2,e3]@2 ~ f#3@3 [b2,e3] ~@2 [b2,e3]@3 f#3@2 b2 ~@2 [g3,d4] ~@2 [g3,d4] ~@2 [g3,d4] ~@2 [d3,a3]@2 ~]/2", // E5 G5 D5
  N: "[d3,a3] ~ [d3,a3] ~@2 [a2,e3] ~@2 [a2,e3] ~@2 [a2,e3]@2 ~ f#3@2", // D5 A5
  O: "[a2,e3] ~@2 [a2,e3]@3 f#3@3 a2 ~@2 [e3,b3] ~@2 [e3,b3]", P: "~ [e3,b3] ~@5 [d3,a3] ~@5 [d3,a3] ~@2",
  Q: "~@2 [b2,e3] ~@2 [b2,e3] ~@2 [b2,e3]@2 ~ [b2,e3]@2 [b2,e3] ~@2", // E5
  R: "[b2,e3]@3 [b2,e3]@5 ~ [d3,a3] ~@2 [d3,a3] ~ [d3,a3] ~", // E5 D5
  S: "~ [d3,a3]@2 ~ [d3,a3] ~@2 [d3,a3] ~@2 [d3,a3] ~ [d3,a3] ~@2 [e3,a3]", // D5 A5
  T: "~@5 [e3,a3] ~@2 [e3,a3]@2 ~ [e3,a3] ~ [e3,a3] ~@2", // A5
  U: "[e3,a3] ~@2 [e3,a3] ~@2 [a2,e3] ~@2 [a2,e3] ~ [a2,e3]@2 ~ f#3@2", // A5
  V: "~ [a2,e3] ~@2 [a2,e3]@3 f#3@2 a2 ~@2 [a2,e3] ~@2 [a2,e3]", W: "~@2 [a2,e3] ~@5 [g2,d3] ~@4 [g2,d3] ~@2",
  X: "~@3 [a2,e3] ~@2 [a2,e3] ~ [a2,e3]@2 ~ f#3@3 [a2,e3] ~", // A5
  Y: "~ [a2,e3]@3 f#3@3 a2 ~ [d3,a3] ~@2 [d3,a3] ~@2 [d3,a3]", // A5 D5
  Z: "~@2 [a2,e3]@2 ~ [a2,e3] ~ [a2,e3] ~@2 [a2,d3] ~@2 [a2,d3] ~@2", // A5 D5
  AA: "[a2,d3]@2 ~ e3@2 [a2,d3] ~@2 [a2,d3]@3 e3@3 a2 ~", AB: "~ [a2,e3] ~@2 [a2,e3] ~ [a2,e3] ~@5 [g2,d3] ~@3",
  AC: "~@2 [g2,d3] ~@4 [d3,g3] ~@2 [d3,g3] ~@2 [d3,g3]@2 ~", // G5
  AD: "[d3,g3]@2 ~ [d3,g3] ~ [d3,g3]@3 [d3,g3]@5 ~ [d3,a3] ~", // G5 D5
  AE: "~ [c3,g3] ~ [c3,g3] ~@2 [b2,f#3]@2 ~ [b2,f#3] ~@2 [a2,e3] ~@2 [a2,e3]", // C5 B5 A5
  AF: "~ [g2,d3] ~@2 [e3,a3] ~@2 [e3,a3] ~@2 [e3,a3] ~@2 [e3,b3] ~@2", // G5 A5 E5
  AG: "[e3,a3]@2 ~@2 a3 [e3,b3] ~@2 [e3,b3] ~@2 [e3,g3] ~@2 [e3,g3] ~", // A5 E5 Em
  AH: "[[e3,g3] ~@2 [e3,a3] ~@2 [e3,b3] ~@2 [e3,b3] ~@2 [e3,a3] ~@2 e3@2 [e3,a3] ~@2 [e3,a3] ~@2 [e3,a3] ~@2 [e3,b3] ~@2 [e3,a3] ~ a3]/2", // Em A5 E5 A5 E5 A5
  AI: "~@2 [e3,b3] ~@2 [e3,b3] ~@2 [e3,g3] ~@2 [e3,g3] ~ [e3,g3] ~@2", // E5 Em
  AJ: "[e3,b3] ~@2 [e3,b3] ~@2 [e3,b3] ~@2 [e3,a3] ~@2 e3@2 [e3,a3] ~", // E5 A5
  AK: "~ [e3,a3] ~@2 [e3,a3] ~@2 [e3,b3] ~@2 [e3,a3] ~ [e3,a3] ~@2 [e3,b3]", // A5 E5 A5 E5
  AL: "~@2 [e3,b3] ~@2 [e3,g3] ~@2 [e3,g3] ~@2 [e3,g3] ~ [e3,a3] ~@2", // E5 Em A5
  AM: "[e3,b3] ~@2 [e3,b3] ~@2 e3 ~@2 [e3,a3] ~ [e3,a3] ~@2 [e3,a3] ~", // E5 A5
  AN: "~ [e3,a3] ~@2 [e3,b3] ~@2 [e3,a3] ~ [e3,a3] ~@2 [e3,b3] ~@2 [e3,b3]", // A5 E5 A5 E5
  AO: "~@2 [g3,b3] ~@2 [g3,b3] ~@2 [g3,b3] ~ [g3,b3] ~@2 [g3,b3] ~@2", // G
  AP: "[g3,b3] ~@2 [g3,b3] ~@2 [g3,b3] ~ [d3,a3] ~@2 [d3,a3] ~@2 [d3,a3] ~", // G D5
  AQ: "~ [d3,a3] ~@2 [d3,a3] ~@2 [d3,a3] ~ [d3,a3] ~@2 [d3,a3] ~@2 [e3,b3]", // D5 E5
  AR: "~@2 [e3,b3] ~@2 [e3,b3] ~ [e3,b3] ~@2 [e3,b3] ~@2 [e3,b3] ~@2", // E5
  AS: "[e3,b3] ~@2 [e3,b3] ~ [d3,a3] ~@2 [d3,a3] ~@2 [d3,a3] ~@2 [d3,a3] ~", // E5 D5
  AT: "~ [d3,a3] ~@2 [d3,a3] ~ [d3,a3] ~@2 [d3,a3] ~@2 [d3,a3] ~@2 [d3,a3]", // D5
  AU: "~@2 [d3,a3] ~ [d3,a3] ~@2 [d3,a3] ~@2 [d3,a3] ~@2 [d3,a3] ~@2", // D5
  AV: "[d3,a3] ~@2 [c3,g3] ~ [c3,g3] ~@2 [c3,g3] ~@2 [c3,g3] ~@2 [c3,g3] ~", // D5 C5
  AW: "~ [c3,g3] ~ [c3,g3] ~@2 [c3,g3] ~@2 [d3,a3] ~@2 [d3,a3] ~@2 [d3,a3]", // C5 D5
  AX: "~ [d3,a3] ~@2 [d3,a3] ~@2 [d3,a3] ~@2 [d3,a3] ~@2 [d3,a3] ~@2", // D5
})).s("gm_electric_guitar_muted").gain(0.36).pan(0.4)

// chords · electric guitar muted · "Incantatio" · soft notes
const electric_guitar_muted_2 = note("<~@2 A ~@4 B C ~@4 D ~@4 E ~@3 F ~@2 G H ~@3 I J ~@5 K ~@4 L ~@490>".pickRestart({
  A: "~ [e3,b3] ~@5 d3 ~@4 [d3,a3] ~@3", B: "~@6 [e3,b3] ~@4 [d3,a3] ~@4", C: "~ [d3,a3] ~@14",
  D: "[e3,b3] ~@4 [d3,a3] ~@5 [d3,a3] ~@4", E: "~@4 [e3,b3] ~@5 [d3,a3] ~@4 [d3,a3]", F: "~@2 [e3,a3] ~@13",
  G: "~@5 [a2,e3] ~@4 [g2,d3] ~@5", H: "[g2,d3] ~@15", I: "~@9 [a2,e3] ~@5 [g2,d3]", J: "~@4 [g2,d3] ~@11",
  K: "~@15 e3", L: "~@6 b3 ~@9",
})).s("gm_electric_guitar_muted").gain(0.2).pan(0.4)

// chords · overdriven guitar · "Incantatio"
const overdriven_guitar = note(`<
  ~@54 A B@3 C D@2 E F@2 G H@2 I J@2 K L@2 M N@3 O P@2 Q R@2 S T@2 U V@2 W X@2 Y Z@2 AA AB AC@2 AD AE@2 AF AG@2 AH AI@2
  AH AJ@2 AK AL@3 AM AN@2 AO ~@185 AP@8 ~@221
>`.pickRestart({
  A: "[d3,a3]@2 [d3,a3]@3 [d3,a3]@3 [d3,a3]@3 [d3,a3]@3 [d3,a3]@2", // D5
  B: "[[d3,a3]@3 [d3,a3]@3 [e3,f#3]@3 [e3,f#3]@3 [e3,f#3]@3 [e3,f#3]@2 [e3,f#3]@3 [e3,f#3]@3 [e3,f#3]@3 [e3,f#3]@3 [d3,g3]@2 [d3,g3]@3 [d3,g3]@3 [d3,g3]@3 [d3,g3]@3 [d3,g3]@2 [d3,g3]@3]/3", // D5 Esus2 G5
  C: "[d3,g3]@3 [b2,g#3]@3 [b2,g#3]@3 [b2,g#3]@3 [b2,g#3]@2 [b2,g#3]@2", // G5 E
  D: "[~ [b2,g#3]@3 [b2,g#3]@3 [b2,g#3]@3 [a2,e3]@2 [a2,e3]@3 [a2,e3]@3 f#3@3 [a2,e3]@3 [a2,e3]@3 f#3@2 a2@3]/2", // E A5
  E: "[e3,b3]@3 [e3,b3]@3 [e3,b3]@3 [e3,b3]@2 [d3,a3]@3 a3@2", // E5 D5
  F: "[~ [d3,a3]@3 [d3,a3]@3 [b2,e3]@2 [b2,e3]@3 [b2,e3]@3 [b2,e3]@3 [b2,e3]@3 [b2,e3]@3 [b2,e3]@2 [b2,e3]@3 [g3,d4]@3]/2", // D5 E5 G5
  G: "[g3,d4]@3 [g3,d4]@3 [d3,a3]@2 [d3,a3]@3 [d3,a3]@3 [a2,e3]@2", // G5 D5 A5
  H: "[~ [a2,e3]@3 [a2,e3]@3 f#3@2 [a2,e3]@3 [a2,e3]@3 f#3@3 a2@3 [e3,b3]@2 [e3,b3]@3 [e3,b3]@3 [e3,b3]@3]/2", // A5 E5
  I: "[d3,a3]@3 ~@2 [d3,a3]@3 [d3,a3]@3 [b2,e3]@3 [b2,e3]@2", // D5 E5
  J: "[~ [b2,e3]@3 [b2,e3]@2 [b2,e3]@3 [b2,e3]@3 [b2,e3]@3 [b2,e3]@3 [e3,a3]@2 [d3,g3]@3 [d3,g3]@3 [c#3,f#3]@3 [c#3,f#3]@3]/2", // E5 A5 G5 F#5
  K: "[b2,e3]@3 [b2,e3]@2 [a2,d3]@3 [a2,e3]@3 [a2,e3]@3 [a2,e3]@2", // E5 D5 A5
  L: "[~ f#3@2 [a2,e3]@3 [a2,e3]@3 f#3@3 a2@3 [e3,b3]@2 [e3,b3]@3 [e3,b3]@3 [e3,b3]@3 [d3,a3]@3 [d3,a3]@3]/2", // A5 E5 D5
  M: "[d3,a3]@2 [d3,a3]@3 [b2,e3]@3 [b2,e3]@3 [b2,e3]@3 f#3@2", // D5 E5
  N: "[[b2,e3]@3 [b2,e3]@3 f#3@3 b2@3 [g3,d4]@3 [g3,d4]@2 [g3,d4]@3 [d3,a3]@3 [d3,a3]@3 [d3,a3]@3 [a2,e3]@2 [a2,e3]@3 [a2,e3]@3 f#3@3 [a2,e3]@3 [a2,e3]@2 f#3@3]/3", // E5 G5 D5 A5
  O: "a2@3 [e3,b3]@3 [e3,b3]@3 [e3,b3]@3 [e3,b3]@2 [d3,a3]@2", // E5 D5
  P: "[~@4 [d3,a3]@3 [d3,a3]@3 [b2,e3]@2 [b2,e3]@3 [b2,e3]@3 [b2,e3]@3 [b2,e3]@3 [b2,e3]@3 [b2,e3]@2 [b2,e3]@3]/2", // D5 E5
  Q: "[d3,a3]@3 [d3,a3]@3 [d3,a3]@3 [d3,a3]@2 [d3,a3]@3 [d3,a3]@2", // D5
  R: "[~ [d3,a3]@3 [d3,a3]@3 [e3,a3]@2 ~@3 [e3,a3]@3 [e3,a3]@3 [e3,a3]@3 [e3,a3]@3 [e3,a3]@2 [e3,a3]@3 [a2,e3]@3]/2", // D5 A5
  S: "[a2,e3]@3 [a2,e3]@3 f#3@2 [a2,e3]@3 ~@3 f#3@2", // A5
  T: "[~ a2@3 [a2,e3]@3 ~@2 [a2,e3]@3 ~@3 [g2,d3]@3 ~@3 [g2,d3]@2 ~@3 [a2,e3]@3 [a2,e3]@3]/2", // A5 G5 A5
  U: "[a2,e3]@3 f#3@2 [a2,e3]@3 ~@3 f#3@3 a2@2", // A5
  V: "[~ [d3,a3]@3 [d3,a3]@2 [d3,a3]@3 [a2,e3]@3 [a2,e3]@3 [a2,e3]@3 [a2,d3]@2 [a2,d3]@3 [a2,d3]@3 e3@3 [a2,d3]@3]/2", // D5 A5 D5
  W: "~@3 e3@2 a2@3 [a2,e3]@3 [a2,e3]@3 [a2,e3]@2", // A5
  X: "[~ [a2,e3]@2 [g2,d3]@3 ~@3 [g2,d3]@3 [g2,d3]@3 [g2,d3]@2 [g2,d3]@3 [g2,d3]@3 [g2,d3]@3 [g2,d3]@3 [g2,d3]@3]/2", // A5 G5
  Y: "[g2,d3]@2 [g2,d3]@3 [d3,a3]@3 [c3,g3]@3 [c3,g3]@3 [b2,f#3]@2", // G5 D5 C5 B5
  Z: "[[b2,f#3]@3 [a2,e3]@3 [a2,e3]@3 [g2,d3]@3 [e3,a3]@3 [e3,a3]@2 [e3,a3]@3 [e3,b3]@3 [e3,a3]@4 ~@2 [e3,b3]@2 ~]/2", // B5 A5 G5 A5 E5 A5 E5
  AA: "~@2 [e3,g3]@3 [e3,g3]@3 [e3,g3]@3 [e3,a3]@2 [e3,b3]@3", AB: "b3@3 [e3,a3]@3 e3@3 [e3,a3]@3 [e3,a3]@2 [e3,a3]@2",
  AC: "[~ [e3,b3]@3 [e3,a3]@3 a3@3 [e3,b3]@2 b3@3 [e3,g3]@3 g3@3 [e3,g3]@3 [e3,b3]@3 b3@2 [e3,b3]@3]/2", // E5 A5 E5 Em E5
  AD: "[e3,a3]@3 e3@3 [e3,a3]@3 [e3,a3]@2 [e3,a3]@3 [e3,b3]@2", // A5 E5
  AE: "[~ [e3,a3]@3 a3@3 [e3,b3]@2 b3@3 [e3,g3]@3 g3@3 g3@3 [e3,a3]@3 [e3,b3]@2 [e3,b3]@3 ~@3]/2", // A5 E5 Em A5 E5
  AF: "a3@3 [e3,a3]@3 [e3,a3]@2 [e3,a3]@3 [e3,b3]@3 a3@2", // A5 E5
  AG: "[~ a3@3 [e3,b3]@3 [e3,b3]@2 [g3,b3]@3 [g3,b3]@3 [g3,b3]@3 [g3,b3]@3 [g3,b3]@2 [g3,b3]@3 [g3,b3]@3 [g3,b3]@3]/2", // E5 G
  AH: "[d3,a3]@3 [d3,a3]@2 [d3,a3]@3 [d3,a3]@3 [d3,a3]@3 [d3,a3]@2", // D5
  AI: "[~ [d3,a3]@3 [d3,a3]@2 [e3,b3]@3 [e3,b3]@3 [e3,b3]@3 [e3,b3]@3 [e3,b3]@2 [e3,b3]@3 [e3,b3]@3 [e3,b3]@3 [d3,a3]@3]/2", // D5 E5 D5
  AJ: "[~ [d3,a3]@2 [d3,a3]@3 [d3,a3]@3 [d3,a3]@3 [d3,a3]@3 [d3,a3]@2 [d3,a3]@3 [d3,a3]@3 [d3,a3]@3 [c3,g3]@3 [c3,g3]@3]/2", // D5 C5
  AK: "[c3,g3]@2 g3@3 [c3,g3]@3 [c3,g3]@3 [c3,g3]@3 [c3,g3]@2", // C5
  AL: "[[d3,a3]@3 [d3,a3]@3 [d3,a3]@3 [d3,a3]@3 [d3,a3]@3 a3@2 [d3,a3]@3 [d3,a3]@3 [d3,a3]@3 [d3,a3]@3 [d3,a3]@2 [d3,a3]@3 [d3,a3]@3 [d3,a3]@3 [d3,a3]@3 [d3,a3]@2 [f#3,e4]@3]/3", // D5 F#7
  AM: "[f#3,e4]@3 [f#3,e4]@3 [f#3,e4]@3 [f#3,e4]@3 [f#3,e4]@2 [f#3,e4]@2", // F#7
  AN: "[~ [f#3,e4]@3 [g3,d4]@3 [g3,d4]@3 [g3,d4]@2 [g3,d4]@3 [g3,d4]@3 [g3,d4]@3 [g3,d4]@3 [g3,d4]@3 [b3,g#4]@2 [b3,g#4]@3]/2", // F#7 G5 E
  AO: "[b3,g#4]@3 [b3,g#4]@3 [b3,g#4]@3 [b3,g#4]@2 [b3,g#4]@3 [b3,g#4]@2", AP: "[b2,b3]/8",
})).s("gm_overdriven_guitar").gain(0.31).pan(0.6)

// chords · overdriven guitar · "Incantatio" · soft notes
const overdriven_guitar_soft = note(`<
  ~@61 A ~@5 B ~@10 C ~@2 D ~ E F G H ~@2 I J ~@3 K@2 L M N ~ O@2 P Q ~@7 R S@2 ~@419
>`.pickRestart({
  A: "~@7 d3", B: "~@3 [d3,a3]@2 ~@11", C: "~ [d3,a3]@3 ~@12", D: "~@9 [e3,a3]@3 ~@4", E: "~@11 [a2,e3]@3 ~@2",
  F: "~@7 [a2,e3]@2 ~@3 [a2,e3]@3 ~", G: "~@2 [g2,d3]@3 ~@2 [g2,d3]@3 ~@6", H: "~@8 [a2,e3]@3 ~@5", I: "[a2,d3]@3 ~@13",
  J: "~@6 [g2,d3]@3 ~@7", K: "[~@11 a3 ~@3 [e3,b3]@3 ~@14]/2", L: "e3@3 ~@13", M: "~@7 e3@3 ~@2 e3@3 ~",
  N: "~@2 e3@3 ~@6 e3@2 ~@3", O: "[~@4 e3@3 ~@2 e3@3 ~@3 e3@3 e3@3 ~@8 [e3,b3]@3]/2", P: "e3@3 ~@11 e3@2",
  Q: "~ e3@3 ~@12", R: "~@2 c3@3 ~@11", S: "[~@15 d3@2 ~@15]/2",
})).s("gm_overdriven_guitar").gain(0.2).pan(0.6)

// other · vibraphone · "Incantatio"
const vibraphone = note(`<
  ~@175 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 AO AP AQ AR R AS
  AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW BX BY BZ CA CB CC CD CE CF
  CG 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 AO AP AQ ~@229
>`.pickRestart({
  A: "f#3 ~ a3 g3 b3 a3 c#4 b3", B: "e4 ~ f#4 ~ c#4 ~ e4 d#4", C: "f#4 ~ g#4 f#4 b4 ~ g#3 ~",
  D: "c#4 b3 d#4 ~ f#4 ~ g#4 ~", E: "f#4 ~ d#4 f#4 f4 g#4 f#4 a#4", F: "g#4 c#5 a#3 ~ c#4 c4 d#4 c#4",
  G: "f4 d#4 g#4 ~ a#4 ~ f4 ~", H: "g#4 g4 a#4 ~ c5 a#4 f5 ~", I: "c4 ~ d#4 c#4 f4 ~ g4 ~", J: "c5 ~ a#4 ~ g4 ~ f4 d#4",
  K: "d4 c4 a#3 a3 g3 ~ d4 ~", L: "f4 e4 g4 f4 a4 g4 c5 ~", M: "d5 ~ a4 ~ c5 b4 d5 ~", N: "e5 d5 g5 ~ e4 ~ g4 f#4",
  O: "a4 ~ b4 ~ e5 ~ d5 ~", P: "b4 d5 c#5 e5 d5 f#5 e5 g5", Q: "f#4 ~ a4 g#4 b4 a4 c#5 b4",
  R: "e5 ~ f#5 ~ c#5 ~ e5 d#5", S: "f#5 ~ g#5 f#5 c#6 ~ g#4 ~", T: "b4 a#4 c#5 ~ d#5 ~ a#5 ~",
  U: "g#5 ~ d#5 ~ c#5 b4 a#4 g#4", V: "f#4 f4 d#4 ~ d#4 ~ g4 f4", W: "g#4 g4 a#4 g#4 d5 ~ d#5 ~",
  X: "a#4 ~ d5 c5 d#5 ~ f5 d#5", Y: "g5 ~ f4 ~ a#4 a4 c5 ~", Z: "d5 ~ g5 ~ f5 ~ c5 e5", AA: "d5 f5 e5 g5 f5 a5 g4 ~",
  AB: "b4 a4 c5 b4 d5 c5 f#5 ~", AC: "g5 ~ d5 ~ f#5 e5 g5 ~", AD: "a5 g5 d6 ~ a4 ~ c#5 b4", AE: "d5 ~ e5 ~ a5 ~ g5 ~",
  AF: "e5 ~ d#5 c#5 b4 a#4 g#4 f#4", AG: "e4 ~ f#4 ~ a#4 g#4 b4 a#4", AH: "c#5 b4 d#5 ~ f5 ~ c#4 ~",
  AI: "f4 d#4 f#4 ~ g#4 f#4 c#5 ~", AJ: "g#4 ~ c5 a#4 c#5 ~ d#5 ~", AK: "f5 ~ d#5 ~ d#4 g4 f4 g#4",
  AL: "g4 a#4 g#4 c5 a#3 ~ d4 c4", AM: "d#4 d4 f4 d#4 g4 ~ a4 ~", AN: "f4 ~ a4 g4 a#4 ~ c5 a#4",
  AO: "f5 ~ c4 ~ d#4 c#4 f4 ~", AP: "f#4 ~ a4 ~ g4 ~ g5 ~", AQ: "f#5 e5 d5 c5 b4 a4 g4 ~",
  AR: "f#4 ~ a4 g4 b4 a4 c#5 b4", AS: "f#5 ~ g#5 f#5 b5 ~ g#4 ~", AT: "c#5 b4 d#5 ~ f#5 ~ g#5 ~",
  AU: "f#5 ~ d#5 f#5 f5 g#5 f#5 a#5", AV: "g#5 c#6 a#4 ~ c#5 c5 d#5 c#5", AW: "f5 d#5 g#5 ~ a#5 ~ f5 ~",
  AX: "g#5 g5 a#5 ~ c6 a#5 f6 ~", AY: "c5 ~ d#5 c#5 f5 ~ g5 ~", AZ: "c6 ~ a#5 ~ g5 ~ f5 d#5",
  BA: "d5 c5 a#4 a4 g4 ~ d5 ~", BB: "f5 e5 g5 f5 a5 g5 c6 ~", BC: "d6 ~ a5 ~ c6 b5 d6 ~", BD: "e6 d6 g6 ~ e5 ~ g5 f#5",
  BE: "a5 ~ b5 ~ e6 ~ d6 ~", BF: "b5 d6 c#6 e6 d6 f#6 e6 g6", BG: "f#5 ~ a5 g#5 b5 a5 c#6 b5",
  BH: "e6 ~ f#6 ~ c#6 ~ e6 d#6", BI: "f#6 ~ g#6 f#6 c#7 ~ g#5 ~", BJ: "b5 a#5 c#6 ~ d#6 ~ a#6 ~",
  BK: "g#6 ~ d#6 ~ c#6 b5 a#5 g#5", BL: "f#5 f5 d#5 ~ d#5 ~ g5 f5", BM: "g#5 g5 a#5 g#5 d6 ~ d#6 ~",
  BN: "a#5 ~ d6 c6 d#6 ~ f6 d#6", BO: "g6 ~ f5 ~ a#5 a5 c6 ~", BP: "d6 ~ g6 ~ f6 ~ c6 e6", BQ: "d6 f6 e6 g6 f6 a6 g5 ~",
  BR: "b5 a5 c6 b5 d6 c6 f#6 ~", BS: "g6 ~ d6 ~ f#6 e6 g6 ~", BT: "a6 g6 d7 ~ a5 ~ c#6 b5", BU: "d6 ~ e6 ~ a6 ~ g6 ~",
  BV: "e6 ~ d#6 c#6 b5 a#5 g#5 f#5", BW: "e5 ~ f#5 ~ a#5 g#5 b5 a#5", BX: "c#6 b5 d#6 ~ f6 ~ c#5 ~",
  BY: "f5 d#5 f#5 ~ g#5 f#5 c#6 ~", BZ: "g#5 ~ c6 a#5 c#6 ~ d#6 ~", CA: "f6 ~ d#6 ~ d#5 g5 f5 g#5",
  CB: "g5 a#5 g#5 c6 a#4 ~ d5 c5", CC: "d#5 d5 f5 d#5 g5 ~ a5 ~", CD: "f5 ~ a5 g5 a#5 ~ c6 a#5",
  CE: "f6 ~ c5 ~ d#5 c#5 f5 ~", CF: "f#5 ~ a5 ~ g5 ~ g6 ~", CG: "f#6 e6 d6 c6 b5 a5 g5 ~",
})).s("gm_vibraphone").gain(0.36).pan(0.3)

// other · vibraphone · "Incantatio" · soft notes
const vibraphone_soft = note(`<
  ~@177 A B ~@3 C D ~@3 E ~ F ~@3 G H ~@3 I J K ~@2 L ~ M ~@3 N O ~@3 P Q R ~@3 G S ~@3 T U ~@3 V ~ W ~@3 X Y ~@3 Z AA
  AB ~@2 AC ~ AD ~@3 AE AF ~@3 AG AH AI ~@3 A B ~@3 C D ~@3 E ~ F ~@3 G H ~@3 I J K ~@2 L ~ M ~@3 N O ~@3 P Q R ~@230
>`.pickRestart({
  A: "~ e4 ~@6", B: "~@3 c#4 ~ e4 ~@2", C: "~@3 g#4 ~@4", D: "~@5 d#4 ~ f4", E: "~@7 c5", F: "~ g4 ~ a4 ~@4",
  G: "~ e5 ~@6", H: "~@3 b4 ~ c#5 ~@2", I: "~@5 d5 ~@2", J: "~@7 a#4", K: "~ c5 ~@6", L: "~@7 f#5", M: "~ c#5 ~ d5 ~@4",
  N: "~@3 f4 ~@4", O: "~@5 c5 ~ c#5", P: "~@5 a4 ~@2", Q: "~@7 d#4", R: "~ f4 ~@6", S: "~@3 c#5 ~ e5 ~@2",
  T: "~@3 g#5 ~@4", U: "~@5 d#5 ~ f5", V: "~@7 c6", W: "~ g5 ~ a5 ~@4", X: "~ e6 ~@6", Y: "~@3 b5 ~ c#6 ~@2",
  Z: "~@5 d6 ~@2", AA: "~@7 a#5", AB: "~ c6 ~@6", AC: "~@7 f#6", AD: "~ c#6 ~ d6 ~@4", AE: "~@3 f5 ~@4",
  AF: "~@5 c6 ~ c#6", AG: "~@5 a5 ~@2", AH: "~@7 d#5", AI: "~ f5 ~@6",
})).s("gm_vibraphone").gain(0.2).pan(0.3)

// chords · marimba · "Incantatio"
const marimba = note(`<
  ~@367 A B C D E F G H I J K L M N O P Q B C D E F G H I J K L M N O P Q B C D E F G H I J K L M N O P Q B C D E F G H
  I J K L M N O P Q B C D E F G H I J K L M N O P Q 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 R S T U V W X Y Z AA AB AC AD AE AF AG R S T U V W X Y Z AA AB AC AD AE AF AG AH AI@2 AJ AK@2 AL AM@2 AN AO@2 AP AQ
  AR AS AT@2 ~@3
>`.pickRestart({
  A: "~@6 b3 ~", B: "[f#3,b3]@3 ~ [b3,d4]@2 ~@2 [b3,d4]@2 ~@2 [d4,f#4]@2 ~@2",
  C: "[d4,f#4]@4 [b3,d4] ~@3 [b3,d4]@2 ~@2 [a3,c#4]@2 ~@2", D: "[a3,c#4]@4 [c#4,e4] ~@3 [c#4,e4]@2 ~@2 [f#4,a4]@2 ~@2",
  E: "[f#4,a4]@2 ~@2 [c#4,e4]@2 ~@2 [c#4,e4]@3 ~ [f#3,a3]@2 ~@2", // F#m C#m F#m
  F: "[f#3,a3]@4 [a3,c#4]@2 ~@2 [a3,c#4]@3 ~ [c#4,f#4]@2 ~@2", G: "[c#4,f#4]@4 [a3,c#4] ~@3 [a3,c#4]@3 ~ [g3,b3]@2 ~@2",
  H: "[g3,b3]@3 ~ [b3,d4] ~@3 [b3,d4]@3 ~ [d4,g4] ~@3", I: "[d4,g4]@3 ~ [b3,d4] ~@3 [b3,d4]@2 ~@2 [g3,b3]@2 ~@2",
  J: "[g3,b3]@3 ~ [b3,d4]@2 ~@2 [b3,d4]@2 ~@2 [d4,g4] ~@3", K: "[d4,g4] ~ [b3,d4] ~ [b3,d4] ~ [d3,g3] ~",
  L: "[d3,g3]@3 ~ [g3,b3] ~@3 [g3,b3]@2 ~@2 [b3,e4]@2 ~@2", M: "[b3,e4] ~ [e4,g4] e4 [e4,g4] ~ [e4,f#4] e4",
  N: "f#4@2 ~@2 [c#4,e4] ~@3 [c#4,e4]@2 ~@2 [b3,d4]@2 ~@2, d4 ~@15", // C#m Bm
  O: "[b3,d4]@2 ~@2 [a3,c#4]@2 ~@2 [a3,c#4]@3 ~ [g3,b3]@2 ~@2", // Bm A G
  P: "[g3,b3]@3 ~ [a3,c#4]@2 ~@2 [a3,c#4]@3 ~ [b3,d4]@2 ~@2", // G A Bm
  Q: "[b3,d4]@3 ~ [c#4,e4]@2 ~@2 [c#4,e4]@2 ~@2 [f#3,b3]@2 ~@2", // Bm C#m B5
  R: "[b3,e4]@3 ~ [e4,g4]@2 ~@2 [e4,g4]@2 ~@2 [g4,b4]@2 ~@2", S: "[g4,b4]@4 [e4,g4] ~@3 [e4,g4]@2 ~@2 [d4,f#4]@2 ~@2",
  T: "[d4,f#4]@4 [f#4,a4] ~@3 [f#4,a4]@2 ~@2 [b4,d5]@2 ~@2", // D F#m Bm
  U: "[b4,d5]@2 ~@2 [f#4,a4]@2 ~@2 [f#4,a4]@3 ~ [b3,d4]@2 ~@2", // Bm F#m Bm
  V: "[b3,d4]@4 [d4,f#4]@2 ~@2 [d4,f#4]@3 ~ [f#4,b4]@2 ~@2", W: "[f#4,b4]@4 [d4,f#4] ~@3 [d4,f#4]@3 ~ [c4,e4]@2 ~@2",
// … 573 more lines

More by Mike Oldfield