Strudelify

Roll Over Beethoven

Electric Light Orchestra

KeyE majorTempo181 bpm
0:00/0:00
// Roll Over Beethoven — Electric Light Orchestra
// 181 bpm, 4/4, key E 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: Full arrangement: all 140 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(181/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 · string ensemble 1 · "Strings"
const string_ensemble_1 = note("<A B@2 C@2 D@2 E@2 F G H I@2 ~@85 J@7 ~@23 K L@3 M N@5 O>".pickRestart({
  A: "~@10 [g#4,g#5] ~ [g#4,g#5] ~ [g#4,g#5] ~", B: "[[e4,e5]@25 ~ [f#4,f#5] ~ [f#4,f#5] ~ [f#4,f#5] ~]/2",
  C: "[[d#4,d#5]@26 [g#4,g#5] ~ [g#4,g#5] ~ [g#4,g#5]@2]/2", // D# G#
  D: "[~@2 a5 ~ a5 ~ a5@2 ~@2 e6 ~ e6 ~ e6 ~@11 [f#4,f#5] ~ [f#4,f#5] ~ [f#4,f#5] ~, [e4,e5]@13 ~@3, ~ g#5@3, ~ c#6]/2", // F# E
  E: "[~@2 a5 ~ a5 ~ a5@2 ~@2 f#6 ~ f#6 ~ f#6 ~ d#6@9 ~ [g#4,g#5,g#6] ~ [g#4,g#5,g#6] ~ [f#4,f#5,f#6] ~, [d#4,d#5]@25 ~@7, ~@8 g#5@17 ~@7]/2", // G# F# D#
  F: "e4@2 [e3,e4] ~ [e3,e4] ~ [f#3,f#4] ~ g#4@2 [g#4,g#5,g#6] ~ [g#4,g#5,g#6] ~ [f#4,f#5,f#6] ~, [e5,e6] g#3, f6 ~@15", // E F# G# F# E
  G: "e4@2 [e3,e4] ~ [e3,e4] ~ [f#3,f#4] ~ g#4@2 [g#4,g#5,g#6] ~ [g#4,g#5,g#6] ~ [f#5,f#6] ~, [e5,e6]@4 g#3@3 f#4", // E F# G# F# E
  H: "[e3,e4,e5,e6] ~@7 [c#3,c#4,c#5,c#6]@2 ~@6", I: "[g#4@28 ~ g#4 ~@2, [g#3,g#5,g#6]@31 ~]/2",
  J: "[~@3 d3@3 ~ f#3@4 a3@4 ~@64 d#5@32 ~, ~@3 e3 ~@11 b2@29 ~@4 b2@27 b4@36 ~, ~ b3@6, ~@67 d#4@44 ~, ~@71 f#4@40 ~]/7",
  K: "~@12 [g#2,g#3,g#4]@3 ~", L: "[~ [g#2,g#3,g#4]@3 ~@2 [g#2,g#3,g#4]@4 ~@2 [e3,e4]@34 ~@2, ~@11 e2@35 ~@2]/3",
  M: "~@11 [f#2,f#3,f#4]@5", N: "[~@2 [f#2,f#3]@4 ~@2 [f#2,f#3]@6 ~ [d#2,d#3,d#4]@64 ~, ~ f#4@5 ~@2 f#4@4 ~@68]/5",
  O: "[d#2,d#3,d#5] ~@15, d#4 ~@7", // D#
})).s("gm_string_ensemble_1").gain(0.5).pan(0.9)

// chords · string ensemble 1 · "Strings r"
const string_ensemble_1_2 = note(`<
  A B@2 C@2 D@2 E@2 F G H I@2 ~@4 J@2 K L M N O L P J L@2 J@2 L@2 Q R L S P J L@2 J@2 L@2 Q R L S T U V W X Y Z AA AB Y
  Z AC L J L AD AE J L@2 AF N AG AH AI@7 AJ@2 AK AL@2 AM@4 AN@2 AM@2 AO AP AM@2 AQ@2 AR@7 L@2 AS J AT L AU AV AW L AX@5
  AY@8 ~@10
>`.pickRestart({
  A: "~@10 [g#3,g#4] ~ [g#3,g#4] ~ [g#3,g#4] ~", B: "[[e3,e4]@25 ~ [f#3,f#4] ~ [f#3,f#4] ~ [f#3,f#4] ~]/2",
  C: "[[d#3,d#4]@26 [g#3,g#4] ~ [g#3,g#4] ~ [g#3,g#4]@2]/2", // D# G#
  D: "[~@2 a4 ~ a4 ~ a4@2 ~@2 e5 ~ e5 ~ e5 ~@11 [f#3,f#4] ~ [f#3,f#4] ~ [f#3,f#4] ~, [e3,e4]@13 ~@3, ~ g#4@3, ~ c#5]/2", // F# E
  E: "[~@2 a4 ~ a4 ~ a4@2 ~@2 f#5 ~ f#5 ~ f#5 ~ d#5@9 ~ [g#3,g#4,g#5] ~ [g#3,g#4,g#5] ~ [f#3,f#4,f#5] ~, [d#3,d#4]@25 ~@7, ~@8 g#4@17 ~@7]/2", // G# F# D#
  F: "e3@2 [e2,e3] ~ [e2,e3] ~ [f#2,f#3] ~ g#3@2 [g#3,g#4,g#5] ~ [g#3,g#4,g#5] ~ [f#3,f#4,f#5] ~, [e4,e5] g#2, f5 ~@15", // E F# G# F# E
  G: "e3@2 [e2,e3] ~ [e2,e3] ~ [f#2,f#3] ~ g#3@2 [g#3,g#4,g#5] ~ [g#3,g#4,g#5] ~ [f#4,f#5] ~, [e4,e5]@4 g#2@3 f#3", // E F# G# F# E
  H: "[e2,e4] ~@3 [c#2,c#3,c#4,c#5] ~@3, [e3,e5] ~@15", I: "[g#3@28 ~ g#3 ~@2, [g#2,g#4,g#5]@31 ~]/2",
  J: "[e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~", // Em
  K: "[e4,g#4,b4] ~ [e4,g#4,b4] ~ [g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~", // E G#m E
  L: "[e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~", // E
  M: "[f#4,b4,d#5] ~ [f#4,b4,d#5] ~ [f#4,b4,d#5] ~ [f#4,b4,d#5] ~ [f#4,b4,d#5] ~ [f#4,b4,d#5] ~ [f#4,b4,d#5] ~ [f#4,b4,d#5] ~", // B
  N: "[e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~", // A
  O: "[e4,g#4,b4] ~ [e4,g4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~", // E
  P: "[e4,g#4,b4] ~ [e4,g#4,b4] [e4,b4] g#4!2 [e4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~", // E E5 E
  Q: "[d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~", // B
  R: "[c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~", // A
  S: "[e4,g#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~", // E B
  T: "[a4,f#5] f#5 a4 f#5 a4 f#5 a4 f#5 a4 f#5 a4 f#5 a4 f#5 a4 f#5", // D
  U: "a4 f#5 a4 f#5 a4 f#5 a4 f#5 a4 f#5 a4 f#5 a4 f#5 a4 d5", V: "a4 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 d5",
  W: "a4 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 d5 a4 d5 g4 d5", X: "g4 d5 g4 d5 g4 d5 g4 d5 g4 d5 g4 d5 g4 d5 g4 d5",
  Y: "g4 d5 g4 d5 g4 d5 g4 d5 g4 d5 g4 d5 g4 d5 g4 f#5", Z: "a4 f#5 a4 f#5 a4 f#5 a4 f#5 a4 f#5 a4 f#5 a4 f#5 a4 f#5",
  AA: "a4 f#5 a4 f#5 a4 f#5 a4 f#5 a4 f#5 a4 f#5 a4 f#5 a4 e5", AB: "a4 e5 a4 e5 a4 e5 a4 e5 a4 e5 a4 e5 a4 e5 a4 d5",
  AC: "a4 f#5 a4 f#5 a4 f#5 a4 f#5 a4 f#5 a4 f#5 a4 f#5 a4 ~",
  AD: "[e4,b4,e5] ~@5 [e4,b4,e5] ~@5 [e4,b4,c#5,d5,e5] ~ [g4,b4] ~", // E5 E7 G
  AE: "~@2 [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~", // Em
  AF: "[f#4,b4,d#5] ~ [f#4,b4,d#5] [f#4,b4] d#5 ~ [f#4,b4,d#5] ~ [f#4,b4,d#5] ~ [f#4,b4,d#5] ~ [f#4,b4,d#5] ~ [f#4,b4,d#5] ~", // B B5 B
  AG: "[b4,c5,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~", // Cmaj7 E
  AH: "[g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~", // E
  AI: "[[e3,g#3,b3]@63 [e3,g3,b3]@31 ~ [e3,g#3,b3]@17]/7", AJ: "[~@15 [f#3,b3,d#4]@16 ~]/2", AK: "[a3,c#4,e4]@15 ~",
  AL: "[e3,g#3,b3,e4]/2", // E
  AM: "[a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~ [a4,d5,f#5] ~", // D
  AN: "[b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~", // G
  AO: "[a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~", // A
  AP: "[g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~", // G
  AQ: "[~@20 d3@3 ~ f#3@4 a3@4, d2, ~@20 e3 ~@11]/2",
  AR: "[~@64 d#5@32 b4 ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~, b2@29 ~@5 b2@63 ~@15, ~ b3@48 ~@7, ~@13 d#4@2 b4@9 ~@4, ~@7 f#4@5 ~@2]/7", // E
  AS: "[e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g4,b4] ~", // E Em
  AT: "[e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g4,b4] ~ [e4,g#4,b4] ~", // Em E
  AU: "[e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [d#4,f#4,b4] ~", // E B
  AV: "[d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [d#4,f#4,b4] ~ [c#4,e4,a4] ~", // B A
  AW: "[c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [e4,g#4,b4] ~", // A E
  AX: "[[e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~ [e4,g#4,b4] ~@29 a2@2 b2@2 ~@24 d3@2 e3@2 a2@2 b2@2 e2@2, ~@14 e2@28 ~@4 e3@25 ~@9, ~ [e4,g#4,b4]@2 [d4,f#4,a4]@2]/5", // E D
  AY: "[~@22 a2@4 b2@4 ~@30 a2@2 b2 ~@29 [a2,b2]@2 ~@2 g#3@17 ~@15, [c4,e4,g4]@30 d3@30 ~@2 e2@30 g2 ~ e3@18 ~@16, ~@32 [a#3,d4,f4]@31 ~ [a3,c#4,e4]@31 [b3,e4]@23 ~@10]/8", // Asus2 C A# A E5
})).s("gm_string_ensemble_1").gain(0.5)

// chords · distortion guitar · "Dist Git"
const distortion_guitar = note(`<
  ~@13 A B C D E F@2 G H I J@3 K L M N O P Q R S T U V K L M N O P Q R S T U V W X Y Z AA AB AC X AD AE AF AG AH AI AJ
  AK@2 AL AM@2 AN AO AP@2 AQ@4 ~@7 AR AS@2 AT AU AV AW@3 AX AY AZ@2 ~@8 AM BA BB BC BD BE AM BF BG BH AM BI BJ@2 BK@2
  BL@2 ~@2 BM@2 BN@2 ~@8 BO BP
>`.pickRestart({
  A: "~@10 g3@2 g#3@2 b3 ~", B: "[b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4]@2 [b3,e4] ~",
  C: "g4@2 e4@2 d4 ~ b3@2 a3@2 g3 ~ e3@2 [c3,d3] ~", // Csus2
  D: "e3 ~ e3 ~ [b2,e3] ~ [b2,e3] ~ e3 b2 [b2,e3] ~ [b2,e3] ~ [b2,e3] ~, b2 ~@3", // E5
  E: "[b2,e3] ~ [b2,e3] ~ [b2,e3] ~ [b2,e3] ~ [b2,e3]@2 b3 ~ b3 ~ b3 ~", // E5
  F: "[b3 ~ b3@2 a3 ~ a3 ~ g3 ~ b3@3 ~ b3@4 b3@2 a3 ~ a3@2 g3@2 a3 g3 a3@2 g3 ~]/2",
  G: "b3@4 a3@3 ~ g#3@2 ~@2 a3@2 g#3 ~", H: "b3@2 b3@2 a3 ~ [g3,g#3] ~@3 g#3@2 a3@2 g#3 ~",
  I: "b3@3 ~ b3@4 b3@3 ~ b3@4", J: "[a3@4 g3@2 e3 ~ g3@2 e3@3 ~@2 b3@3 b3@2 a3@2 g3@2 e3@2 d3@3 ~ [b2,e3]@11 ~@7]/3",
  K: "[e3,b3] ~@3 [e3,c#4] ~@3 [e3,b3] ~@5 [e3,a3]@2", L: "~@2 e3 a3 [e3,b3] ~@3 [e3,a3] ~@5 [e3,b3]@2",
  M: "~@2 [e3,b3] ~ [e3,c#4] ~@3 [e3,b3] ~@3 c#4 ~ [e3,b3] ~", // E5 C#m E5
  N: "[e3,d4]@3 ~ [e3,c#4] ~ [e3,b3]@2 ~@2 [e3,b3] ~ [e3,c#4] ~ [e3,b3] ~", O: "~@2 [e3,f3,a3] ~@5 [e3,a3] ~@7",
  P: "~@2 [e3,a3] ~@5 [e3,a3] ~@5 [e3,b3]@2", Q: "~@2 [e3,b3] ~ [e3,c#4] ~@3 [e3,b3] ~@5 [e3,b3]@2",
  R: "~@2 b3 e3 ~@4 [e3,b3] ~@5 [f#3,b3]@2", // E5 B5
  S: "~@2 [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~ [e3,a3] ~", // B5 A5
  T: "a3 e3 [e3,a3] ~ [e3,a3] ~ a3 ~ [e3,a3] ~ [e3,a3] ~ [e3,a3] ~ [e3,b3]@2", // A5 E5
  U: "~@2 [e3,b3] ~ [e3,b3] ~ [e3,b3] ~ [e3,b3] ~ [e3,b3] ~ [e3,b3] ~ b3@2, ~@14 e3 ~", // E5
  V: "~@2 [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] ~ [f#3,b3] b3 f#3 ~", // B5
  W: "d3 ~ [d3,a3,d4]@2 d3 ~ d3 ~ [d3,a3,d4]@2 d3 ~ d3 ~ d3 ~", // D5
  X: "[d3,a3,d4] ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ [d3,b3]@2 [d3,a3]@2, ~@6 [a3,d4]@5 ~@5", // D5 G D5
  Y: "d3 ~ [d3,a3,d4] ~ d3 ~ d3 ~ [d3,a3,d4] ~ d3 ~ d3 ~ d3 ~", // D5
  Z: "[d3,a3,d4] ~ d3!2 ~@2 d3 ~ d3 ~ d3 ~ [d3,b3]@2 [d3,a3]@2, ~@6 [a3,d4]@5 ~@5", // D5 G D5
  AA: "g3 ~ [g3,d4]@2 g3 ~ g3 ~ [g3,d4]@2 g3 ~ g3 ~ g3 ~", // G5
  AB: "[g3,d4]@2 g3 ~ g3 ~ g3 ~ g3 ~ g3 ~ [g3,b3] ~ g3 ~, ~@3 d4@3 ~@2", // G5 G
  AC: "d3 ~ [d3,a3,d4] ~ d3 ~ d3 ~ [d3,a3,d4]@2 d3 ~ d3 ~ d3 ~", // D5
  AD: "a3 ~ [a3,d4,e4] ~ a3 ~ a3 ~ [a3,e4]@2 a3 ~ e4@2 a3 ~, ~@12 a3 ~@3", // Asus4 A5
  AE: "g3 ~ [g3,d4]@2 g3 ~ g3 ~ d4@2 g3 ~ [g3,b3] ~ g3 ~, ~@8 g3 ~@7", // G5 G
  AF: "[c3,d3] ~ [d3,a3,d4] ~ d3 ~ d3 ~ [a3,d4]@2 d3 ~ [d3,b3] ~ a3 d3, ~@8 d3 ~@7", // Csus2 D5 G
  AG: "[d3,a3,d4] ~ [d3,a3] ~ [d3,b3]@2 [d3,a3] ~ [d3,a3,d4] ~ [d3,a3,d4]@2 [d3,b3]@2 [d3,a3] ~", // D5 G D5 G D5
  AH: "~ [b3,e4] ~@2 [b3,d4,e4] ~@3", AI: "~@2 [a3,e4] ~@5 [a3,e4]@2 ~@6", AJ: "~ [b3,e4] ~@2 [b3,e4] ~ [a3,b3,e4] ~",
  AK: "[[e3,b3]@2 ~@4 [e3,b3]@7 ~ e3@4 e4 ~@5 [a3,e4]@2 ~@6, ~@7 a3@3 ~@6]/2", AL: "~ [a3,e4] ~@2 [a3,e4] ~@2 [e3,b3]",
  AM: "~ [b3,e4] ~@2 [b3,e4] ~@3", AN: "~ [f#3,b3] ~@2 [f#3,b3] ~@3", AO: "~ [e3,a3] ~@2 [e3,a3] ~@3",
  AP: "[~@2 [b3,e4]@2 ~@4 [b3,e4]@2 ~@4 [b3,e4]@5 ~ b3@2 [a3,b3]@2 [b3,e4]@4 ~@4]/2", AQ: "[[b2,e3]@63 ~]/4",
  AR: "~@5 [a4,d5]!3", AS: "[a4,d5]!2 b4 g4 a4 [a4,d5]!3", AT: "f5!4", AU: "f5@3 d5@2 c5@2 ~ d5@3 c5@3 d5@2",
  AV: "f5@2 d5 c5 d5 c5@2 [d4,g4]", // G5
  AW: "[[d4,g4]!6 ~ d4@2 d5@2 a4 c5 d5@2 d5@2 d5@2 a4 c5 d5@2 d5, ~@6 [d4,g4] ~@17, ~@13 g4@2 ~@33]/3", AX: "e5!4",
  AY: "d5@3 d5@3 d5@2 d5@2 ~ a4@3 b4@2", AZ: "[d5@29 ~@3]/2", BA: "[b3,e4] ~@2 [b3,e4]@3 ~@2",
  BB: "~@3 [b3,e4]@2 ~@3 [b3,e4]@2 ~@6", BC: "[b3,e4]@2 ~@4 [b3,e4]@7 ~@3", BD: "~ [a3,e4] ~@2 [a3,e4] ~@3",
  BE: "[a3,e4]@2 ~@4 [a3,e4]@7 ~@3", BF: "[b3,e4] ~@2 [b3,e4]@4 ~", BG: "~ [b3,f#4] ~@2 [b3,f#4] ~@3",
  BH: "[a3,e4] ~@2 [a3,e4]@4 ~", BI: "[b3,e4]@2 ~@4 [b3,e4]@5 ~@2 b3 ~@2, ~@6 e4 ~", BJ: "e3/2",
  BK: "[e4@26 a4@2 ~ b4@3]/2", BL: "[~ e5@30 ~]/2", BM: "[e4@28 ~@2 b2 ~]/2", BN: "[[e3,b3,e4]@9 ~@7]/2",
  BO: "~@5 d#2@3", BP: "~ [d#3,d#4,d#5]@6 ~@9",
})).s("gm_distortion_guitar").gain(0.5)

// bass · electric bass finger · "Bass Git"
const bass = note(`<
  ~@18 A@2 B C D E F G B H B I J K B@2 L M N O B H B I J K B@2 L M N O P Q R S T U V W X Y Z AA F H F AB AC AD B@2 AE AF
  AG AH AI AJ AK AL AM AN AO AP AQ AR AS@2 W AT R AU AV AW Q AX H AY Q AZ ~@8 BA B BB BC J BD BE BF L BG BH BI BJ@2 BK@2
  BL@4 BM@2 BN ~@11
>`.pickRestart({
  A: "a1 ~ a1@2 c#2 ~ c#2 ~ e2 ~ e2@2 f#2@2 e2@2", B: "e1 ~ e1 ~ g#1 ~ g#1 ~ b1 ~ b1@2 c#2@2 b1@2",
  C: "e1 ~ e1 ~ g#1 ~@3 b1 ~ b1@2 c#2@2 b1@2", D: "b1 ~ b1@2 d#2 ~ d#2@2 f#2 ~ f#2@2 d#2 ~ b1@2",
  E: "a1 ~ a1 ~ c#2 ~ c#2 ~ e2 ~ e2@2 c#2 ~ c#2@2", F: "e1 ~ e1@2 g#1 ~ g#1 ~ b1 ~ b1@2 c#2@2 b1@2",
  G: "e2 ~ e2@2 c#2 ~ c#2 ~ b1 ~ b1@2 g#1 ~ g#1@2", H: "a1 ~ a1 ~ c#2 ~ c#2 ~ e2 ~ e2@2 f#2@2 e2@2",
  I: "e1 ~ e1 ~ g#1 ~ g#1 ~ b1 ~ b1@2 c#2@2 e2@2", J: "a1 ~ a1@2 c#2 ~ c#2@2 e2 ~ e2@2 f#2@2 e2@2",
  K: "a1 ~ a1@2 c#2 ~ c#2@2 e2 ~ e2@2 f#2@2 e2 ~", L: "b1 ~ b1 ~ d#2 ~ d#2 ~ f#2 ~ f#2@2 b1@2 a#1@2",
  M: "a1 ~ a1@2 c#2 ~ c#2 ~ e2 ~ e2@2 c#2 ~ c#2 ~", N: "e1 ~ e1 ~ g#1 ~ g#1 ~ b1 ~ b1@2 c#2@2 b1 ~",
  O: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~", P: "d2 ~ d1@2 f#1 ~ f#1 ~ a1 ~ a1@2 b1@2 a1@2",
  Q: "d1 ~ d1@2 f#1 ~ f#1 ~ a1 ~ a1@2 b1@2 a1@2", R: "d1 ~ d1 ~ f#1 ~ f#1 ~ a1 ~ a1@2 b1@2 a1@2",
  S: "d1@2 d2@2 e1@2 e2 ~ f1@2 f2 ~ f#1@2 f#2@2", T: "g1 ~ g1@2 b1 ~ b1@2 d2 ~ d2@2 e2@2 d2@2",
  U: "g1 ~ g1@2 b1 ~ b1@2 d2 ~ d2@2 e2@4", V: "d1 ~ d1 ~ f#1 ~ f#1 ~ a1 ~ a1 ~ b1@2 a1@2",
  W: "d1 ~ d1@2 f#1 ~ f#1@2 a1 ~ a1@2 b1@2 a1 ~", X: "a1 ~ a1@2 c#2 ~ c#2@2 e2@2 e2@2 a1@2 g#1@2",
  Y: "g1 ~ g1@2 b1 ~ b1@2 [d2,e2] ~ d2@2 e2@2 [c2,d2] ~", Z: "d1 ~ d1@2 f#1 ~ f#1@2 a1 ~ a1 ~ b1@2 a1@2",
  AA: "d1 ~ d1@2 f#1 ~ f#1 ~ a1 ~ a1 ~ b1@2 a1@2", AB: "e2@2 [e1,f1] ~ e1@2 e2@2 e1 ~ e1 ~ e2@2 a1@2",
  AC: "~@2 a1@2 c#2 ~ c#2@2 e2 ~ e2@2 f#2@2 e2@2", AD: "a1 ~ a1 ~ c#2 ~ c#2 ~ e2 ~ e2@2 f#2@2 e2@2, ~@14 f#2 ~",
  AE: "b1 ~ b1 ~ d#2 ~ d#2@2 f#2 ~ f#2@2 d#2@2 b1 ~", AF: "a1 ~ a1@2 c#2 ~ c#2@2 e2 ~ e2@2 c#2 ~ c#2 ~",
  AG: "e1 ~ e1 ~ g#1 ~ g#1 ~ b1 ~ b1@2 c#2 ~ c#2@2", AH: "e2 ~ e2@2 c#2 ~ c#2@2 b1 ~ b1@2 g#1 ~ g#1@2",
  AI: "[d1,e2] ~ e1 ~ f#1 ~ e1 ~ g1 ~ e1 ~ a1@2 g1@2", AJ: "e1 ~ e1@2 f#1@2 e1 ~ g1 ~ e1 ~ a1@2 g1@2",
  AK: "e1 ~ e1 ~ f#1 ~ e1 ~ g1 ~ e1 ~ a1@2 g1@2", AL: "e1 ~ e1 ~ f#1@2 e1 ~ g1 ~ e1 ~ a1@2 g1@2",
  AM: "e1 ~ e1 ~ f#1@2 e1 ~ g1@2 e1 ~ a1 ~ g1@2", AN: "e1 ~ e1 ~ f#1 ~ e1 ~ g1 ~ e1 ~ a1 ~ g1@2",
  AO: "e1 ~ e1 ~ f#1 ~ e1 ~ g1 ~ e1 ~ a1 ~ g1 ~", AP: "e1 ~ e1 ~ f#1@2 e1 ~ g1@2 e1 ~ a1@2 e1@2",
  AQ: "b1 ~ b1@2 c#2@2 b1 ~ b1 ~ b1 ~ b1 ~ b1 ~", AR: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1@2",
  AS: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~", AT: "d1 ~ d1@2 f#1 ~ f#1@2 a1 ~ a1@2 b1@2 a1@2",
  AU: "d1@2 d2@2 e1@2 e2@2 f1@2 f2 ~ f#1@2 f#2@2", AV: "g1 ~ g1 ~ b1 ~ b1@2 d2 ~ d2@2 e2 ~ d2@2",
  AW: "g1 ~ g1 ~ b1 ~ b1 ~ d2 ~ d2@2 e2@2 d2@2", AX: "d1@2 d2@2 d1 ~ d1@2 d2@2 d1 ~ d1@2 d2@2",
  AY: "g1 ~ g1@2 b1 ~ b1 ~ d2 ~ d2@2 e2@2 [d2,e2] ~", AZ: "d1 ~ d1 ~ f#1 ~ f#1 ~ a1 ~ a1 ~ b1@2 a1 ~",
  BA: "e1 ~ e1@2 g#1 ~ g#1@2 b1 ~ b1@2 c#2@2 b1@2", BB: "e1 ~ e1 ~ g#1 ~ g#1@2 b1 ~ b1@2 c#2@2 [b1,c2] ~",
  BC: "e1@2 e2@2 f#1@2 f#2@2 g1@2 g2 ~ g#1@2 g#2@2", BD: "a1 ~ a1@2 c#2 ~ c#2@2 e2 ~ e2@2 f#2@3 ~",
  BE: "e1@2 e1@2 g#1 ~ g#1@2 b1 ~ b1@2 c#2@2 b1@2, f1 ~@15", BF: "e1 ~ e1@2 g#1 ~ g#1@2 b1 ~ b1@2 c#2@2 b1 ~",
  BG: "a1 ~ a1@2 c#2 ~ c#2@2 e2 ~ e2@2 c#2@2 a1@2", BH: "e1 ~ e1@2 g#1 ~ g#1@2 b1 ~ b1 ~ c#2@2 b1@2",
  BI: "e1 ~ e1@2 g#1 ~ g#1 ~ b1 ~ b1 ~ c#2@2 b1@2", BJ: "[e1@13 ~@3]/2", BK: "e2/2", BL: "[e1@29 ~@3]/2",
  BM: "[e1@14 a1 d2, ~@30 b1 ~]/2", BN: "e2",
})).s("gm_electric_bass_finger").gain(0.5)

// drums · kick
const kick = s("bd").struct(`<
  ~@18 A@4 B A@2 C A@3 C D B C E C B C F A@3 C D B C E C B C F G H C I C A C E C@3 F D C@2 J K A C E C@2 A ~@2 I ~ I ~ H
  ~ L ~ L ~@2 H@2 C M N B C@2 H C@3 F ~ F ~ F ~ F ~ C@7 O C@3 P F Q F R F Q F ~ F Q F S T ~@2 U V W X Y Z ~
>`.pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x ~@3 x ~@2 x", C: "x!2", D: "x ~@2 x!2 ~ x ~", E: "x ~@2 x ~@4", F: "x", G: "x ~ x!2",
  H: "x ~@3 x!2 ~@2", I: "x ~@2 x ~ x ~@2", J: "~@7 x", K: "~ x", L: "x ~@5 x ~@3 x!2 ~@4", M: "x ~@14 x",
  N: "x ~@3 x ~ x!2", O: "x!2 ~ x ~ x ~ x", P: "x ~@4 x ~@2", Q: "~@5 x ~@2", R: "~@10 x!2 ~@4", S: "x ~@2 x",
  T: "~ x ~@5 x ~@5 x ~@2", U: "~@11 x ~@4", V: "~ x ~@3 x ~@2", W: "~ x ~@14", X: "~@9 x ~@6", Y: "x ~@8 x ~@6",
  Z: "~@3 x ~@12",
})).gain(0.73)

// drums · snare
const snare = s("sd").struct(`<
  ~@17 A B@3 C B@3 D B@7 A B@3 E B@7 A B@3 E B@3 F B@3 G B@3 E B H I J B@3 K C B L M@11 N O B@3 P B@3 Q B@3 I B@3 E B@2
  R S C@3 L B C B T C R B@9 U B@3 V ~ W X ~@2 Y Z AA ~ AB
>`.pickRestart({
  A: "~ x ~@2 x ~ x!2", B: "~ x ~ x", C: "~@2 x ~@3 x!2", D: "~ x!2 ~@2 x!2 ~", E: "~ x!7", F: "~ x!2 ~ x ~ x!2",
  G: "~ x!2 ~ x!2 ~@2", H: "~@2 x!2 ~@2 x ~", I: "~@2 x!2 ~@2 x!2", J: "x ~@2 x ~@2 x ~", K: "~ x!2 ~ x!4",
  L: "~@2 x ~@2 x!3", M: "x!8", N: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", O: "x ~ x!3 ~ x!3 ~ x!3 ~@3",
  P: "~@2 x!3 ~ x!3 ~ x!3 ~ x!2", Q: "~ x ~@5 x", R: "~@2 x ~@2 x ~@2", S: "x ~@2 x ~ x!2 ~", T: "~ x!3",
  U: "~@2 x ~ x!4", V: "~ x ~@14", W: "~@6 x!3 ~ x!2 ~ x ~ x", X: "~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~", Y: "~@13 x!3",
  Z: "~ x!2 ~ x ~ x ~@5 x ~@3", AA: "~@2 x ~@4 x", AB: "x",
})).gain(0.73)

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@13 A@5 ~@8 B C@2 D B C@3 B C@2 E B C@2 D B C@3 B C@2 E ~@12 B C@2 F G C H I J B ~@2 K@11 L ~@54
>`.pickRestart({
  A: "x!4", B: "~ x!7", C: "x!8", D: "x!5 ~ x ~", E: "x!4 ~@4", F: "~ x!2 ~@2 x ~@2", G: "~ x ~ x!5",
// … 39 more lines

More by Electric Light Orchestra