Strudelify
bad guy cover art

2019 · WHEN WE ALL FALL ASLEEP, WHERE DO WE GO?

bad guy

Billie Eilish

KeyB♭ majorTempo135 bpm
0:00/0:00
// bad guy — Billie Eilish
// 135 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/5962901; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(135/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.

// other · violin · "Violin II"
const violin = note(`<
  ~@4 A B C ~ D E D E D E F G H I H I H J F G K@3 L K@2 M N ~@2 O@8 P Q R Q R Q S T P Q R Q R Q S T U@4 V@4 ~@2 W X@3 Y
  Z AA AB W X@3 Y Z AA AB AC
>`.pickRestart({
  A: "eb4 d4", B: "c4 bb3", C: "a3 ~@3", D: "bb4@2 bb4@2 ~ bb4 ~ bb4", E: "~ bb4 ~ bb4 ~ bb4 c5 ~",
  F: "a4@2 a4@2 ~ a4 ~ a4", G: "~ g4 gb4 ~@5", H: "g4@2 g4@2 ~ g4 ~ g4", I: "~ g4 ~ g4 ~ g4 a4 ~",
  J: "~ g4 ~ g4 ~ g4 c5 ~", K: "c4 ~ bb3 ~ d4 eb4!2 d4", L: "c4 ~ bb3 ~@5", M: "c4 ~ a3 ~ d4 eb4!2 d4",
  N: "d4 ~ a3 ~@5",
  O: "[~@7 g4@2 d5@4 g4@2 db5@2 d5@2 db5@2 bb4@2 g4@2 d5@4 g4@2 db5@2 d5@2 db5@2 bb4@2 g4@2 d5@4 g4@2 db5@2 d5@2 db5@2 bb4@2 g4@2 d5@4 g4@2 db5@2 d5@2 db5@2 bb4@2 c5@2 g5@4 c5@2 gb5@2 g5@2 gb5@2 eb5@2 c5@2 g5@4 c5@2 gb5@2 g5@2 gb5@2 eb5@2 d5@2 a5@4 d5@2 gb5@2 d5@4 c5@4 ~@7]/8",
  P: "~@7 g4@4 g4@4 ~", Q: "~ g4@2 ~@2 g4@2 ~@2 g4@2 ~@2 g4@2 ~", R: "~ g4@2 a4@2 ~@2 g4@4 g4@4 ~",
  S: "~ g4@2 c5@2 ~@2 a4@4 a4@4 ~", T: "~ a4@2 ~@2 a4@2 ~@2 g4@2 gb4@2 ~@3",
  U: "[~@7 c4@2 ~@2 bb3@2 ~@2 d4@2 eb4@2 eb4@2 d4@2 c4@2 ~@2 bb3@2 ~@2 d4@2 eb4@2 eb4@2 d4@2 c4@2 ~@2 bb3@2 ~@2 d4@2 eb4@2 eb4@2 d4@2 c4@2 ~@2 bb3@2 ~@3]/4",
  V: "[~@7 c4@2 ~@2 bb3@2 ~@2 d4@2 eb4@2 eb4@2 d4@2 c4@2 ~@2 bb3@2 ~@2 d4@2 eb4@2 eb4@2 d4@2 c4@2 ~@2 a3@2 ~@2 d4@2 eb4@2 eb4@2 d4@2 d4@2 ~@2 a3@2 ~@3]/4",
  W: "~@11 g4@2 d5@3", X: "~ g4@2 db5@2 d5@2 db5@2 bb4@2 g4@2 d5@3", Y: "~ g4@2 db5@2 d5@2 db5@2 bb4@2 c5@2 g5@3",
  Z: "~ c5@2 gb5@2 g5@2 gb5@2 eb5@2 c5@2 g5@3", AA: "~ c5@2 gb5@2 g5@2 gb5@2 eb5@2 d5@2 a5@3",
  AB: "~ d5@2 gb5@2 d5@4 c5@4 ~@3", AC: "~@9 [d4,d5]@2 [g3,g4]@4 ~",
})).s("gm_violin").gain(0.3)

// other · viola
const viola = note(`<
  ~@4 A B C ~@2 D ~ D E F G H E F E F E I G H J@3 K J@2 L M ~@6 N@2 ~@2 O P Q P Q P R S O P Q P Q P R S T@4 U@4 ~@6 V@2
  ~@3 W@2 X@5 Y
>`.pickRestart({
  A: "c4 bb3", B: "a3 g3", C: "gb3 ~@3", D: "~@3 bb3 ~ g3 c4 ~", E: "bb3@2 bb3@2 ~ bb3 ~ bb3",
  F: "~ bb3 ~ bb3 ~ g3 c4 ~", G: "c4@2 c4@2 ~ c4 ~ c4", H: "~ bb3 a3 ~@5", I: "~ bb3 ~ bb3 ~ bb3 c4 ~",
  J: "a3 ~ g3 ~ bb3 c4!2 bb3", K: "a3 ~ g3 ~@5", L: "gb3 ~ gb3 ~ bb3 c4!2 bb3", M: "gb3 ~ gb3 ~@5",
  N: "[~@3 c5@2 bb4@2 a4@12 a4 g4@7 ~@5, ~@20 ab4 ~@11]/2", O: "~@7 bb3@4 bb3@4 ~",
  P: "~ bb3@2 ~@2 bb3@2 ~@2 bb3@2 ~@2 bb3@2 ~", Q: "~ g3@2 c4@2 ~@2 bb3@4 bb3@4 ~", R: "~ bb3@2 c4@2 ~@2 c4@4 c4@4 ~",
  S: "~ c4@2 ~@2 c4@2 ~@2 bb3@2 a3@2 ~@3",
  T: "[~@7 a3@2 ~@2 g3@2 ~@2 bb3@2 c4@2 c4@2 bb3@2 a3@2 ~@2 g3@2 ~@2 bb3@2 c4@2 c4@2 bb3@2 a3@2 ~@2 g3@2 ~@2 bb3@2 c4@2 c4@2 bb3@2 a3@2 ~@2 g3@2 ~@3]/4",
  U: "[~@7 a3@2 ~@2 g3@2 ~@2 bb3@2 c4@2 c4@2 bb3@2 a3@2 ~@2 g3@2 ~@2 bb3@2 c4@2 c4@2 bb3@2 gb3@2 ~@2 gb3@2 ~@2 bb3@2 c4@2 c4@2 bb3@2 gb3@2 ~@2 gb3@2 ~@3]/4",
  V: "[~@7 c5@2 bb4@2 a4@12 a4 g4@7 ~, ~@24 ab4 ~@7]/2",
  W: "~ [d4,d5]@2 [db4,db5]@2 [d4,d5]@2 [db4,db5]@2 [d4,d5]@2 ~@5", // D Db D Db D
  X: "[~ [d4,d5]@2 [db4,db5]@2 [d4,d5]@2 [db4,db5]@2 [d4,d5]@2 ~@2 [d4,d5]@2 [db4,db5]@2 [bb3,bb4]@2 [db4,db5]@2 [d4,d5]@2 [db4,db5]@2 [bb3,bb4]@2 [c4,c5]@32 [d4,d5]@20 ~]/5", // D Db D Db D Db Bb Db …
  Y: "~@9 [gb3,a3]@2 [bb3,d4]@4 ~", // Gbm Bb
})).s("gm_viola").gain(0.3)

// other · cello · "Violoncello"
const cello = note(`<
  A B A B C D E F A B A B C D E F A B A B C D E F A B A G C D E F ~@2 H@8 ~@8 I@8 J@4 K@4 ~@2 L M N M O P Q R S M N M O
  P Q R T
>`.pickRestart({
  A: "g2@2 ~ g2 bb2 g2 ~ g2", B: "~ g2 ~ g2 bb2 g2 f2@2", C: "c3@2 ~ c3 eb3 c3 ~ c3", D: "~ c3 ~ c3 eb3 c3 g3@2",
  E: "d3@2 ~ d3 gb3 d3 ~ d2", F: "~ d2 ~ d2 ~@4", G: "~ g2 ~@6",
  H: "[~@7 g2@6 g2@2 bb2@2 g2@4 g2@4 g2@4 g2@2 bb2@2 g2@2 f2@4 g2@6 g2@2 bb2@2 g2@4 g2@4 g2@4 g2@2 bb2@2 g2@2 f2@4 c3@6 c3@2 eb3@2 c3@4 c3@4 c3@4 c3@2 eb3@2 c3@2 g3@4 d3@6 d3@2 gb3@2 d3@4 d2@4 d2@4 d2@3]/8",
  I: "[~@7 g2@4 ~@2 g2@2 bb2@2 g2@2 ~@2 g2@2 ~@2 g2@2 ~@2 g2@2 bb2@2 g2@2 f2@4 g2@4 ~@2 g2@2 bb2@2 g2@2 ~@2 g2@2 ~@2 g2@2 ~@2 g2@2 bb2@2 g2@2 f2@4 c3@4 ~@2 c3@2 eb3@2 c3@2 ~@2 c3@2 ~@2 c3@2 ~@2 c3@2 eb3@2 c3@2 g3@4 d3@4 ~@2 d3@2 gb3@2 d3@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~]/8",
  J: "[~@7 g2@4 ~@2 g2@2 bb2@2 g2@2 ~@2 g2@2 ~@2 g2@2 ~@2 g2@2 bb2@2 g2@2 f2@4 g2@4 ~@2 g2@2 bb2@2 g2@2 ~@2 g2@2 ~@2 g2@2 ~@5]/4",
  K: "[~@7 c3@4 ~@2 c3@2 eb3@2 c3@2 ~@2 c3@2 ~@2 c3@2 ~@2 c3@2 eb3@2 c3@2 g3@4 d3@4 ~@2 d3@2 gb3@2 d3@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~]/4",
  L: "~@11 g2@5", M: "~ g2@2 bb2@2 g2@4 g2@4 g2@3", N: "~ g2@2 bb2@2 g2@2 f2@4 g2@5", O: "~ g2@2 bb2@2 g2@2 f2@4 c3@5",
  P: "~ c3@2 eb3@2 c3@4 c3@4 c3@3", Q: "~ c3@2 eb3@2 c3@2 g3@4 d3@5", R: "~ d3@2 gb3@2 d3@4 d2@4 d2@3",
  S: "~ d2@4 ~@6 g2@5", T: "~ d2@4 ~@4 d2@2 g2@4 ~",
})).s("gm_cello").gain(0.25)

// bass · contrabass
const bass = note(`<
  A B A B C D E F A B A B C D E F A B A B C D E F A B A G C D E F ~@2 H@8 ~@8 I@8 J@4 K@4 ~@2 L M N M O P Q R S M N M O
  P Q T U
>`.pickRestart({
  A: "g1@2 ~ g1 bb1 g1 ~ g1", B: "~ g1 ~ g1 bb1 g1 f1@2", C: "c2@2 ~ c2 eb2 c2 ~ c2", D: "~ c2 ~ c2 eb2 c2 g2@2",
  E: "d2@2 ~ d2 gb2 d2 ~ d2", F: "~ d2 ~ d2 ~@4", G: "~ g1 ~@6",
  H: "[~@7 g1@6 g1@2 bb1@2 g1@4 g1@4 g1@4 g1@2 bb1@2 g1@2 f1@4 g1@6 g1@2 bb1@2 g1@4 g1@4 g1@4 g1@2 bb1@2 g1@2 f1@4 c2@6 c2@2 eb2@2 c2@4 c2@4 c2@4 c2@2 eb2@2 c2@2 g2@4 d2@6 d2@2 gb2@2 d2@4 d2@4 d2@4 d2@3]/8",
  I: "[~@7 g1@4 ~@2 g1@2 bb1@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 bb1@2 g1@2 f1@4 g1@4 ~@2 g1@2 bb1@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 bb1@2 g1@2 f1@4 c2@4 ~@2 c2@2 eb2@2 c2@2 ~@2 c2@2 ~@2 c2@2 ~@2 c2@2 eb2@2 c2@2 g2@4 d2@4 ~@2 d2@2 gb2@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~]/8",
  J: "[~@7 g1@4 ~@2 g1@2 bb1@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@2 g1@2 bb1@2 g1@2 f1@4 g1@4 ~@2 g1@2 bb1@2 g1@2 ~@2 g1@2 ~@2 g1@2 ~@5]/4",
  K: "[~@7 c2@4 ~@2 c2@2 eb2@2 c2@2 ~@2 c2@2 ~@2 c2@2 ~@2 c2@2 eb2@2 c2@2 g2@4 d2@4 ~@2 d2@2 gb2@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~]/4",
  L: "~@11 g1@5", M: "~ g1@2 bb1@2 g1@4 g1@4 g1@3", N: "~ g1@2 bb1@2 g1@2 f1@4 g1@5", O: "~ g1@2 bb1@2 g1@2 f1@4 c2@5",
  P: "~ c2@2 eb2@2 c2@4 c2@4 c2@3", Q: "~ c2@2 eb2@2 c2@2 g2@4 d2@5", R: "~ d2@2 gb2@2 d2@4 d2@4 d2@3",
  S: "~ d2@4 ~@6 g1@5", T: "~ d2@2 gb2@2 d2@4 d1@4 d1@3", U: "~ d1@4 ~@4 d2@2 g1@4 ~",
})).s("gm_contrabass").gain(0.25)

// drums · clap
const clap = s("cp").struct("<~@42 [~@11 x ~@4] [~@3 x ~@7 x ~@4]!7 ~@35>").gain(0.25)

// drums · low tom
const low_tom = s("lt").struct("<~@42 [~@11 x ~@4] [~@3 x ~@7 x ~@4]!7 ~@35>").gain(0.25)

stack(violin, viola, cello, bass, clap, low_tom)

More by Billie Eilish