Strudelify

Twilight String Arrangement

Electric Light Orchestra

KeyF majorTempo128 bpm
0:00/0:00
// Twilight String Arrangement — Electric Light Orchestra
// 128 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 24, 4/4 at bar 25) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5043228; license: https://creativecommons.org/publicdomain/zero/1.0/
// 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(128/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 · string ensemble 1 · "Violins"
const string_ensemble_1 = note(`<
  A@8 B@8 C@8 D E F G H I J K@3 L@2 M N K@4 ~@2 O P Q R E F G H S T U V W X Y Z AA AB AC AD V AE AF AG U AE AF AG AH AI
  AJ AK AH AI AJ AK AL@2
>`.pickRestart({
  A: "[~@4 g4 c5 e5 f5@13 g4 c5 e5 f5@13 [c2,g4] [c2,c5] [c2,e5] c2 c2!8 c2!4 [c2,g4] [c2,c5] [c2,e5] c2 c2!8, ~@39 f5@13 ~@3 f5@5 e5@4]/8", // C5 C C5 C
  B: "[c2!4 c3!2 ~ c3 c3!2 ~ c3!3 ~ c3 c3!2 ~ c3 bb2!2 ~ bb2 bb2!2 ~ bb2!3 ~ bb2 bb2!2 ~ bb2 ab2!2 ~ ab2 ab2!2 ~ ab2!3 ~ ab2 ab2!2 ~ ab2 [c3,g4] [c3,c5] e5 c3 c3!2 ~ c3!3 ~ c3, ~@4 c5@16 f5@16 ab5@16 ~@3 f5@9]/8", // C5 C
  C: "[c3!2 ~ c3!3 ~ c3 c3!2 ~ c3!3 ~ c3 c3!2 ~ c3 bb2!2 ~ bb2 bb2!2 ~ bb2!3 ~ bb2 bb2!2 ~ bb2 ab2!2 ~ ab2 ab2!2 ~ ab2!3 ~ ab2 ab2!2 ~ ab2 [c3,g4] [c3,c5] e5 c3 c3!2 ~ c3!3 ~ c3, ~@4 c5@16 f5@16 ab5@16 ~@3 f5@5 f5@4]/8", // C5 C
  D: "a2!2 f2!2 d2!2 c2!2", E: "[f2,a4] a4@2 f2!2 a4@2 [f2,a4], ~ f2 ~ a4@2 f2 ~@2",
  F: "[g2,b4] b4@2 g2!3 ~ [g2,b4], ~ g2 ~ b4@4 ~", G: "[c3,c5] c5@2 c3!2 c5@2 [c3,c5], ~ c3 ~ c5@2 c3 ~@2",
  H: "[f2,b4] a4@2 f2!3 ~ [f2,a4], ~ f2 ~ a4@2 ~@3", I: "[g2,g5]!2 g5 [g2,g5] [f2,f5]!2 f5 [f2,f5]",
  J: "[e2,e5]!2 e5 [e2,e5] [d2,d5]!2 d5 [d2,d5]", K: "c2!2 ~ c2!3 ~ c2", L: "f2!2 ~ f2!3 ~ f2", M: "g2!2 ~ g2!3 ~ g2",
  N: "b1!2 ~ b1 c2!2 ~ c2", O: "~ c5!3, a2", P: "e5!4, ab2", Q: "a5!4, g2", R: "[gb2,c6]",
  S: "g2!2 ~ g2 f2!2 ~ f2, g5 f5", T: "e2!2 ~ e2 d2!2 ~ d2, e5 d5", U: "c2!2 ~ c2!3 ~ c2, c5",
  V: "c2!2 ~ c2!3 ~ c2, e5", W: "f2!2 ~ f2!3 ~ f2, a5", X: "f2!2 ~ f2!3 ~ f2, ab5", Y: "d2!2 ~ d2!3 ~ d2, d5",
  Z: "f2!2 ~ f2!3 ~ f2, bb4", AA: "g2!2 ~ g2!3 ~ g2, b4", AB: "b1!2 ~ b1!3 ~ b1, d5",
  AC: "[c2,f5] c2 ~ c2!3 ~ c2, ~ eb5@7", AD: "c2!2 ~ c2!3 ~ c2, eb5@3 ~", AE: "e2!2 ~ e2!3 ~ e2, e5",
  AF: "f2!2 ~ f2!3 ~ f2, f5", AG: "f2!2 ~ f2!3 ~ f2, d5", AH: "c2!2 ~ c2!3 ~ c2, e4 f4 g4 c4",
  AI: "bb2!2 ~ bb2!3 ~ bb2, e4 f4 g4 c4", AJ: "a2!2 ~ a2!3 ~ a2, e4 f4 g4 c4", AK: "ab2!2 ~ ab2!3 ~ ab2, e4 f4 g4 c4",
  AL: "[g4 c5 e5 f5@11 ~@2]/2",
})).s("gm_string_ensemble_1").gain(0.25)

// other · string ensemble 1 · "Violins"
const string_ensemble_1_2 = note(`<
  A@8 ~@30 B@4 C@2 D@3 E F G H F I J K L M L F@2 G N O P D Q R S T H F S G F H E U@2 V@2 C@2
>`.pickRestart({
  A: "[~@4 g3 c4 e4 f4@13 g3 c4 e4 f4@13 g3 c4 e4 f4@13 g3 c4 e4 f4@5 e4@4]/8", B: "[g4 c5 e5 f5@13]/2",
  C: "[g3 c4 e4 f4@11 ~@2]/2", D: "c4!2", E: "c4", F: "f4", G: "g4", H: "e4", I: "g4!4 f4!4", J: "e4!4 d4!4", K: "e4!2",
  L: "ab4", M: "a4", N: "d5", O: "f4 eb4@7", P: "eb4@3 ~", Q: "e4@4 ~ e4 d4 e4", R: "f4 e4 d4 c4", S: "d4", T: "g4!2",
  U: "g4 c4", V: "g4 c5",
})).s("gm_string_ensemble_1").gain(0.4)

// other · string ensemble 1 · "Violins" · soft notes
const string_ensemble_1_soft = note("<~@8 A@8 B@8 C D E F D G H I@2 J@2 K L@2 ~@44>".pickRestart({
  A: "[~ g4@4 bb4@4 eb5@4 g4@3]/8", B: "[~ g4@4 bb4@4 eb5@4 g4@2 g4]/8", C: "f4 g4 e4 f4 g4 a4 b4 c5", D: "f4", E: "g4",
  F: "e4", G: "g4!4 f4!4", H: "e4!4 d4!4", I: "[[d4,g4] [c4,e4]@2 ~]/2", J: "~ d4", K: "d4 ~",
  L: "[g4@10 ~ c5!2 b4@2 c5]/2",
})).s("gm_string_ensemble_1").gain(0.2)

// other · string ensemble 1 · "Violas"
const string_ensemble_1_3 = note(`<
  A@8 ~@30 B@4 C@2 D E F G H I J H K L M ~ N H O@3 P ~@2 M Q N P M Q N P R S T U V M W@2 C@2
>`.pickRestart({
  A: "[~@4 g3 c4 e4 f4@13 g3 c4 e4 f4@13 g3 c4 e4 f4@13 g3 c4 e4 f4@5 e4@4]/8", B: "[g3 c4 e4 f4@13]/2",
  C: "[g3 c4 e4 ab4@11 ~@2]/2", D: "a3!2", E: "ab3!2", F: "g3!2", G: "gb3", H: "f4", I: "b4", J: "g4", K: "g4!4 f4!4",
  L: "e4!4 d4!4", M: "c4!2", N: "f4 e4 d4 c4", O: "d4@4 d4 e4 f4 e4", P: "d4", Q: "c4@4 ~ e4 d4 e4", R: "c4", S: "bb3",
  T: "a3", U: "ab3", V: "c4 g3", W: "c4 g4",
})).s("gm_string_ensemble_1").gain(0.4)

// other · string ensemble 1 · "Violas" · soft notes
const string_ensemble_1_soft_2 = note("<~@8 A@8 B@8 C D E F D G H I@2 ~@3 J K ~@44>".pickRestart({
  A: "[~ f4@4 bb3@4 c5@4 c4@3]/8", B: "[~ f4@4 bb3@4 c5@4 c4@2 c4]/8", C: "a4!2 f4!2 d4!2 c4!2", D: "f4", E: "b4",
  F: "g4", G: "g4!4 f4!4", H: "e4!4 d4!4", I: "[c4 c4@2 ~]/2", J: "b3", K: "~@3 c5!2 b4@2 c5",
})).s("gm_string_ensemble_1").gain(0.2)

// other · string ensemble 1 · "Violoncellos"
const string_ensemble_1_4 = note(`<
  A@8 B C D E F G H C I@3 E F G H C J K L C K M N C@2 K O P L Q C@4 R@2 S T U V K L C K M N C@2 K@2 W K L X C@3 Y K@2 C
  Y K@2 C E Z G C E Z G R@2
>`.pickRestart({
  A: "[~ c4@4 c4@4 c4@4 c4@3]/8", B: "~@4 c3!4", C: "c3!8", D: "c3!4 bb2!4", E: "bb2!8", F: "bb2!4 ab2!4", G: "ab2!8",
  H: "ab2!4 c3!4", I: "[c3!4 c4@16 bb2!4]/3", J: "a3!2 f3!2 d3!2 c3!2", K: "f3!8", L: "g3!8", M: "g3!4 f3!4",
  N: "e3!4 d3!4", O: "f3!4 d3!4", P: "d3!4 f3!4", Q: "b2!3 c3!5", R: "[f3 e3 c3 ab2@11 ~@2]/2", S: "a2", T: "ab2",
  U: "g2", V: "gb2", W: "d3!8", X: "b2!8", Y: "e3!8", Z: "a2!8",
})).s("gm_string_ensemble_1").gain(0.25)

stack(
  string_ensemble_1, string_ensemble_1_2, string_ensemble_1_soft, string_ensemble_1_3, string_ensemble_1_soft_2,
  string_ensemble_1_4
)

More by Electric Light Orchestra