Strudelify
Moonlight Shadow cover art

Crises

Moonlight Shadow

Mike Oldfield

KeyB majorTempo129 bpm
0:00/0:00
// Moonlight Shadow — Oldfield, Mike
// 129 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 9 "STEEL GTR" acoustic guitar steel (copy of ch 8 "STEEL GTR" acoustic guitar steel)
// note: Full arrangement: all 110 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): OVERDRIVE, STEEL GTR.
setcpm(129/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 · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  A B C D ~@63 E@2 F G H I J K@2 L M N O P Q R S ~@15 E@2 T G U I J V@2 W@2
>`.pickRestart({
  A: "~@2 b3@2 e4@2 f#4 ~ g#4@2 f#4@2 e4@2 c#4 ~", B: "b3@2 c#4@2 d#4 ~ f#3@4 ~@2 b3 c#4 d#4 ~",
  C: "e4 ~ e4 ~ d#4@2 d#4@2 c#4@2 d#4@2 e4@2 f#4@2", D: "~ b3@3 ~@4",
  E: "[~@14 g#3@4 c#4 ~ e4@2 g#4@4 e4@2 c#4@2 b3 ~]/2", F: "a3@2 c#4@2 e4@2 c#5@3 ~ c#5 ~ d#5@4",
  G: "[d#5,f#5]@2 [d#5,f#5]@2 [d#5,f#5]@3 ~ d#5@2 f#4@2 b4@2 d#5 ~", H: "e4 ~ g#4 ~ b4@3 e4 d#4@2 f#4@2 b4@2 d#4 ~",
  I: "c#4@2 e4@2 g#4@6 e4@2 c#4@2 b3 ~", J: "a3@2 c#4@2 e4@2 c#5@4 c#5 ~ d#5@3 ~",
  K: "[[d#5,f#5]@2 [d#5,f#5]@2 [d#5,f#5]@3 ~ d#5@2 f#4 ~ f#4@4 g#4@2 [g#4,b4]@2 [g#4,b4]@3 ~ [f#4,b4]@2 f#4 d#4 [d#4,f#4]@2 d#4@2, ~@6 b4@3 ~@7]/2", // D#m G#m B5 D#m
  L: "[e4,g#4]@2 [e4,g#4]@2 [e4,g#4]@2 [e4,g#4]@2 ~ f#4 e4 ~ [e4,g#4]@2 e4@2, ~@4 [e4,g#4] ~@3", // E
  M: "[d#4,g#4]@2 f#4 e4 [d#4,f#4]@2 e4@2 [d#4,f#4]@2 [d#4,f#4] ~ [d#4,g#4] ~ [d#4,f#4] ~", // G#5 D#m G#5 D#m
  N: "b3 e4 g#4 e4 b3 e4 g#4 e4 c#4 e4 a4 e4 c#4 e4 a4 e4",
  O: "[d#4,f#4]@3 ~ [d#4,g#4] ~ [d#4,f#4]@3 ~ [d#4,f#4]@2 [d#4,g#4] ~ [f#4,b4]@2", // D#m G#5 D#m G#5 B5
  P: "[e5,g#5]@2 [e5,g#5]@2 [e5,g#5]@2 [e5,g#5]@2 ~ f#5 e5 ~ [e5,g#5]@2 e5 ~, ~@4 [e5,g#5] ~@3", // E
  Q: "[d#5,g#5]@2 f#5 e5 [d#5,f#5]@2 e5@2 [d#5,f#5]@2 [d#5,f#5]@2 [d#5,g#5] ~ [d#5,f#5] ~", // G#5 D#m G#5 D#m
  R: "g#5 e5 c#5 b4 c#5 b4 g#4 e4 a4 b4 a4 e4 a4 e4 c#4 e4", S: "[b3,d#4] ~ [b3,d#4] ~ [b3,e4] ~ [b3,d#4]@8 ~@2",
  T: "a3@2 c#4@2 e4@2 c#5@2 ~@2 c#5 ~ d#5@4", U: "e4 ~ g#4@2 b4@3 e4 d#4@2 f#4@2 b4@2 d#4 ~",
  V: "[[d#5,f#5]@2 [d#5,f#5]@2 [d#5,f#5]@3 ~ d#5@2 f#4 ~ f#4@4 e4 ~ g#4@2 b4@3 e4 d#4@2 f#4@2 b4@2 d#4 ~, ~@6 b4@3 ~@7]/2", // D#m
  W: "[e4@2 b3@2 g#3 ~ [g#3,e4] ~@7 [g#3,b3,e4]@7 ~@11]/2", // C#m E
})).s("gm_electric_guitar_muted").gain(0.55).pan(0.6)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  A B C D E F D G H F D I J K L M A D L D E N O P E F O P A B L Q R S L T U V W X Y U Z AA AB AC O AD AB N O AE J AF L
  AG A S L AH U V AI X AJ U AK AA E AC AL AM E AC AN AD A AO AP AQ A K L AR E F O AD E AS AT G A AU AP AV A AF L AW AX
  AC AY AZ E AC AL BA BB@2
>`.pickRestart({
  A: "e2@4 ~@2 e2 ~ e2@4 ~@4", B: "b1@4 ~@2 b1 ~ b1@4 ~@4", C: "c#2@4 ~@2 c#2 ~ a1@5 ~@3",
  D: "b1@4 ~@2 b1 ~ b1@4 ~@2 b1 ~", E: "c#2@4 ~@2 c#2 ~ c#2@4 ~@4", F: "a1@4 ~@2 a1 ~ a1@5 ~@3",
  G: "e2@4 ~@2 e2 ~ b1@4 ~@2 b1 ~", H: "c#2@4 ~@2 c#2 ~ c#2@5 ~@3", I: "e2@4 ~@2 e2 ~ b1@5 ~@3",
  J: "e2@4 ~@2 e2 ~ e2@4 ~@2 e2 ~", K: "b1@4 ~@2 b1 ~ b1@5 ~@3", L: "c#2@4 ~@2 c#2 ~ a1@4 ~@2 a1 ~",
  M: "b1@4 ~@2 b1 ~ b1 ~ b1@2 ~@2 b1 ~", N: "a1@4 ~@2 a1 ~ a1@4 ~@2 a1 ~", O: "b1@3 ~ d#2@4 f#2@4 b1@3 ~",
  P: "e2@4 g#2@3 ~ f#2@3 ~ b1@3 ~", Q: "b1@4 ~@2 b1@2 ~@2 b1 ~ f#2@3 ~", R: "e2@4 ~@2 e2 ~ e2@5 ~@3",
  S: "b1@4 ~@2 b1 ~ b1@3 ~ b1@2 c2@2", T: "b1 ~ b1@2 ~@2 b1 ~ b1 ~ b1 ~ f#1@3 ~",
  U: "b1 ~ b1@2 g#1@2 e1@2 b1 ~ b1@2 f#1@2 b1 ~", V: "b1 ~ b1@2 g#1@2 e1@2 b1 ~ b1 ~ f#1@2 b1 ~",
  W: "e2 ~ e2@2 ~@2 e2 ~ a1 ~ a1@2 ~@2 a1 ~", X: "b1 ~ b1@2 ~@2 b1@2 ~@2 b1 ~ b1@2 b1 ~",
  Y: "b1 ~ b1@2 g#1@2 e1 ~ b1 ~ b1 ~ f#1 ~ g#1@2", Z: "e2@4 ~@2 e2 ~ a1 ~ a1@3 ~ a1 ~",
  AA: "b1 ~ b1@2 ~@2 b1@2 ~@2 b1 ~ b1 ~ c2 ~", AB: "c#2@4 ~@2 c#2 ~ c#2@4 ~@2 c#2 ~", AC: "a1@4 ~@2 a1 ~ a1@4 ~@4",
  AD: "e2@4 g#2@3 ~ f#2@4 b1@3 ~", AE: "e2@3 ~ g#2@3 ~ f#2@4 b1@4", AF: "b1@4 ~@2 b1 ~ b1@3 ~ b1 ~ c2@2",
  AG: "b1@4 ~@2 b1@3 ~ b1 ~ f#2@2 b1@2", AH: "b1 ~ b1@2 ~@2 b1@2 ~@2 b1 ~ f#1@3 ~",
  AI: "e2 ~ e2@2 ~@2 e2 ~ a1 ~ a1@3 ~ a1 ~", AJ: "b1 ~ b1@2 g#1@2 e1@2 b1 ~ b1 ~ f#1 ~ g#1@2",
  AK: "e2@4 ~@2 e2 ~ a1 ~ a1@2 ~@2 a1 ~", AL: "b1@3 ~ d#2@3 ~ f#2@4 b1@3 ~", AM: "e2@4 g#2@4 f#2@4 b1@3 ~",
  AN: "b1@3 ~ d#2@4 f#2@4 b1@4", AO: "b1@4 ~@2 b1 ~ b1@3 ~ f#2@2 b1@2", AP: "c#2@4 ~@2 c#2 ~ a1@4 ~@4",
  AQ: "b1@4 ~@2 b1@3 ~ b1 ~ f#2@2 b1 ~", AR: "b1@4 ~@2 b1@3 ~ b1@3 ~ b1 ~", AS: "a1@4 ~@2 a1 ~ a1 ~ a1@3 ~ a1 ~",
  AT: "b1@4 ~@2 b1 ~ b1@4 d#2@3 ~", AU: "b1@5 ~ b1 ~ b1@3 ~ b1@2 c2@2", AV: "b1@4 ~@2 b1@2 ~@2 b1 ~ f#2@2 b1@2",
  AW: "b1@4 ~@2 b1 ~ b1@3 ~ b1 ~ c2 ~", AX: "c#2@5 ~ c#2 ~ c#2@5 ~@3", AY: "b1@3 ~ d#2@3 ~ f#2@3 ~ b1@3 ~",
  AZ: "e2@3 ~ g#2@3 ~ f#2@4 b1@3 ~", BA: "e2@3 ~ g#2@3 ~ f#2@4 b1@2 c2@2", BB: "[e2@2 b1@2 g#1 ~ e2@2 ~@6 e1@7 ~@11]/2",
})).s("gm_fretless_bass").gain(0.32)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  A B C B D E B F D E B F A B G B A H C B D E B F D E B F I B J B A B J K@3 L K@3 M B D E B F D E B F A B G B A H C K@3
  M K@3 M B D E B F D N H O I B J B A B G H D E H F D N B P A B J H A B G B D E B O D E B P Q@2
>`.pickRestart({
  A: "[g#3,b3,e4]@15 ~", B: "[f#3,b3,d#4]@15 ~", C: "[g#3,c#4,e4]@7 ~ [a3,c#4,e4]@7 ~", D: "[g#3,c#4,e4]@15 ~",
  E: "[a3,c#4,e4]@15 ~", F: "[g#3,b3,e4]@7 ~ [f#3,b3,d#4]@7 ~", G: "[g#3,c#4,e4]@8 [a3,c#4,e4]@7 ~", H: "[f#3,b3,d#4]",
  I: "[g#3,b3,e4]", J: "[g#3,c#4,e4]@7 ~ [a3,c#4,e4]@8",
  K: "[[f#3,b3,d#4]@5 [g#3,b3,e4] [f#3,b3,d#4]@3 [g#3,b3,e4] [f#3,b3,d#4]@2]/3", L: "[g#3,b3,e4]@8 [a3,c#4,e4]@7 ~",
  M: "[g#3,b3,e4]@7 ~ [a3,c#4,e4]@7 ~", N: "[a3,c#4,e4]", O: "[g#3,b3,e4]@8 [f#3,b3,d#4]@7 ~",
  P: "[g#3,b3,e4] [f#3,b3,d#4]", Q: "[[g#3,b3,e4]@9 ~@5 [g#3,b3,e4]@7 ~@11]/2",
})).s("gm_synth_strings_1").gain(0.1)

// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@83 A B C@2 D E F G H I J K L ~@2 M N@2 ~@9>".pickRestart({
  A: "~@10 g#5@4 b5 ~", B: "g#5@2 b5 ~ g#5@3 f#5 e5@2 c#5@2 g#5@2 b5@2",
  C: "[g#5@2 b5 ~ g#5@2 ~ f#5 c#5@3 ~ e5 ~ f#5@4 b5@2 f#5@2 b5@2 f#5 d#5 c#5 ~ e5@2 f#5 ~]/2",
  D: "f#5@2 a5@2 f#5@2 a5@2 g#5@2 f#5@2 e5@2 f#5 ~", E: "f#5@4 c#5@2 ~ b4 c#5@2 g#4@2 f#4@2 e4@2",
  F: "f#4 c#4!2 b3 c#4!2 d#4 e4", G: "f#4 ~ f#4 ~ g#4@2 ~@2 f#4@2 ~@2 g#4@2 f#5@2", H: "g#5 b5 g#5 b5 g#5 f#5 e5 f#5",
  I: "g#5", J: "~@14 b3 c#4", K: "e4 f#4 g#4 b4 g#4 f#4 e4 c#4 e4 c#4 e4 c#4 e4 f#4 a4 b4", L: "f#5 d#5 f#5 d#5 f#5@4",
  M: "~@14 g#5 a#5", N: "[b5@5 ~ g#5 a#5 b5@2 f#6@19 ~@3]/2",
})).s("gm_overdriven_guitar").gain(0.39).pan(0.4)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note("<~@36 A ~@3 A ~@19 A ~@3 A ~@45>".pickRestart({
  A: "~@15 [f#3,b3,d#4,f#4]", // B
})).s("gm_acoustic_guitar_steel").gain(0.16).pan(0.3)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_2 = note(`<
  A B C D E F B G E F B G A B C B A B C H E F B I@2 J B K A L C B A B C H M@2 N H M@2 N O E F B P@2 Q B G A R C B S B C
  H M@2 N H M@2 N O E F B G E F B T@2 B C B A B U V@2 F B P@2 F B G A B C W A B C H X F B Y E F B G Z@2
>`.pickRestart({
  A: "[g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~ [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~", // E
  B: "[b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4] ~", // B
  C: "[g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4] ~ [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4] ~", // C#m A
  D: "[b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4]!2", // B
  E: "[g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4] ~ [g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4] ~", // C#m
  F: "[a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4] ~ [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4] ~", // A
  G: "[g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~ [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4] ~", // E B
  H: "[b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 [b3,d#4,f#4]!8", // B
  I: "[[g#3,b3,e4]@4 [g#3,b3,e4]@2 [g#3,b3,e4] ~ [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4] ~ [g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4] ~ [g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4] ~, ~@15 [b3,d#4,f#4]@5 ~@12]/2", // E B C#m B
  J: "[a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4] ~", // A
  K: "[g#3,b3,e4]@4 [g#3,b3,e4]@2 [g#3,b3,e4] ~ [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4] ~", // E B
  L: "[b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4] ~", // B
  M: "[b3,d#4,f#4]@2 [b3,d#4,f#4] ~ [b3,e4,g#4]@2 [b3,e4,g#4] ~ [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4] ~", // B E B
  N: "[g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~ [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4] ~", // E A
  O: "[b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 [b3,d#4,f#4]!4", // B
  P: "[[g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~ [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4] ~ [g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4] ~ [g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4] ~, ~@15 [b3,d#4,f#4]@5 ~@12]/2", // E B C#m B
  Q: "[a3,c#4,e4]@4 [a3,c#4,e4] ~ [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [a3,c#4,e4] ~", // A
  R: "[b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4]!2 [b3,d#4,f#4]@2 [b3,d#4,f#4] ~", // B
  S: "[g#3,b3,e4]@4 [g#3,b3,e4] ~ [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~", // E
  T: "[[g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~ [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4]!3 b3 [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~ [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~, ~@15 [d#4,f#4]@5 ~@12]/2", // E B E D#m
  U: "[g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4] ~ [a3,c#4,e4]@4 [a3,c#4,e4]@2 [a3,c#4,e4] ~", // C#m A
  V: "[[b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4] ~ [b3,d#4,f#4]@2 [b3,d#4,f#4]!7 ~ [g#3,c#4,e4]@4 [g#3,c#4,e4] ~ [g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4] ~, ~@15 [b3,d#4,f#4]@5 ~@12]/2", // B C#m B
  W: "[b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4] ~ [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4]!4", // B
  X: "[g#3,c#4,e4]@4 [g#3,c#4,e4] ~ [g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4]@2 [g#3,c#4,e4] ~", // C#m
  Y: "[g#3,b3,e4]@4 [g#3,b3,e4]@2 [g#3,b3,e4] ~ [b3,d#4,f#4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4] ~", // E B
  Z: "[[g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4] ~ [g#3,b3,e4]@2 ~@6 [g#3,b3,e4]@7 ~@11]/2", // E
})).s("gm_acoustic_guitar_steel").gain(0.08).pan(0.9)

// other · piano · "A.PIANO 1"
const piano = note(`<
  ~@4 A B@14 C A B@7 A B@6 D ~@8 A B@6 C A B@6 E ~@8 A B@2 F A B@3 A B@6 E A B@3 A B@2 C A B@2 G A B@2 E A B@2 C A B@2 H
  ~@2
>`.pickRestart({
  A: "~@4 a#2 ~@3 a#2 ~@3 a#2 ~@3", B: "a#2 ~@3 a#2 ~@3 a#2 ~@3 a#2 ~@3", C: "a#2 ~@3 a#2 ~@3 a#2 ~@7",
  D: "a#2 ~@3 a#2 ~@11", E: "a#2 ~@15", F: "a#2 ~@3 a#2 ~@3 a#2 ~@3 a#2 ~ a#2 ~",
  G: "a#2 ~@3 a#2 ~@3 a#2 ~ a#2 ~ a#2 ~@3", H: "a#2 ~ a#2 ~ a#2 ~@3 a#2 ~ a#2 ~ a#2 ~@3",
})).s("gm_piano").gain(0.35).pan(0.4)

// other · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
  ~@4 A@15 B A@7 C A@7 B ~@8 A@3 C A@3 B A@7 ~@9 A@3 C A@3 C A@7 ~ A@7 B A@3 B A@3 ~ A@3 B A@3 D ~@2
>`.pickRestart({
  A: "~@2 a#2 ~@3 a#2 ~@3 a#2 ~@3 a#2 ~", B: "~@2 a#2 ~@3 a#2 ~@9", C: "~@2 a#2 ~@3 a#2 ~@3 a#2 ~@5", D: "~@6 a#2 ~@9",
})).s("gm_piano").gain(0.2).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  A@3 B A@11 C A@3 D A@7 D A@7 E F@7 G A@7 H A@7 D F@7 I A@7 H A@7 J A@7 H A@7 K A@3 H A@4 L ~
>`.pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x!4", C: "x ~@2 x!3 ~@2", D: "x ~@2 x!3 ~ x", E: "x!2 ~ x!3 ~ x", F: "x!2 ~@2 x!2 ~@2",
  G: "x!2 ~@2 x ~ x!2", H: "x ~@2 x!2 ~@2 x", I: "x!3 ~ x!2 ~ x", J: "x ~@2 x!2 ~ x ~", K: "x ~ x ~@4 x",
  L: "x ~@2 x ~@2 x!2",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A@31 B A@7 C A@7 D A@7 E A@3 F A@3 G A@7 H A@7 I A@3 J A@7 H A@3 K A@3 L A@3 M ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x!2 ~@6 x ~@3", C: "~ x!2 ~ x ~@3", D: "~ x ~@2", E: "~ x ~ x!4 ~", F: "~ x!3", G: "~@3 x",
  H: "~@2 x ~@2 x!2 ~", I: "~ x ~ x!5", J: "~@2 x ~@2 x!3", K: "~ x!3 ~ x!2 ~", L: "~@4 x ~@5 x!3 ~@3",
  M: "~ x!2 ~@2 x!2 ~",
})).gain(0.45)

// drums · low tom
const low_tom = s("lt").struct("<~@3 A ~@15 B ~@7 B ~@7 C ~@3 D ~@23 D ~@19 E ~@7 D ~@11 D ~@4 F ~>".pickRestart({
  A: "~@5 x!3", B: "~@5 x ~@2", C: "~@3 x!3 ~@2", D: "~@7 x", E: "~@5 x!2 ~", F: "~ x ~ x",
})).gain(0.35)

// drums · pedal hat
const pedal_hat = s("hh").struct("<A@3 B ~@31 C D@8 ~@15 C D@8 ~@42>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x", D: "x!4",
})).gain(0.35)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@3 A ~@32 B@3 C B@3 D ~@7 E ~@7 F B@3 C B@3 G ~@15 H ~@7 I ~@7 J ~@7 K L ~
>`.pickRestart({
  A: "~ x!7", B: "x ~ x!3 ~ x!2", C: "x ~ x!3 ~ x ~", D: "x ~ x ~ x ~ x!2", E: "~@5 x!3", F: "~ x ~ x!4 ~",
  G: "x ~ x ~ x!3 ~ x!3 ~@5", H: "~ x ~ x!2 ~@3", I: "~@5 x ~@2", J: "~ x!3 ~ x!2 ~", K: "~@7 x",
  L: "~@2 x ~@7 x!2 ~@4",
})).gain(0.3)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@36 [~ x ~@3 x ~@2]!8 ~@16 [~ x ~@3 x ~@2]!7 ~@43>").gain(0.15)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@15 A ~@7 A ~@15 A ~@7 A ~@15 A ~@3 A ~@3 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 B ~
>`.pickRestart({
  A: "x", B: "x ~@2 x ~@3 x",
})).gain(0.25)

stack(
  electric_guitar_muted, bass, synth_strings_1, overdriven_guitar, acoustic_guitar_steel, acoustic_guitar_steel_2,
  piano, piano_soft, kick, snare, low_tom, pedal_hat, mid_tom, mid_tom_soft, crash
)

More by Mike Oldfield