Strudelify
Do Ya cover art

A New World Record

Do Ya

Electric Light Orchestra

KeyD majorTempo126 bpm
0:00/0:00
// Do Ya — Electric Light Orchestra
// 126 bpm, 4/4, key D 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/4 at bar 1, 2/4 at bar 25, 4/4 at bar 25) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 117 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(126/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, A@4 for four bars: edit a riff to change every repeat.

// chords · distortion guitar · "Guitar"
const distortion_guitar = note(`<
  A B C@6 D ~@2 E F G H I J@2 K@6 ~@2 L@7 M N@2 O P@2 Q R@6 ~ S T@8 ~@3 U@6 ~@2 V@6 W X Y@2 Z ~@2 AA@8 AB ~ AC AD AE
  AF@6 AG@2 AH@2 AI@3 ~@11
>`.pickRestart({
  A: "~@25 [a3,d4,f#4]@7", B: "~@9 [e3,a3,c#4]@4 [e3,a3,c#4]@4 ~@5 [d3,g3,b3]@10",
  C: "[~@14 [c4,e4,g4]@12 ~ [a3,d4,f#4]@8 ~@8 [e3,a3,c#4]@4 [e3,a3,c#4]@4 ~@5 [d3,g3,b3]@12 ~@25 [a3,d4,f#4]@8 ~@8 [e3,a3,c#4]@4 ~ [e3,a3,c#4]@4 ~@4 [d3,g3,b3]@12 ~@13 [c4,e4,g4]@12 [a3,d4,f#4]@8 ~@8 [e3,a3,c#4]@4 ~ [e3,a3,c#4]@4 ~@8]/6", // C D A G D A G C …
  D: "[d3,g3,b3] ~@3", E: "f4", F: "~@4 a3@4 [a3,d4]@4 f#4@4 [a3,c#4,e4]@6 [a3,c#4,f#4]@5 [a3,c#4,f#4]@5",
  G: "e4@2 d4@2 d4@2 d4@2 [g3,b3,d4]@8 ~ d4@4 e4@4 [a3,c#4,e4]@7, [g3,b3]@8 ~@9 [g3,b3]@8 ~@7", // G A G
  H: "~@6 [a3,d4]@5 ~ [a3,d4,f#4]@5 f#4@4 e4@4 e4@4 e4@3, ~@17 [a3,c#4]@8 [a3,c#4]@7", // D5 D A
  I: "~ e4@4 d4@4 [g3,b3,d4]@8 d4@4 b3@4 [c#3,e3,a3]@7, ~ [g3,b3]@8 ~@8 g3@8 ~@7", // G A G
  J: "[~@3 a3@2 [a3,d4,f#4]@4 f#4@2 e4@2 e4@2 d4@2 d4!4 [g3,b3,d4]@4 ~@2 b3@2 [c#3,e3,a3]@3, ~@9 [a3,c#4]@4 a3@4 [g3,b3]@4 ~@4 d3@4 ~@3]/2", // D G A G
  K: "[~@10 [a3,d4,f#4]@4 [a3,d4,f#4]@4 ~ [a3,c#4,e4]@8 [a3,e4]@4 d4@4 e4@4 d4@4 d4@4 d4@4 d4@4 [g3,b3,d4]@8 [a3,e4]@4 ~@8 [a3,d4,f#4]@4 [a3,d4,f#4]@4 f#4@4 e4@4 e4@4 e4@4 e4@4 ~ d4@4 [g3,b3,d4]@8 ~@4 d4@4 d4@4 e4@4 ~@8 [a3,d4,f#4]@4 [a3,d4,f#4]@4 f#4@4 e4@4 e4@4 d4@4 ~@4 [g3,b3,e4]@8 [g3,b3,d4]@4 [g3,b3,d4]@8 ~@4, ~@35 [g3,b3]@8 ~@4 [g3,b3]@8 ~@28 [a3,c#4]@8 [a3,c#4]@8 [g3,b3]@8 ~@9 [g3,b3]@8 a3@8 ~@16 [a3,c#4]@8 a3@8 ~@28]/6", // D A A5 G A5 D G D …
  L: "[~@22 [b3,d4,g4]@4 f#4@4 d4@4 [b3,d4,g4]@4 f#4@4 d4@4 [b3,d4,g4]@4 f#4@4 [f#3,a3,d4]@8 [f#3,a3,d4]@8 [e3,a3,c#4]@8 [e3,a3,c#4]@8 [d3,g3,b3]@8 [d3,g3,b3]@8 [d3,g3,b3]@8 [c#3,e3,a3]@8 [a3,f#4,a4]@4 ~ [a3,f#4,a4]@4 [a3,f#4,a4]@4 [a3,f#4,a4]@4 a4@4 a4@8 [b3,g4,b4]@12 [b3,g4]@8 [g3,b3,d4]@4 [a3,c#4,e4]@12 [a3,f#4,a4]@4 [a3,f#4,a4]@4 [a3,f#4,a4]@4 [a3,f#4,a4]@4 [d4,a4]@4 [c#4,a4]@8 [b3,a4]@13]/7", // G D A G A D Em G …
  M: "~ [g3,b3,d4]!2 [a3,c#4,e4]@3 [a3,f#4,a4]!2", // G A D
  N: "[[a3,f#4,a4]!2 [d4,a4] [c#4,a4]@2 [b3,g4,b4]@4 [g3,b3,d4]!2 [a3,c#4,e4]@3 [a3,f#4,a4]!2]/2", // D D5 F#m Em G A D
  O: "[a3,f#4,a4]!2 [d4,a4] [c#4,a4]@2 [b3,g4,b4]@3", // D D5 F#m Em
  P: "[[b3,g4,b4]@14 ~@2 d4@2 e4@10 ~ [a3,d4,f#4]@8 [a3,d4,f#4]@4 [a3,c#4,e4]@8 [a3,c#4,e4]@4 [a3,c#4,e4]@4 [g3,b3,e4]@4 [g3,b3,d4]@3]/2", // Em D A Em G
  Q: "~ [g3,b3,d4]@8 [g3,b3,d4]@8 c#4@4 a3@4 ~@4 [a3,d4,f#4]@3", // G D
  R: "[~ [a3,d4,f#4]@4 [a3,c#4,e4]@12 [a3,c#4,e4]@4 [a3,c#4,e4]@4 e4@4 d4@2 d4@2 d4@4 d4@4 d4@4 [g3,b3,d4]@8 ~ [a3,c#4]@8 [a3,d4,f#4]@4 [a3,d4,f#4]@4 [a3,d4,f#4]@4 [a3,c#4,f#4]@4 [a3,c#4,e4]@4 ~@4 [a3,c#4,e4]@2 [a3,c#4,e4]@2 [g3,b3,e4]@4 [g3,b3,d4]@4 [g3,b3,d4]@16 d4@2 [a3,c#4,e4]@10 [a3,d4,f#4]@8 [a3,d4,f#4]@4 f#4@4 e4@4 e4@4 d4@4 [g3,b3,e4]@4 [g3,b3,d4]@8 [g3,b3,d4]@16 ~@10, ~@25 [g3,b3]@8 [g3,b3]@8 ~@97 [a3,c#4]@8 a3@8 ~@38]/6", // D A G A D F#m A Em …
  S: "~@27 [b3,d4,g4]@4 f#4", // G
  T: "[~@3 d4@4 b3@4 f#4@4 d4@4 [b3,d4,g4]@4 f#4@4 [f#3,a3,d4]@8 [f#3,a3,d4]@8 [e3,a3,c#4]@8 ~ [e3,a3,c#4]@8 [d3,g3,b3]@32 f4@32 [a4,d5,f#5]@32 [a4,c5,f5]@32 ~ [b4,d5,g5]@32 [a4,d5,f#5]@31 ~@4, ~@7 [d4,g4]@8 ~@241]/8", // G D A G D F G D …
  U: "[~@26 [a4,f#5]@31 ~ [a4,c5,f5]@31 [b4,d5,g5]@31 ~ [a4,d5]@31 ~@40, ~@121 f#5@63 ~@8]/6", // D F G D5
  V: "[~@22 [a4,f#5]@31 ~ [a4,c5,f5]@31 [b4,d5,g5]@31 ~ [a4,d5,f#5]@31 [c3,c4,g4]@32 [a3,d4,f#4]@8 ~@4]/6", // D F G D C5 D
  W: "~ [e3,a3,c#4]!2 ~ [d3,g3,b3]@3 ~", X: "~@5 [a3,d4,f#4]@2 ~",
  Y: "[~@5 [e3,a3,c#4]@4 [e3,a3,c#4]@4 ~@4 [d3,g3,b3]@12 [e4,g4,c5]@24 [a3,d4,f#4]@8 ~@3]/2", // A G C D
  Z: "~@5 [e3,a3,c#4]@4 [e3,a3,c#4]@4 ~@4 [d3,g3,b3]@12 ~@3", // A G
  AA: "[~@22 [b3,d4,g4]@4 f#4@4 d4@4 [b3,d4,g4]@4 f#4@4 d4@4 [b3,d4,g4]@4 f#4@4 [a3,f#4,a4]@4 [a3,f#4,a4]@4 [a3,f#4,a4]@4 [a3,f#4,a4]@4 [d4,a4]@4 [c#4,a4]@8 [b3,g4,b4]@12 ~ [b3,g4,b4]@8 [g3,b3,d4]@4 [a3,c#4,e4]@12 [a3,f#4,a4]@4 [a3,f#4,a4]@4 [a3,f#4,a4]@4 [a3,f#4,a4]@4 [d4,a4]@4 [c#4,a4]@8 a4@4 a4@10 ~@2 [g3,b3,d4]@4 [g3,b3,d4]@4 [a3,c#4,e4]@12 [a3,f#4,a4]@4 [a3,f#4,a4]@4 [a3,f#4,a4]@4 [a3,f#4,a4]@4 [d4,a4]@4 [c#4,a4]@8 [b3,g4,b4]@16 ~ [g3,b3,d4]@4 [g3,b3,d4]@4 [a3,c#4,e4]@12 [a3,f#4,a4]@4 [a3,f#4,a4]@4, ~@147 b3@16 ~@93]/8", // G D D5 F#m Em G A D …
  AB: "[a3,f#4,a4]!2 [d4,a4] [c#4,a4]@2 ~@3", AC: "~@24 f#4@4 ~ f#4@3, ~@3 [a3,d4]",
  AD: "~ f#4@4 f#4@4 e4@5 e4@5 e4@5 ~ e4@2 d4@2 d4@3, ~ [a3,d4]@8 [a3,c#4]@16 [g3,b3]@7", // D5 A G
  AE: "~ d4@4 d4@4 [g3,b3,d4]@8 [a3,c#4]@8 [a3,d4]@7, ~ [g3,b3]@8 ~@23", // G A D5 G
  AF: "[~ f#4@2 f#4@2 f#4@4 f#4@4 ~ e4@4 e4@2 e4@2 e4@2 e4@2 e4@4 d4@4 [g3,b3,d4]@8 [g3,b3]@8 [a3,c#4]@12 [a3,d4,f#4]@4 [a3,d4,f#4]@4 [a3,d4,f#4]@4 [a3,c#4,e4]@4 [a3,c#4,e4]@8 [a3,c#4,e4]@4 e4@2 d4@2 d4@4 ~ d4@2 e4@6 [g3,b3]@8 [a3,c#4]@8 ~@4 f#4@2 f#4@2 f#4@2 f#4@2 f#4@2 f#4@2 f#4@2 e4@6 ~@4 e4@2 e4@2 [g3,b3,d4]@6 d4@2 [g3,b3,d4]@8 [g3,b3]@8 [a3,c#4]@8 ~ [a3,f#4,a4]@4, ~ [a3,d4]@8 [a3,c#4]@8 ~ [a3,c#4]@8 [g3,b3]@8 ~@56 [g3,b3]@8 ~ [g3,b3]@8 ~@16 [a3,d4]@8 [a3,d4]@8 [a3,c#4]@8 [a3,c#4]@8 ~@37]/6", // G A D A G A G A …
  AG: "[[a3,f#4,a4]@2 [a3,f#4,a4]@2 [a3,f#4,a4]@2 [e4,a4]@2 [e4,a4]@4 [d4,g4]@2 [d4,g4]@5 d4 [b3,d4]@2 [b3,d4,g4]@4 [a3,c#4,f#4]@4 [a3,f#4,a4]@2, ~@12 b4@7 ~@13]/2", // D A5 G5 Bm G F#m D
  AH: "[[a3,f#4,a4]@4 [a3,f#4,a4]@4 [a3,f#4,a4]@4 ~ [e4,a4]@4 [e4,a4]@8 [d4,g4,b4]@16 [g3,b3,d4]@4 [g3,b3,d4]@4 [a3,c#4,e4]@12 [a3,f#4,a4]@3]/2", // D A5 G A D
  AI: "[~ [a3,f#4,a4]@4 [a3,f#4,a4]@4 [a3,f#4,a4]@4 [e4,a4]@4 [e4,a4]@8 [d4,g4,b4]@16 ~ [b3,d4]@4 [b3,d4,g4]@8 [a3,c#4,f#4]@8 [a3,f#4,a4]@4 [a3,f#4,a4]@4 [a3,f#4,a4]@4 [a3,f#4,a4]@4 [e4,a4]@4 [e4,a4]@8 d4@4 ~@2]/3", // D A5 G Bm G F#m D A5
})).s("gm_distortion_guitar").gain(0.4)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@4 A@5 B@3 C D E F G H G I@5 J@2 K L@7 M N M N O P O P Q R Q S@5 B T U V@3 W X@5 V Y Z AA@5 V Y AB AC@2 AD@2 AE J
  AF@2 AG@6 N AH ~ AI O P O R Q AJ@3 AK@8 AL@2 AM AN AO AP AQ@4
>`.pickRestart({
  A: "[~@29 d2@8 ~@8 a2@4 ~ a2@4 ~@4 g2@12 ~@25 d2@8 ~@8 a2@4 ~ a2@4 ~@4 g2@8 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4]/5",
  B: "g2!8", C: "d3!2 a2!2", D: "g2@8 g2@8 ~ g2@8 a2@7", E: "~ d3@8 d3@8 a2@8 a2@7", F: "~ g2@8 g2@8 g2@8 a2@7",
  G: "~ d3@4 d3@4 a2@4 a2@3", H: "~ g2@4 g2@4 g2@4 a2@3",
  I: "[~@3 g2@8 g2@8 g2@8 a2@8 d3@8 d3@8 a2@8 a2@8 g2@8 ~ g2@8 g2@8 a2@8 d3@8 d3@8 a2@8 a2@8 g2@8 g2@4 g2@4 g2@4 g2@4 ~ g2@3]/5",
  J: "~ g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@3", K: "~ g2@4 g2@4 g2@4 g2@4 ~ g2@4 g2@10",
  L: "[~@2 g2@12 g2@8 d3@8 d3@8 a2@4 a2@4 ~@4 a2@4 g2@8 g2@8 g2@4 g2@4 a2@8 d3@8 ~ d3@8 a2@4 a2@4 ~@4 g2@4 g2@8 g2@8 g2@4 g2@4 a2@4 a2@4 d3@8 d3@8 a2@4 a2@4 ~@4 g2@4 g2@8 g2@8 g2@4 g2@4 a2@4 a2@4 ~ d3@8]/7",
  M: "d3@2 a2!2 ~ g2 g2@2", N: "g2@2 g2!2 a2!2 d3@2", O: "~ d3@8 a2@8 a2@8 g2@7", P: "~ g2@8 g2@4 g2@4 a2@4 a2@4 d3@7",
  Q: "~ d3@4 a2@4 a2@4 g2@3", R: "~ g2@4 g2@2 g2@2 a2@2 a2@2 d3@3",
  S: "[~@2 g2@8 g2@4 g2@4 ~ g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@12 g2@12 g2@8 d3@8 d3@8 a2@4 ~ a2@4 ~@4 a2@4 g2@4]/5",
  T: "g2!7 d3", U: "d3!8", V: "~ d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@3", W: "d3!7 a2",
  X: "[a2@4 a2@4 a2@4 a2@4 a2@4 a2@3 a2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@3 g2@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@3 d3@4 d3@4 d3@3]/5",
  Y: "~ d3@4 d3@4 d3@4 d3@4 d3@4 d3@3 d3@4 d3@4", Z: "d3!6 a2!2",
  AA: "[a2@4 a2@4 a2@4 a2@4 a2@3 a2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@3 g2@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@4 d3@3 d3@4 d3@4 d3@3]/5",
  AB: "d3!5 d2@2 ~", AC: "[~ a2!2 ~ g2@3 g2@2 g2!4 d2@2 ~]/2",
  AD: "[~@5 a2@4 a2@4 ~@4 g2@12 g2@8 g2@4 g2@4 g2@4 g2@4 d2@8 ~@3]/2", AE: "~@5 a2@4 a2@4 ~@4 g2@8 g2@4 g2@3",
  AF: "[~ g2@2 g2@2 g2@2 g2@2 g2@2 g2@2 g2@2 g2@2 g2@2 g2@2 g2@2 g2@2 g2@2 g2@5]/2",
  AG: "[~@2 g2@12 g2@8 d3@8 d3@8 a2@4 a2@4 ~@4 g2@4 g2@8 ~ g2@8 g2@4 g2@4 a2@4 a2@4 d3@8 d3@8 a2@4 a2@4 ~@4 g2@4 g2@8 g2@8 g2@4 g2@4 a2@4 a2@4 d3@8 d3@8 a2@4 a2@4 ~@4 g2@4 g2@8 ~]/6",
  AH: "d3@2 a2!2 ~ g2 ~@2", AI: "~@3 d3",
  AJ: "[~@3 g2@8 g2@4 g2@4 a2@4 a2@4 d3@8 d3@8 a2@8 a2@8 a2@8 g2@8 g2@4 g2@4 a2@4 a2@4 d3@5]/3",
  AK: "[~@4 d3@8 a2@4 a2@4 ~@4 g2@4 g2@8 g2@8 g2@4 g2@4 a2@4 a2@4 d3@8 d3@8 ~ a2@4 a2@4 ~@4 g2@4 g2@8 g2@8 g2@4 g2@4 a2@4 a2@4 d3@8 d3@8 a2@4 a2@4 ~@4 g2@4 ~ g2@8 g2@8 g2@4 g2@4 a2@4 a2@4 d3@8 d3@8 a2@4 a2@4 ~@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@2]/8",
  AL: "[~@3 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@4 g2@33]/2", AM: "d2", AN: "f2", AO: "~ g2@31", AP: "~ d#2@31",
  AQ: "[~@2 f2@32 g2@65 ~@29]/4",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@7 A B C@3 ~@12 D E F@2 ~@9 G@2 H I J@5 ~ K@2 L@8 M@8 N@8 O P Q@2 R S@5 T@2 U@2 V W ~ X Y Z AA@6 AB@2 AC@2 AD@6 AE AF
  AG AH AI@4
>`.pickRestart({
  A: "~@7 g4", B: "~@2 f#4 ~ g4 ~ f#4 ~ g4 ~ f#4 ~ g4 ~ f#4 ~", C: "g4 ~ f#4 ~ g4 ~ f#4 ~ g4 ~ f#4 ~ g4 ~ f#4 ~",
  D: "~@21 [b4,d5]@3 ~ [b4,d5]@3 ~ [b4,d5]@3", // Bm
  E: "~ [b4,d5]@3 ~ [b4,d5]@3 ~ [b4,d5]@3 ~ [b4,d5]@3 ~ [b4,d5]@3 ~ [b4,d5]@3 ~ [b4,d5]@3 ~ [b4,d5]@3", // Bm
  F: "[~ [b4,d5]@3 ~ [b4,d5]@3 ~ [b4,d5]@3 ~ [b4,d5]@3 ~@2 [b4,d5]@3 ~ [b4,d5,g5]@4 f#5@4 d5@4 [b4,d5,g5]@4 f#5@4 d5@4 [b4,d5,g5]@4 f#5@4 ~@10]/2", // Bm G
  G: "[~@29 a4@8 a4@4 a4@8 a4@4 a4@4 g4@4 g4@3]/2", H: "~ g4@8 ~@20 [a4,d5]@3",
  I: "~ [a4,d5]@4 [a4,c#5]@12 [a4,c#5]@4 [a4,c#5]@4 [g4,b4]@7", // D5 A G
  J: "[~ [g4,b4]@12 [g4,b4]@8 ~ a4@4 ~@4 [a4,d5,f#5]@4 [a4,d5,f#5]@4 [a4,d5,f#5]@4 [a4,c#5,f#5]@4 [a4,c#5,e5]@8 [a4,c#5,e5]@2 [a4,c#5,e5]@2 [g4,b4,e5]@4 [g4,b4,d5]@4 [g4,b4,d5]@16 d5@2 [a4,c#5,e5]@10 [f#5,a5,d6]@8 [f#5,a5,d6]@4 f#5@4 e6@4 e6@4 d6@4 [e5,g5,b5]@4 [d5,g5,b5]@8 [d5,g5,b5]@12 ~@14, ~@53 [a5,c#6]@4 a5@4 ~@19]/5", // G D F#m A Em G A D …
  K: "[~@27 [b4,g5]@4 f#5@4 d5@4 [b4,g5]@4 f#5@4 d5@4 [b4,d5,g5]@4 f#5@4 ~@5, ~@39 d5@8 ~@17]/2", // Em G
  L: "[~@28 b4@32 c5@16 b4@8 a4@4 g4@4 [d4,f#4,a4]@32 [f4,a4,c5]@32 ~ [g4,b4,d5]@32 [a4,d5,f#5]@31 ~@8 d5@4 d5@4 d5@4 d5@4 d5@4 b4@4 [e4,a4,d5]@4, ~@28 [d4,g4]@56 ~@136 [f#4,a4]@31 ~@5]/8", // D F G D Dsus2 G5 F#m
  M: "[~@4 d5@4 b4@4 c#5@8 b4@3 a4@4 c5@8 ~@4 c5@4 c5@4 c5@4 c5@4 c5@12 b4@4 b4@12 a4@3 g4@4 d6@2 c#6@2 d6@2 a5@2 e5@2 d5@2 a5@2 c6@2 d6@2 c#6@2 d6@2 a5@2 e5@2 d5@2 a5@2 c6@2 d6@2 c#6@2 d6@2 c6@2 e5@2 d5@2 a5@2 c6@2 d6@2 c#6@2 d6@2 c6@2 ~ d5@2 a5@2 c6@2 d6@2 c#6@2 d6@2 b5@2 e5@2 ~@2 b5@2 c#6@2 d6@2 c#6@2 d6@2 b5@2 e5@2 d5@4 c6@2 d6@2 c#6@2 d6@2 a5@2 e5@2 ~@2 a5@2 c#6@2 d6@2 c#6@2 d6@2 a5@2 ~@3 a5@2 c#6@2 d6@2 ~@2 d5@4 d5@4 d5@4 d5@4 b4@4 d5@4 b4@4 [e4,a4,d5]@8, ~@27 [d4,g4]@27 ~ [d4,g4]@27 ~@8 [f#4,a4]@31 ~ [f4,a4,c5]@31 [g4,b4]@31 ~ [a4,f#5]@31 [f#4,a4]@31 ~@9, ~@146 e5@2 ~@5 d5@10 d5@16 ~@6 d5@10 d5@14 e5@2 ~@45, ~@105 d5@3 ~@20]/8", // Dsus2 G5 F#m F G D F#m
  N: "[b4@4 c#5@8 b4@7 a4@4 c5@8 c5@4 ~@8 c5@8 c5@8 b4@8 b4@12 a4@3 g4@4 d6@2 c#6@2 d6@2 a5@2 e5@2 d5@2 a5@2 c6@2 d6@2 c#6@2 d6@2 a5@2 e5@2 d5@2 a5@2 c6@2 d6@2 c#6@2 d6@2 c6@2 e5@2 d5@2 a5@2 c6@2 d6@2 c#6@2 d6@2 c6@2 ~ d5@2 a5@2 c6@2 d6@2 c#6@2 d6@2 b5@2 e5@2 ~@2 b5@2 c#6@2 d6@2 c#6@2 d6@2 b5@2 e5@2 d5@4 c6@2 d6@2 c#6@2 d6@2 a5@2 e5@2 ~@2 a5@2 c#6@2 d6@2 c#6@2 d6@2 a5@2 ~@3 a5@2 c#6@2 d6@2 ~@30 [f#4,a4,d5]@8 ~@4, ~@23 g4@27 ~@36 [f#4,a4]@31 ~ [f4,a4,c5]@31 [g4,b4]@31 ~ [a4,f#5]@62 ~@13, ~@23 d4@16 d4@12 [d4,g4]@27 ~@16 d4@4 d4@20 ~@87 e5@2 ~@49, ~@35 c5@8 ~@99 e5@2 ~@5 d5@10 d5@16 ~@6 d5@10 d5@15 d5@36 ~@14]/8", // D F#m F G D G5
  O: "~ [c#4,e4,a4]!2 ~ [b3,d4,g4]@3 ~", P: "~@5 [f#4,a4,d5]@2 ~",
  Q: "[~@5 [c#4,e4,a4]@4 [c#4,e4,a4]@4 ~@4 [b3,d4,g4]@12 [e4,g4,c5]@24 [f#4,a4,d5]@8 ~@3]/2", // A G C D
  R: "~@5 [c#4,e4,a4]@4 [c#4,e4,a4]@4 ~@4 [b3,d4,g4]@12 ~@3", // A G
  S: "[~@17 d5@4 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 ~ [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [b4,d5,g5]@4 f#5@4 d5@4 [b4,d5,g5]@4 f#5@4 d5@4 [b4,d5,g5]@4 f#5@4 [a4,f#5,a5]@4 [a4,f#5,a5]@4 [a4,f#5,a5]@4 [a4,f#5,a5]@4 [d5,a5,d6]@4 [c#5,a5,c#6]@8 [b4,g5,b5]@12 ~@2, ~@21 g5@32 ~ g5@32 ~@74]/5", // Bm G D D5 F#m Em
  T: "[~@7 [g4,b4,d5]@4 [a4,c#5,e5]@12 [a4,f#5,a5]@4 [a4,f#5,a5]@4 [a4,f#5,a5]@4 [a4,f#5,a5]@4 [d5,a5]@4 [c#5,a5,c#6]@8 [a5,c#6]@4 ~@9, ~@39 d6@8 ~@4 b4@12 ~]/2", // G A D D5 F#m A
  U: "[~@3 [g4,b4,d5]@4 [g4,b4,d5]@4 [a4,c#5,e5]@12 [a4,f#5,a5]@4 [a4,f#5,a5]@4 [a4,f#5,a5]@4 [a4,f#5,a5]@4 [d5,a5,d6]@4 [c#5,a5,c#6]@8 [b4,g5,b5]@12 ~]/2", // G A D D5 F#m Em
  V: "~ [g4,b4,d5]!2 [a4,c#5,e5]@3 [a4,f#5,a5]!2", W: "[a4,f#5,a5]!2 [d5,a5,d6] [c#5,a5,c#6]@2 ~@3",
  X: "~@24 f#5@4 ~ f#5@3, ~@3 [a4,d5]", // D5
  Y: "~ f#5@4 f#5@4 e5@5 e5@5 e5@5 ~ e5@2 d5@2 d5@3, ~ [a4,d5]@8 [a4,c#5]@16 [g4,b4]@7", // D5 A G
  Z: "~ d5@4 d5@4 [g4,b4,d5]@8 [a4,c#5]@8 [a4,d5]@7, ~ [g4,b4]@8 ~@23", // G A D5 G
  AA: "[~ f#5@2 f#5@2 f#5@4 f#5@4 ~ e5@4 e5@2 e5@2 e5@2 e5@2 e5@4 d5@4 [g4,b4,d5]@8 [g4,b4]@8 [a4,c#5]@8 ~@4 [a4,d5,f#5]@4 [a4,d5,f#5]@4 [a4,d5,f#5]@4 [a4,c#5,e5]@4 [a4,c#5,e5]@8 [a4,c#5,e5]@4 e5@2 d5@2 d5@4 ~ d5@2 e5@6 [g4,b4]@8 [a4,c#5]@8 ~@4 f#5@2 f#5@2 f#5@2 f#5@2 f#5@2 f#5@2 f#5@2 e5@6 ~@4 e5@2 e5@2 [g4,b4,d5]@6 d5@2 [g4,b4,d5]@8 [g4,b4]@8 [a4,c#5]@8 ~ [a4,f#5,a5]@4, ~ [a4,d5]@8 [a4,c#5]@8 ~ [a4,c#5]@8 [g4,b4]@8 ~@56 [g4,b4]@8 ~ [g4,b4]@8 ~@16 [a4,d5]@8 [a4,d5]@8 [a4,c#5]@8 [a4,c#5]@8 ~@37]/6", // G A D A G A G A …
  AB: "[[a4,f#5,a5]!3 [e5,a5,d6] [e5,a5,c#6]@2 [d5,g5] [d5,g5]@2 ~ [b4,d5] [b4,d5,g5]@2 [a4,c#5,f#5]@2 [a4,f#5,a5], ~@6 b5@3 ~@7]/2", // D Dsus2 A G5 Bm G F#m D
  AC: "[[a4,f#5,a5]@4 [a4,f#5,a5]@4 [a4,f#5,a5]@4 ~ [e5,a5,d6]@4 [e5,a5,c#6]@8 [d5,g5,b5]@12 ~@4 [g4,b4,d5]@4 [g4,b4,d5]@4 [a4,c#5,e5]@12 [a4,f#5,a5]@3]/2", // D Dsus2 A G A D
  AD: "[~ [a4,f#5,a5]@4 [a4,f#5,a5]@4 [a4,f#5,a5]@4 [e5,a5,d6]@4 [e5,a5,c#6]@8 [d5,g5,b5]@12 ~@5 [b4,d5]@4 [b4,d5,g5]@8 [a4,c#5,f#5]@8 [a4,f#5,a5]@4 [a4,f#5,a5]@4 [a4,f#5,a5]@4 [a4,f#5,a5]@4 [e5,a5,d6]@4 [e5,a5,c#6]@8 d5@4 d5@8 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 ~ [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [d3,g3,c4]@33, ~@15 [g5,b5]@2 ~@15]/6", // D Dsus2 A G Bm G F#m D …
  AE: "[d3,g3,b3]", AF: "[d3,f3,a#3]", AG: "~ [d3,g3,a#3]@31", AH: "~ [d#2,d#3,a#3]@31",
  AI: "[~@2 [d#2,f3,c4]@32 g2@33 g2@33 ~@28, ~@34 [d2,d3,g3]@65 ~@29]/4", // F7 G5
})).s("gm_string_ensemble_1").gain(0.35)

// drums · kick
const kick = s("bd").struct(`<
  ~@6 A B C@4 D E@3 F@3 G@2 H@2 I J@2 K L M N@4 O D@3 E@5 F@3 P Q R S G C@4 J@2 C T Q U V W J X C T Q U V W J X Y ~ Z
  AA@2 AB J V AC L M N@3 O D@2 AD AE E@3 F@2 G@3 H@2 AA@3 M@2 V Q ~ AF@3 AG@2 AH ~@2
>`.pickRestart({
  A: "~@31 x", B: "~@15 x ~@16", C: "x!8", D: "x!4", E: "~ x ~@7 x ~@7 x ~@7 x ~@6", F: "~ x ~@3 x ~@3 x ~@3 x ~@2",
  G: "~@3 x ~@7 x ~@7 x ~@7 x ~@4", H: "~ x ~ x ~ x ~ x", I: "~@4 x ~@7 x ~@7 x ~@3 x ~@4 x ~@2",
  J: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2", K: "~ x ~@3 x ~@3 x ~@3 x ~@4 x ~@3 x ~@9",
  L: "~ x ~@5 x ~@3 x ~@3 x", M: "~@3 x ~@3 x ~@3 x ~@3 x", N: "~@7 x ~@7 x ~@7 x ~@7 x", O: "~@7 x ~@7 x ~@8 x ~@7",
  P: "~@2 x ~@7 x ~@8 x ~@7 x ~@3 x", Q: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x",
  R: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4", S: "~@7 x ~@11 x ~@7 x ~@4",
  T: "x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x", U: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~",
  V: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", W: "~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@2",
  X: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3", Y: "x!6 ~@2", Z: "~@5 x ~ x",
  AA: "~@5 x ~@7 x ~@7 x ~@7 x ~@2", AB: "~@5 x ~@7 x ~@7 x ~@3 x ~@3 x ~@2", AC: "~ x ~ x ~ x ~ x ~ x ~ x ~@4",
  AD: "~ x ~ x", AE: "x!2 ~ x", AF: "x", AG: "~ x ~@30", AH: "~ x ~@14",
})).gain(0.3)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A ~ B C D@4 E F G H I J I K L M N O P@2 Q R S T U T U V W X W X Y Z Y Z AA AB AA AC AD AE AF AG D@4 P@2 D AH AD AI
  AJ AK P AL D AH AD AI AJ AK P AL AM ~ AN AO AP AQ P AJ AR R U T U T AS X AT AU AV Y Z Y AB AA AW AX AG AY AZ AY BA BB
  BC@2 AJ AD AS BD@2 BE@2 BF ~@3
>`.pickRestart({
  A: "~@21 x ~@10", B: "~@23 x!2 ~@6 x", C: "~@7 x ~@16 x ~@7", D: "x!8", E: "x!2 ~ x", F: "~@8 x ~@16 x ~@6",
  G: "~ x ~@7 x ~@15 x ~@6", H: "~@9 x ~@15 x ~@6", I: "~ x ~@3 x ~@7 x ~@2", J: "~@5 x ~@7 x ~@2",
  K: "~@11 x ~@15 x ~@4", L: "~@3 x ~@7 x ~@15 x ~@4", M: "~@3 x ~@3 x", N: "~ x ~ x ~@3 x",
  O: "~@12 x ~@7 x ~@3 x ~@4 x ~@2", P: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2",
  Q: "~ x ~@3 x ~@3 x ~@3 x ~@4 x ~@3 x ~@9", R: "~ x ~@5 x ~@3 x ~@3 x", S: "~@7 x ~@7 x", T: "~@15 x ~@7 x ~@7 x",
  U: "~@15 x ~@15 x", V: "~@15 x ~@8 x ~@7", W: "x!2", X: "x ~ x!2", Y: "~ x ~@15 x ~@14", Z: "~ x ~@15 x ~@7 x ~@6",
  AA: "~ x ~@7 x ~@6", AB: "~ x ~@7 x ~@3 x ~@2", AC: "~@2 x ~@16 x ~@7 x ~@3 x",
  AD: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x", AE: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4",
  AF: "~@7 x ~@11 x ~@7 x ~@4", AG: "~@3 x ~@16 x ~@7 x ~@3", AH: "x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x",
  AI: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~", AJ: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x",
  AK: "~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@2", AL: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3",
  AM: "x!6 ~@2", AN: "~@12 x!2 ~@6 x ~@7 x ~@3", AO: "~@13 x ~@15 x ~@2", AP: "~@13 x ~@7 x ~@7 x ~@2",
  AQ: "~@13 x ~@7 x ~@3 x ~@3 x ~@2", AR: "~ x ~ x ~ x ~ x ~ x ~ x ~@4", AS: "~@15 x ~@16", AT: "x ~@7 x ~@3 x!4",
  AU: "x ~@3 x!2 ~@2 x!10 ~@2 x!2 ~@2 x!8", AV: "x!6 ~@2 x!6 ~@2 x!6 ~@2 x ~@7", AW: "~@3 x ~@15 x ~@7 x ~@4",
  AX: "~@3 x ~@15 x ~@12", AY: "~ x ~@3 x ~@2", AZ: "~ x ~@3 x ~ x", BA: "~@5 x ~@15 x ~@7 x ~@2",
  BB: "~@5 x ~@15 x ~@10", BC: "~@3 x ~@7 x ~@3 x", BD: "~ x", BE: "~@17 x ~@14", BF: "~@9 x ~@6",
})).gain(0.25)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@51 A B@2 C@2 B D C E B D C E B D C E B D C E F ~@44>".pickRestart({
  A: "~@14 x!2", B: "x!16", C: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x",
  D: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~ x ~ x ~ x ~ x ~ x",
  E: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~ x ~ x ~ x ~ x ~", F: "x!10 ~@6",
})).gain(0.2)

// drums · open hat
const open_hat = s("oh").struct("<~@109 x ~ x ~@5>").gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@54 A B C D@3 E F G H ~@45 I J G K ~@4>".pickRestart({
  A: "~@29 x ~ x", B: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~ x ~ x ~ x ~@3", C: "~@13 x!2 ~",
  D: "~@25 x ~ x ~@4", E: "~@13 x ~@2", F: "~@18 x ~@6 x ~@6", G: "~@25 x ~@6",
  H: "~@9 x ~ x ~ x ~ x ~ x!2 ~ x ~ x ~ x ~@7", I: "~@3 x", J: "x!4", K: "~ x ~@30",
})).gain(0.3)

// drums · high tom
const high_tom = s("ht").struct("<~@53 A ~@11 B C D ~@45 E F ~@2>".pickRestart({
  A: "~@29 x ~@2", B: "~@16 x ~@6 x ~@7 x", C: "~@27 x ~@4", D: "~@11 x ~@4", E: "~ x ~@3 x ~@3 x ~@6", F: "~ x ~@14",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@12 A ~ B ~ C ~ C ~ D ~ E ~@3 F G ~ F ~ H ~ I ~ I ~ I ~ J ~ J ~ K ~@3 L M ~@6 N ~@7 I ~@10 O ~ O@2 ~@2 F G ~ H ~ H ~
  I ~@2 I ~ J ~ K ~ L ~ N ~ N ~ P ~ Q ~@9 C ~@2
>`.pickRestart({
  A: "x", B: "~ x ~@30", C: "~ x ~@14", D: "~@3 x ~@28", E: "~ x ~@6", F: "~@11 x ~@4", G: "~ x ~@5 x ~@3 x ~@4",
  H: "~@23 x ~@8", I: "~@3 x", J: "~@25 x ~@6", K: "~@13 x ~@2", L: "~@27 x ~@4", M: "~@7 x ~@11 x ~@7 x ~@4",
  N: "~@7 x", O: "~@21 x ~@10", P: "~@29 x ~@2", Q: "~@15 x",
})).gain(0.25)

// drums · ride
const ride = s("rd").struct(`<
  ~@6 A B C ~@3 D E@3 F@3 G@2 H@2 I ~@3 J K L@4 B D@4 E@4 F@3 M ~@2 N G ~@17 O ~@4 P ~ Q R@2 S ~@3 J K L@3 B D@2 ~ T E@3
  F@2 G@3 H@2 R@3 K U ~ A B D@2 E@2 ~@4
>`.pickRestart({
  A: "~@31 x", B: "~@7 x ~@7 x ~@8 x ~@7", C: "x", D: "x!4", E: "~ x ~@7 x ~@7 x ~@7 x ~@6",
  F: "~ x ~@3 x ~@3 x ~@3 x ~@2", G: "~@3 x ~@7 x ~@7 x ~@7 x ~@4", H: "~ x ~ x ~ x ~ x", I: "~ x ~ x ~@4",
  J: "~@11 x ~@3 x", K: "~@3 x ~@3 x ~@3 x ~@3 x", L: "~@7 x ~@7 x ~@7 x ~@7 x", M: "~@2 x ~@7 x ~@8 x ~@12",
  N: "~@27 x ~@4", O: "~@15 x", P: "~@5 x ~@2", Q: "~@5 x ~ x", R: "~@5 x ~@7 x ~@7 x ~@7 x ~@2",
  S: "~@5 x ~@7 x ~@7 x ~@10", T: "~@3 x", U: "~@3 x ~@3 x ~@3 x ~@4",
})).gain(0.5)

stack(distortion_guitar, bass, string_ensemble_1, kick, snare, pedal_hat, open_hat, mid_tom, high_tom, crash, ride)

More by Electric Light Orchestra