Strudelify
The Other Side of Life cover art

1986 · The Other Side Of Life

The Other Side of Life

The Moody Blues

KeyG majorTempo139 bpm
0:00/0:00
// The Other Side of Life — The Moody Blues
// 139.1 bpm, 12/8, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (2/8 at bar 1, 12/8 at bar 2) are rendered on a constant 12/8 grid of one bar per cycle
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 7 "Power Drum" synth drum (copy of ch 11 "Synth Drum 2" melodic tom)
// note: Full arrangement: all 158 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(139.1/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, A@4 for four bars: edit a riff to change every repeat.

// bass · electric bass finger · "Bass"
const bass = note(`<
  A@8 B@8 C@8 D@6 E F E F E G F H@4 F E G F I J F K I J L@3 M N F@2 M N F O P N F@2 M N F H@6 Q@3 R@3 E F E F E G F H@4
  F E G F I J F S I J L@3 E F E F E G F H@4 F E G F I J T S U V W@2 X Y Z T@2 AA Z T X Y Z T@2 AA Z T S@8 T@6
>`.pickRestart({
  A: "[~ e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3]/8",
  B: "[~ e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 d3@2 [e3,g5]@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 c3@2 d3@2 g2@2 g2@2 g2@2 b2@2 d3@2 e3@2 g2@2 g2@2 g2@2 b2@2 c3@2 d3@2 a2@2 a2@2 a2@2 e3@2 g3@2 a3@2 a2@2 a2@2 a2@2 e3@2 g3@2 a3@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 e2@2 e2@2 e2@2 b2@2 d3@2 e3@2 g2@2 g2@2 g2@2 b2@2 d3@2 e3@2 g2@2 g2@2 g2@2 b2@2 d3@2 e3]/8", // Em
  C: "[~@2 a2@4 a2@4 a2@4 e3@4 g3@4 a3@4 a2@4 a2@4 a2@4 e3@4 g3@4 a3@4 e2@4 e2@4 e2@4 b2@4 d3@4 e3@4 e2@4 e2@4 e2@4 b2@4 d3@4 e3@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@3 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@3]/8",
  D: "[~@2 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 d2@95 e2@4 e2@4 e2@4 b2@4 d3@4 e3@4 e2@4 e2@4 e2@4 b2@4 d3@4 e3@3]/6",
  E: "~ d2@4 d2@4 d2@4 b2@4 d3@4 e3@4 d2@4 d2@4 d2@4 b2@4 d3@4 e3@3",
  F: "~ e2@4 e2@4 e2@4 b2@4 d3@4 e3@4 e2@4 e2@4 e2@4 b2@4 d3@4 e3@3",
  G: "~ e2@4 e2@4 e2@4 b2@4 d3@4 e3@4 d2@4 d2@4 d2@4 b2@4 d3@4 e3@3",
  H: "~ a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@4 a2@3",
  I: "~ a1@4 a1@4 a1@4 e2@4 g2@4 a2@4 a1@4 a1@4 a1@4 e2@4 g2@4 a2@3",
  J: "~ b1@4 b1@4 b1@4 f#2@4 a2@4 b2@4 b1@4 b1@4 b1@4 f#2@4 a2@4 b2@3",
  K: "~ c2@4 c2@4 c2@4 g2@4 b2@4 c3@4 c2@4 c2@4 c2@4 g2@4 b2@4 c3@3",
  L: "[~ c2@96 e2@4 e2@4 e2@4 b2@4 d3@4 e3@4 e2@4 e2@4 e2@4 b2@4 d3@4 e3@3]/3",
  M: "~ g2@4 g2@4 g2@4 b2@4 d3@4 e3@4 g2@4 g2@4 g2@4 b2@4 d3@4 e3@3",
  N: "~ a2@4 a2@4 a2@4 e3@4 g3@4 a3@4 a2@4 a2@4 a2@4 e3@4 g3@4 a3@3",
  O: "~ e2@4 e2@4 e2@4 b2@4 d3@4 e3@4 e2@4 e2@4 e2@4 b2@4 c3@4 d3@3",
  P: "~ g2@4 g2@4 g2@4 b2@4 d3@4 e3@4 g2@4 g2@4 g2@4 b2@4 c3@4 d3@3",
  Q: "~ f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@4 f2@3",
  R: "[~ d2@96 e2@4 e2@4 e2@4 b2@4 d3@4 e3@4 e2@4 e2@4 e2@4 b2@4 d3@4 e3@3]/3", S: "c2!3 g2 b2 c3 c2!3 g2 b2 c3",
  T: "e2!3 b2 d3 e3 e2!3 b2 d3 e3", U: "a1!3 e2 g2 a2 a1!3 e2 g2 a2", V: "b1!3 f#2 a2 b2 b1!3 f#2 a2 b2", W: "c2/2",
  X: "e2!3 b2 d3 e3 e2!3 b2 c3 d3", Y: "g2!3 b2 d3 e3 g2!3 b2 c3 d3", Z: "a2!3 e3 g3 a3 a2!3 e3 g3 a3",
  AA: "g2!3 b2 d3 e3 g2!3 b2 d3 e3",
})).s("gm_electric_bass_finger").gain(0.36).pan(0.2)

// other · acoustic guitar steel · "Guitar2"
const acoustic_guitar_steel = note(`<
  ~ A@8 B@2 ~@41 C D E F G D E F G D E F G D E F H ~@58 I J K L M J N O P J Q R S J K L T ~@14
>`.pickRestart({
  A: "[~@23 e2@2 e2@2 ~@2 e2@2 ~@4 e2@2 e2@2 ~@2 e2@2 ~@4 e2@2 e2@2 ~@2 e2@2 ~@4 e2@2 e2@2 ~@2 e2@2 ~@4 e2@2 e2@2 ~@2 e2@2 ~@4 e2@2 e2@2 ~@2 e2@2 ~@4 e2@2 e2@2 ~@2 e2@2 ~@4 e2@2 e2@2 ~@2 e2@2 ~@4 e2@2 e2@2 ~@2 e2@2 ~@4 e2@2 e2@2 e2@2 e2@2 e2@2 ~@2 e2@2 e2@2 ~@2 e2@2 ~@4 e2@2 e2@2 e2@2 e2@2 e2@2 ~@2 e2@2 e2@2 ~@2 e2@2 ~@4 e2@2 e2@2 e2@2 e2@2 e2@2 ~@2 e2]/8",
  B: "[~ e2@2 ~@2 e2@2 ~@4 e2@2 e2@2 e2@2 e2@2 e2@2 ~@2 e2@2 e2@2 ~@2 e2@2 ~@4 e2@2 e2@2 ~@2 e2@2 ~@5]/2", C: "~@15 e2",
  D: "~ e2@4 ~@4 e2@4 ~@8 e2@4 e2@4 ~@4 e2@4 ~@8 g2@3", E: "~ g2@4 ~@4 g2@4 ~@8 g2@4 g2@4 ~@4 g2@4 ~@4 a2@4 a2@3",
  F: "~ a2@4 ~@4 a2@4 ~@8 a2@4 a2@4 ~@4 a2@4 ~@8 e2@3", G: "~ e2@4 ~@4 e2@4 ~@8 e2@4 e2@4 ~@4 e2@4 ~@8 e2@3",
  H: "~ e2@4 ~@4 e2@4 ~@8 e2@4 e2@4 ~@4 e2@4 ~@11", I: "~@11 e2", J: "e2 ~ e2 ~@2 e2!2 ~ e2 ~@2 g2",
  K: "g2 ~ g2 ~@2 g2!2 ~ g2 ~ a2!2", L: "a2 ~ a2 ~@2 a2!2 ~ a2 ~@2 e2", M: "e2 ~ e2 ~@2 e2!2 ~ e2 ~@2 e2",
  N: "g2@2 ~@2 g2@2 ~@2 b5@2 [g2,f#5]@2 [g2,d5]@3 ~ g2@2 ~@2 a2@2 a2@2", O: "a2 ~ a2 ~ b3 [a2,c4] a2 ~ [a2,b3] c4 ~ e2",
  P: "e2 ~ e2 ~@2 e2!2 ~ e2 ~@2 e2, g3 ~", Q: "g2 ~ [g2,g3] ~@2 g2!2 ~ g2 ~ a2!2, ~ a3 g3 d3",
  R: "a2 ~ a2 ~@2 a2!2 ~ a2 b3 c4 e2", S: "e2 ~ e2 ~@2 e2!2 ~ e2 ~@2 e2, b3 a3 g3 ~",
  T: "e2 ~ [e2,b4,e5] ~@2 e2 [e2,b4,e5] ~ e2 [b4,e5] ~@2", // E5
})).s("gm_acoustic_guitar_steel").gain(0.5).pan(0.7)

// chords · lead 2 sawtooth · "Synth String"
const lead_2_sawtooth = note(`<
  ~@18 A B C@3 B D@2 E@3 F G F H F I J@2 A K L@2 F G M@2 N O P Q N O R@3 ~@26 F G F H F S T@2 U K V@2 F G W@2 N O P Q N
  O X@3 G Y H F S T@2 U K L@2 F G T@2 N O Z AA AB AC AD@2 ~@30
>`.pickRestart({
  A: "~ [g4,c5,d5]@6 [g4,c5,d5]@6 [g4,c5,d5]@6 [g4,c5,d5]@4 ~", B: "~ [f#4,c5,d5]@4 ~@2 [f#4,b4]@4 [f#4,a4]@12 ~",
  C: "[~ [c4,d4,g4,a4]@6 ~@4 [c4,d4,g4,a4]@8 ~@4 [c4,f#4]@26 [g4,c5,d5]@6 [g4,c5,d5]@6 [g4,c5,d5]@6 [g4,c5,d5]@4 ~, ~@23 a4@6 ~@43]/3", // Csus2 Cdim Gsus4
  D: "[~ [c4,f4,a4]@6 ~@4 [c4,f4,a4]@8 ~@4 [c4,f4,a4]@8 ~@4 [f4,a4,c5]@8 ~@5]/2", // F
  E: "[~@2 [c4,f4,a4]@12 ~@8 [c4,f4,a4]@16 ~@8 [d4,f#4,a4]@71 ~@27]/3", F: "~ [b4,e5,g5]@12 ~@12 [g4,b4,e5]@12 ~@11",
  G: "~ [f#4,a4,e5]@8 [f#4,a4,e5]@12 [f#4,a4,e5]@16 ~@11", H: "~ [d4,f#4,a4]@12 ~@12 [d4,f#4,a4]@12 ~@11",
  I: "~ [f#4,a4,e5]@4 [f#4,a4,e5]@6 [f#4,a4,e5]@6 ~@7", // F#m7
  J: "[~ [b4,e5,g5]@12 ~@12 [f#4,a4,e5]@12 ~@8 [g4,b4,e5]@12 ~@12 [g4,b4,e5]@12 ~@15]/2", // Em F#m7 Em
  K: "~ [f#4,d5]@8 ~@4 [f#4,b4]@8 [f#4,a4]@16 ~@11", // D B5 F#m
  L: "[~ [c4,d4,g4,a4]@12 ~@8 [c4,d4,g4,a4]@16 ~@8 [c4,f#4,a4]@8 [f#4,c5,d5]@8 [f#4,c5,d5]@12 ~@4 [f#4,c5,d5]@4 ~@4 [f#4,c5,d5]@8 ~@3]/2", // Csus2 F#dim D7
  M: "[~ [b4,e5,g5]@12 ~@12 [f#4,a4,e5]@12 ~@8 [g4,b4,e5]@12 ~@16 [g4,b4,e5]@8 [g4,b4,e5]@15]/2", // Em F#m7 Em
  N: "~ [c4,e4,a4]@8 [c4,e4,a4]@16 [c4,e4,a4]@8 [c4,e4,a4]@15", // Am
  O: "~ [d4,f#4,b4]@8 [d4,f#4,b4]@16 [d4,f#4,b4]@8 [d4,f#4,b4]@15", // Bm
  P: "~ [g4,b4,e5]@8 [g4,b4,e5]@16 [g4,b4,e5]@8 [g4,b4,e5]@15", // Em
  Q: "~ d5@4 g4@4 d5@4 c5@4 g4@4 c5@4 b4@4 g4@4 b4@4 g4@4 e4@4 g4@3", R: "[~ [e4,g4,c5]@96 ~@47]/3",
  S: "~ [f#4,a4,e5]@8 [f#4,a4,e5]@12 [f#4,a4,e5]@12 ~@15", // F#m7
  T: "[~ [b4,e5,g5]@12 ~@12 [f#4,a4,e5]@12 ~@8 [g4,b4,e5]@12 ~@39]/2", // Em F#m7 Em
  U: "~ [g4,c5,d5]@12 [g4,c5,d5]@12 [g4,c5,d5]@12 [g4,c5,d5]@8 ~@3", // Gsus4
  V: "[~ [c4,d4,g4,a4]@12 ~@8 [c4,d4,g4,a4]@16 ~@8 [c4,f#4,a4]@8 [f#4,c5,d5]@8 [f#4,c5,d5]@12 ~@4 [f#4,c5,d5]@4 d5@4 [f#4,c5,d5]@8 b4@3]/2", // Csus2 F#dim D7
  W: "[~ [b4,e5,g5]@12 ~@12 [f#4,a4,e5]@12 ~@8 [g4,b4,e5]@8 ~@43]/2", // Em F#m7 Em
  X: "[~ [e4,g4,c5]@96 [b4,e5,g5]@12 ~@12 [g4,b4,e5]@12 ~@11]/3", // C Em
  Y: "~ [e5,g5]@12 ~@12 [g4,b4,e5]@12 ~@11, ~ b4@8 ~@39", Z: "[g4,b4,e5] [g4,b4,e5]@2 [g4,b4,e5] [g4,b4,e5]@2",
  AA: "d5 g4 d5 c5 g4 c5 b4 g4 b4 g4 e4 g4", AB: "[c4,e4,a4] [c4,e4,a4]@2 [c4,e4,a4] [c4,e4,a4]@2",
  AC: "[d4,f#4,b4] [d4,f#4,b4]@2 [d4,f#4,b4] [d4,f#4,b4]@2", AD: "[e4,g4,c5]/2",
})).s("gm_lead_2_sawtooth").gain(0.24).pan(0.6)

// chords · percussive organ · "Organ"
const percussive_organ = note(`<
  ~@61 A B C D@3 C A E F G@3 F H@2 I@3 J K J L J K M@3 N O P J K Q@3 ~@7 J K J L J K M@3 N O P R K Q@3 ~@37
>`.pickRestart({
  A: "~ [g3,b3,e4]@47", B: "~ g4@12 a4@8 [g4,b4]@16 a4@8 g4@3, ~ [b3,d4]@20 d4@27", C: "~ [c4,e4,a4]@47",
  D: "[~ [g3,b3,e4]@96 g4@12 a4@8 [g4,b4]@16 a4@8 g4@3, ~@97 d4@47, ~@97 b3@20 ~@27]/3", E: "~ [g4,c5,d5]@47",
  F: "~ [c5,d5]@8 c5@4 b4@8 a4@27, ~ f#4@47", G: "[~ [c4,d4,f#4,a4]@96 [g4,c5,d5]@47]/3",
  H: "[~ [c4,f4,a4]@68 [f4,a4,c5]@27]/2", I: "[~ [c4,f4,a4]@44 [d4,f#4,a4]@75 ~@24]/3",
  J: "~ [b4,e5,g5]@24 [g4,b4,e5]@23", K: "~ [f#4,a4,e5]@47", L: "~ [d4,f#4,a4]@47",
  M: "[~ [b4,e5,g5]@24 [f#4,a4,e5]@20 [g4,b4,e5]@52 [g4,c5,d5]@47]/3", N: "~ d5@8 c5@4 b4@8 a4@27, ~ f#4@47",
  O: "~ [c4,d4,g4,a4]@47", P: "~ [f#4,c5,d5]@47", Q: "[~ [b4,e5,g5]@24 [f#4,a4,e5]@20 [g4,b4,e5]@52 ~@47]/3",
  R: "[b4,e5,g5] [g4,e5], ~@6 b4@5 ~", // Em C
})).s("gm_percussive_organ").gain(0.2).pan(0.4)

// other · melodic tom · "Synth Drum 2"
const melodic_tom = note("<~@27 A@3 ~@48 B C ~@78>".pickRestart({
  A: "[~ c3@2 ~@2 d#3@2 ~@2 d#3@2 c3@2 c3@2 ~@2 d#3@2 ~@2 c3@2 b2@2 d3@2 d#3@2 d3@2 c3@2 c3@2 c3@2 d#3@2 d#3@2 d#3@2 f2@2 e2@2 d#2@2 ~@23]/3",
  B: "~ c3@4 ~@4 d#3@4 ~@4 d#3@4 c3@4 c3@4 ~@4 d#3@4 ~@4 c3@4 b2@3",
  C: "~ d3@4 d#3@4 d3@4 c3@4 c3@4 c3@4 d#3@4 d#3@4 d#3@4 f2@4 e2@4 d#2@3",
})).s("gm_melodic_tom").gain(0.64).pan(0)

// other · distortion guitar · "Guitar3"
const distortion_guitar = note(`<
  ~ A@8 B@8 C@8 D@2 ~@25 E F G H I F G H I F G H I F G H J K@5 L M@2 N ~@25 O P Q R S T U V W ~@15 X Y Z AA AB Y Z AA AB
  Y Z AA AB Y Z AA AC ~@14
>`.pickRestart({
  A: "[~@23 e2@2 e2@10 ~@12 e2@2 e2@10 ~@12 e2@2 e2@10 ~@12 e2@2 e2@10 ~@12 e2@2 e2@10 ~@12 e2@2 e2@10 ~@12 e2@2 e2@10 ~@12 e2]/8",
  B: "[~ e2@10 ~@12 e2@2 e2@10 ~@12 g2@2 g2@10 ~@12 a2@2 a2@10 ~@12 e2@2 e2@10 ~@12 e2@2 e2@10 ~@12 g2@2 g2@10 ~@12 a2@2 a2@10 ~@12 e2]/8",
  C: "[~ e2@10 ~@12 a2@2 a2@10 ~@12 a2@2 a2@10 ~@12 a2@2 a2@10 ~@12 a2@2 a2@10 ~@12 a2@2 a2@10 ~@12 a2@2 a2@10 ~@12 f2@2 f2@10 f2@2 f2@10 f2]/8",
  D: "[~ f2@10 f2@2 f2@10 f2@2 f2@10 f2@2 f2@10 ~]/2", E: "~@15 e2", F: "~ e2@20 ~@24 g2@3", G: "~ g2@20 ~@24 a2@3",
  H: "~ a2@20 ~@24 e2@3", I: "~ e2@20 ~@24 e2@3", J: "~ e2@20 ~@24 a2@3", K: "~ a2@20 ~@24 a2@3",
  L: "~ a2@20 ~@24 f2@3", M: "~ f2@20 f2@4 f2@20 f2@3", N: "~ f2@20 f2@4 f2@20 ~@3", O: "~@15 g4",
  P: "~ b4@16 a4@4 g4@4 b4@12 ~@4 a4@4 b4@3", Q: "~ d5@8 d5@8 d5@4 b4@4 d5@16 ~@4 b4@3",
  R: "~ g5@6 ~@2 f#5@6 ~@2 a4@6 ~@2 g4@6 ~@2 e5@6 ~@2 d5@6 ~", S: "~ f#4@36 ~@8 g5@3",
  T: "~ b5@16 a5@4 g5@4 a5@7 b5@8 a5@4 b5@4", U: "d6@2 d6@2 d6 b5 d6@3 ~@2 d5", V: "g5@2 g5 f#5@2 f#5 e5@2 e5 d5@2 d5",
  W: "e5", X: "~@11 e2", Y: "e2@5 ~@6 g2", Z: "g2@5 ~@6 a2", AA: "a2@5 ~@6 e2", AB: "e2@5 ~@6 e2", AC: "e2@5 ~@7",
})).s("gm_distortion_guitar").gain(0.2).pan(0.7)

// other · koto · "FX2"
const koto = note("<~@13 [~@15 e5@2 b4@2 d5@4 ~] ~@144>").s("gm_koto").gain(0.37).pan(0.1)

// other · epiano2 · "Piano"
const epiano2 = note("<~@48 A B ~@49 A B ~@22 C D ~@33>".pickRestart({
  A: "~ d6@4 g5@4 d6@4 c6@4 g5@4 c6@4 b5@4 g5@4 b5@4 g5@4 e5@4 g5@3", B: "~ a5@8 ~@39",
  C: "d6 g5 d6 c6 g5 c6 b5 g5 b5 g5 e5 g5", D: "a5 ~@5",
})).s("gm_epiano2").gain(0.31).pan(0.2)

// other · lead 2 sawtooth · "FX3"
const lead_2_sawtooth_2 = note("<~@51 A B ~@49 A B ~@22 C D ~@30>".pickRestart({
  A: "~@9 d4@4 e4@4 g4@4 c5@4 d5@4 e5@4 g5@4 c6@4 d6@4 e6@3",
  B: "~ g6@4 c7@4 g6@4 e6@4 d6@4 c6@4 g5@4 e5@4 d5@4 c5@4 g4@4 e4@3", C: "~@2 d4 e4 g4 c5 d5 e5 g5 c6 d6 e6",
  D: "g6 c7 g6 e6 d6 c6 g5 e5 d5 c5 g4 e4",
})).s("gm_lead_2_sawtooth").gain(0.35).pan(0.7)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note("<~@132 A@4 B C D E B C D E F G H I J K L M N ~@5>".pickRestart({
  A: "[b3@2 a3 e3, g3]/4", B: "g3!4 a#3 b3 a#3 a3 g3!2 a3 b3, b3@5 ~@7", C: "a#3 a3 g3!2 a3 a#3 d4 b3 a3 g3 a3 b3",
  D: "~ b3 c4 e4 c4 b3 a3 b3 c4 e4 c4 b3, a3 ~", E: "g3 a3 b3 e4 b3 a3 g3 a3 b3 e4 b3 a3, e3",
  F: "a3 c4 d4 e4 d4 c4 b3 c4 d4 e4 d4 c4", G: "g3 c4 d4 e4 g4 c5 d5 e5 d5 c5 g4 e4",
  H: "b3 g3 c4 d4 e4 g4 d5 e5 g5 c6 e6 c7", I: "g6 e6 c6 g5 e5 d5 g4 e4 b3 c4 e4 g4",
  J: "b4 d5 e5 d5 b4 g4 e4 c4 g3 c4 e4 g4", K: "b4 c5 g4 e4 d4 c4 g3 c4 d4 e4 g4 a#4",
  L: "c5 g4 e4 c4 g#3 g3 c4 e4 g4 e4 d4 c4", M: "a3 g3 a3 c4 d4 e4 g4 e4 d4 c4 a3 g3", N: "g3 ~",
})).s("gm_string_ensemble_1").gain(0.14)

// chords · string ensemble 1 · "Strings" · soft notes
const string_ensemble_1_soft = note("<~@152 A@6>".pickRestart({
  A: "[~@12 g3 a3 b3 a#3 a3 g3!2 a3 b3 a#3 a3 g3 g3 a3 b3 a#3 a3 g3!2 a3 b3 a#3 a3 g3 g3 a3 b3 a#3 a3 g3!2 a3 b3 a#3 a3 g3 g3 a3 b3 a#3 a3 g3!2 a3 b3 a#3 a3 g3 g3 a3 b3 a#3 a3 g3!2 a3 b3 a#3 a3 g3, ~ [b2,f#4]@11]/6", // B5
})).s("gm_string_ensemble_1").gain(0.09)

// drums · kick
const kick = s("bd").struct(`<
  A@26 B ~@2 B@22 C ~ B@25 ~@2 B@22 C ~ B@7 D B@3 E B@3 F G B G@4 H I J K G@13 E G@14
>`.pickRestart({
  A: "~ x ~@11 x ~@9 x", B: "~ x ~@23 x ~@19 x ~@2", C: "~ x ~@46",
  D: "~ x ~@22 x!2 ~@2 x!2 ~@2 x!2 ~@3 x ~@3 x ~@2 x!2 ~@2", E: "x ~@5 x ~@2 x!3", F: "x ~@5 x ~@3 x!2",
  G: "x ~@5 x ~@4 x", H: "x", I: "x!12", J: "x ~@2 x ~@2 x ~@2 x ~ x", K: "x ~@2 x ~@2 x ~@4 x",
})).gain(0.6)

// drums · snare
const snare = s("sd").struct(`<
  ~@2 A@22 B A B ~@2 B@11 C B@10 ~ D B@19 E B@5 ~@2 B@7 F B@3 G B@10 ~ D B@3 H B@3 I B@3 I B J B I B@2 J@4 ~ K J@15 I
  ~@14
>`.pickRestart({
  A: "~@7 x ~@11 x ~@4", B: "~@13 x ~@23 x ~@10", C: "~@13 x ~@23 x ~@4 x ~@2 x ~@2",
  D: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2", E: "~@5 x ~@7 x ~@15 x ~@7 x ~@10",
  F: "~@13 x ~@23 x ~@3 x ~@3 x ~@2", G: "~@13 x ~@15 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2",
  H: "~@13 x ~@11 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3", I: "~@3 x ~@5 x!3", J: "~ x ~ x", K: "x!12",
})).gain(0.6)

// drums · hihat
const hihat = s("hh").struct(`<
  A@17 B A@9 ~@2 A C@21 D ~ C@11 E C@3 F C@9 ~@2 C@15 G C@6 D ~ C@12 H@10 I ~ H@3 J H@3 J H@3 J H@3 J H@14
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@3 x ~ x ~ x",
  C: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2", D: "~ x ~@46",
  E: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@7 x ~@7 x ~@2",
  F: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@7 x ~@3 x ~@3 x ~@2",
  G: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@11 x ~@2", H: "x!12", I: "x", J: "x!10 ~ x",
})).gain(0.6)

// drums · low tom
const low_tom = s("lt").struct("<~@87 [~@15 x] ~@70>").gain(0.6)

// drums · mid tom
const mid_tom = s("mt").struct("<~@107 [~@11 x] ~@50>").gain(0.6)

// drums · open hat
const open_hat = s("oh").struct("<~@17 A ~@46 B ~@3 C ~@26 D ~@35 E ~@3 E ~@3 E ~@3 E ~@14>".pickRestart({
  A: "~@17 x ~@6", B: "~@33 x ~@7 x ~@6", C: "~@11 x ~@4", D: "~@37 x ~@3 x ~@6", E: "~@5 x",
})).gain(0.6)

// drums · crash
const crash = s("cr").struct(`<
  ~ A B@2 ~@2 B ~@11 B ~ B ~ C A C ~@4 C ~@3 C ~@3 C ~@3 C ~@3 C@3 ~ C@3 ~ C ~@15 C ~ C ~ C ~ C ~@4 C ~@3 C ~@3 C ~@3 C
// … 22 more lines

More by The Moody Blues