Strudelify

The Lake (Two Sides Excerpt)

Mike Oldfield

KeyF♯ majorTempo65 bpm
0:00/0:00
// The Lake (Two Sides Excerpt) — Oldfield, Mike
// 65 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 8 "PRG.CHANGE" glockenspiel (copy of ch 5 "PRG.CHANGE" piccolo); ch 7 "PRG.CHANGE" tubular bells (copy of ch 6 "PRG.CHANGE" flute)
// note: Full arrangement: all 192 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(65/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.

// other · piccolo · "PRG.CHANGE"
const piccolo = note(`<
  A B C D E F@2 G H I@3 J@4 D E F@2 G K L@3 ~@8 M@2 N@2 O ~@3 P Q ~@2 R S@2 T@2 ~@4 U@2 ~@3 V@2 W ~ X ~ Y ~@12 Z ~ AA ~
  AB AC@2 AD@2 AE@2 AF ~ AG ~@8 AH ~ AI ~ AJ ~ AK ~@85
>`.pickRestart({
  A: "~@11 f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~@12", B: "~@15 f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~@8",
  C: "~@19 f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~ f#5@3",
  D: "d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3",
  E: "~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@2",
  F: "[~ d5@3 ~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~ f#5@3 d5@3 e5@3 d5@4]/2",
  G: "f#5@3 d5@3 e5@3 d5@3 ~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~ f#5@3 d5@3 e5@3",
  H: "d5@4 f#5@3 d5@3 e5@3 d5@3 ~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~ f#5@3 d5@2",
  I: "[~ e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3]/3",
  J: "[e5@3 d5@3 ~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~ f#5@3]/4",
  K: "d5@4 f#5@3 d5@3 e5@3 d5@3 ~ e5@3 c5@3 d5@3 c5@4 e5@3 c5@3 d5@3 c5@3 ~ e5@3 c5@2",
  L: "[~ d5@3 c5@4 e5@3 c5@3 d5@3 c5@3 ~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~ e5@3 c5@3 d5@3 c5@4 e5@3 c5@3 d5@3 c5@3 ~ f#5@3 d5@3 e5@3 d5@4 f#5@3 d5@3 e5@3 d5@3 ~@46]/3",
  M: "[~@39 c#6@6 g#6@6 ~ c#6@7 ~@32 g#5@5]/2", N: "[~ c#6@6 ~ g#5@9 ~@30 c#6@6 g#6@6 ~ c#6@7 ~@29]/2",
  O: "~@3 g#5@6 c#6@6 ~ g#5@9 ~@23", P: "~@19 c#6@6 g#6@6 ~ c#6@7 ~@9", Q: "~@23 b5@6 f#6@6 ~ b5@9 ~@3",
  R: "~@6 d#6@2 ~ g#6@6 d#6@6 ~ g#5@8 ~@5 c#6@6 g#6@6 ~", S: "[c#6@7 ~@32 g#5@6 c#6@6 ~ g#5@9 ~@30 c#6@5]/2",
  T: "[~ g#6@6 ~ c#6@7 ~@32 g#5@6 c#6@6 ~ g#5@9 ~@27]/2", U: "[~@19 a#3@9 d#4@8 d#3@8 a#3@7 g#3@41 ~@4]/2",
  V: "[~@34 g#5@6 d#6@5 c#6@6 ~@45]/2", W: "~@27 g#5@6 d#6@5 ~ c#6@6 ~@3", X: "~@21 g#5@5 d#6@6 c#6@6 ~@10",
  Y: "~@14 g#5@5 d#6@5 ~ c#6@6 ~@17", Z: "~@14 g#5@5 d#6@6 c#6@6 ~@17", AA: "~@7 g#5@5 d#6@5 ~ c#6@6 ~@24",
  AB: "g#5@6 d#6@5 c#6@6 ~@31", AC: "[~@41 g#5@6 d#6@5 c#6@6 ~@38]/2", AD: "[~@34 d#5@6 a#5@5 g#5@12 ~@39]/2",
  AE: "[~@27 d#5@6 a#5@5 ~ g#5@15 ~@42]/2", AF: "~@21 d#5@5 a#5@5 ~ g#5@12 ~@4", AG: "~@14 d#5@5 a#5@5 ~ g#5@15 ~@8",
  AH: "~@27 d#5@6 a#5@5 ~ g#5@9", AI: "~@21 d#5@5 a#5@5 ~ g#5@15 ~", AJ: "~@14 d#5@5 a#5@5 ~ g#5@12 ~@11",
  AK: "~@7 d#5@5 a#5@5 ~ g#5@15 ~@15",
})).s("gm_piccolo").gain(0.31).pan(0.9)

// bass · slap bass 1 · "PRG.CHANGE"
const bass = note(`<
  ~@129 A B@2 ~@8 C D E D F G F G@3 ~@4 C D E D F G F G C D E D F G F G@3 H ~ C D E D F G F G@2 I J ~@7
>`.pickRestart({
  A: "d1@15 a1", B: "[b1@91 ~@5]/2", C: "b2@23 ~ a2@24", D: "g2@11 ~ f#2@6 e2@11 ~ d2@12 c#2@6",
  E: "b2@17 ~@7 a2@21 ~@3", F: "b2@5 ~ g2@6 f#2@11 ~", G: "d2@8 ~ c#2@6 ~@3 b1@5 ~", H: "b2@19 ~@29",
  I: "d2@8 ~ c#2@6 ~@3 a1@5 ~", J: "d1 ~",
})).s("gm_slap_bass_1").gain(0.36).pan(0.6)

// chords · lead 2 sawtooth · "PRG.CHANGE"
const lead_2_sawtooth = note("<~@28 A B C D E F ~@19 G@3 ~@136>".pickRestart({
  A: "~@19 [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~@2 [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ e4 ~@2 [a3,e4] ~ [a3,e4]", // A5
  B: "~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~@2 [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ e4 ~@2 [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~@2 [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ e4 ~", // A5
  C: "~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~@2 [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ e4 ~@2 [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~@2 [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~", // A5
  D: "[a3,e4] ~ e4 ~@2 [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~@2 [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ e4 ~@2 [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~@2 [a3,e4] ~ [a3,e4] ~", // A5
  E: "[a3,e4] ~ [a3,e4] ~ [a3,e4] ~ e4 ~@2 [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~@2 [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ e4 ~@2 [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~@2", // A5
  F: "[a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [a3,e4] ~ e4 ~@2 [b3,f#4] ~ [b3,f#4] ~ [b3,f#4] ~ [b3,f#4] ~ [b3,f#4] ~ [b3,f#4] ~@2 [b3,f#4] ~ [b3,f#4] ~ [b3,f#4] ~ [b3,f#4] ~ [b3,f#4] ~ f#4 ~@11", // A5 B5
  G: "[~@34 c#4@2 ~ e4@2 f#4@2 g#4@24 ~@2 g#3@16 f#3@16 [g#3,b3]@45, ~@36 d#4@2 ~@29 d#3@77, ~@67 a#3@33 ~@44]/3", // G#m
})).s("gm_lead_2_sawtooth").gain(0.2).pan(0.6)

// chords · lead 2 sawtooth · "PRG.CHANGE" · soft notes
const lead_2_sawtooth_soft = note("<~@28 A B C D E F ~@17 G@4 ~@137>".pickRestart({
  A: "~@42 a3 ~@5", B: "~@20 a3 ~@25 a3 ~", C: "~@24 a3 ~@23", D: "~@2 a3 ~@25 a3 ~@19", E: "~@6 a3 ~@25 a3 ~@15",
  F: "~@10 a3 ~@25 b3 ~@11", G: "[~@7 [g#3,c4,d#4]@51 ~ [f#3,a3,d4]@48 ~@4 [d#3,g#3,b3]@51 ~@30]/4",
})).s("gm_lead_2_sawtooth").gain(0.15).pan(0.6)

// other · banjo · "PRG.CHANGE"
const banjo = note("<~@60 A B C@2 D E@2 ~@12 F@3 G@2 H I ~@106>".pickRestart({
  A: "~@31 c#5@5 b4@5 ~ a#4@5 ~", B: "b4@5 g#4@11 d#4@10 ~@22",
  C: "[~@13 g#4@5 a#4@5 ~ f#4@6 g#4@4 ~ g#4@21 ~@40, ~@17 f#4 ~@30]/2", D: "~@17 c#5@5 ~ b4@5 a#4@5 ~ b4@5 g#4@9",
  E: "[~@3 d#4@10 ~@34 g#4@6 a#4@5 f#4@6 g#4@4 ~ g#4@21 ~@6, ~@69 f#4@2 ~@25]/2",
  F: "[~@10 c#5@5 ~ b4@5 a#4@5 ~ b4@6 g#4@11 d#4@10 ~@34 g#4@6 a#4@5 f#4@6 g#4@4 ~@2 g#4@21 ~@12, ~@55 f#4 ~@16]/3",
  G: "[~@45 c#5@5 b4@5 ~ a#4@5 b4@6 g#4@11 d#4@10 ~@8]/2", H: "~@27 g#4@5 a#4@5 ~ f#4@5 g#4@4 ~",
  I: "~ g#4@21 ~@26, f#4 ~@23",
})).s("gm_banjo").gain(0.46)

// bass · slap bass 1 · "PRG.CHANGE"
const bass_2 = note("<~@94 A B@2 C@3 D ~@91>".pickRestart({
  A: "~@3 f#1@26 ~@19", B: "[a#1@42 ~@3 a#1@5 d#2@5 ~ a#2@4 ~ d#3@11 a#2@11 ~@13]/2",
  C: "[~@38 f#1@26 ~@18 a#1@42 ~@3 a#1@6 ~@2 d#2@3 a#2@4 ~@2]/3", D: "g#2@2 a#2@11 ~@35",
})).s("gm_slap_bass_1").gain(0.41)

// bass · synth bass 2 · "PRG.CHANGE"
const bass_3 = note("<~@108 A@2 B C D E B C D F A B C D E B C D F A@2 G ~@62>".pickRestart({
  A: "c2@2 c2 c2@2 c2 c2@2 c2 c2@2 c2 c2@2 c2 c2@2 c2 c2@2 c2 c2@2 c2",
  B: "c2@2 c2 c2@2 c2 c2@2 c2 c2@2 c2 g#2@2 g#2 g#2@2 g#2 g#2@2 g#2 g#2@2 g#2",
  C: "c2@2 c2 c2@2 c2 c2@2 c2 c2@2 c2 f2@2 f2 f2@2 f2 f2@2 f2 f2@2 f2",
  D: "c2@2 c2 c2@2 c2 c2@2 c2 c2@2 c2 a#1@2 a#1 a#1@2 a#1 a#1@2 a#1 a#1@2 a#1",
  E: "g#1@2 g#1 g#1@2 g#1 c2@2 c2 c2@2 c2 g1@2 g1 g1@2 g1 c2@2 c2 c2@2 c2",
  F: "a#1@2 a#1 a#1@2 a#1 c2@2 c2 c2@2 c2 g1@2 g1 g1@2 g1 c2@2 c2 c2@2 c2", G: "d2@43 ~@5",
})).s("gm_synth_bass_2").gain(0.31).pan(0.9)

// chords · acoustic guitar nylon · "PRG.CHANGE"
const acoustic_guitar_nylon = note("<~@140 A B C D E@2 F G H I J ~@41>".pickRestart({
  A: "b3@5 ~@7 d5@10 ~@2 c#5@3 b4@2 ~ c#5@2 ~ d5@3 c#5@6 ~@6",
  B: "b4@10 ~@2 a4@4 ~@2 g4@6 d5@4 ~@2 c#5@4 ~@7 c#5 b4@5 ~",
  C: "b3@12 d5@9 ~@3 c#5@3 b4@2 ~ c#5@2 ~ d5@3 c#5@3 b4@3 a4@4 ~@2",
  D: "b4@8 ~@4 a4@4 ~@2 g4@6 d5@2 ~@4 c#5@4 ~@7 c#5 b4@5 ~",
  E: "[d4@11 ~ b4@10 ~@8 a4@14 ~ g4@2 ~@3 f#4@10 a4@5 ~ e4@11 ~ a4@5 ~ [f#3,b3,d4]@12, ~@6 a3@4 ~@2 [d3,a3]@3 ~@9, ~@25 d4@15 ~@9 d4@10 ~@6 [a3,c#4]@10 ~@21, ~@26 f#4@12 ~@6 a4@13 ~@39]/2", // Bm D5 A
  F: "c#4 ~ d4@10 b4@10 ~@2 a4@14 ~@4 a4@2 ~ g4@3",
  G: "~@2 f#4@10 a4@5 ~@2 [c#4,e4]@11 a4@5 ~@3 d4@10, a3@10 ~@8 a3@9 ~@8 f#3@10 ~@3, ~ d4@9 ~@26 b3@10 ~@2", // C#m
  H: "~ [d4,f#4]@11 a4@5 ~@2 [c#4,e4]@11 a4@5 ~@3 d4@10, a3@10 ~@8 a3@9 ~@8 f#3@10 ~@3, ~@18 b3@5 ~", // D C#m
  I: "~ [d4,f#4]@11 a4@5 ~@3 e4@10 a4@5 ~@3 d4@10, a3@10 ~@8 a3@9 ~@8 f#3@10 ~@3, ~@19 c#4@10 ~@7 b3@10 ~@2", // D
  J: "~ a4 ~@14, d3@2 [d4,f#4]@3 ~@43, ~ a3@3 ~@44", // D
})).s("gm_acoustic_guitar_nylon").gain(0.46).pan(0.6)

// other · distortion guitar · "PRG.CHANGE"
const distortion_guitar = note("<~@154 A B C B D E F G A B C B D E D E G@2 H ~ A B C B D E D E G I J ~@7>".pickRestart({
  A: "b2@23 ~ a3@24", B: "g3@11 ~ f#3@6 e3@11 ~ d3@12 c#3@6", C: "b2@8 a3@7 ~", D: "b2@5 ~ g3@6 f#3@11 ~",
  E: "d3@16 ~@2 c#3@17 ~ b2@10 ~@2", F: "b3@5 ~ g3@6 f#3@11 ~", G: "d3@8 ~ c#3@6 ~@3 b2@6", H: "b2 ~@11",
  I: "d3@8 ~ c#3@6 ~@3 a2@6", J: "d3@47 ~",
})).s("gm_distortion_guitar").gain(0.31).pan(0.7)

// chords · piccolo · "PRG.CHANGE"
const piccolo_2 = note("<A B C D E F@2 G H I@3 J K L M D E F@2 G N O@3 ~@167>".pickRestart({
  A: "~@24 f#5@2 ~ [d5,f#5]@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@6", // D Dsus2 D
  B: "~@28 f#5@2 ~ [d5,f#5]@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@2", // D Dsus2 D
  C: "~@32 f#5@2 ~ [d5,f#5]@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~", // D Dsus2 D
  D: "[d5,f#5]@2 ~@8 f#5@2 ~ [d5,f#5]@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@8 f#5@2 ~ f#5@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~", // D Dsus2 D Dsus2
  E: "~ [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@8 f#5@2 ~ [d5,f#5]@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@8 f#5@2 ~ [d5,f#5]@2 ~ [d5,e5,f#5]@2", // D Dsus2 D
  F: "[~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@8 f#5@2 ~ [d5,f#5]@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@8 f#5@2 ~ f#5@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@8 f#5@2 ~ [d5,f#5]@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@8]/2", // Dsus2 D Dsus2 D Dsus2 D Dsus2 D
  G: "f#5@2 ~ [d5,f#5]@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@8 f#5@2 ~ [d5,f#5]@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@4", // D Dsus2 D Dsus2 D
  H: "~@4 f#5@2 ~ f#5@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@8 f#5@2 ~ [d5,f#5]@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2", // D Dsus2 D Dsus2 D
  I: "[~@8 f#5@2 ~ [d5,f#5]@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@8 f#5@2 ~ [d5,f#5]@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@8 f#5@2 ~ f#5@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@8 f#5@2 ~ [d5,f#5]@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@8 f#5@2 ~ [d5,f#5]@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@8 f#5@2 ~ [d5,f#5]@2 ~]/3", // D Dsus2 D Dsus2 D Dsus2 D Dsus2 …
  J: "[d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@8 f#5@2 ~ f#5@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@8 f#5@2", // D Dsus2 D Dsus2 D
  K: "~ [d5,f#5]@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@8 f#5@2 ~ [d5,f#5]@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@6", // D Dsus2 D Dsus2 D
  L: "~@2 f#5@2 ~ [d5,f#5]@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@8 f#5@2 ~ f#5@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@2", // D Dsus2 D Dsus2 D
  M: "~@6 f#5@2 ~ [d5,f#5]@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@8 f#5@2 ~ [d5,f#5]@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~", // D Dsus2 D Dsus2 D
  N: "~@4 f#5@2 ~ f#5@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@8 e5@2 ~ e5@2 ~ [c5,d5,e5]@2 ~ [c5,d5]@2 ~@2 [c5,d5,e5]@2 ~ [c5,e5]@2", // D Dsus2 D C Csus2 C
  O: "[~@8 e5@2 ~ [c5,e5]@2 ~ [c5,d5,e5]@2 ~ [c5,d5]@2 ~@2 [c5,d5,e5]@2 ~ [c5,e5]@2 ~@8 f#5@2 ~ [d5,f#5]@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@8 e5@2 ~ e5@2 ~ [c5,d5,e5]@2 ~ [c5,d5]@2 ~@2 [c5,d5,e5]@2 ~ [c5,e5]@2 ~@8 f#5@2 ~ f#5@2 ~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5,f#5]@2 ~ [d5,f#5]@2 ~@40]/3", // C Csus2 C D Dsus2 D C Csus2 …
})).s("gm_piccolo").gain(0.15).pan(0.1)

// chords · piccolo · "PRG.CHANGE" · soft notes
const piccolo_soft = note("<A B@2 C D E@2 F G H I J K L M@2 C D E@2 F N O P Q ~@167>".pickRestart({
  A: "~@43 [d5,e5,f#5]@2 ~ [d5,e5]@2", // D Dsus2
  B: "[~@2 [d5,e5]@2 ~ d5@2 ~@40 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5]@2 ~ d5@2 ~@37]/2", // Dsus2 D Dsus2
  C: "~@3 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5]@2 ~@17 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5]@2 ~ d5@2 ~@7", // D Dsus2 D Dsus2
  D: "~@7 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5]@2 ~@17 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@10", // D Dsus2 D Dsus2
  E: "[~@11 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5]@2 ~@17 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5]@2 ~ d5@2 ~@14 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5]@2 ~@17 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2]/2", // D Dsus2 D Dsus2 D Dsus2 D Dsus2
  F: "~@19 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5]@2 ~@17 [d5,e5,f#5]@2 ~", // D Dsus2 D
  G: "[d5,e5]@2 ~@2 [d5,e5]@2 ~ d5@2 ~@14 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5]@2 ~@16", // Dsus2 D Dsus2
  H: "~ [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@21 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5]@2 ~@12", // D Dsus2 D Dsus2
  I: "~@5 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5]@2 ~ d5@2 ~@14 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5]@2 ~@8", // D Dsus2 D Dsus2
  J: "~@9 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@21 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5]@2 ~@4", // D Dsus2 D Dsus2
  K: "~@13 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5]@2 ~ d5@2 ~@14 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5]@2", // D Dsus2 D Dsus2
  L: "~@17 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@21 [d5,e5,f#5]@2 ~ [d5,e5]@2", // D Dsus2 D Dsus2
  M: "[~@2 [d5,e5]@2 ~@17 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5]@2 ~ d5@2 ~@14 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [d5,e5]@2 ~@17 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@18]/2", // Dsus2 D Dsus2 D Dsus2 D Dsus2
  N: "[d5,e5]@2 ~@2 [d5,e5]@2 ~ d5@2 ~@14 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [c5,d5]@2 ~ c5@2 ~@13", // Dsus2 D Dsus2 Csus2
  O: "~ [c5,d5,e5]@2 ~ [c5,d5]@2 ~@21 [c5,d5,e5]@2 ~ [c5,d5]@2 ~@2 [d5,e5]@2 ~@12", // C Csus2 C Csus2 Dsus2
  P: "~@5 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@2 [c5,d5]@2 ~ c5@2 ~@14 [c5,d5,e5]@2 ~ [c5,d5]@2 ~@2 [d5,e5]@2 ~ d5@2 ~@5", // D Dsus2 Csus2 C Csus2 Dsus2
  Q: "~@9 [d5,e5,f#5]@2 ~ [d5,e5]@2 ~@34", // D Dsus2
})).s("gm_piccolo").gain(0.05).pan(0.1)

// other · brass section · "PRG.CHANGE"
const brass_section = note(`<
  ~@28
  [~@19 e5@4 d5@2 d5@4 g5@2 ~ g5@4 e5@2 e5@3 ~ c5@2 ~ c5@3]
  [~ b4@2 b4@3 ~ c5@2 ~ c5@3 ~ d5@2 d5@2 e5@2 f5@2 ~ e5@4 d5@2 d5@4 g5@2 ~ g5@4 e5@2 e5@3 ~ c5@2]
  [~ c5@4 b4@2 b4@3 ~ c5@2 ~ c5@3 ~ d5@2 d5@2 e5@2 f5@2 ~ e5@4 d5@2 d5@4 g5@2 ~ g5@4 e5@2 e5@2]
  [~@2 c5@2 ~ c5@4 b4@2 b4@3 ~ c5@2 ~ c5@3 ~ d5@2 d5@2 e5@2 f5@2 ~ e5@4 d5@2 d5@4 g5@2 ~ g5@4]
  [e5@2 e5@3 ~ c5@2 ~ c5@4 b4@2 b4@3 ~ c5@2 ~ c5@3 ~ d5@2 d5@2 e5@2 f5@2 ~ e4@3 ~ d4 ~ d4@4 ~@2 g4]
  [~ g4@3 ~ e4 ~ e4@2 ~ c4@2 ~ b3@6 d#4@7 f#4@6 b4@4 ~@12]
  ~@158
>`).s("gm_brass_section").gain(0.41).pan(0.1)

// other · tubular bells · "PRG.CHANGE"
const tubular_bells = note("<~@55 [~@5 g#4@8 ~@35] ~@136>").s("gm_tubular_bells").gain(0.41).pan(0.1)

// chords · synth strings 2 · "PRG.CHANGE"
const synth_strings_2 = note("<~@74 A@5 ~@6 B@3 C@6 ~@6 D@7 E ~@84>".pickRestart({
  A: "[~@27 [d#3,f#3]@42 ~@3 [c#3,f3]@42 ~@3 [d#3,f#3]@41 ~@3 [c#3,f3]@40 ~@39, ~@9 a#3@58 ~@13]/5", // D#m C# D#m C#
  B: "[~@34 d#5@6 a#5@5 [g#4,g#5]@11 ~ [a#2,c#4,f4]@22 [d#2,d#4]@22 [a#2,c#4,f4]@22 d#5@6 a#5@6 [g#4,g#5]@9, ~@34 a#3@45 ~@65, ~@34 [d#2,d#4]@22 ~@67 [d#2,d#4]@21, ~@34 f#4@11 ~@78 f#4@11 ~@10]/3", // G# A#m D# A#m G# D#
  C: "[~@2 [a#2,c#4,f4]@22 [d#2,d#4,f#4]@22 [a#2,c#4,f4]@22 ~ d#5@5 a#5@6 [g#4,g#5]@11 [a#2,c#4,f4]@22 [d#2,d#4]@22 [a#2,c#4,f4]@22 ~ d#5@5 a#5@6 [g#4,g#5]@11 [a#2,c#4,f4]@22 [d#2,d#4,f#4]@45 ~@41, ~@69 a#3@44 ~@175, ~@69 [d#2,d#4]@22 ~@67 [d#2,d#4]@22 ~@108, ~@69 f#4@11 ~@78 f#4@11 ~@119]/6", // A#m D#m A#m G# A#m D# A#m G# …
  D: "[~@27 d#5@6 a#5@6 [g#4,g#5]@11 [a#2,c#4,f4]@22 [d#2,d#4]@22 [a#2,c#4,f4]@22 ~ d#5@5 a#5@6 [g#4,g#5]@11 [a#2,c#4,f4]@22 [d#2,d#4,f#4]@22 [a#2,c#4,f4]@22 ~ d#5@5 a#5@6 [g#4,g#5]@11 [a#2,c#4,f4]@22 [d#2,d#4]@22 ~ [a#2,c#4,f4]@22 d#5@5 a#5@6 [g#4,g#5]@11 [a#2,c#4,f4]@19, ~@27 a#3@45 ~@134 a#3@44 ~@86, ~@27 [d#2,d#4]@22 ~@68 [d#2,d#4]@22 ~@67 [d#2,d#4]@22 ~@67 [d#2,d#4]@22 ~@19, ~@27 f#4@11 ~@79 f#4@11 ~@78 f#4@11 ~@78 f#4@11 ~@30]/7", // G# A#m D# A#m G# A#m D#m A#m …
  E: "~ [d#2,d#4,f#4]@15", // D#m
})).s("gm_synth_strings_2").gain(0.41).pan(0.7)

// chords · synth strings 2 · "PRG.CHANGE" · soft notes
const synth_strings_2_soft = note("<~@62 A@2 ~ B@3 ~@12 C D ~@2 E@2 F@4 G@4 ~@7 H@4 I@3 ~@84>".pickRestart({
  A: "[~@13 [d#4,g4,a#4]@11 [d#4,g#4,b4]@33 [d#4,g4,a#4]@11 ~@28]/2", // D# G#m D#
  B: "[~@47 [d#4,g4,a#4]@11 [d#4,g#4,b4]@33 ~ [d#4,g4,a#4]@11 ~@41]/3", C: "~@5 [d#4,g4,a#4]",
  D: "~@3 [d#4,g#4,b4]@33 ~ [d#4,g4,a#4]@11", E: "[~@27 [d#4,g4,a#4]@11 [d#4,g#4,b4]@33 [d#4,g4,a#4]@11 ~@14]/2",
  F: "[~@31 a#3@133 ~@28]/4", G: "[~@17 a#3@133 ~@42]/4", H: "[~@24 a#3@133 ~@35]/4", I: "[~@10 a#3@133 ~]/3",
})).s("gm_synth_strings_2").gain(0.2).pan(0.7)

// bass · electric bass pick · "PRG.CHANGE"
const bass_4 = note("<~@119 A B C D A B C D ~@65>".pickRestart({
  A: "c1@2 ~@2 c2@2 c1@2 d#1@2 f1 ~ c2@4 c2@2 c2@4 g#1@2 g#1@3 ~@3 g1@4 ~@2 g#1@4 ~@2 a#1@3 ~@3",
  B: "c1@3 ~ c2@2 c1@2 d#1@2 c1@2 c2@4 c2 ~ c2@5 ~ f1@5 ~ d#1@6 f1@6 g1@4 ~@2",
  C: "c1@3 ~ c2@2 c1@2 d#1@2 c1@2 c2@3 ~ c2 ~ c2@5 ~ a#1@5 ~ g#1@6 c#2@6 a#1@4 ~@2",
  D: "a#1@2 f2@2 a#1@2 c#2@4 ~@2 c2@2 g2@2 c2@2 d#2@5 ~ a#1@2 c#2@2 a#1@2 g1@6 c1@2 c2 ~ c1@2 c2@2 c1@2 c2@2",
})).s("gm_electric_bass_pick").gain(0.41)

// chords · electric guitar clean · "PRG.CHANGE"
const electric_guitar_clean = note("<~@129 A@2 B@3 C@2 D@2 E@2 ~@52>".pickRestart({
  A: "[~@24 d3@4 ~ d#3 e3@12 f#3@4 ~@4 f#3@34 ~@12, ~@47 b2@36 ~@13, ~@48 d3@35 ~@13]/2",
  B: "[~@28 b3@2 ~ b3@7 a3@6 ~@5 d4@10 ~@2 d5@7 ~@5 c#5@19 ~@4 [g4,b4]@10 ~@3 a4@4 ~@2 [e4,g4]@11 ~ [d4,f#4]@11 ~ [g3,c#4]@4 ~, ~@30 d4@2 ~@15 f#3@13 b4@8 ~@4 a4@20 ~@52, ~@48 b3@11 f#4@9 ~@3 e4@20 ~@4 d4@11 ~@2 [c#4,f#4]@4 ~@2 b3@11 ~ a3@11 ~ e3@4 ~@2]/3", // G Em D Gdim F#5
  C: "[~ d4@10 ~@2 d5@7 ~@5 c#5@19 ~@4 [g4,b4]@10 ~@3 a4@4 ~@2 [e4,g4]@11 ~ [d4,f#4]@11 ~ [g3,c#4]@4 ~, [f#3,b3]@11 f#4@9 ~@3 e4@20 ~@4 d4@11 ~@2 [c#4,f#4]@4 ~@2 b3@11 ~ a3@11 ~ e3@4 ~@2, ~@3 b4@2 ~ a4@5 ~@13]/2", // G Em D Gdim B5 F#5
  D: "[~ d4@10 ~@2 b4@7 ~@5 a4@17 g4@5 ~ [d4,f#4]@12 a4@4 ~@3 [c#4,e4]@11 a4@4 ~@3 [b3,d4]@11, [f#3,b3]@11 d4@10 ~@2 d4@20 ~@4 a3@13 ~@6 a3@11 ~@7 f#3@11 ~, ~@3 g4@2 ~ f#4@5 ~@13]/2", // D C#m Bm B5
  E: "[~ d4@10 ~@2 b4@7 ~@5 a4@17 g4@5 ~ [d4,f#4]@10 ~@2 a4@4 ~@3 [c#4,e4]@11 a4@4 ~@3 [b3,d4]@11, [f#3,b3]@11 d4@10 ~@2 d4@20 ~@4 a3@11 ~@8 a3@11 ~@7 f#3@12, ~@3 g4@2 ~ f#4@5 ~@13]/2", // D C#m Bm B5
// … 468 more lines

More by Mike Oldfield