Strudelify

One Headlight

The Wallflowers

KeyD♭ majorTempo110 bpm
0:00/0:00
// One Headlight — The Wallflowers
// 110 bpm, 4/4, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 130 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/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.

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@5 A B C D A E C D A B C D A E C D A B C D A E C D A B F D A G H I J K L M J E L N O A B C D A E C D A B C D A E C D
  A B C D A P H I J K L Q J K L N O A B C D A E C D A B C D A E C D A B C D A E C D A P H I J K L Q J K L N O R K L Q J
  K L N O A B S T@2
>`.pickRestart({
  A: "g1 ~ g1@2 g1 ~ g1@2 g1 ~ g1@2 g1 ~ g1@2", B: "d2 ~ d2@2 d2 ~ d2@2 d2 ~ d2@2 d2 ~ e2@2",
  C: "gb1 ~ gb1@2 gb1 ~ gb1@2 gb1 ~ gb1@2 gb1 ~ gb1@2", D: "b1 ~ b1@2 b1 ~ b1@2 a1 ~ a1@2 a1 ~ a1@2",
  E: "d2 ~ d2@2 d2 ~ d2@2 d2 ~ d2@2 d2 ~ b1@2", F: "gb2 ~ gb2@2 gb2 ~ gb2@2 gb2 ~ gb2@2 gb2 ~ gb2@2",
  G: "g1 ~ g1@2 g1 ~ g1@2 g1 ~ gb1@2 g1 ~ gb1@2", H: "gb1 ~ gb1@2 gb1 ~ gb1@2 gb1 ~ gb1@2 gb1 ~ e1@2",
  I: "gb1 ~ gb1@2 gb1@2 e1@2 gb1@2 e1@2 gb1@2 g1@2", J: "g1 ~ g1@2 g1 ~ g1@2 g1 ~ g1@2 g1 ~ b1@2",
  K: "d2 ~ d2@2 d2 ~ d2@2 d2 ~ d2@2 d2@2 b1@2", L: "e1!2 gb1!2 g1!2 gb1 e1",
  M: "a1 ~ a1@2 a1 ~ a1@2 a1 ~ b1@2 a1@2 gb1@2", N: "a1 ~ a1@2 a1 ~ a1@2 a1 ~ a1@2 a1 ~ a1@2",
  O: "a1 ~ a1@2 a1 ~ a1@2 d2@2 a1@2 g1@2 a1@2", P: "g1 ~ g1@2 g1 ~ g1@2 g1@2 gb1@2 g1@2 gb1@2",
  Q: "a1 ~ a1@2 a1 ~ a1@2 a1@2 b1@2 a1@2 gb1@2", R: "g1 ~ g1@2 g1 ~ g1@2 g1 ~ g1@2 g1@2 b1@2",
  S: "gb2 ~ gb2@2 gb2 ~ gb2@2 gb2 ~ gb2@2 gb2 ~ a2@2", T: "[b2@3 ~]/2",
})).s("gm_electric_bass_finger").gain(0.41)

// chords · electric guitar clean · "E Guitar"
const electric_guitar_clean = note("<~ A B@3 ~@3 C@5 ~@8 D E F G ~@105>".pickRestart({
  A: "d3 ~ g3 a3@5, d4, ~ d3@7", B: "[d3 ~ g3 a3@17 g3 gb3 ~ a2, d4, ~ d3@19 ~@2 d3@2]/3",
  C: "[e4@4 d4@2 ~@2 [a3,b3]@2 a3@2 g3@2 b3@14 d4@2 ~ g3 ~@10 e3@2 d3@2 e4@12 f4 gb4 ~@2 d4@18, d4 ~@29 gb3@12 ~@38]/5", // Asus2
  D: "~ d4@15, [g3,b3]", E: "[gb4,a4]@6 gb4 ~", F: "gb4@2 e4@10 gb4@3 ~, [bb3,db4]@3 ~", G: "[d4,e4] d4@7, b3",
})).s("gm_electric_guitar_clean").gain(0.29).pan(0.7)

// chords · electric guitar muted · "E Guitar 2"
const electric_guitar_muted = note(`<
  ~@3 A@2 B C D E B C D F B C D F B C D F B C D F B C D F B C D F B@2 G@2 B H I J B H I J K B C D F B C D F B C D F B C
  D F B C D F B@2 G@2 B H I J B H I J K B C D F B C D F B C D F B C D F B C D F B C D F B@2 G@2 B H I J B H I J K B H I
  J B H I J K B C D ~@2
>`.pickRestart({
  A: "d3 ~ d3!3 ~ d3!3 ~ d3!3 ~ d3!2", B: "[g2,d3] ~ [g2,d3]!3 ~ [g2,d3]!3 ~ [g2,d3]!3 ~ [g2,d3]!2",
  C: "[d3,a3] ~ [d3,a3]!3 ~ [d3,a3]!3 ~ [d3,a3]!3 ~ [d3,a3]!2", // D5
  D: "[db3,gb3] ~ [db3,gb3]!3 ~ [db3,gb3]!3 ~ [db3,gb3]!3 ~ [db3,gb3]!2", // Gb5
  E: "[b2,gb3] ~ [b2,gb3]!2 [b2,gb3]@2 [b2,gb3]!2 [a2,e3] ~ [a2,e3]!2 [a2,e3]@2 [a2,e3]!2", // B5 A5
  F: "[b2,gb3] ~ [b2,gb3] ~ [b2,gb3]@2 [b2,gb3]!2 [a2,e3] ~ [a2,e3] ~ [a2,e3]@2 [a2,e3]!2", // B5 A5
  G: "[gb2,db3] ~ [gb2,db3]!3 ~ [gb2,db3]!3 ~ [gb2,db3]!3 ~ [gb2,db3]!2", // Gb5
  H: "[a2,d3] ~ [a2,d3]!3 ~ [a2,d3]!3 ~ [a2,d3]!3 ~ [a2,d3]!2", // D5
  I: "[b2,e3] ~ [b2,e3]!3 ~ [b2,e3]!3 ~ [b2,e3]!3 ~ [b2,e3]!2", // E5
  J: "[a2,e3] ~ [a2,e3]!3 ~ [a2,e3]!3 ~ [a2,e3]!3 ~ [a2,e3]!2", K: "[a2,e3] ~ [a2,e3]!3 ~ [a2,e3]!3 ~ [a2,e3]!3 ~@3",
})).s("gm_electric_guitar_muted").gain(0.22)

// chords · percussive organ · "Organ"
const percussive_organ = note(`<
  ~@9 A@4 B@4 C@3 D E@4 B@4 C@3 D F@2 G@2 H I J@3 I K L@2 A@4 B@4 C@3 D E@4 B@4 F@2 G@2 H I J@3 I K L@2 A@4 B@4 C@3 D
  E@4 B@8 F@2 G@2 H I J@3 I K M@2 H I J@3 I K M@2 C@3 N ~
>`.pickRestart({
  A: "[[g5,b5,g6]@16 [gb5,gb6] ~@15 [bb5,db6]@16 [b5,d6]@8 ~@8, d6 ~, f5 ~@15 a5@16 ~@32, ~@9 gb6@19 ~@4, ~@9 gb5@15 ~@8]/4", // G Gb Bbm Bm
  B: "[g5@4 ~@4 db6@4 [b5,b6] [a5,a6] [g5,g6] [gb5,gb6], [d5,d6] db5, ~@2 gb5@5 ~, ~@48 [f5,g5] ~@15]/4", // B A G Gb D Fsus2
  C: "[g5 ~ [db5,db6], [d5,d6]@2 ~, ~ gb5@2]/3", D: "b5 a5, [d5,gb5]",
  E: "[[g5,b5,g6]@16 [gb5,gb6] ~@15 [bb5,db6]@16 [b5,d6]@8 ~@8, d6 ~, ~ a5 ~@2, ~@9 gb6@19 ~@4, ~@9 gb5@15 ~@8]/4", // G Gb Bbm Bm
  F: "[b5@2 a5 b5, [g4,g5,d6]]/2", G: "[~ gb6, [gb4,gb5,bb5,db6]]/2", H: "[g4,g5,b5,d6]", I: "[d5,a5,d6,gb6]",
  J: "[[e4,g5,b5]@4 [a5,db6]@3 ~ [g4,g5,d6]@4, e6@7 b5@5, ~ a4 ~]/3", K: "[e4,b5,e6,g6]",
  L: "[db6@5 ~ db6 b5, a4@31 ~, ~@5 d6@2 ~]/2", M: "[db6@5 ~ db6 b5, a4, ~@5 d6@2 ~]/2", N: "[b5,d6,gb6]",
})).s("gm_percussive_organ").gain(0.1)

// chords · percussive organ · "Organ" · soft notes
const percussive_organ_soft = note(`<
  ~@8 A ~ B ~ C ~ D A ~@2 D ~@3 B ~ C ~ D A ~@2 D ~@13 E@3 B ~ C ~ D A ~@2 D ~@3 B ~ C ~ D A ~@12 E@3 B ~ C ~ D A ~@2 D
  ~@3 B ~ C ~ D A ~@2 D A ~@12 F@2 ~@7 F@2 ~ D G ~@2
>`.pickRestart({
  A: "~@15 [e4,f4,g4,a4,b4,c5,d5,e5]", B: "~ [g5,g6] ~@14", C: "~ [a5,db6,e6]", D: "~ g5 ~@14",
  E: "[a5@24 ~@7 [e4,f4,g4,b4,c5,d5,e5] ~@16, ~@31 a4@2 ~@15]/3", F: "[a5@3 ~]/2", G: "~@15 [e4,f4,g4]",
})).s("gm_percussive_organ").gain(0.05)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@2 A B@7 C B C B@5 C B D B@3 D B@3 D B@7 E B@8 F B@3 C B@3 D B@3 G B@3 D B@5 C B H C@2 B D B D B I J B@3 K B@3 L B@3
  C B@3 K B@3 M B@3 N B@2 I O D B@4 C@2 B P B@3 P B@5 I@2 Q ~@2
>`.pickRestart({
  A: "~@12 x!2 ~@2", B: "~ x ~ x", C: "~@2 x ~@3 x!2", D: "~@4 x ~@7 x ~ x!2", E: "~@4 x ~@3 x ~ x ~ x!4",
  F: "~@4 x ~ x!3 ~@7", G: "~@4 x ~@3 x ~@2 x!2 ~@3", H: "~ x!2 ~ x!2 ~@2", I: "x!4", J: "x!3 ~",
  K: "~@4 x ~@3 x ~ x ~ x ~ x!2", L: "~ x ~@2", M: "x ~@3 x ~@3 x ~ x ~ x ~ x!2", N: "~@4 x ~@3 x ~@2 x!3 ~@2",
  O: "x ~ x!3 ~@3", P: "~@4 x ~@3 x ~@3 x ~ x!2", Q: "x ~@3 x ~@3 x ~ x ~@4 x",
})).gain(0.38)

// drums · low tom
const low_tom = s("lt").struct("<~@45 A ~@23 A ~@8 B ~@7 A ~@15 B ~@3 C ~ D ~ C ~@16 E ~@2>".pickRestart({
  A: "~@12 x ~ x!2", B: "~@7 x", C: "~@6 x!2", D: "~@14 x!2", E: "~@13 x!2 ~",
})).gain(0.43)

// drums · hihat
const hihat = s("hh").struct("<~ [x ~@3 x ~@3 x ~@3 x ~ x!2] [x ~@3 x ~@3 x ~@2 x!2 ~@3] [x!8]!125 ~@2>").gain(0.38)

// drums · open hat
const open_hat = s("oh").struct("<[x!4] ~ [~@7 x] ~@127>").gain(0.43)

// drums · high tom
const high_tom = s("ht").struct("<~@45 A ~@11 B ~@20 C ~@7 D ~@15 E ~@3 F ~@3 F ~@16 C ~@2>".pickRestart({
  A: "~@10 x!2 ~@4", B: "~@14 x!2", C: "~@3 x", D: "~@8 x ~ x!2 ~@4", E: "~@15 x", F: "~@5 x ~@2",
})).gain(0.38)

// drums · crash
const crash = s("cr").struct(`<
  ~@9 A ~@3 A ~@2 A@2 ~@3 A ~@3 A ~@3 A ~@2 A@2 ~@3 A B A@2 B A@2 ~@2 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~ A ~ A@3 ~ A ~@4
  A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A@5 ~ A@2 ~ A ~@3 A ~@7 A ~
>`.pickRestart({
  A: "x", B: "x ~@6 x",
})).gain(0.43)

stack(
  bass, electric_guitar_clean, electric_guitar_muted, percussive_organ, percussive_organ_soft, kick, snare, low_tom,
  hihat, open_hat, high_tom, crash
)

More by The Wallflowers