Strudelify

High Hopes

Panic! At the Disco

KeyF majorTempo164 bpm
0:00/0:00
// High Hopes — Panic! at the Disco
// 164 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5941606; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 90 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(164/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 · trombone
const trombone = note(`<
  A B C D A B C E F G H E F G H I J K L M N O P D ~ Q ~@2 R ~@3 S Q T@2 R ~@3 U V W X U V W Y ~@8 Z AA AB AC AD AE AD AF
  ~@8 AG AH AG AI AG AH AJ AK AL AM AN AO AL AP AQ D AR@2
>`.pickRestart({
  A: "bb3@4 bb3 ~ bb3 ~ bb3@4 bb3@4", B: "a3@4 a3 ~ a3 ~ a3@4 a3@4", C: "f3@4 f3 ~ f3 ~ f3@4 f3@4",
  D: "e3@4 e3 ~ e3 ~ e3@4 e3@4", E: "[c3,e3]@4 [c3,e3] ~ [c3,e3] ~ [c3,e3]@4 [c3,e3]@4",
  F: "[f3,bb3]@4 [f3,bb3] ~ [f3,bb3] ~ [f3,bb3]@4 [f3,bb3]@4", G: "[f3,a3]@4 [f3,a3] ~ [f3,a3] ~ [f3,a3]@4 [f3,a3]@4",
  H: "[d3,f3]@4 [d3,f3] ~ [d3,f3] ~ [d3,f3]@4 [d3,f3]@4", I: "[c3,e3]@4 [c3,e3] ~ [c3,e3] ~ f3@2 g3@2 f3@4",
  J: "a3@2 a3@2 a3@2 g3 f3", K: "f3 d3 ~@2 a3!4", L: "c4@2 c4 d4 a3 g3!2 f3", M: "f3 g3 ~@2 bb3!4",
  N: "a3@2 a3 g3 a3 g3!2 f3", O: "f3 d3 ~@2 f3 g3 f3@2", P: "a3@4 a3@8 g3 f3 d3@2", Q: "~ f4!4 d4 c4@2",
  R: "bb3!4 a3 a3@3", S: "c4@2 c4 ~ f4@12", T: "c4!3 f4 c4!2 ~@2", U: "[bb2,f3] [bb2,f3]@2 [bb2,f3]",
  V: "[c3,f3] [c3,f3]@2 [c3,f3]", W: "[d3,f3] [d3,f3]@2 [d3,f3]", X: "[c3,e3] [c3,e3]@2 [c3,e3]", Y: "[e3,a3] ~",
  Z: "~@2 [f3,a3] [a3,c4]@3 [f3,a3]@2", AA: "~@2 [e3,a3] [g3,db4]@3 [e3,a3]@2", AB: "~@2 [f3,a3] [a3,d4]@3 [f3,a3]@2",
  AC: "[db4,f4]", AD: "~@2 [d3,f3] [f3,a3]@3 [d3,f3]@2", AE: "~@2 [db3,e3] [e3,g3]@3 [db3,e3]@2", AF: "bb3 ~",
  AG: "[d4,f4]@4 [d4,f4] ~ [d4,f4] ~ [d4,f4]@4 [d4,f4]@4", AH: "[c4,f4]!2 ~@2", AI: "[c4,e4]!2 ~@2",
  AJ: "[d3,a3]@4 [d3,a3] ~ [d3,a3] ~ [d3,a3]@4 [d3,a3]@4", AK: "[e3,a3]@4 [e3,a3] ~ [e3,a3] ~ [e3,a3]@4 [e3,a3]@4",
  AL: "~@6 f3@2 bb3@3 bb3@2 bb3@3", AM: "a3@4 ~@2 f3@2 bb3@3 bb3@2 bb3@3", AN: "a3@4 ~@2 f3@2 a3@3 g3@2 f3@3",
  AO: "e3@4 ~@4 f3@3 e3 d3@2 ~@2", AP: "a3@4 ~@2 f3@2 c4@3 bb3@2 a3@3", AQ: "a3@4 ~@4 a3@3 g3@2 f3@3", AR: "d3/2",
})).s("gm_trombone").gain(0.3)

// chords · trombone · soft notes
const trombone_soft = note("<~@24 A ~ B C ~ D E F ~@5 G F C ~@8 H I H J H I H J ~@7 K L M N O P Q R ~@19>".pickRestart({
  A: "~@2 [d4,f4] ~@3 [d4,f4] ~", B: "[d3,f3,a3]@3 [d3,f3,a3]@5", C: "~@4 [c4,e4]@2 ~@6 [c4,e4]@2 [c4,e4] ~",
  D: "~@4 [d4,f4]@2 ~@6 [d4,f4]@2 [d4,f4] ~", E: "~@4 [bb3,d4]@2 ~@6 [bb3,d4]@2 [bb3,d4] ~",
  F: "~@4 [a3,c4]@2 ~@6 [a3,c4]@2 [a3,c4] ~", G: "~@4 [a3,d4]@2 ~@6 [a3,d4]@2 [a3,d4] ~", H: "[f3,a3]", I: "[g3,db4]",
  J: "[f3,db4]", K: "~@4 f3 g3 f3@2", L: "a3@2 a3@2 a3@2 g3 f3", M: "f3 d3 ~@2 a3!4", N: "c4@2 c4 d4 a3 g3!2 f3",
  O: "f3 g3 ~@2 bb3!4", P: "a3@2 a3 g3 a3 g3!2 f3", Q: "f3 d3 ~@2 f3 g3 f3@2", R: "a3@4 a3@8 g3 f3 d3@2",
})).s("gm_trombone").gain(0.2)

// chords · trombone
const trombone_2 = note(`<
  A@2 B C A@2 B D E F G H I J K L M N O P M N O C ~@2 Q ~@13 R S T U R V T U ~@8 W X Y Z AA AB AC AD ~@8 M AE N AF M AE
  A C AG AH AI AJ AG AH AI C AK@2
>`.pickRestart({
  A: "f3@4 f3 ~ f3 ~ f3@4 f3@4", B: "d3@4 d3 ~ d3 ~ d3@4 d3@4", C: "c3@4 c3 ~ c3 ~ c3@4 c3@4", D: "~@4 f3 g3 f3@2",
  E: "a3@2 a3@2 a3@2 g3 f3", F: "f3 d3 ~@2 a3!4", G: "c4@2 c4 d4 a3 g3!2 f3", H: "f3 g3 ~@2 bb3!4",
  I: "a3@2 a3 g3 a3 g3!2 f3", J: "f3 d3 ~@2 f3 g3 f3@2", K: "a3@4 a3@8 g3 f3 d3@2", L: "~@2 [c3,e3]!2",
  M: "[f3,bb3]@4 [f3,bb3] ~ [f3,bb3] ~ [f3,bb3]@4 [f3,bb3]@4", N: "[f3,a3]@4 [f3,a3] ~ [f3,a3] ~ [f3,a3]@4 [f3,a3]@4",
  O: "[d3,f3]@4 [d3,f3] ~ [d3,f3] ~ [d3,f3]@4 [d3,f3]@4", P: "[c3,e3]@4 [c3,e3] ~ [c3,e3] ~ [c3,e3]@4 [c3,e3]@4",
  Q: "c4@2 c4@2 c4 ~ f4@6 ~@4", R: "~@6 f3@2 [f3,bb3]@3 [f3,bb3]@2 [f3,bb3]@3",
  S: "[f3,a3]@4 ~@2 f3@2 [f3,bb3]@3 [f3,bb3]@2 [f3,bb3]@3", T: "[f3,a3]@4 ~@4 [f3,a3]@3 [e3,g3]@2 [d3,f3]@3",
  U: "[c3,e3] ~", V: "[f3,a3]@4 ~@2 f3@2 [a3,c4]@3 [g3,bb3]@2 [f3,a3]@3", W: "[c3,f3]!2", X: "[e3,g3]!2",
  Y: "[a2,f3]!2", Z: "[bb2,f3]!2", AA: "c3!2 [c3,f3]@2, f3 ~", AB: "e3!2 [e3,g3]@2, g3 ~", AC: "a2!2 [a2,f3]@2, f3 ~",
  AD: "[db3,f3] ~", AE: "[f3,a3]!2 ~@2", AF: "g3!2 ~@2",
  AG: "[f3,bb3,d4]@4 [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4]@4 [f3,bb3,d4]@4", // Bb
  AH: "[f3,a3,c4]@4 [f3,a3,c4] ~ [f3,a3,c4] ~ [f3,a3,c4]@4 [f3,a3,c4]@4", // F
  AI: "[d3,f3,a3]@4 [d3,f3,a3] ~ [d3,f3,a3] ~ [d3,f3,a3]@4 [d3,f3,a3]@4", // Dm
  AJ: "[c3,e3,g3]@4 [c3,e3,g3] ~ [c3,e3,g3] ~ [c3,e3,g3]@4 [c3,e3,g3]@4", AK: "a2/2",
})).s("gm_trombone").gain(0.4)

// chords · trombone · soft notes
const trombone_soft_2 = note(`<
  ~@24 A B ~ C A B D E A B D C A B D C ~@8 F G H I F G H I ~@7 J K L M N O P Q ~@19
>`.pickRestart({
  A: "[bb2,f3]@3 [bb2,f3]@5", B: "[c3,f3]@3 [c3,f3]@5", C: "[c3,g3]@3 [d3,g3]@5", D: "[d3,f3]@3 [d3,f3]@5",
  E: "[a2,e3]@3 [a2,e3]@5", F: "c3", G: "e3", H: "a2", I: "bb2", J: "~@4 f3 g3 f3@2", K: "a3@2 a3@2 a3@2 g3 f3",
  L: "f3 d3 ~@2 a3!4", M: "c4@2 c4 d4 a3 g3!2 f3", N: "f3 g3 ~@2 bb3!4", O: "a3@2 a3 g3 a3 g3!2 f3",
  P: "f3 d3 ~@2 f3 g3 f3@2", Q: "a3@4 a3@8 g3 f3 d3@2",
})).s("gm_trombone").gain(0.2)

// bass · trombone · "Bass Trombone"
const bass = note(`<
  A B C D A B C E A B C D A B C E A B C D A B C D F G H I F G H J F G@2 I F G H J K L M N K L M O P Q R S P Q R S T U V
  W X Y Z AA ~@6 AB ~ AC AD AE AF AC AD C E A B C E A B C D AG@2
>`.pickRestart({
  A: "bb2@4 bb2 ~ bb2 ~ bb2@4 bb2@4", B: "f2@4 f2 ~ f2 ~ f2@4 f2@4", C: "d2@4 d2 ~ d2 ~ d2@4 d2@4",
  D: "c2@4 c2 ~ c2 ~ c2@4 c2@4", E: "a2@4 a2 ~ a2 ~ a2@4 a2@4", F: "bb1@3 bb1@5", G: "f2@3 f2@5", H: "d2@3 d2@5",
  I: "c2@3 c2@5", J: "a1@3 a1@5", K: "bb1 bb1@2 bb1", L: "f2 f2@2 f2", M: "d2 d2@2 d2", N: "c2 c2@2 c2", O: "a2 ~",
  P: "f2", Q: "a2", R: "d2", S: "bb1", T: "f2!2", U: "a2!2", V: "d2!2", W: "bb1!2", X: "f2!2 f2@2", Y: "a2!2 a2@2",
  Z: "d2!2 d2@2", AA: "bb2 c3 bb2@2 ~@4", AB: "a3 a3@2 ~", AC: "[bb1,bb2]!2 ~ [bb1,bb2]", AD: "[f2,c3]!2 ~@2",
  AE: "[d2,d3]!2 ~ [d2,d3]", AF: "[c2,c3]!2 ~@2", AG: "d2/2",
})).s("gm_trombone").gain(0.25)

// bass · trombone · "Bass Trombone" · soft notes
const bass_soft = note("<~@63 A B C D E F G H ~@19>".pickRestart({
  A: "~@4 f3 g3 f3@2", B: "a3@2 a3@2 a3@2 g3 f3", C: "f3 d3 ~@2 a3!4", D: "c4@2 c4 d4 a3 g3!2 f3", E: "f3 g3 ~@2 bb3!4",
  F: "a3@2 a3 g3 a3 g3!2 f3", G: "f3 d3 ~@2 f3 g3 f3@2", H: "~@12 g3 f3 d3@2",
})).s("gm_trombone").gain(0.15)

stack(trombone, trombone_soft, trombone_2, trombone_soft_2, bass, bass_soft)

More by Panic! At the Disco