Strudelify
Only The Lonely cover art

Black & White Night

Only The Lonely

Roy Orbison

KeyF majorTempo122 bpm
0:00/0:00
// Only The Lonely — Roy Orbison
// 122 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 20, 4/4 at bar 21, 2/4 at bar 23, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 74 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(122/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 · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  A B@2 C@2 D E B E B F G@3 C@2 H@2 I J G@2 K L M N O P Q R B@2 D E@2 B@3 C@2 D E B E B F G@3 C@2 H@2 I J G@2 K L M N O
  P Q R ~@2 S T E B U@3
>`.pickRestart({
  A: "~@4 f4@3 ~ g4@4 a4@3 ~",
  B: "[c5,f5,a5] ~ [c5,f5,a5] ~ [c5,f5,a5] ~ [c5,f5,a5] ~ [c5,f5,a5] ~ [c5,f5,a5] ~ [c5,f5,a5] ~ [c5,f5,a5] ~", // F
  C: "[d5,g5,bb5] ~ [d5,g5,bb5] ~ [d5,g5,bb5] ~ [d5,g5,bb5] ~ [d5,g5,bb5] ~ [d5,g5,bb5] ~ [d5,g5,bb5] ~ [d5,g5,bb5] ~", // Gm
  D: "[d5,f5,bb5] ~ [d5,f5,bb5] ~ [d5,f5,bb5] ~ [d5,f5,bb5] ~ [d5,f5,bb5] ~ [d5,f5,bb5] ~ [d5,f5,bb5] ~ [d5,f5,bb5] ~", // Bb
  E: "[c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~", // C
  F: "[c5,f5,a5] ~@15", // F
  G: "[c5,f5,a5,c6] ~ [c5,f5,a5,c6] ~ [c5,f5,a5,c6] ~ [c5,f5,a5,c6] ~ [c5,f5,a5,c6] ~ [c5,f5,a5,c6] ~ [c5,f5,a5,c6] ~ [c5,f5,a5,c6] ~", // F
  H: "[c5,e5,g5,c6] ~ [c5,e5,g5,c6] ~ [c5,e5,g5,c6] ~ [c5,e5,g5,c6] ~ [c5,e5,g5,c6] ~ [c5,e5,g5,c6] ~ [c5,e5,g5,c6] ~ [c5,e5,g5,c6] ~", // C
  I: "[c5,e5,g5,c6] ~ [c5,e5,g5,c6] ~ [c5,e5,g5,c6] ~ [c5,e5,g5,c6] ~ [d5,f5,bb5,c6] ~ [d5,f5,bb5] ~ [d5,f5,bb5] ~ [d5,f5,bb5] ~", // C Bb
  J: "[d5,f5,bb5] ~ [d5,f5,bb5] ~ [d5,f5,bb5] ~ [d5,f5,bb5] ~ [c5,f5,a5,c6] ~ [c5,f5,a5,c6] ~ [c5,f5,a5,c6] ~ [c5,f5,a5,c6] ~", // Bb F
  K: "[c5,f5,a5,c6] ~@7 [f4,a4,c5] ~@2 [f4,a4,c5] ~ [f4,a4,c5] ~@2", L: "[f4,a4,c5] ~@15",
  M: "~@8 [eb4,a4,c5] ~@2 [eb4,a4,c5] ~ [eb4,a4,c5] ~@2", N: "[eb4,c5] ~@7, a4 ~@15",
  O: "~@8 [f4,bb4,d5] ~@2 [f4,bb4,d5] ~ [f4,bb4,d5] ~@2", P: "[f4,bb4,d5] ~@15",
  Q: "~@8 [g4,b4,d5] ~@2 [g4,b4,d5] ~ [g4,b4,d5] ~@2", R: "[g4,c5,e5] ~@15",
  S: "[bb3,bb4]@4 [a3,a4]@4 [d5,f5,bb5] ~ [d5,f5,bb5] ~ [d5,f5,bb5] ~ [d5,f5,bb5] ~", // Bb A Bb
  T: "[d5,f5,bb5] ~ [d5,f5,bb5] ~ [d5,f5,bb5] ~ [d5,f5,bb5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~", // Bb C
  U: "[[c5,f5,a5] ~ [c5,f5,a5] ~ [c5,f5,a5] ~ [c5,f5,a5]@27 ~@15]/3", // F
})).s("gm_epiano2").gain(0.22)

// chords · vibraphone
const vibraphone = note(`<
  A B@2 C@2 D E F G F ~@13 H@2 I@2 J@2 K ~@5 A B@2 C@2 D E F G F ~@13 H@2 I@2 J@2 L@2 ~@4 A M@3
>`.pickRestart({
  A: "~ [f4,a4] [g4,bb4] [a4,c5]", B: "[a4@2 [c4,a4] ~ c4 ~ [c4,a4]@13 ~ [f4,a4]@4 [g4,bb4]@4 [a4,c5]@4, c4 ~@31]/2",
  C: "[[d4,bb4]@5 ~ [d4,bb4]@13 ~ [f4,bb4]@4 [g4,bb4]@4 [a4,bb4]@3 ~]/2", // Gm Bb5 Gm Bbmaj7
  D: "a4@2 g4@2 f4 ~ [f4,bb4]@8 bb4 [f4,g4,bb4], bb4@5 ~@11", E: "[e4,bb4]@7 ~ [e4,bb4]@2 ~ [f4,bb4]@2 [g4,bb4] ~@2",
  F: "[g4,bb4] [f4,a4]@7", G: "~@8 [e4,bb4]@3 [f4,bb4]@2 g4@2 ~, ~@13 bb4 ~@2", H: "[[f4,a4,c5,f5]@7 ~]/2",
  I: "[[f4,a4,c5,eb5]@27 ~@5]/2", J: "[[f4,bb4,d5]@22 ~@2 [g4,b4,d5] ~@2 [g4,b4,d5] ~ [g4,b4,d5] ~@2]/2",
  K: "[g4,c5,e5]", L: "[[g4,c5,e5]@3 ~]/2", M: "[a4@2 [c4,a4] ~ c4 ~ [c4,a4]@31 ~@11, c4 ~@47]/3",
})).s("gm_vibraphone").gain(0.32)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W X W Y Z AA AB B A AC AD AE AF M AG AH AI AJ AK AL AM AN J K L M N O P
  Q R S T U V W X W Y Z AA AB ~@2 AO AP AQ AR AS@3
>`.pickRestart({
  A: "f2@4 a2 ~ c3 ~ c2@2 f2@2 a2@2 c3 ~", B: "f2@4 a2@2 c3 ~ c2@2 f2@2 a2@2 c3 ~",
  C: "g2@3 ~ bb2@2 d3@2 d2@2 g2@2 bb2@2 d3@2", D: "g2@4 bb2 ~ d3@2 d2@2 g2@2 bb2@2 d3 ~",
  E: "bb1@4 d2@2 f2@2 f1@2 bb1@2 d2@2 f2 ~", F: "c2@4 e2@2 g2 ~ g1@2 c2@2 e2@2 g2 ~",
  G: "f2@4 a2@2 c3@2 c2 ~ f2@2 a2@2 c3 ~", H: "c2@4 e2@2 g2 ~ g2@2 e2 ~ c2@2 e2 ~",
  I: "f2@4 a2 ~ c3@2 c2@2 f2@2 a2@2 c3 ~", J: "f1@3 ~@13", K: "f2@3 ~ a2 ~ c3 ~ c2@2 f2@2 a2 ~ c3 ~",
  L: "f2@4 a2 ~ c3 ~ c2 ~ f2@2 a2@2 c3 ~", M: "f2@4 a2 ~ c3 ~ c2@2 f2@2 a2 ~ c3 ~",
  N: "g2@3 ~ bb2 ~ d3 ~ d2 ~ g2 ~ bb2 ~ d3@2", O: "g2@3 ~ bb2 ~ d3@2 d2@2 g2@2 bb2 ~ d3 ~",
  P: "c2@4 e2 ~ g2 ~ g1 ~ c2@2 e2 ~ g2 ~", Q: "c2@4 e2 ~ g2@2 g1 ~ c2@2 e2 ~ g2 ~", R: "c2@4 e2@3 ~ bb1@4 d2@3 ~",
  S: "bb1@4 d2@3 ~ f2@3 ~ a2 ~ c3 ~", T: "c2@2 f2@2 a2 ~ c3 ~ f2@3 ~ a2 ~ c3 ~",
  U: "c2@2 f2@2 a2 ~ c3 ~ f2@3 ~ a2 ~ c3@2", V: "f1@2 ~@6 f1 ~@2 f1@2 f1 ~@2", W: "f1 ~@7", X: "~@8 f1@2 ~ f1 ~ f1 ~@2",
  Y: "~@8 bb1@2 ~ bb1 ~ bb1 ~@2", Z: "bb1 ~@7", AA: "~@8 g1@2 ~ g1@2 g1 ~@2", AB: "c2 ~@7",
  AC: "bb1@4 d2 ~ f2 ~ d2@2 bb1@2 d2 ~ f2 ~", AD: "c2@4 e2 ~ g2 ~ c2@4 e2@2 g2 ~",
  AE: "c2@4 e2 ~ g2 ~ c2@2 e2 ~ g2@2 e2 ~", AF: "f2@3 ~ a2 ~ c3 ~ c2 ~ f2 ~ a2 ~ c3 ~",
  AG: "f2@3 ~ a2 ~ c3 ~ c2 ~ f2@2 a2 ~ c3 ~", AH: "g2@3 ~ bb2 ~ d3@2 d2 ~ g2@2 bb2@2 d3@2",
  AI: "g2@3 ~ bb2 ~ d3 ~ d2 ~ g2@2 bb2@2 d3 ~", AJ: "bb1@3 ~ d2 ~ f2@2 d2@2 bb1@2 d2@2 f2 ~",
  AK: "c2@4 e2 ~ g2 ~ c2@4 e2 ~ g2 ~", AL: "f2@4 a2 ~ c3@2 a2@2 f2@2 a2@2 c3 ~",
  AM: "c2@4 e2 ~ g2@2 c2@2 e2@2 g2 ~ e2 ~", AN: "f2@3 ~ a2 ~ c3 ~ c2@2 f2@2 a2@2 c3 ~", AO: "~@8 bb1@4 d2 ~ f2 ~",
  AP: "d2@2 bb1@2 d2@2 f2 ~ c2@4 e2 ~ g2 ~", AQ: "c2@2 e2 ~ g2@2 e2 ~ c2@4 e2@2 g2 ~",
  AR: "f2@4 a2 ~ c3@2 c2 ~ f2@2 a2 ~ c3 ~", AS: "[f2@4 a2@2 f1@35 ~@7]/3",
})).s("gm_acoustic_bass").gain(0.48)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note("<~@22 A B C D E F G H I J K L M ~@22 A B C D E F G H ~@9>".pickRestart({
  A: "~@8 [a5,c6] ~@2 [a5,c6] ~ [a5,c6] ~@2", B: "[a5,c6]@3 ~@13", C: "~@8 [a5,eb6] ~@2 [a5,eb6] ~ [a5,eb6] ~@2",
  D: "[a5,eb6] ~@7", E: "~@8 [bb5,d6] ~@2 [bb5,d6] ~ [bb5,d6] ~@2", F: "[bb5,d6]@3 ~@13",
  G: "~@8 [b5,d6] ~@2 [b5,d6] ~ [b5,d6] ~@2", H: "[c6,e6] ~@7", I: "~@6 f6@7 ~ c6 ~", J: "eb6 c6@11 ~@4, ~ d6 ~@14",
  K: "~@8 bb5@7 [c6,d6]", L: "e6 ~@11 c5@4", M: "c6@15 ~",
})).s("gm_synth_strings_1").gain(0.23)

// drums · kick
const kick = s("bd").struct("<~ A@9 B A@11 C B D B D B D B A@15 B A@11 C B D B D B D B ~@2 E F@3 G ~@2>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x", C: "x ~@7 x ~@2 x ~ x ~@2", D: "~@8 x ~@2 x ~ x ~@2", E: "x ~ x ~ x ~@2 x",
  F: "x ~@3 x ~@2 x", G: "x ~@2 x ~@4",
})).gain(0.71)

// drums · snare
const snare = s("sd").struct(`<
  ~ A@9 B A@10 C D B E B E B E B A@15 B A@10 C D B E B E B E B ~@2 F G@3 H ~@2
>`.pickRestart({
  A: "~@3 x ~@2 x ~", B: "x", C: "~@3 x ~@3 x", D: "x ~@7 x ~@2 x ~ x ~@2", E: "~@8 x ~@2 x ~ x ~@2", F: "~@7 x",
  G: "~@2 x ~@4 x", H: "~@2 x!2 ~@4",
})).gain(0.71)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~ A@9 ~ A@10 B ~@8 A@15 ~ A@10 B ~@10 C@4 ~@3>".pickRestart({
  A: "~ x ~@2", B: "~ x ~ x", C: "~@3 x",
})).gain(0.29)

// drums · hihat
const hihat = s("hh").struct("<~ A@9 ~ A@11 B C ~@6 A@15 C A@11 B C ~@6 D@2 E A@3 F ~@2>".pickRestart({
  A: "x!8", B: "x!4", C: "x", D: "~ x ~ x", E: "x ~ x ~ x!4", F: "x!4 ~@4",
})).gain(0.71)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@23 [~ x!3] [x!4]!6 ~@28 [~ x!3] [x!4]!6 ~@9>").gain(0.43)

// drums · ride
const ride = s("rd").struct("<~@71 [~@3 x ~@4] ~@2>").gain(0.71)

stack(epiano2, vibraphone, bass, synth_strings_1, kick, snare, snare_soft, hihat, hihat_soft, ride)

More by Roy Orbison