Strudelify

death of a bachelor

Panic! At the Disco

KeyA minorTempo140 bpm
0:00/0:00
// death of a bachelor — Panic! At the Disco
// 140 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/2295086; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 113 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(140/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 · marimba
const marimba = note(`<
  A B C D@2 B E@2 F G H@2 I J K@2 L M N@2 O P Q@2 R S T@3 U@4 V W X@2 Y Z AA@2 B AB AC@2 AD AE@2 AF@2 AG@3 AH@3 AI M AJ
  AK@2 P Q@2 R S T@3 U@4 V W X@2 Y Z AL@2 AM AN AO@2 AM AN AP@2 AQ AR AS@2 AQ AR AT@2 S T@3 U@4 V W X@2 Y Z AU@2
>`.pickRestart({
  A: "~@8 c5@3 b4@3 a4@2", B: "[f3,a3,c5]@3 [f3,a3]@3 [f3,a3]@2, ~@3 d4@4 ~",
  C: "[g3,b3]@6 ~@2 a4@3 ~@3 a4@2, ~@6 [g3,b3]@5 b4@3 ~@2, ~@3 [g3,b3]", // G
  D: "[b4@2 e4@4 e4@4 ~@6 a3@4 c3@4 [g3,c5]@3 ~@3 a4@2, [e3,g3]@3 [e3,g3]@3 [e3,g3]@2 ~@6 c3@2, ~@10 d4@4 e4@10 ~@3 b4@3 ~@2]/2", // C5 Em
  E: "[~ c5 ~@2 a4@2 g4 ~ [e3,g3]@3 [e3,g3]@3 [e3,g3]@2, [g3,b3]@3 [g3,b3]@3 [g3,b3]@2 ~@8, ~@2 b4@2 ~@3 e4@9]/2", // Em G
  F: "a3@4 c3@4 [g3,c5]@3 ~@3 e5@2, ~@11 d5@3 ~@2, ~@3 c3", G: "[f3,a3,d5]@3 [f3,a3]@3 [f3,a3]@2, ~@3 a4@4 ~",
  H: "[[g3,b3]@6 ~@2 d4@3 ~@7 c5@2 ~@2 [e3,g3]@6 [e3,g3]@4, ~@6 [g3,b3]@5 b4@3 d5@4 ~@2 g4@12, ~@6 [g3,b3]@2 [e3,g3]@3 ~@5]/2", // G Em G Em
  I: "a3@4 a4@2 a4@2 [g3,c5]@3 ~@3 a4@2, ~@4 c3@4 ~@3 b4@3 ~@2, ~@3 c3", // C5
  J: "c5@4 g4@2 a4@2 b4@3 ~@3 g4@2, [f3,a3]@6 [f3,a3]@5 a4@3 ~@2, ~@3 [f3,a3]", // F
  K: "[b4@4 g4@2 a4@2 b4@3 ~@7 b4@2 ~@2 [e3,g3]@6 [e3,g3]@4, [g3,b3]@6 [g3,b3]@5 a4@3 g4@4 ~@2 e4@12, ~@6 [g3,b3]@2 [e3,g3]@3 ~@5]/2", // Em G Em
  L: "a3@4 ~@2 a4@2 [g3,c5]@3 ~@3 e5@2, ~@4 c3@4 ~@3 d5@3 ~@2, ~@3 c3", // C5
  M: "[f3,a3,d5]@3 [f3,a3]@3 [f3,a3]@2, ~@3 c5@4 ~", // Dm F
  N: "[[f3,g#3]@6 ~@2 b4@3 ~@7 c5@2 ~@2 [e3,g3]@6 [e3,g3]@4, ~@6 [f3,g#3]@5 c5@3 d5@4 ~@2 b4@12, ~@6 [f3,g#3]@2 [e3,g3]@3 ~@5]/2", // Fm Em Fm Em
  O: "a3@4 ~@2 a4@2 [g3,c5]@3 ~@3 a4@2, ~@4 c3@4 ~@3 b4@3 ~@2, ~@3 c3", // C5
  P: "[f3,a3]@6 ~@2 c5@3 ~@3 a4@2, c5@8 ~@3 b4@3 ~@2, ~@3 [f3,a3]@3 [f3,a3]@2", // F
  Q: "[[f3,a3]@6 ~@2 a4@3 ~@5 [g3,a3]@6 ~@6 [g3,a3]@4, c5@8 ~@3 b4@3 c5@10 g5@8, ~@3 [f3,a3]@3 [f3,a3]@2 ~@3 [g3,a3]@3 ~@2]/2", // F Gsus2 F Gsus2
  R: "~@6 e5@2 a5@6 g5 e5, [g3,b3] ~", S: "[e3,g3]@3 ~@3 [e3,g3]@2, a5 e5, ~@3 [e3,g3]@3 ~@2",
  T: "[[f3,a3]@6 ~@2 c5@3 d5 [f3,a3]@4 ~@2 e5@2 d5@2 c5@2 d5@3 ~@5 [e3,g3]@6 e5@2 ~@6 g5 e5, d5@8 ~@4 e5@6 ~@9 c5@3 c5@8 ~@2 a5@6 ~@2, ~@3 [f3,a3]@3 ~@2 [f3,a3]@3 [f3,a3]@3 [f3,a3]@2 ~@3 [e3,g3]@3 [e3,g3]@2]/3", // F Em F Em
  U: "[[e3,g3,a5]@6 e5@2 d5@3 c5 [e3,g3]@4 [f3,a3]@6 ~@2 c5@3 d5 [f3,a3]@4 ~@4 g5@2 e5@2 d5@3 ~@5 [e3,g3]@6 ~@2 a5@3 ~@3 g5 a5, ~@6 [e3,g3]@6 a4@12 ~@4 e5@8 ~@7 c5@3 c5@10 ~@3 g5@3 ~@2, ~@11 [f3,a3]@3 ~@2 [f3,a3]@3 [f3,a3]@3 [f3,a3]@2 ~@3 [e3,g3]@3 [e3,g3]@2]/4", // A7 Em F Em F Em
  V: "[e3,g3]@3 ~@3 [e3,g3]@2, c6 a5, ~@3 [e3,g3]@3 ~@2", W: "[f3,a3]@3 [f3,a3]@3 [f3,a3]@2, e6",
  X: "[~@2 e5@2 d5@2 c5@2 d5@3 ~@5 [e3,g3]@6 ~@2 a5@3 ~@3 e5@2, [f3,a3]@6 [f3,a3]@5 c5@3 c5@10 ~@3 g5@3 ~@2, ~@6 [f3,a3]@2 ~@3 [e3,g3]@3 [e3,g3]@2]/2", // Em F Em
  Y: "[e3,g3,a5]@6 e5@2 d5@3 c5 [e3,g3,a4]@4, ~@3 [e3,g3]@3 ~@2", // A7 Em
  Z: "c5 d5 e5 [f3,a3,d5]@3 c5 a4, [f3,a3]@3 ~@3 [f3,a3]@2", // Dm F
  AA: "[c5@2 d5@2 e5@2 [f3,a3,d5]@6 c5@2 ~@2 [e3,g3]@6 a4@2 c5@3 ~@3 a4@2, [f3,a3]@3 ~@3 [f3,a3]@2 ~@3 [e3,g3]@3 [e3,g3]@2, ~@14 c5@8 ~@5 b4@3 ~@2]/2", // Dm Em F Em
  AB: "[g3,b3]@6 ~@2 b4@3 ~@3 a4@2, ~@6 [g3,b3]@5 b4@3 ~@2, ~@3 [g3,b3]", // G
  AC: "[b4@4 ~@4 e4@2 e4@2 d4@2 ~@2 a3@4 ~@2 a4@2 [g3,c5]@3 ~@3 a4@2, [e3,g3]@3 [e3,g3]@3 [e3,g3]@2 ~@2 c3@2 ~@2 c3@2, ~@4 e4@4 ~@6 e4@8 ~@5 b4@3 ~@2]/2", // C5 Em
  AD: "c5 d5 e5 [f3,a3]@3 ~ a4, [f3,a3]@3 a4@4 ~, ~@3 a3", // F
  AE: "[b4@2 d5 b4 a4 ~@3 [e3,g3]@3 [e3,g3]@3 [e3,g3]@2, [g3,b3]@3 [g3,b3]@3 [g3,b3]@2 ~@8, ~@5 g4@2 e4@9]/2", // Em G
  AF: "[a3@4 c3@4 [g3,c5]@3 ~@7 e5@3 ~@7 [f3,a3]@4, ~@11 b4@3 a4@4 ~@3 c5@3 a4@8, ~@6 c3@2 [f3,a3]@3 [f3,a3]@3 ~@2]/2", // C5 F
  AG: "[[g3,b3]@6 ~@2 g4@3 ~@7 g5@4 e5@2 d5@3 ~@5 a3@4 c3@4 [g3,c5]@3 ~@3 a4@2, ~@6 [g3,b3]@5 a4@3 b4@4 ~@9 c5@3 a4@10 ~@3 b4@3 ~@2, ~@6 [g3,b3]@2 [e3,g3]@3 [e3,g3]@3 [e3,g3]@2 ~@6 c3@2]/3", // G C5 G Em
  AH: "[c5@3 d4@3 [f3,a3]@6 ~@6 a4@2 g4@2 [g3,b3,b4]@6 d4@2 ~@2 [e3,g3]@6 [e3,g3]@6 [e3,g3]@4, [f3,a3]@3 d4@4 b4@2 ~@6 c4@9, ~@6 [f3,a3]@2 [g3,b3]@3 ~@3 [g3,b3]@2 ~@8]/3", // F G Em F G
  AI: "a3@4 ~@2 c5@2 [g3,e5]@3 ~@3 c5@2, ~@4 c3@4 ~@3 d5@3 ~@2, ~@3 c3", // C
  AJ: "[f3,g#3]@6 ~@2 d5@3 ~@3 b4@2, ~@6 [f3,g#3]@5 c5@3 ~@2, ~@3 [f3,g#3]", // Fm
  AK: "[[e3,g3,c5]@6 [e3,g3,b4]@6 [e3,g3]@4 a3@4 ~@2 a4@2 [g3,c5]@3 ~@3 a4@2, ~@12 a4@10 ~@5 b4@3 ~@2, ~@5 c3 ~ c3]/2", // C Em C5
  AL: "[c5 d5 e5 [f3,a3,d5]@3 c5 ~ [f3,a3]@3 [f3,a3]@3 [f3,a3]@2, [f3,a3]@3 ~@3 [f3,a3]@2 ~@8, ~@7 c5@9]/2", // Dm F
  AM: "e5@2 e5@2 ~ e5@2 g5 d5@2 d5@2 ~ d5@2 e5", AN: "c5@2 c5@2 ~ c5@2 d5 b4@2 c5@2 ~ a4@2 g4", AO: "a4/2",
  AP: "[a4@20 e5@4 c5@3 e4 g4 a4 c5 d5]/2", AQ: "e5@2 e5@2 ~ e5@2 g5 d5@2 d5@2 ~ d5@2 e5, [e3,g3] ~",
  AR: "c5@2 c5@2 ~ c5@2 d5 b4@2 c5@2 ~ a4@2 g4, [f3,a3] ~", // F
  AS: "[[f3,a3]@4 ~@6 c4 d4 e4 g4 a4 c5, a4@5 ~@3, ~@2 [e3,g3] ~]/2", // F Em
  AT: "[[f3,a3]@8 ~@14 e5@2 a5@6 g5 e5, a4@11 ~@5, ~@2 [e3,g3] ~]/2", // F Em
  AU: "[c5 d5 e5 [f3,a3,d5]@3 c5 ~ [e3,g3]@3 [e3,g3]@2 [c3,c4]!3, [f3,a3]@3 ~@3 [f3,a3]@2 ~@8, ~@7 c5@5 ~@4]/2", // Dm Em C F
})).s("gm_marimba").gain(0.24)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B D ~ E@7 A B C D A B C D A B C D A B C
  D@2 A B C D A B C D A B C D A B C D F G F G F G F G F G F G F G F D A B C D A B C D A B C D A B C H
>`.pickRestart({
  A: "x!2 ~ x!2 ~ x ~", B: "~@2 x ~@3 x!2", C: "~ x ~ x", D: "x!2 ~ x!5", E: "x!3 ~", F: "x!2 ~@2 x!2 ~ x",
  G: "x!2 ~ x ~@2 x!2", H: "x ~@2 x ~ x!3",
})).gain(0.09)

// drums · hihat
const hihat = s("hh").struct("<~ A B@37 C B@40 C B@3 C B@3 C B@3 C B@3 C B@15 D>".pickRestart({
  A: "~@3 x ~@4", B: "~ x", C: "~@2 x!2", D: "~@3 x ~ x!3",
})).gain(0.09)

stack(marimba, kick, hihat)

More by Panic! At the Disco