Strudelify
Telephone Line cover art

A New World Record

Telephone Line

Electric Light Orchestra

KeyA majorTempo72 bpm
0:00/0:00
// Telephone Line — Electric Light Orchestra
// 72 bpm, 4/4, key A 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 3 "HARPSICHRD" harpsichord (copy of ch 7 "POLYSYNTH" pad poly)
// note: Full arrangement: all 82 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(72/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.

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A B C D E F E G H I J K@2 L M N O P Q R S@4 T U V W X Y Z AA AB AC AD AE AB AC AF AE AG AH AI AJ AK AL AM AN AO P I AP
  S@4 T U V W X Y Z AA AQ AR AS AT AU AV AW AX AQ AR AS AY AU AV AW AX AZ@2
>`.pickRestart({
  A: "[a4,b4,c5,e5]@4 [a4,b4,c5,e5]@4 [a4,b4,c5,e5]@4 [e4,a4,b4,c5,e5]@2 a3 ~, a2@15 ~", // Am
  B: "[d4,a4,b4,d5] ~@3 [g4,a4,b4,d5]@4 [g4,a4,b4,d5]@4 ~@2 [g3,d4]@2, g2, g4 ~@2 [g4,a4,b4,d5]", // Bm7 G G5 G
  C: "[f4,g4,a4,c5]@2 [f4,g4,a4,c5]@2 [f4,g4,a4,c5]@2 ~ f3, f2, f3@7 ~, ~@3 [c4,f4,g4,a4,c5]", // F
  D: "[g4,a4,b4,d5]@4 [g4,a4,b4,d5]@4 [g4,a4,b4,d5]@4 [g4,a4,b4,d5]@3 ~, g2@15 ~, d4 ~@15", // G
  E: "e4@2 e4@2 e4@2 c#4!2, a2, c#4 ~ c#4 ~ c#4 ~ e4@2",
  F: "e4@2 e4@2 e4@2 c#4 a2, a2@7 ~, c#4 ~ c#4 ~ c#4 ~ [g#3,e4]@2", // C#m
  G: "c#4@2 c#4@2 c#4@2 c#4@2 [c#4,e4] ~@3 c#4@2 a#2@2, a2@4 a#2@3 ~, e4 [g3,e4] ~ [a#3,e4]", // C#m C A#dim
  H: "[d4,f#4]@4 [d4,f#4]@2 b3 ~ [e4,g#4]@4 [b3,e4,g#4]@2 e3@2, b2@7 ~ e3@6 ~@2", // D E
  I: "[d4,f#4]@2 ~ b2 [e4,g#4]@2 ~ c#3, b2@3 ~ c#3@3 ~, ~ [b3,d4,f#4] ~ [c#4,e4,g#4]", // D E Bm C#m
  J: "d4 ~ d4@2 ~@2 d3@2 [g#4,b4]@4 [e4,g#4,b4]@2 e3@2, d3@3 ~ e3@3 ~, [f#4,a4] [d4,f#4,a4] ~@2", // G#m E F#m D
  K: "[~@10 a3@2 [a3,c#4,e4]@2 ~@2 d3@4 d3@2 [a2,d3,f#3,a3,c#4]@9 ~, a2@7 a2@4 ~@5, [g#3,c#4,e4]@6 g#3@9 ~ [f#3,a3,c#4]@6 ~@10, ~@4 e3@11 ~ d2@15 ~, ~@3 [c#4,e4]@3 ~@10]/2", // A Dmaj7 C#m F#m C#m
  L: "c#4!8, a2, [a3,e4]!4", M: "c#4!6 ~ a2, a2@7 ~, [g#3,e4] e4!2 [g#3,c#4,e4]",
  N: "c#4!2 [g3,e4]@2 [g3,e4]@2 c#4!2, a2, e4@2 c#4 ~ c#4 ~@3, g3 ~@11 [g3,e4]@4", // C
  O: "c#4@2 c#4@2 c#4@2 c#4@2 [c#4,e4] ~ c#4@2 c#4@2 [a#2,c#4]@2, a2@4 a#2@3 ~, [g3,e4]!2 ~ [a#3,e4]", // C#m A#m C A#dim
  P: "[d4,f#4]@4 [d4,f#4]@2 b3 ~ [e4,g#4]@4 [b3,e4,g#4]@2 e3@2, b2@7 ~ e3@6 ~@2, b3 ~@15", // D E
  Q: "[d4,f#4]@2 [b3,d4,f#4]@2 [e4,g#4]@2 ~ c#3, ~@4 c#3@3 ~, ~@3 [c#4,e4,g#4]", // D Bm E C#m
  R: "d4 ~ d4@2 [d4,f#4,a4]@4 e4 ~ e4@2 [e4,g#4,b4]@2 e3@2, [f#4,a4]@2 ~@2 e3@3 ~, ~@2 [g#4,b4] ~", // D E F#m G#m
  S: "[~@12 [g#3,c#4,e4]@2 ~@2 d3@4 d3@2 [a2,d3,f#3,a3,c#4]@9 ~, a2@7 a2@4 ~@5, [g#3,c#4,e4]@3 [g#3,c#4,e4]@3 ~@2 [f#3,a3,c#4]@3 ~@5, ~@4 e3@6 e3@5 ~ d2@15 ~]/2", // C#m Dmaj7 C#m F#m
  T: "a3@2 a3@2 [a3,c#4,e4,a4]@4 ~@2 f#3@2 [f#3,a3,c#4,f#4]@3 ~, [c#4,e4,a4] ~ [a3,c#4,f#4] ~", // A F#m A F#m
  U: "d4 ~@3 [f#3,a3,d4]@3 ~@5 [g#3,b3,e4]@4, [f#3,a3] ~ [g#3,b3,e4] ~, ~@2 d3@5 ~@3 e3@6", // D E F#m E
  V: "[a3,a4] ~ a3@2 [a3,c#4,e4,a4]@3 ~ f#3 ~ f#3@2 [f#3,a3,c#4,f#4]@3 ~, [c#4,e4] ~ [a3,c#4,f#4] ~", // A F#m C#m F#m
  W: "d4 ~@3 [f#3,a3,d4]@3 ~@5 [g#3,b3,e4]@3 ~, [f#3,a3] ~ [g#3,b3,e4] ~, ~@2 d3@5 ~@3 e3@5 ~", // D E F#m E
  X: "a3 ~ a3@2 [a3,c#4,e4]@3 ~ [a3,c#4,f#4]@4 [f#3,a3,c#4,f#4]@4, a4@7 ~@9, [c#4,e4] ~@3", // A F#m C#m
  Y: "d3 ~@3 [f#3,a3,d4]@3 ~@5 [g#3,b3,e4]@3 ~, [f#3,a3,d4] ~ [g#3,b3,e4] ~, ~@2 d3@5 ~@3 e3@5 ~", // D E D E
  Z: "a3 ~ a3@2 [a3,c#4,e4,a4]@3 ~@3 f#3@2 [f#3,a3,c#4,f#4]@3 ~, [c#4,e4,a4] ~ [a3,c#4,f#4] ~", // A F#m A F#m
  AA: "~@4 [f#3,a3,d4]@3 ~@5 [g#3,b3,e4]@4, [f#3,a3,d4] ~ [g#3,b3,e4] ~, ~@2 d3@5 ~@3 e3@6", // D E D E
  AB: "[c#4,e4]@2 ~@8 a3@2 ~@2 g#3 ~, a2@2 [a2,c#4,e4] [g#2,c#4,e4], a4 ~ a3@4 a3@4 ~@6, ~ [c#4,e4] ~@2", // C#m A C#m
  AC: "[a3,c#4,f#4]@2 f#3@2 [a3,c#4,f#4]@2 f#3@2 f#4@2 f#3@2 e3 ~ e3 ~, f#2@3 [e2,a3,c#4], ~@2 [a3,c#4] ~", // F#m A
  AD: "[f#3,a3]@2 d3@2 [f#3,a3,d4]@2 d3@2 [f#3,a3,d4]@2 d3@2 [d3,f#3,a3,d4]@2 d3 ~, d2@15 ~, d4 ~@15", // F#m D
  AE: "~@2 e4@2 [e4,g#4,b4]@2 e2@2 [g#4,b4]@2 f4@2 [g#4,b4]@2 f4 ~, [g#4,b4]@4 ~@4 f2@7 ~, ~@8 f4 ~@7", // E G#m
  AF: "[f#4,a4]@2 d4@2 [f#4,a4]@2 ~@4 d4@2 [d4,f#4,a4]@2 [d2,d3] ~, [d2,d3]@7 ~, d4 ~@5 d4@4 ~@6, ~@2 [f#4,a4] ~", // F#m D F#m
  AG: "[d3,g3,b3] ~ [e3,a3,c#4]@12 ~@2", AH: "[a4,b4,c5]@2 [a4,b4,c5]@2 [a4,b4,c5]@2 [a4,b4,c5] e4, a3@14 a3 ~",
  AI: "[g4,a4,b4]@2 [g4,a4,b4]@2 [g4,a4,b4]@2 ~ d4, g3, ~@3 [g4,a4,b4]", // G
  AJ: "[f4,g4]@2 [f4,g4,a4]@2 [f4,g4,a4]@2 ~ [f3,c4], f3@7 ~, a4 ~@11 [f4,g4,a4]@4", // Fsus2 F F5 F
  AK: "[g4,a4]@4 [g4,a4,b4]@4 [g4,a4,b4]@4 [g4,a4,b4]@3 ~, g3@15 ~, b4 ~@15", // Gsus2 G
  AL: "~@7 a3, a2, [c#4,e4]!4, ~ a3@2 a3@2 a3@2 ~", // C#m
  AM: "~@2 [c#4,e4]@2 [c#4,e4]@2 ~ a2, a2@7 ~, [c#4,e4] ~@3, ~ g#3@2 ~@3 [g#3,c#4,e4]@2", // C#m
  AN: "~@2 [g3,c#4,e4]@2 [g3,c#4,e4]@2 ~ e3, a2, [g3,c#4,e4] ~@2 [g3,c#4,e4], ~ e3@2 ~@5", // C#dim
  AO: "~@6 e3@2 [c#4,e4] ~@5 [a#2,g3]@2, a2@4 a#2@3 ~, [g3,c#4,e4]!2 a#3 [a#3,c#4,e4], ~ e3@2 ~@2 g3@2 ~", // C#m D# C#dim A#dim
  AP: "d4 ~ d4@2 ~@2 d3@2 e4 ~ e4@2 [e4,g#4,b4]@2 e3@2, d3@3 ~ e3@3 ~, [f#4,a4] [d4,f#4,a4] [g#4,b4] ~", // E F#m D G#m
  AQ: "[c#4,e4]@2 ~@8 a3@2 [c#4,e4]@2 g#3 ~, a4 ~ a3@4 a3@4 ~@6, ~ [c#4,e4]!2 ~", // C#m
  AR: "[a3,c#4,f#4]@2 f#3@2 [a3,c#4,f#4]@2 f#3@2 f#4@2 f#3@2 [a3,c#4]@2 e3 ~, ~@8 [a3,c#4]@4 e3 ~@3", // F#m A
  AS: "[f#3,a3]@2 d3@2 [f#3,a3,d4]@2 d3@2 [f#3,a3,d4]@2 d3@2 [d3,f#3,a3,d4]@2 d3 ~, d4 ~@15", // F#m D
  AT: "~@2 e3 ~ [g#3,b3]@3 ~ [g#3,b3]@2 f3 ~ [f3,g#3,b3]@3 ~, [g#3,b3] ~@3", // G#m Fdim G#m
  AU: "[c#4,e4]@2 a3 ~ [a3,c#4,e4]@3 ~ [c#4,e4]@2 a3 ~ [c#4,e4]@2 g#3 ~, ~@8 a3 ~@3 g#3 ~@3", // C#m A C#m
  AV: "[a3,c#4]@2 f#3 ~ [f#3,a3,c#4,f#4]@4 [a3,c#4]@4 [a3,c#4]@3 ~, f#4 ~@11 e3 ~@3", // A F#m A
  AW: "[f#4,a4]@2 d4@2 [f#4,a4]@2 ~@4 d4@2 [d4,f#4,a4]@2 d3 ~, d3@7 ~, d4 ~@5 d4@4 ~@6, ~@2 [f#4,a4] ~", // F#m D F#m
  AX: "~@2 e4@2 [e4,g#4,b4]@3 ~ [g#4,b4]@2 f4@2 [g#4,b4]@2 f4 ~, [g#4,b4]@4 ~@4 f4 ~@7", // E G#m
  AY: "[g#3,b3]@2 e3 ~ [g#3,b3]@3 ~ [g#3,b3]@2 f3 ~ [f3,g#3,b3]@3 ~", AZ: "[[g3,b3,d4] ~ [a3,c#4,e4]@17 ~@13]/2",
})).s("gm_piano").gain(0.38)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
  A B C D E F G H I J K ~@3 L M N O J ~@9 P ~@3 Q ~@3 Q ~@4 R B S D ~ T U ~ O J ~@9 P ~@3 Q ~@2 V W X ~@2 Q ~@2 V W X
  ~@4
>`.pickRestart({
  A: "e4 ~ e4@4 e4@4 e4@2 ~@4", B: "~ d4@2 d4@2 d4!2 ~", C: "~ c4@2 c4@2 c4 ~@2", D: "~@2 d4@4 d4@4 d4@4 d4 ~",
  E: "~ c#4 ~ c#4 ~ c#4 ~@2", F: "~ c#4 ~ c#4 ~ c#4 ~ c#4, g#3!3 ~", G: "~ c#4 ~ c#4 ~ c#4 ~@2, g3!2 g3@2",
  H: "g3@4 ~@4 a#3 ~ c#4@2 ~@2 c#4@2", I: "b3 ~ b3@4 ~@2 b3 ~ b3@2 ~@4", J: "~@2 b3@2 ~@4 c#4 ~ c#4@2 ~@4",
  K: "~@8 e4 ~ e4@2 ~@4", L: "~ g#3!2 ~", M: "~@3 c#4 ~ c#4 ~@2", N: "~@8 a#3 ~@7", O: "~@2 b3@4 ~@2 b3 ~ b3@2 ~@4",
  P: "~@5 f#3 ~@2", Q: "~@12 g#3 ~@3", R: "~ e4@2 e4@2 e4@2 ~", S: "~ c4@2 c4@2 c4@2 ~", T: "~@3 g#3!3 ~@2",
  U: "~@3 e3@2 e3@2 ~", V: "~@8 f3 ~@7", W: "~@11 e4 ~@4", X: "~@7 c#4 ~@3 c#4 ~@4",
})).s("gm_piano").gain(0.22)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@4 A B C D E F G H I J K@2 L M N O H I H P Q R Q R Q R Q R S T U V S W X Y Z ~@4 AA AB AC AD AE AF AG AH AI AH P Q AJ
  Q AK Q AL AM AL S T AN AO S T AP AO S T AP AO S T AP AQ AR@2
>`.pickRestart({
  A: "a1@15 ~", B: "a1@13 ~ a1 ~", C: "a1@13 ~ e1@2", D: "a1@8 a#1@7 ~", E: "b1 e2", F: "b1@7 ~ c#2@8",
  G: "d2@7 ~ e2@7 ~", H: "a1@5 ~ a1@8 ~@2", I: "d2@5 ~ d2@8 ~@2", J: "a1@6 a1 ~ a1@6 a1 ~", K: "a1@6 a1 ~ a1@7 ~",
  L: "a1@6 a1 ~ a#1@8", M: "b1@6 f#2 f2 e2@6 e2@2", N: "b1@3 b1 c#2@3 c#2", O: "d2@3 d2 e2@3 e2",
  P: "d2@5 ~ d2@3 ~ e2!6", Q: "a1!2 f#2!2", R: "d2!2 e2!2", S: "a1@5 ~ e2@2 a2@4 g#2@4", T: "f#2@5 ~ c#2@2 f#2@4 e2@4",
  U: "d2@5 ~ a1@2 d2@4 d2@4", V: "e2@5 ~ e2@2 f2 ~ f2@2 f2 ~ f2 ~", W: "f#2@2 ~ c#2 f#2@2 e2@2",
  X: "d2@5 ~ a1@2 d2@4 ~@2 d2@2", Y: "e2@2 e2@2 e2@2 e2 ~ f2@2 f2@2 f2@2 f2 ~", Z: "g2 ~ a2@12 ~@2",
  AA: "a1@9 ~ a1@3 ~ a1 ~", AB: "a1@9 ~ a1@6", AC: "a1@9 ~ a1@3 ~ e2 e1", AD: "a1@7 ~ a#1@5 ~ a#1 ~",
  AE: "b1@5 ~ b1@2 e2@7 ~", AF: "b1@5 ~ b1@2 c#2@5 ~ c#2@2", AG: "d2@5 ~ d2@2 e2@5 ~ e2@2, ~@14 d#2 ~",
  AH: "a1@5 ~ a1@9 ~", AI: "d2@5 ~ d2@9 ~", AJ: "d2@4 d2@4 e2@3 ~ e2@2 e2@2, ~@12 d#2 ~@3",
  AK: "d2!2 e2!2, ~@12 d#2 ~@3", AL: "d2@2 d2@2 e2@2 e2!2", AM: "a1!2 f#1!2", AN: "d2@5 ~ a1@2 d2@4 d2@2 d2@2",
  AO: "e2 ~ e2 ~ e2 ~ e2 ~ f2 ~ f2 ~ f2 ~ f2 ~", AP: "d2@5 ~ a1@2 d2@5 ~ d2@2", AQ: "e2@5 ~ e2@2 f2@7 ~",
  AR: "[g1 ~ a1@17 ~@13]/2",
})).s("gm_electric_bass_finger").gain(0.49)

// chords · lead 3 calliope · "CALLIOPE"
const lead_3_calliope = note(`<
  ~@18 A B C ~@3 D E@2 F@2 G ~ G H@4 I J@3 ~@16 D E@2 F@2 G ~ G K@4 I L@3 K@4 I J@3 ~@2
>`.pickRestart({
  A: "~@4 [b4,f#5]@2 [a4,e5]@2 [b4,g#5]@2 [c#5,a5] [b4,g#5]@4 ~", // B5 A5 E F#m E
  B: "~@4 [f#4,b4] [a4,c#5]@3 [b4,d5]@2 [a4,c#5]@2 [c#4,a4]@2 [e4,c#5]@2", C: "[e4,c#5]@3 ~@5",
  D: "~@2 [c#5,e5]@4 ~@2 [c#5,f#5]@5 ~@3", // C#m F#5
  E: "[~@2 [d5,f#5]@6 [e5,g#5]@4 [d5,f#5] [e5,g#5] [d5,f#5] [c#5,e5]@2 ~ [c#5,e5]@2 [c#5,e5]@2 ~@4 c#5@3 d5 c#5@2, ~@13 f#5@3]/2", // D E D E D C#m
  F: "[~@2 [d5,f#5]@6 [e5,g#5]@4 [d5,f#5] [e5,g#5] [d5,f#5] [c#5,e5]@2 ~@15]/2", // D E D E D C#m
  G: "~ [d5,f#5]@7 [e5,g#5]@5 [d5,f#5] [c#5,e5]@2", // D E D C#m
  H: "[c#6@4 a5@4 e5@2 f#5@2 a5@2 c#6@6 ~@4 c#5@2 d5@2 e5@2 f#5@6 ~@2 a4@2 a4@2 b4@2 c#5@2 e5@8 f#5 e5 d5@2 ~@6]/4",
  I: "c#6@2 a5@2 e5 f#5 a5 c#6",
  J: "[~ d6 c#6@3 ~@3 c#5@2 d5@2 e5@2 f#5@5 ~@3 a4@2 a4@2 b4@2 c#5@2 e5@8 f#5 e5 d5@6 ~@2]/3",
  K: "[c#6@4 a5@4 e5@2 f#5@2 a5@2 c#6@6 ~@4 c#5@2 d5@2 e5@2 f#5@5 ~@3 a4@2 a4@2 b4@2 c#5@2 e5@8 f#5 e5 d5@4 ~@4]/4",
  L: "[~ d6 c#6@3 ~@3 c#5@2 d5@2 e5@2 f#5@5 ~@3 a4@2 a4@2 b4@2 c#5@2 e5@8 f#5 e5 d5@5 ~@3]/3",
})).s("gm_lead_3_calliope").gain(0.22).pan(0.6)

// other · pad poly · "POLYSYNTH"
const pad_poly = note("<A B C D ~@37 E F C G ~@37>".pickRestart({
  A: "c6 b5 g5 a5 e5@9 ~@3", B: "[a4,c5] ~ [b4,d5]@13 ~", C: "f5 e5 c5 d5 a4@10 ~@2", D: "d5 c5 g4 a4 e4@9 ~@3",
  E: "c6 b5 g5 a5 e5@10 ~@2", F: "[a4,c5] ~ [b4,d5]@12 ~@2", G: "d5 c5 g4 a4 e4@11 ~",
})).s("gm_pad_poly").gain(0.33)

// chords · pad halo · "HALO PAD"
const pad_halo = note("<A B C D E F G H I J K ~@2 E F G H I L K ~@21 A B C D ~@37>".pickRestart({
  A: "c6 b5 g5 a5 e5@9 ~@3", B: "c5 ~ d5@9 ~@5", C: "f5 e5 c5 d5 a4@8 ~@4", D: "d5 c5 g4 a4 e4@9 ~@3",
  E: "[c#4,e4] a3 [c#4,e4] a3 [c#4,e4] a3 [c#4,e4] a3", F: "[c#4,e4] g#3 [c#4,e4] ~ [c#4,e4] g#3 [c#4,e4] ~",
  G: "e4 g3 [c#4,e4] g3 [c#4,e4] g3 [c#4,e4] g3", H: "[c#4,e4] g3 [c#4,e4] g3 [c#4,e4] ~ c#4@2, ~@6 e4 ~",
  I: "[d4,f#4] b3 [d4,f#4] ~ [e4,g#4] ~ [e4,g#4] b3", J: "[d4,f#4] b3 [d4,f#4] ~ e4 c#4 [e4,g#4] c#4, ~@8 g#4 ~@7",
  K: "f#4 d4 [f#4,a4] d4 [g#4,b4] e4 [g#4,b4] ~, a4 ~@15", L: "[d4,f#4] b3 [d4,f#4] ~ [e4,g#4] c#4 e4 c#4",
})).s("gm_pad_halo").gain(0.22)

// chords · pad halo · "HALO PAD" · soft notes
const pad_halo_soft = note("<~@5 A B C D E F ~@3 A B C D E F ~@62>".pickRestart({
  A: "~@3 g#3 ~@3 g#3", B: "c#4 ~@7", C: "~@5 g3 ~ g3", D: "~@3 b3 ~ b3 ~@2", E: "~@3 b3 ~@4", F: "~@7 e4",
})).s("gm_pad_halo").gain(0.11)

// chords · pad sweep · "SWEEP PAD"
const pad_sweep = note("<~@20 A B C D ~@28 A B C D ~@26>".pickRestart({
  A: "~ a4 f#5@2 a4 [a4,c#5] ~ a4 ~ [c#5,f#5]@2 a4!2 f#5@2 ~, ~ c#5@2 ~@2 f#5@2 ~@2 a4 ~@3 c#5 ~@2", // A F#5
  B: "~@4 f#5 ~ a4 [c#5,f#5]@2 ~@7", // F#5
  C: "~ [f#5,a5,c#6] ~@3 [a5,c#6] ~ f#5 a5 f#6@2 f#5 a5 f#6@2 f#5, ~ f#6@2 ~ f#5@2 ~@10, ~@5 f#6@2 ~@2 c#6 ~@3 c#6 ~@2", // F#m A
  D: "~ [f#5,c#6] ~ f#5 ~ f#6@2 f#5 ~ f#6@2 f#5@2 f#6 ~@2, ~ f#6@2 ~@6 a5 ~@6", // F#5
})).s("gm_pad_sweep").gain(0.33).pan(0.4)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@11 A B C D E F G H ~ A I J B K L M N M L M L O P Q R O P Q R S ~@4 T@4 U V W X Y Z Y M N M N M L M L O P Q R O P Q R
  O P Q R O P Q R AA@2
>`.pickRestart({
  A: "[g#3,c#4,e4]@5 ~ [g#3,c#4,e4]@9 ~", B: "[a3,c#4,f#4]@2 ~ [a3,c#4,f#4]@5", C: "~@9 a3 b3 a3 b3@3 ~",
  D: "~@9 a3 b3 a3 b3@2 ~@2", E: "~@9 a3 b3 a3 b3@2 c#4 ~",
  F: "a4@2 [e4,g4] ~ g4@2 [d4,f#4] ~ [d4,f#4]@2 [c#4,e4] ~ [a#3,c#4,e4]@2 [c#4,e4,g4] ~, f#4 ~@3 e4 ~@11", // Em D C#m A#dim C#dim
  G: "[b3,d4]@7 ~@3 c#4 e4 f#4 e4 c#4 a3", H: "b3 ~@3", I: "[a3,c#4,f#4]@5 ~ [a3,c#4,f#4]@10",
  J: "[g#3,c#4,e4]@4 ~@2 [g#3,c#4,e4]@9 ~", K: "a3 ~", L: "d3 e3", M: "a3 f#3", N: "d3@8 e3@7 ~",
  O: "[a3,e4,a4,c#5] ~ [a3,e4,a4,c#5] ~ [a3,e4,a4,c#5] ~ [a3,e4,a4,c#5] ~ [a3,e4,a4,c#5] ~ [a3,e4,a4,c#5] ~ [g#3,e4,a4,c#5] ~ [g#3,e4,a4,c#5] ~", // A Amaj7
  P: "[f#3,f#4,a4,c#5] ~ [f#3,f#4,a4,c#5] ~ [f#3,f#4,a4,c#5] ~ [f#3,f#4,a4,c#5] ~ [f#3,f#4,a4,c#5] ~ [f#3,f#4,a4,c#5] ~ [e3,f#4,a4,c#5] ~ [e3,f#4,a4,c#5] ~", // F#m F#m7
  Q: "[d3,d4,f#4,a4] ~ [d3,d4,f#4,a4] ~ [d3,d4,f#4,a4] ~ [d3,d4,f#4,a4] ~ [d3,d4,f#4,a4] ~ [d3,d4,f#4,a4] ~ [d3,d4,f#4,a4] ~ [d3,d4,f#4,a4] ~", // D
  R: "[e3,e4,g#4,b4] ~ [e3,e4,g#4,b4] ~ [e3,e4,g#4,b4] ~ [e3,e4,g#4,b4] ~ [d5,f5]@2 [c#5,e5] [d5,f5] [c#5,e5]@2 [b4,d5] ~", // E Dm C#m Dm C#m Bm
  S: "[g2,g3] ~ [a2,a3]@12 ~@2", T: "[a4 g#4 g4@2, [c#4,e4]]/4", U: "[d4,f#4] [e4,g#4], b3",
  V: "[b3,d4,f#4] [c#4,e4,g#4]", W: "[d4,f#4,a4]@8 [e4,g#4,c#5]@7 ~", X: "[e4,g#4,c#5]@5 ~ [e4,g#4,c#5]@9 ~",
  Y: "[f#4,a4,c#5]@2 ~ [f#4,a4,c#5]@5", Z: "[e4,g#4,c#5]@4 ~@2 [e4,g#4,c#5]@9 ~", AA: "[[g2,g3] ~ [a2,a3]@17 ~@13]/2",
})).s("gm_string_ensemble_1").gain(0.33).pan(0.4)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1_2 = note(`<
  ~@23 A B C D C E F G H ~@4 I J K L M ~@8 N O P ~@3 A B C D C E F G H ~@4 I J K L I J K L I J K L Q@2
>`.pickRestart({
  A: "~@12 [e3,f#3] [g#3,a3,b3] [c#4,d4] [e4,f#4,g#4,a4,b4]", B: "[e5,a5,c#6] [c#5,f#5,a5]",
  C: "[d5,f#5,a5]@2 [e5,g#5,c#6] [e5,g#5,b5]", D: "[e5,a5,c#6] [f#5,a5,c#6]",
  E: "~ e4 a4 c#5 e5 c#5 a4 e4 ~ f#4 a4 c#5 f#5 c#5 a4 f#4", F: "~ f#4 a4 d5 f#5 d5 a4 f#4 ~ e4 g#4 b4 e5 b4 g#4 e4",
  G: "~ e5 a5 c#6 e6 c#6 a5 e5 ~ f#5 a5 c#6 f#6 c#6 a5 f#5", H: "~ f#5 a5 d6 f#6 d6 a5 f#5 ~ e5 g#5 b5 e6 b5 g#5 e5",
  I: "a3 c#4 e4 a4 c#5 e5 a5 c#6 e6 c#6 a5 e5 c#5 a4 e4 c#4",
  J: "a3 c#4 f#4 a4 c#5 f#5 a5 c#6 f#6 c#6 a5 f#5 c#5 a4 f#4 c#4",
  K: "a3 d4 f#4 a4 d5 f#5 a5 d6 f#6 d6 a5 f#5 d5 a4 f#4 d4",
  L: "b3 e4 g#4 b4 e5 g#5 b5 e6 [d6,f6]@2 [c#6,e6] [d6,f6] [c#6,e6]@2 d6@2, ~@14 b5 ~", // Dm C#m Dm C#m
  M: "[b3,d4,g4] ~ [c#4,e4,a4]@13 ~", N: "~@5 g#5 e5 c#5", O: "b4@4 ~ g#5 e5 c#5", P: "a4 c#5",
  Q: "[[d5,g5,b5] ~ [e5,a5,c#6]@17 ~@13]/2", // G A
})).s("gm_string_ensemble_1").gain(0.38).pan(0.7)

// other · recorder
const recorder = note("<~@41 [~@4 b4@4 ~@5 b4@3] [~@6 b4@3 ~@5 b4@2]!2 [~@3 b4 ~@4] ~@37>")
  .s("gm_recorder").gain(0.11).pan(0.8)

// other · recorder
const recorder_2 = note("<~@41 [~@4 a4@4 ~@5 a4@3] [~@6 a4@3 ~@5 a4@2]!2 [~@3 a4 ~@4] ~@37>")
  .s("gm_recorder").gain(0.11).pan(0.8)

// drums · kick
const kick = s("bd").struct("<~@13 A@5 B A C@4 A@16 ~@5 A@7 C@4 A@24 D ~>".pickRestart({
  A: "x!2", B: "x ~@2 x!2 ~@3", C: "x ~@2 x ~@4", D: "x!2 ~@6",
})).gain(0.44)

// drums · snare
const snare = s("sd").struct(`<
  ~@13 A@6 B ~@3 C A@3 D A@3 E A@3 F A@3 G ~@5 A@7 ~@3 H A B A B A D A F A@3 F A@3 G A@3 F A@3 G ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@3 x!2", C: "~@9 x!7", D: "~@2 x ~@2 x!3", E: "~@2 x ~@2 x ~@2", F: "~ x ~@2",
  G: "~ x!2 ~@5", H: "~@10 x!6",
})).gain(0.44)
// … 67 more lines

More by Electric Light Orchestra