Strudelify

Taurus II

Mike Oldfield

KeyE majorTempo50 bpm
0:00/0:00
// Taurus II — Mike Oldfield
// 50 bpm, 4/8, key E major. 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/8 at bar 1, 13/8 at bar 123, 7/8 at bar 153, 4/4 at bar 154, ...) are rendered on a constant 4/8 grid of one bar per cycle
// note: Full arrangement: all 218 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(50/2)

// 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 · pad poly · "Mike"
const pad_poly = note(`<
  ~@15 A@2 ~@11 B ~@20 C@3 D@3 E@7 ~@13 F ~ G ~@20 H@2 I ~ J K@2 L M N O P Q ~@11 R@5 S@8 T@5 U@2 ~@11 V W V W V W X ~ Y
  Z AA AB AC AD ~@2 AE AF AG AH AI AJ AK AJ AL AM AN AO AP AQ AR AS AT ~@32
>`.pickRestart({
  A: "[~@27 a3@19 ~@18]/2", B: "~@5 e3@19 ~@8", C: "[~@22 b3@18 ~ c#4@6 d4@12 f#4@12 e4@12 ~ c#4@12]/3",
  D: "[b3@22 ~@3 b3@18 c#4@5 ~ d4@12 ~ f#4@12 e4@12 a4@10]/3",
  E: "[~@2 f#4@20 ~@5 e3@18 ~ f#3@6 g3@12 b3@12 a3@12 ~ f#3@12 [e3,e4,b4]@23 ~@2 e3@18 f#3@5 ~ g3@12 b3@12 ~ a3@12 d4@12 [b3,b4]@22 ~@3, ~@27 b4@47 ~@2 [e4,a4]@24 ~@26 [e4,b4]@47 ~@2 e4@47 ~@2, ~@175 a4@24 ~@25]/7", // E5 B A5 E5
  F: "~@27 f5@5", G: "~@6 g5@3 ~@7", H: "[~@15 c5@3 c6@3 c5@3 ~@8]/2", I: "~@15 f5@6 ~@11", J: "g5@3 g6@3 ~@10",
  K: "[~@23 g6@6 ~ g5@6 ~@28]/2", L: "~@9 a5@6 a4@6 ~@11", M: "~@13 e5@3", N: "e4@3 ~@13", O: "~@11 f5@6 f4@6 ~@9",
  P: "~@7 d5", Q: "~ d4@3 ~@12", R: "[~ b3@55 c#4@46 ~@2 b3@56]/5", S: "[c#4@23 ~ e4@28 f#4@23 ~ e4@28 f#4@23 ~]/8",
  T: "[b3@28 c#4@23 ~ b3@28]/5", U: "[c#4@23 ~@9]/2",
  V: "[e3,b3] ~ [e3,b3]@2 ~@2 [e3,b3]@2 ~@2 [e3,b3] ~ [e3,b3]@2 ~@2 [e3,b3] ~ [e3,b3]@2 ~@2 [e3,b3]@2 ~@2 [e3,b3] ~ b3@2 ~@2, ~@28 e3 ~@3", // E5
  W: "[e3,b3] ~ b3@2 ~@2 [e3,b3]@2 ~@2 [e3,b3] ~ b3@2 ~@2 [e3,b3] ~ b3@2 ~@2 [e3,b3] ~@3 [e3,b3] ~ [e3,b3] ~@3, ~@2 e3 ~@9 e3 ~@5 e3 ~@13", // E5
  X: "[d3,a3] ~@31", Y: "~@2 b4 c#5 d5 a5 g5 f#5 e5 d5 [d3,a3,d4,a5] g5 f#5 e5 d5 c#5",
  Z: "d5@2 [e3,a3,e4,e5]@2 b4@2 [d3,a3,d4,a5]@2 g5@2 f#5@2 e5@2 d5@2 d5 e5 f#5 g5 [d3,a3,d4,a5]@2 g5@2 f#5@2 e5@2 d5@2 c#5@2", // A5 D5
  AA: "d5 [e3,a3,e4,e5] b4 [d3,a3,d4,a5] g5 f#5 e5 d5 b4 f#5 ~ a5 ~ e5@2 d5", // A5 D5
  AB: "c#5 b4 a4 g4 a4 b4 f#4 d5 c#5 b4 a4 g4 f#4 e4 d5 c#5", AC: "b4 a4 g4 f#4 g4 a4 e4 c#5 b4 a4 g4 f#4 e4 d4 a3@2",
  AD: "~ d3 ~@6", AE: "a5 g5 f#5 e5 d5 c#5 d5 e5 b4 a5 g5 f#5 e5 d5 e5 f#5",
  AF: "a5 g5 f#5 e5 d5 c#5 d5 e5 b4 a5 g5 f#5 e5 d5 b4 f#5", AG: "~ a5 ~@5 b5 a5 g5 a5 b5 f#5 ~@2 b5",
  AH: "a5 g5 f#5 e5 ~@3 a5 g5 f#5 g5 a5 e5 ~@2 a5",
  AI: "g5@2 f#5@2 e5@2 d5@2 a4@4 ~@4 d4@4 e5 f#5 g5 a5 b5@4 a5@2 g5@2",
  AJ: "a5 b5 a5 g5 e5 b4 e5 d5 e5 g5 e5 d5 b4 e4 b4 a4",
  AK: "b4@2 c#5@2 b4@2 a4@2 e4@4 d5 e5 f5 g5 a5@2 b5@2 a5@2 g5@2 b5@4 a5@2 g5@2",
  AL: "b4@2 c#5@2 b4@2 a4@2 e4@4 ~@4 d2 e2 f#2 g2 a2 b2 c#3 d3 e3 f#3 g3 a3 b3 c#4 [a3,f#4]@2", // D
  AM: "[d4,a4] ~ [d4,a4]@3 ~ [a3,f#4]@2 [e4,b4] ~ [e4,b4]@2 ~@4 [d4,a4] ~ [d4,a4]@2 ~@2 [a3,f#4]@2 [e4,b4] ~ [e4,b4]@2 ~@2 [a3,f#4]@2", // D5 D E5 D5 D E5 D
  AN: "[d4,a4] ~ [d4,a4]@2 ~@2 [a3,f#4]@2 [e4,b4] ~ [e4,b4]@3 ~ [b3,f#4]@2 [d4,a4] ~ [b3,f#4]@2 [c#4,g#4]@3 ~ [a3,f#4]@4 f#4@2 g#4@2", // D5 D E5 B5 D5 B5 C#5 D
  AO: "a4@2 f#4@2 b4@2 ~ g#4 a4@2 f#4@2 b4@2 ~ g#4, ~@3 f#4 ~@3 f#4",
  AP: "a4@4 f#4@4 b4@4 ~@2 g#4@2 a4@2 f#4@2 g#4@3 ~ f#4@3 ~@5, ~@3 f#4 ~@4",
  AQ: "b4@4 ~@4 b4@3 ~ b4@2 c#5@2 b4@3 ~ a4 ~ g#4 ~ f#4@2 e4@2 f#4@2 g#4 ~",
  AR: "a4@5 ~@3 a4@2 ~@2 a4@2 b4@2 a4@2 ~@2 g#4@2 f#4@2 e4@2 d4@2 e4@2 f#4@2",
  AS: "g#4@5 ~@3 g#4@3 ~ g#4@2 a4@2 g#4@4 f#4 ~ e4@2 d#4@2 c#4@2 b3@2 a#3@2",
  AT: "f#4@6 ~@2 f#4@5 ~@3 g#4@2 ~@2 f#4@2 e4@2 d#4@3 ~ c#4@3 ~",
})).s("gm_pad_poly").gain(0.4).pan(0.7)

// chords · pad poly · "Mike" · soft notes
const pad_poly_soft = note(`<
  A@6 B@6 C@6 D@7 E@7 ~@23 F@3 ~@16 G ~ H I J@2 K ~@19 L ~ M N ~ O P ~ Q R ~@12 S@5 T@8 U@5 V@8 W@5 ~@25 X ~@39
>`.pickRestart({
  A: "[~@5 a3@59]/6", B: "[~@5 e4@43]/6",
  C: "[~@25 a3@18 b3@6 c4@13 e4@12 d4@12 b3@12 a3@21 ~@23 b3@6 c4@12 e4@12 d4@12 ~ g4@7, ~@25 a2@167]/6",
  D: "[~@5 e4@19 ~@6 b3@192 ~@2]/7",
  E: "[~@2 e3@19 f#3@6 g3@12 b3@12 ~ a3@12 f#3@12 e3@21 ~@22 f#3@6 ~ g3@12 b3@12 a3@12 d4@12 ~ b3@19 ~@30, ~ e2@96 ~@15]/7",
  F: "[~@27 e4@47 ~@22]/3", G: "~@5 c5@3 c6@3 c5@3 ~@2", H: "~ f6@6 f5@6 ~@19", I: "~@18 g6@6 ~ g5@6 ~",
  J: "[~@15 g5@3 g6@3 g5@3 ~@8]/2", K: "~@15 a4@6 a5@6 a4@5", L: "~@21 f6@6 f5@5", M: "~@6 g5@3 ~@7",
  N: "~@17 g5@6 ~@9", O: "~ a4@3 ~@12", P: "~@10 e4@3 ~@3", Q: "~@5 f4@6 ~@21", R: "~@11 d4@3 ~@2",
  S: "[~ e3@55 f#3@46 ~@2 e3@56]/5", T: "[f#3@23 ~ a3@28 b3@23 ~ a3@28 b3@23 ~]/8", U: "[e3@28 f#3@23 ~ e3@28]/5",
  V: "[f#3@23 ~ [a3,e4]@28 [b3,f#4]@23 ~ [a3,e4]@28 [b3,f#4]@23 ~]/8", W: "[[e3,b3]@28 [f#3,c#4]@23 ~ [e3,b3]@28]/5",
  X: "~@14 [a3,f#4]@3 ~@15", // D
})).s("gm_pad_poly").gain(0.2).pan(0.7)

// other · clarinet · "Mike"
const clarinet = note("<~@111 A@5 B C@2 D@2 E ~@96>".pickRestart({
  A: "[~@7 e4@6 ~ d4@6 ~@3 g4@3 ~@3 a4@6 d5@3 e5@3 g5@3 e5@6 d5@3 ~ b4@6 d5@3 a4@6 d5@3 g4@6 d5@3 a4@6 d5@3 b4@3 ~ e5@5 ~ b4@3 c#5@3 d5@3 a5@3 g5@3 f#5@3 e5@3 d5@2 ~ a5@3 g5@3 f#5@3 ~ e5@3 d5@3 c#5@3 d5@3 e5@3 b4@3 a5@3 g5@3 f#5@2, ~@10 e4@3 ~@67]/5",
  B: "~ e5@3 d5@3 c#5@3 b4@3 ~ d5@2 e5@2 f#5@2 a5@3 g5@3 f#5@3 e5@3",
  C: "[d5@3 c#5@3 d5@3 e5@3 b4@3 a5@3 g5@3 ~ f#5@3 e5@3 d5@3 b4@3 f#5@3 ~@3 a5@3 ~@3 e6@6 d6@3 c#6@3 b5@3 ~ a5@2]/2",
  D: "[~ g5@3 a5@3 b5@3 f#5@3 d6@3 c#6@3 b5@3 a5@3 g5@3 f#5@3 e5@3 d6@3 ~ c#6@3 b5@3 a5@3 g5@3 f#5@3 g5@3 a5@3 e5@3 c#6@2]/2",
  E: "~ b5@3 a5@3 g5@3 f#5@3 ~ e5@3 d5@3 a4@6 c#4@6",
})).s("gm_clarinet").gain(0.4).pan(0.7)

// bass · slap bass 1 · "Mike"
const bass = note("<~@194 A B C D E F G H A B C D E F G H A B C D E F G I>".pickRestart({
  A: "g#1@3 ~ g#1@4 g#2@4 g#1@2 c#2@3 ~ g#1@2 c#2@3 ~ d#2@2 ~@2 f2@4",
  B: "g#1@2 ~@2 g#1@4 g#2@4 g#1@2 d#2@2 ~@2 d#2@2 c#2@3 ~ c2@2 ~@2 a#1@4",
  C: "g#1@2 ~@2 g#1@4 g#2@4 g#1@2 c#2@2 ~@2 c#2@2 c2@2 ~@2 a#1@3 ~ c2@2 ~@2",
  D: "g#1@2 ~@2 g#1@4 g#2@3 ~@3 d#2 ~@3 d#2@2 c#2@2 c2@2 g#1@2 ~@2 a#1@4",
  E: "f#1@3 ~ f#1@4 f#2@4 f#1@2 g#1@2 ~@2 f#1@2 g#1@4 a#1@2 ~@2 c#2@3 ~",
  F: "f#1@2 ~@2 f#1@4 f#2@4 f#1@2 c2@2 ~@2 f#1@2 g#1@2 ~@2 g#1@3 ~ g#1@2 ~@2",
  G: "c#2@2 ~@2 c#2@4 c#2@2 ~@2 c#2@4 c#2@2 ~@2 d#2@4 d#2@2 ~@2 f2@3 ~",
  H: "f2@2 ~@2 f2@4 f2@2 ~@2 f1@3 ~ f1@2 ~@2 f#1@3 ~ f#1@6 ~@2", I: "f2@2 ~@2 f2@4 f2@2 ~@2 f1@3 ~ f1@2 ~@2 f#1@3 ~@9",
})).s("gm_slap_bass_1").gain(0.45)

// bass · electric bass finger · "Oldfield"
const bass_2 = note(`<
  A ~@2 B ~@2 C ~@2 D ~@2 E@3 F G H@2 I J K L@2 M N O P Q R S T U V@3 W X@5 Y@4 Z AA@2 AB@2 AC@2 AD AE@2 AF AG@4 AH AI
  AJ@2 AK AL AM AN AO@2 AP AQ@2 AR AS@2 AT AU@2 AV AW AX AY@4 AZ@2 BA BB BC BD@3 BE BF BG@3 BH ~ BI BJ@3 BK BL BM BN
  BO@2 ~ BP@2 ~@103
>`.pickRestart({
  A: "~@15 a1@4 ~@2 a2@3 ~@8", B: "~@17 a1@4 ~@2 a2@4 ~@5", C: "~@20 e2@4 ~@2 e3@3 ~@3", D: "~@11 e2@2 ~ e3@2",
  E: "[~@25 a1@3 ~@3 a2@2 ~@4 d2@3 ~@15 e3@3 ~@4 d3@6 b2@2 ~@4 a1@4 ~@2 a2@3 ~@3 d2@2 ~@8]/3",
  F: "~@15 a2@3 ~@9 a1@4 ~", G: "~ a2@3 ~@22 e3@4 ~@2",
  H: "[d3@6 b2@3 ~@9 a2@3 ~@4 d2@3 ~@3 g2@4 ~@20 e2@4 ~@3 e1@2]/2", I: "~@4 e2@2 ~@4 a1@3 ~@15 b2@3 ~",
  J: "~@2 a2@6 ~ f#2@2 ~@4 e1@4 ~@2 e2@3 ~@3 a1@2 ~@3", K: "~@20 e2@3 ~@9",
  L: "[e1@4 ~@2 e2@3 ~@22 b2@4 ~@2 a2@6 f#2@3 ~@9 e2@3 ~@4 a1@2]/2", M: "~ d2 ~@5 b1",
  N: "~@2 e1@3 ~@4 e2@2 ~@4 a1@3 ~@14", O: "~ b2@3 ~@3 a2@6 ~ f#2@2 ~@4 e1@4 ~@2 e2@3 ~@3", P: "a1@2 ~@23 e2@3 ~@4",
  Q: "~@5 e1@4 ~@2 e2@3 ~@18", R: "~@4 b2@4 ~@2 a2@6 f#2@3 ~@9 e2@3 ~", S: "~@2 a1@3 ~@4 d2@4 ~@19",
  T: "~ b1@4 ~@2 a2@5 ~@2 a3@5 ~ a2@3 d3@3 e3 ~@2 e3@2 ~", U: "a2@6 g3@3 g2@2 ~ g2@2 ~ g2@3 a2@4 b2@3 a2@5 ~@2",
  V: "[~@2 a2@3 a3@3 a2@3 d3@3 e3@4 ~@2 e3@3 d3@3 ~@4 a2@3 b2@2 ~ c3@6 a2@5 ~@4 a2@3 a3@3 a2@3 d3@2 ~ e3@4 ~@3 e3@3 d3@3 a2@3 a3@3 ~@3 g3@6 e3@3 ~@2]/3",
  W: "~@4 a2@2 ~ d3@3 a2@2 ~@2 d3@3 e3@5 ~ g2@3 a2@3 b2@2 ~",
  X: "[c3@2 ~ d3@2 ~ e3@3 ~@3 e2@4 ~@6 e2@3 b2@3 e2@3 a2@3 b2@3 e2@3 e2@3 e3@5 ~ b2@4 ~@2 a2@3 b2@3 ~ e2@5 ~ e2@3 d3@3 e2@3 g2@3 a2@6 ~@3 d2@3 e2@3 d2@3 g2@4 d2@3 a2@5 ~ e2@5 ~ e2@3 e3@3 e2@3 g2@3 a2@6 ~@3 d2@2 ~@2 d2@2 ~ d2@2 ~ d2@2 ~ d2@2 ~ d2@2 ~ d2@2 ~]/5",
  Y: "[e2@5 ~@4 e2@3 e3@3 e2@3 a2@2 ~@2 b2@4 ~@2 e3@3 d3@3 e3@2 ~ g3@4 ~@2 a3@4 ~@2 a2@7 ~@2 a2@3 ~ a3@3 a2@3 d3@3 e3@5 ~ e3@2 ~ d3@5 ~ b2@3 a2@3 g2@3 a2@3 a2@6 ~@4 a2@3 a3@3 a2@2 ~ d3@2 ~ e3@6 d3@2]/4",
  Z: "~ b2@3 a2@3 g2@8 ~@5 a2@7 ~@2 a2@3",
  AA: "[a3@3 a2@3 d3@3 e3@4 ~@2 a3@3 g3@3 ~ e3@2 ~ g3@3 a3 ~@2 a3@5 ~ a3@5 ~ g3@3 e3@2 ~ d3@5 ~ d3@3 e3@4 ~@2]/2",
  AB: "[~ g3@3 a3@3 g3@2 ~ a3@3 b3 ~@2 b3@4 ~@2 b2@7 ~@2 b2@3 e3@3 ~ d3@3 b2@3 b3@6 a3@2 ~ g3@5 ~ a3@5]/2",
  AC: "[~ e3@3 d3@3 b2@7 ~@3 b2@3 d3@3 e3@3 b2@3 d3@6 e3@2 ~@4 g3@5 ~ a3@9 ~ b2@7]/2",
  AD: "~@2 b2@3 b3@3 b2@3 g3@2 ~ a3@15 ~ e3@2",
  AE: "[~ d3@3 b2@6 b2@7 ~@2 b2@3 d3@3 e3@3 b2@3 a2@4 ~ g2@6 ~@2 f#2@6 g2@2 ~ e2@4 ~@2 e2@5]/2",
  AF: "~@4 e2@3 e3@3 e2@3 ~ a2@3 b2@4 ~@2 a2@3 g2@2 ~ f2@2 ~",
  AG: "[e2@3 f#2@3 g2@3 f#2@3 e2@5 ~@5 e2@3 e3@3 e2@2 ~ g2@3 a2@4 ~@2 d3@2 ~@4 d3@4 ~@2 d3@3 b2@5 ~@2 e2@7 ~@2 e2@3 e3@3 e2@3 a2@3 b2@4 ~@2 d3@3 c#3@3 b2@3 a2@3 ~ g2 ~@2 f#2@3 g2@3 e2@4 ~@2 e2@3 e3@3 d2@3 d3@2]/4",
  AH: "~ d2@3 d3@3 e2@2 ~ e3@3 ~ e2@3 e3@3 e2@3 e3@3 e2@3 e3@2 ~", AI: "a2@4 ~@2 e3@6 a3@5 ~@15",
  AJ: "[~@5 a2@6 e3@6 g2@6 d3@7 g3@6 ~@28]/2", AK: "~@2 e2@5 ~@2 b2@5 ~ e3@6 ~@11", AL: "~@7 b2@6 ~ g2@6 f2@6 c3@6",
  AM: "f3 ~@3", AN: "~@5 a2@6 e3@6 a3@5 ~@10", AO: "[~@10 a2@7 ~@5 g2@6 d3@6 g3@6 ~@24]/2",
  AP: "~@7 e2@5 ~@2 b2@5 ~ e3@6 ~@6", AQ: "[b2@8 ~@4 e2@9 ~@4 f2@6 c3@6 f3@18 ~@9]/2", AR: "~@10 c2@6 g2@6 c3@5 ~@5",
  AS: "[~@21 c2@6 f2@6 c3@6 f3@6 ~@19]/2", AT: "~@12 g2@5 ~ d3@5 ~@2 g3@6 ~",
  AU: "[~@17 g2@6 f3@6 ~ c3@6 c2@6 g2@6 f3@6 ~@10]/2", AV: "~@9 g2@6 a2@6 e3@6 a3@5", AW: "~@13 a2@3",
  AX: "e2@3 b2@3 e3@3 ~@7", AY: "[~@17 f2@6 f3@6 ~ c3@8 ~@22 f2@6 d3@12 ~ a2@12 g2@25 a2@4 ~@2 e3@6]/4",
  AZ: "[a3@5 ~@20 a2@6 e3@6 g2@6 d3@6 g3@6 ~@9]/2", BA: "~@22 e2@5 ~ b2@4", BB: "~@2 e3@6 ~@19 b2@5",
  BC: "~ g2@6 f2@6 ~ c3@6 f3@8 ~@4", BD: "[~@25 a2@6 e3@6 a3@5 ~@20 a2@7 ~@5 g2@6 d3@6 g3@6 ~@4]/3", BE: "~@27 e2@5",
  BF: "~ b2@5 ~ e3@6 ~@7 b2@8 ~@4", BG: "[e2@9 ~@3 f2@6 c3@7 f3@18 ~@19 c2@6 g2@6 c3@5 ~@17]/3",
  BH: "~@9 c2@6 f2@6 c3@6 f3@5", BI: "g2@5 ~ d3@5 ~ g3@6 ~@14",
  BJ: "[~@5 g2@6 f3@6 c3@6 c2@6 ~ g2@6 f3@6 ~@18 g2@6 a2@6 ~ e3@6 a3@5 ~@12]/3", BK: "~@7 a2@3 e2@3 b2@3",
  BL: "e3@3 ~@13", BM: "~@5 f2@6 f3@6 c3@8 ~@7", BN: "~@8 f2@3 d3@5", BO: "[~@2 a2@12 ~ g2@25 ~@24]/2",
  BP: "[~@17 e3@6 ~ d3@6 b2@6 a2@6 ~@22]/2",
})).s("gm_electric_bass_finger").gain(0.35)

// bass · electric bass finger · "Oldfield" · soft notes
const bass_soft = note("<~@13 A B@2 C D E F G H I J K L ~ M N O P ~@187>".pickRestart({
  A: "~@8 e2@3 g2@3 a2@3 ~@15", B: "[~@25 e2@3 g2@3 a2@3 ~@30]/2", C: "~@7 d2@3 e2@3 ~ g2@3 a2@3 ~@12",
  D: "~@12 a1@3 ~@13 e2@3 ~", E: "~ a2 ~@14", F: "~@13 b1@3 d2@3 e2@3 ~@10", G: "~@15 b1", H: "~ d2@3 e2@3 ~@25",
  I: "~@12 a1@3 b1@3 d2@3 ~ e2@3 ~@7", J: "~@17 e1@3 ~@12", K: "~ b1@3 ~@3 e2@2 ~@23", L: "~@18 b1@3 d2@3 e2@3 ~@5",
  M: "~@3 b1@3 d2@3 e2@3 ~@20", N: "~@17 a1@3 b1@3 d2@3 e2@3 ~@3", O: "~@22 e1@3 ~@7", P: "~@6 b1@3 ~@3 e2@2 ~@18",
})).s("gm_electric_bass_finger").gain(0.2)

// other · whistle · "Oldfield"
const whistle = note("<~@158 A B@2 C ~ D E F G H I ~@49>".pickRestart({
  A: "~@14 c6 c#6",
  B: "[d6 e6 d6 f#6 d6 g6 d6 a6 ~ b6 c#7 e7 d7@2 e7 c#7@2 e7 b6@2 e7 a6@2 e7 b6@2 e7 c#7@2 e7 d7 ~]/2", C: "e7 ~@7",
  D: "~@13 e7@2 d7", E: "c#7 b6 a6 g6 a6 b6 f#6 d7 c#7 b6 a6 g6 f#6 e6 d7 c#7",
  F: "b6 a6 g6 f#6 g6 a6 e6 c#7 b6 a6 g6 f#6 e6 d6 a5@2", G: "b5 c#5 d5@2 ~@11 b6",
  H: "c#7 e7 d7@2 e7 c#7@2 e7 b6@2 e7 a6@2 e7 b6@2", I: "e7 c#7@2 e7 d7 ~ e7@2 ~@8",
})).s("gm_whistle").gain(0.35)

// chords · piano · "Oldfield"
const piano = note("<~@194 A B A B C D E F A B A B C D E F A B A B C D E F>".pickRestart({
  A: "[g#4,c5]@2 [g#4,c5]!2 [g#4,c5]@2 [a#4,c#5]!8 [c5,d#5]!2", // G# A#m Cm
  B: "[c5,d#5]@2 [g#4,c5]!4 [a#4,c#5]!2 [a#4,c#5]@2 [c5,d#5]@2 [g#4,c5]@4", // Cm G# A#m Cm G#
  C: "[f#4,a#4]@2 [f#4,a#4]!2 [f#4,a#4]@2 [g#4,c5]!2 [g#4,c5]@2 [g#4,c5]!2 [g#4,c5]@2 [a#4,c#5]@2", // F# G# A#m
  D: "[a#4,c#5]@2 [a#4,c#5]!4 [c5,d#5]!4 [c#5,f5]@2 [c#5,f5]@2 [c#5,f5]!2", // A#m Cm C#
  E: "[c#5,f5]@2 [c#5,f5]!2 [c#5,f5]@2 [c#5,f5]!2 [c#5,f5]@2 [d#5,f#5]!2 [d#5,f#5]@2 [f5,g#5]!2", // C# D#m Fm
  F: "[f5,g#5]@2 [f5,g#5]!8 [f#5,a#5]@2 [f#5,a#5]@4", // Fm F#
})).s("gm_piano").gain(0.4).pan(0.3)

// chords · piano
const piano_2 = note(`<
  ~@87 A@2 B C D ~ E F G H I ~ J K L M@2 ~ N O P@2 Q ~@25 R S T U V W X Y Z AA AB AC AD R S T U V ~@65
>`.pickRestart({
  A: "[~@12 a4@3 d5@3 e5@3 ~@4 a4@3 c5@3 d5@3 ~@28 g4@2]/2", B: "~ c5@3 d5@3 ~@3 g4@3 b4@3 c5@3 ~@13",
  C: "~@15 g4@3 b4@3 d5@3 ~@3 g4@3 b4@2", D: "~ c5@3 ~@28", E: "~@17 a4@3 d5@3 e5@3 ~@4 a4@2", F: "~ c5@3 d5@3 ~@25",
  G: "~@2 g4@3 ~ c5@3 d5@3 ~@3 g4@3 b4@3 c5@3 ~@8", H: "~@20 g4@3 b4@3 d5@3 ~@3", I: "g4@3 b4@3 c5@3 ~@23",
  J: "~@22 g4@3 c5@3 e5@3 ~", K: "~@2 g4@3 ~ c5@3 d5@3 ~@20", L: "~@7 f4@3 a4@3 ~ c5@3 ~@3 f4@3 a4@3 c5@3 ~@3",
  M: "[~@25 g4@3 b4@3 d5@3 ~@3 g4@3 b4@3 d5@3 ~@18]/2", N: "~@27 a4@3 d5@2", O: "~ e5@3 ~@3 a4@3 c5@3 ~ d5@3 ~@15",
  P: "[~@12 g4@3 d5@3 e5@3 ~@4 g4@3 b4@3 d5@3 ~@28 f4@2]/2", Q: "~ a4@3 c5@3 ~@3 f4@3 a4@3 c5@3 ~@13",
  R: "[e2,b2,e3]@2 ~@2 [b2,e3] ~ e2 ~ [b2,e3] ~ [b2,e3] ~ e2 ~ [b2,e3] ~ [b2,e3] ~ e2 ~ [b2,e3] ~ e2 ~ [b2,e3] ~ [b2,e3] ~ e2 ~ [b2,e3] ~", // E5
  S: "e2 ~ [b2,e3] ~ [b2,e3] ~ e2 ~ [b2,e3] ~ [b2,e3] ~ e2 ~ [b2,e3] ~ e2 ~ [b2,e3] ~ [b2,e3] ~ e2 ~ [c#3,f#3] ~ [c#3,f#3] ~ f#2 ~ [c#3,f#3] ~", // E5 F#5
  T: "f#2 ~ [c#3,f#3] ~ [c#3,f#3] ~ f#2 ~ [c#3,f#3] ~ [c#3,f#3] ~ f#2 ~ [c#3,f#3] ~ f#2@3 ~ [c#3,f#3] ~ f#2 ~ [c#3,f#3] ~ [c#3,f#3] ~ f#2 ~ [c#3,f#3] ~", // F#5
  U: "f#2 ~ [c#3,f#3] ~ [c#3,f#3] ~ f#2@2 [b2,e3] ~@3 [b2,e3] ~ e2 ~ [b2,e3] ~ [b2,e3] ~ e2 ~ [b2,e3] ~ e2 ~ [b2,e3] ~ [b2,e3] ~ e2 ~", // F#5 E5
  V: "[b2,e3] ~ [b2,e3] ~ e2 ~ [b2,e3] ~ e2 ~ [b2,e3] ~ e2 ~ [b2,e3] ~ e2 ~ [b2,e3] ~ e2 ~ [b2,e3] ~ e2 ~ [b2,e3] ~ [b2,e3] ~ e2 ~", // E5
  W: "[c#3,f#3] ~ [c#3,f#3] ~ f#2 ~ [c#3,f#3] ~ f#2 ~ [c#3,f#3] ~ [c#3,f#3] ~ f#2 ~ [c#3,f#3] ~ [c#3,f#3] ~ f#2 ~ [c#3,f#3] ~ f#2@3 ~ [c#3,f#3] ~ [c#3,f#3] ~", // F#5
  X: "f#2 ~ [c#3,f#3] ~ f#2 ~ [c#3,f#3] ~ f#2 ~ [c#3,f#3] ~ f#2 ~ [c#3,f#3] ~ [e3,a3] ~@3 [e3,a3] ~ a2 ~ [e3,a3] ~ [e3,a3] ~ a2 ~ [e3,a3] ~", // F#5 A5
  Y: "a2 ~ [e3,a3] ~ [e3,a3] ~ a2 ~ [e3,a3] ~ [e3,a3] ~ a2 ~ [e3,a3] ~ a2 ~ [e3,a3] ~ a2 ~ [e3,a3] ~ a2@2 [e3,a3] ~ a2 ~ [e3,a3] ~", // A5
  Z: "a2@2 [e3,a3] ~ a2 ~ [e3,a3] ~ [f#3,b3] ~@3 [f#3,b3] ~ b2 ~ [f#3,b3] ~ [f#3,b3] ~ b2@2 [f#3,b3] ~ b2 ~ [f#3,b3] ~ [f#3,b3] ~ b2 ~", // A5 B5
  AA: "[f#3,b3] ~@3 [f#3,b3] ~ b2 ~ [f#3,b3] ~ [f#3,b3] ~ b2 ~ [f#3,b3] ~ b2 ~ [f#3,b3] ~ [f#3,b3] ~ b2 ~ [e3,a3] ~@3 [e3,a3] ~ a2 ~", // B5 A5
  AB: "[e3,a3] ~ [e3,a3] ~ a2 ~ [e3,a3] ~ [e3,a3] ~ a2 ~ [e3,a3] ~ a2 ~ [e3,a3] ~ [e3,a3] ~ a2 ~ [e3,a3] ~ a2 ~@3 [e3,a3] ~ [e3,a3] ~", // A5
  AC: "a2 ~ [e3,a3] ~ [e3,a3] ~ a2 ~ [e3,a3] ~ [e3,a3] ~ a2 ~ [e3,a3] ~ [f#3,b3] ~ b2 ~ [f#3,b3] ~ b2 ~ [f#3,b3] ~ [f#3,b3] ~ b2 ~ [f#3,b3] ~", // A5 B5
  AD: "b2 ~ [f#3,b3] ~ b2 ~ [f#3,b3] ~ b2 ~@3 [f#3,b3] ~ [f#3,b3] ~ b2 ~ [f#3,b3] ~ [f#3,b3] ~ b2 ~ [f#3,b3] ~ b2 ~@5", // B5
})).s("gm_piano").gain(0.4).pan(0.3)

// chords · synth strings 1
const synth_strings_1 = note("<~@169 A@2 B@7 C D ~@2 E F G H I J I J K L M N ~@24>".pickRestart({
  A: "a2/2", B: "[~@4 e3@32 ~@34 d4@32 ~@9 [a3,f#4], ~@21 [g3,b3,e4]@30 ~@5]/7",
  C: "[d4,a4] ~ [d4,a4]@3 ~ [a3,f#4]@2 [e4,b4] ~ [e4,b4]@2 ~@2 [a3,f#4]@2 [d4,a4] ~ [d4,a4]@2 ~@2 [a3,f#4]@2 [e4,b4] ~ [e4,b4]@2 ~@2 [a3,f#4]@2", // D5 D E5 D D5 D E5 D
  D: "[d4,a4] ~ [d4,a4]@2 ~@2 [a3,f#4]@2 [e4,b4] ~ [e4,b4]@3 ~ [b3,f#4]@2 [d4,a4] ~ [b3,f#4]@2 [c#4,g#4]@3 ~ [a3,f#4]@4 ~@4", // D5 D E5 B5 D5 B5 C#5 D
  E: "b4@4 ~@4 b4@3 ~ b4@2 c#5@2 b4@3 ~ a4 ~ g#4 ~ f#4@2 e4@2 f#4@2 g#4 ~",
  F: "a4@5 ~@3 a4@2 ~@2 a4@2 b4@2 a4@2 ~@2 g#4@2 f#4@2 e4@2 d4@2 e4@2 f#4@2",
  G: "g#4@5 ~@3 g#4@3 ~ g#4@2 a4@2 g#4@4 f#4 ~ e4@2 d#4@2 c#4@2 b3@2 a#3@2",
  H: "f#4@6 ~@2 f#4@5 ~@3 g#4@2 ~@2 f#4@2 e4@2 d#4@3 ~ c#4@3 ~, [d#2,a#3], d#4@21 ~@11", // D#5
  I: "[g#4,c5]@2 [g#4,c5]!2 [g#4,c5]@2 [a#4,c#5]!8 [c5,d#5]!2", // G# A#m Cm
  J: "[c5,d#5]@2 [g#4,c5]!4 [a#4,c#5]!2 [a#4,c#5]@2 [c5,d#5]@2 [g#4,c5]@4", // Cm G# A#m Cm G#
  K: "[f#4,a#4]@2 [f#4,a#4]!2 [f#4,a#4]@2 [g#4,c5]!2 [g#4,c5]@2 [g#4,c5]!2 [g#4,c5]@2 [a#4,c#5]@2", // F# G# A#m
  L: "[a#4,c#5]@2 [a#4,c#5]!4 [c5,d#5]!4 [c#5,f5]@2 [c#5,f5]@2 [c#5,f5]!2", // A#m Cm C#
  M: "[c#5,f5]@2 [c#5,f5]!2 [c#5,f5]@2 [c#5,f5]!2 [c#5,f5]@2 [d#5,f#5]!2 [d#5,f#5]@2 [f5,g#5]!2", // C# D#m Fm
  N: "[f5,g#5]@2 [f5,g#5]!8 [f#5,a#5]@2 [f#5,a#5]@4", // Fm F#
})).s("gm_synth_strings_1").gain(0.45).pan(0.3)

// other · overdriven guitar
const overdriven_guitar = note("<~@29 A@2 B C@2 D@2 E F@3 G H I@2 J K L M@2 N@2 O@5 P Q@4 R ~@156>".pickRestart({
  A: "[~@23 e3@37 ~@2 e4@2]/2", B: "~ g4@3 e4@2 ~ [a3,e4]@4 ~@3 a4@4 ~@2 d4@3 e4@3 g4@3 a4@3",
  C: "[a3@4 ~@2 e5@3 ~@3 d5@3 ~@3 b4@3 ~@4 a3@4 ~@2 a4@4 ~@2 d4@3 e4@3 g4@3 a4@2 ~@7 e5@4 ~@3 d5@2]/2",
  D: "[~ b4@3 d5@4 ~@2 a3@4 ~@2 a4@4 ~@2 d4@3 e4@3 g4@3 a4@3 a3@4 ~@3 e5@3 ~@3 d5@3 ~@3 b4@3 ~@3 a3@4 ~]/2",
// … 336 more lines

More by Mike Oldfield