Strudelify

Don't Bring Me Down

Jeff Lynne

KeyA majorTempo117 bpm
0:00/0:00
// Don't Bring Me Down — Jeff Lynne
// 117 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5277747; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 127 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(117/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
const piano = note(`<
  ~@2 A B C B C B C B C B D E F G@2 H I B C B C B C B D E F G@2 H I J K L M L M L M N O B C B C B C B D E F G@2 H I B C
  B C B C B D E F G@2 H I J K L M L M L M N O ~@5 E F G@2 H I B P L M L M L M N O B C B C B C B D E F G@2 H I B C B D E
  F G@2 H I Q
>`.pickRestart({
  A: "~@5 [e4,e5] [d4,d5] [c4,c5]", B: "[a3,a4] [c#4,a4]!7", C: "[c#4,a4]!5 [e4,e5] [d4,d5] [c4,c5]",
  D: "[c#4,a4]!5 [a3,a4] [c4,c5] [d4,d5]", E: "d4!2 [d4,d5]!6, [a4,d5] ~@3", F: "d4!5 e4 d4 c4, d5 a4 d5 a4",
  G: "[a3!2 [a3,c#5]!3 [a3,e4] [a3,c#5] a3 a3 [a3,c#5]!6 [c4,c#5], ~@7 e5@2 ~@7]/2", H: "[c5,e5,g5]!4 ~ [c5,e5,g5]!3",
  I: "[b4,e5,g5]!3 [a4,e5,f#5] ~ [e4,e5] [d4,d5] [c4,c5]", J: "a4 ~@3", K: "~@5 e3 f3 f#3",
  L: "f#2@2 [f#4,a4]@2 f#2 [f#4,a4]@2 f#2 [f#4,a4]@2 f#2 [f#4,a4]@2 f#2 [f#4,a4]@2", // F#m
  M: "a2@2 [a4,c#5]@2 a2 [a4,c#5]@2 a2 [a4,c#5]@2 a2 [a4,c#5]@2 a2 [a4,c#5]@2", // A
  N: "e2 [e2,e4,g#4] e2!2 [e2,e4,g#4]!2 e2!2", O: "e2!4 [e2,e4,g#4] [e3,e4] [d3,d4] [c3,c4], [e4,g#4] ~@3",
  P: "[c#4,a4]!5 [e3,a4] [f3,a4] [f#3,a4]", Q: "[a3,a4]@15 ~",
})).s("gm_piano").gain(0.3)

// drums · kick
const kick = s("bd").struct("<[x ~@3 x!2 ~ x]!126 ~>").gain(0.3)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!126 ~>").gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<[x!8]!126 ~>").gain(0.3)

// drums · crash
const crash = s("cr").struct("<~@126 x>").gain(0.3)

stack(piano, kick, snare, hihat, crash)