Strudelify

when the party's over

Billie EilishArranger Jackson Ramos

KeyD majorTempo125 bpm
0:00/0:00
// when the party's over — Billie EilishArranger Jackson Ramos
// 125 bpm, 3/4, key D 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/5866368; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 137 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(125/3)

// 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 · cello · "Violin"
const cello = note(`<
  ~@6 A B C D ~@2 E F G H ~ I J K L M@3 N O P Q ~ R S T U V ~@2 W X Y Z AA AB AC AD AE D AB AC AD AF AG AH ~ A B C AI ~
  AJ J K L AK AL AM AN AO AP AQ AR AS N T U V ~@2 AT AU Y Z AV AW AX AY@2 AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN
  BO BP BQ BR BS@2 BT@4 BU@7 BV@5 ~ BW BX@5 BY@7
>`.pickRestart({
  A: "[g2,d3]@11 [a2,e3]@5", B: "[b2,f#3]@11 [a2,e3]@5", C: "[d3,a3]@11 [a2,e3]@5", D: "[g2,d3]",
  E: "[g2,d3,d4]@11 [a2,e3,e4]@5", F: "[b2,f#3,f#4]@11 [a2,e3,e4]@5", G: "[d3,a3,f#4]@11 [a2,e3,e4]@5",
  H: "f#4@5 a4@11, [g2,d3]", I: "~@11 a4@5", J: "[g2,d3,b4]@11 [a2,e3,a4]@5", K: "[b2,f#3,b4]@11 [a2,e3,a4]@5",
  L: "[d3,a3,b4]@11 [a2,e3,a4]@5", // Bm7 A5
  M: "[[g2,b4]@5 g2@5 ~ f#2@2 ~@3 c#3@3 d3@5 g2@3 f#2@2 ~@3 c#3@3 d3@5 [g2,b2]@8, d3@2 ~ b2 ~@2, ~@5 d5@11 ~@32, ~@13 g2@5 ~@11 g2@5 ~@14]/3", // G
  N: "[g2,d3,b5]@11 [a2,e3,a5]@5", O: "[b2,f#3,b5]@11 [a2,e3,a5]@5", P: "[d3,a3,b5]@11 [a2,e3,a5]@5",
  Q: "b5@5 d6@11, [g2,d3]", R: "~@11 d5@5", S: "[g2,b5]@11 [a2,a5]@5", T: "[b2,b5]@11 [a2,a5]@5",
  U: "[d3,b5]@11 [a2,a5]@5", V: "b5@5 d6@11, g2", W: "d6@3 c#6@2 b5@3 c#6@3 b5@2 a5@3",
  X: "f#5@8 f#5@3 [a2,e3,a5]@5, [b2,f#3]@11 ~@5", Y: "[d3,a3,f#5]@11 [a2,e3,d5]@5", Z: "[g2,d3,d5]",
  AA: "d5@5 e5@5 ~ f#5@5, [g2,d3]", AB: "g5@3 f#5@2 g5@5 ~ f#5@2 e5@3, [b2,g3]",
  AC: "f#5@3 e5@2 f#5@5 ~ d5@5, [b2,f#3]", AD: "f#5@3 e5@2 f#5@5 ~ d5@5, [d3,a3]", AE: "[g2,d3], b4@11 ~@5",
  AF: "g2@5 g2@5 ~ g2@5, d3, b4@11 ~@5", AG: "g2@5 g2@5 ~ g2@5, d3", AH: "g2@5 g2@5 ~ f#2@2 g2@3, d3",
  AI: "[g2,d3]@11 f#2@5", AJ: "f#2@5 f#2@5 ~ [f#2,a4]@5", AK: "b4@5 ~@6 g2@5, g2@11 ~@5, ~@5 d5@11",
  AL: "[d3,g3]@11 g2@5", AM: "[d3,g3]@5 g2@5 ~ g2@5", AN: "[g2,d3,d5]@11 [a2,e3,e5]@5",
  AO: "[b2,f#3,f#5]@11 [a2,e3,e5]@5", AP: "[d3,a3,f#5]@11 [a2,e3,e5]@5", AQ: "f#5@5 a5@11, [g2,d3]",
  AR: "f#2@5 f#2@5 ~ f#2@5", AS: "~@8 d5@3 d5@5", AT: "d6@3 c#6@2 b5@3 c#6@3 b5@2 a5@3, g2@11 a2@5",
  AU: "[b2,f#3,f#5]@11 [a2,e3,a5]@5", AV: "[g3,d5]@5 [d3,e5]@5 ~ [g2,f#5]@5", AW: "e2", AX: "b2", AY: "d2",
  AZ: "g3@5 d3@5 ~ g2@5", BA: "g5@3 f#5@2 g5@5 ~ f#5@2 e5@3, b2", BB: "f#5@3 e5@2 f#5@5 ~ d5@5, f#2",
  BC: "f#5@3 e5@2 f#5@5 ~ d5@5, a2", BD: "[g2,b4]@11 g2@2 g3@3", BE: "g2@3 g3@2 g2@3 g3@3 f#2@2 f#3@3, ~@11 d5@5",
  BF: "b4@3 d5@8 ~@2 c#5@3, [g2,b2]", BG: "d5@3 b4@8 b4@5, [f#2,b2]", BH: "[d2,a2], a4@11 ~@5", BI: "g2@5 g2@5 ~ f#2@5",
  BJ: "b4@5 d5@5 ~ b4@5, b2", BK: "d5@5 b4@5 ~ f#5@5, b2", BL: "f#5@11 e5@2 d5@3, a2", BM: "g2@8 g3@3 g2@2 g3@3, e5",
  BN: "g3@5 d3@3 g3@3 g2@5", BO: "e5@8 ~@5 e3@3, a2@13 ~@3, ~ e5", BP: "a3@8 e3@3 [a3,e5]@5, f#5@11 ~@5",
  BQ: "e5@5 d5@11, [g2,d3]@13 ~@3", BR: "[d3,g3]@5 g2@5 ~@3 d5@3, ~@11 g#2@5", BS: "[e5@8 f#5@8 d5@11 c#5@5, a2]/2",
  BT: "[~@11 b4@21 ~@32, g2]/4",
  BU: "[d5@4 c#5@3 b4@4 c#5@4 b4@4 a4@3 f#4@8 ~ f#4@3 a4@5 f#4@11 ~ e4@3 f#4@2 ~@6 f#4@9 ~@21 g4@4 f#4@4 ~ g4@9 f#4@2, g3@22 f#3@17 a3@17 g3@35 ~ g2@20]/7",
  BV: "[~@2 e4@4 f#4@4 ~ e4@4 f#4@9 d4@9 f#4@4 ~ e4@4 f#4@9 d4@9 g2@19 ~, ~@6 b2@27 d3@27 b3@6 ~@14]/5",
  BW: "~@2 g5@3 f#5@3 g5@7 f#5",
  BX: "[~@2 e5@3 ~ f#5@3 e5@4 f#5@7 d5@7 ~ f#5@4 e5@4 f#5@8 d5@17 b4@17 ~@2, ~@3 b3@11 d4@26]/5",
  BY: "[~@3 g2@50 ~@3]/7",
})).s("gm_cello").gain(0.3)

// chords · contrabass · "Violin"
const contrabass = note(`<
  A B C D ~@2 E F G H ~@2 I J K L ~@2 I J K M@2 N O P Q R ~@2 I J K L ~@2 S T U V W X Y Z AA AB AC AD AE AA AF AA AG AH
  P AI AJ AK AL AM P AN AO AP AQ O AR AI AA AS ~ E AT AU AV ~@2 O AW AN AX AY AZ BA@2 D BB BC BD BE BF BG BH BI BJ BK BL
  BM BN BO BP BQ BR BS BT BU@2 BV@4 BW@5 BX@8 BY BZ@5 CA@7
>`.pickRestart({
  A: "[b3,d4]@11 [c#4,e4]@5", B: "[d4,f#4]@11 [c#4,e4]@5", C: "[f#4,a4]@11 [c#4,e4]@5", D: "[b3,d4]",
  E: "[g1,d4,g4]@11 [a1,e4,a4]@5", F: "[b1,f#4,b4]@11 [a1,e4,a4]@5", G: "[d2,a4,d5]@11 [a1,e4,a4]@5", H: "[g1,d4,g4]",
  I: "g1@11 a1@5", J: "b1@11 a1@5", K: "d2@11 a1@5", L: "g1", M: "[d2@21 d2@3 b1@8]/2", N: "c#2@3 d2@5 b1@8",
  O: "[g1,b3,d4]@11 [a1,c#4,e4]@5", P: "[b1,d4,f#4]@11 [a1,c#4,e4]@5", Q: "[d2,f#4,a4]@11 [a1,c#4,e4]@5",
  R: "[g1,b3,d4]", S: "g4@3 f#4@2 e4@3 f#4@3 e4@2 d4@3", T: "f#4@8 f#4@3 [a1,a4]@5, b1@11 ~@5",
  U: "[d2,f#4]@11 [a1,d4]@5", V: "[g1,d4]", W: "d4@5 e4@5 ~ f#4@5, g1", X: "g4@3 f#4@2 g4@5 ~ f#4@2 e4@3, g2",
  Y: "f#4@3 e4@2 f#4@5 ~ d4@5, f#2", Z: "a2", AA: "[d2,b3,d4]", AB: "[d4,d5]@5 [e4,e5]@5 ~ [f#4,f#5]@5, d2",
  AC: "[g2,e4,g4]", AD: "[f#2,d4,f#4]", AE: "[a2,f#4,a4]", AF: "[d2,d4]", AG: "c#4@3 d4@5 b3@8, [g1,d2]",
  AH: "[d2,d4]@11 [e2,c#4,e4]@5", AI: "[a2,f#4,a4]@11 [e2,c#4,e4]@5", AJ: "g1@11 f#1@5, [b3,d4]",
  AK: "[d4,f#4]@8 e4@3 d4@2 e4@3, g1@11 f#1@5", AL: "c#4@3 d4@2 [f#1,g3]@5 ~ [f#1,g3]@5, f#1@5 ~@11",
  AM: "[g1,d4]@11 [a1,e4]@5", AN: "[a2,d4,f#4]@11 [e2,a3,c#4]@5", AO: "g1@11 g1@5, [b3,d4]",
  AP: "g4@3 f#4@2 e4@3 d4@3 b3@2 a3@3, g2@11 g1@5", AQ: "b3@3 d4@2 e4@3 ~@5 a4@3, g2@5 g1@5 ~ g1@5, ~@8 f#4@5 ~@3",
  AR: "[f#2,d4,f#4]@11 [e2,c#4,e4]@5", AS: "f#1@5 f#1@5 ~ f#1@5", AT: "[b1,b5]@11 [a1,a5]@5",
  AU: "[a2,b5]@11 [e2,a5]@5", AV: "b5@5 d6@11, g1", AW: "[f#2,b3,d4]@11 [e2,a3,c#4]@5", AX: "[d2,g3,b3]",
  AY: "g2@5 d2@5 ~ g1@5", AZ: "g2@3 f#2@2 g2@5 ~ f#2@2 e2@3", BA: "f#2@3 e2@2 f#2@5 ~ d2@5",
  BB: "[g2,d5]@5 [d2,e5]@5 ~ [g1,f#5]@5", BC: "g4@3 f#4@2 g4@5 ~ f#4@2 e4@3, g1", BD: "f#4@3 e4@2 f#4@5 ~ d4@5, f#1",
  BE: "f#4@3 e4@2 f#4@5 ~ d4@5, d2", BF: "[g1,d4]@11 g1@2 g2@3, ~@11 e4@5",
  BG: "g1@3 g2@2 g1@3 g2@3 f#1@2 f#2@3, [e4,c#5]@5 [e4,c#5]@5 ~ [e4,c#5]@5", BH: "[g1,b3,e4]", BI: "[f#1,b3,d4]",
  BJ: "[a1,a3,d4]", BK: "[g1,b3,d4]@5 [g1,b3,d4]@5 ~ [f#1,a3,d4]@5", BL: "[g1,e4]", BM: "[f#1,d4]", BN: "[a1,d4]",
  BO: "g4@8 g5@3 d5@2 g5@3, g1", BP: "g5@5 d5@3 g5@3 g4@5, g1", BQ: "a4@13 e5@3, a1", BR: "a5@8 e5@3 a5@5, e2",
  BS: "d5@13 g4@3, [g1,g5]", BT: "[d2,g2,d5]@5 [g1,g4]@5 ~ [g#1,g#4]@5", BU: "[a3 c#4, a1]/2",
  BV: "[d4 d4 [b3,d4] d4, g1]/4", BW: "[[g2,b3,d4]@22 [f#2,b3,f#4]@17 [a2,f#4,a4]@17 [d4,g4]@18 d4@6, ~@7 g2@3]/5",
  BX: "[e4@6 f#4@6 [g1,e4,g4]@26 [b1,b3,d4,f#4]@27 [d2,d4,f#4,a4]@27 [g1,g3,b3]@18 d5@6 ~ e5@6 f#5@5]/8", BY: "~ g5@7",
  BZ: "[~@3 [b2,b4,d5]@11 [d2,f#5,a5]@26]/5", CA: "[~@3 [g1,g5,b5]@50 ~@3]/7",
})).s("gm_contrabass").gain(0.25)

// chords · violin
const violin = note(`<
  ~@6 A B C D ~@2 A B C D ~@2 E B C F@2 G H I J K ~@2 L M N O ~@3 B C D@2 P Q R D@2 ~@2 R S@2 T ~ A B C U ~ V A B C W X
  Y A B C D V ~ A M N O ~@2 Z B C D AA K AB K@2 AA AB AC AD AE AF O AC AD AG ~@2 AD AH AI AJ AK AL AM AN@2 AO@4 AP@2
  AQ@7 AR@3 ~@2 AS@5 AT@7
>`.pickRestart({
  A: "[g3,d4]@11 [a3,e4]@5", B: "[b3,f#4]@11 [a3,e4]@5", C: "[d4,a4]@11 [a3,e4]@5", D: "[g3,d4]",
  E: "[d4,f#4]@11 [a3,e4]@5", F: "[g3@5 g3@5 ~ f#4@2 ~@3 c#4@3 d4@5 b3@8, d4 ~, ~@13 g3@13 ~@6]/2",
  G: "c#4@3 d4@5 b3@8", H: "d4@11 e4@5", I: "f#4@11 e4@5", J: "a4@11 e4@5", K: "d4", L: "~@11 a3@5", M: "b3@11 a3@5",
  N: "d4@11 a3@5", O: "g3", P: "[b3,g4]", Q: "[b3,f#4]", R: "[d4,a4]", S: "g3@5 g3@5 ~ g3@5, d4",
  T: "g3@5 g3@5 ~ f#4@2 g3@3, d4", U: "[g3,d4]@11 f#4@5", V: "f#4@5 f#4@5 ~ f#4@5", W: "g3@11 g3@5",
  X: "[d4,g4]@11 g3@5", Y: "[d4,g4]@5 g3@5 ~ g3@5", Z: "g3@11 a3@5", AA: "g4@5 d4@5 ~ g3@5", AB: "b3", AC: "f#4",
  AD: "a3", AE: "g3@11 g3@2 g4@3", AF: "g3@3 g4@2 g3@3 g4@3 f#4@2 f#4@3", AG: "g3@5 g3@5 ~ f#4@5",
  AH: "a3@8 g4@3 g3@2 g4@3", AI: "g4@5 d4@3 g4@3 g3@5", AJ: "a3@13 e4@3", AK: "a4@8 e4@3 a4@5", AL: "[g3,d4]@13 ~@3",
  AM: "[d4,g4]@5 g3@5 ~ g#3@5", AN: "a3/2", AO: "g3/4", AP: "[g4@4 f#4@3 e4@4 f#4@4 e4@4 d4@3 b3@8 ~ b3]/2",
  AQ: "[~@2 d4@5 a4@17 g4@35 ~ g3@26 b3@26]/7", AR: "[~ d4@27 g3@19 ~]/3", AS: "[~@3 b4@11 d5@26]/5",
  AT: "[~@3 g3@50 ~@3]/7",
})).s("gm_violin").gain(0.3)

// chords · viola
const viola = note(`<
  ~@24 A B C D ~ E F@3 G ~@6 H I J K L M N O P Q R S@2 T U V L W X Y Z AA L AB AC T U V ~ AD ~ T U AE AF ~@2 AG U V L ~
  AH AI@2 Q M N O@2 AJ AK ~@8 AL AM@2 AN AO AP@2 AN L@2 AN ~@26
>`.pickRestart({
  A: "[g3,b3]@11 [a3,c#4]@5", B: "[b3,d4]@11 [a3,c#4]@5", C: "[d4,f#4]@11 [a3,c#4]@5", D: "[g3,b3]", E: "~@11 d4@5",
  F: "b4@11 a4@5", G: "b4@5 d5@11", H: "~@5 e4@5 ~ f#4@5", I: "[e4,g4]", J: "[d4,f#4]", K: "[f#4,a4]", L: "[b3,d4]",
  M: "d4@5 e4@5 ~ f#4@5", N: "g3@3 f#3@2 g3@5 ~ f#3@2 e3@3", O: "f#3@3 e3@2 f#3@5 ~ d3@5", P: "f#3@3 e3@2 f#3@5 ~ d4@5",
  Q: "b3@11 ~@5", R: "[g3,d4]", S: "[~@11 f#3@2 ~@3 d4@16, d4 ~, ~@13 g3@19]/2", T: "[b3,d4]@11 [c#4,e4]@5",
  U: "[d4,f#4]@11 [c#4,e4]@5", V: "[f#4,a4]@11 [c#4,e4]@5", W: "[d4,f#4]@8 e4@3 d4@2 e4@3",
  X: "g3@3 d4@2 [g3,b3]@5 ~ [g3,b3]@5", Y: "g3@11 a3@5", Z: "b3@11 a3@5", AA: "d4@11 a3@5",
  AB: "g4@3 f#4@2 e4@3 d4@3 b3@2 a3@3", AC: "b3@3 d4@2 e4@3 f#4@5 a4@3", AD: "f#3@5 f#3@5 ~ f#3@5",
  AE: "[a4,d5]@11 [e4,a4]@5", AF: "[d4,g4]", AG: "d4@3 c#4@2 b3@3 c#4@3 b3@2 a3@3", AH: "g4@3 f#4@2 g4@5 ~ f#4@2 e4@3",
  AI: "f#4@3 e4@2 f#4@5 ~ d4@5", AJ: "b3@11 c#5@5", AK: "[e4,c#5]@5 [e4,c#5]@5 ~ [e4,c#5]@5", AL: "b3", AM: "e4",
  AN: "d4", AO: "g3", AP: "a3",
})).s("gm_viola").gain(0.3)

// chords · viola · soft notes
const viola_soft = note(`<
  A B C D ~@2 B E F G ~@26 H I J K L ~@27 G ~@23 M N@2 O P Q R Q ~@11 S@5 T@8 U V@5 W@7
>`.pickRestart({
  A: "[g3,b3]@11 [a3,c#4]@5", B: "[b3,d4]@11 [c#4,e4]@5", C: "[d4,f#4]@11 [a3,c#4]@5", D: "[g3,b3]",
  E: "[d4,f#4]@11 [c#4,e4]@5", F: "[f#4,a4]@11 [c#4,e4]@5", G: "[b3,d4]", H: "g4@3 f#4@2 e4@3 f#4@3 e4@2 d4@3",
  I: "[g3,b3]@11 [f#3,a3]@5", J: "[b3,d4]@11 [f#3,a3]@5", K: "[e3,g3]", L: "d4@5 ~@11", M: "[e4,g4]", N: "[d4,f#4]",
  O: "[b3,d4]@5 [b3,d4]@5 ~ [a3,d4]@5", P: "g4", Q: "d4", R: "a3",
  S: "[[b3,d4]@22 [b3,f#4]@17 [d4,a4]@17 [b3,g4]@18 d4@6]/5", // Bm B5 D5 Em
  T: "[e4@6 f#4@6 [b3,e4]@26 [d4,f#4]@27 [f#4,a4]@27 [g3,b3]@18 d4@6 ~ e4@6 f#4@5]/8", U: "~ e4@7",
  V: "[~@3 [d4,f#4]@11 [d4,a4]@26]/5", W: "[~@3 b4@50 ~@3]/7",
})).s("gm_viola").gain(0.2)

stack(cello, contrabass, violin, viola, viola_soft)