Strudelify
KeyA majorTempo180 bpm
0:00/0:00
// Heathens — Twenty One Pilots
// 180 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/4444871; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 80 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(180/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 · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  ~@16 A@2 B C A@2 B D E@2 F@2 E G H C I J K L I J K L ~@7 M E@2 F@2 E G H C I J K L I J K L A@2 N@2 A@2 O@2 ~@8
>`.pickRestart({
  A: "e4 c4 b3 g3", B: "e4 b3", C: "g#3@2 g#3 b3", D: "g#3@3 e4", E: "e4 c4@2 e4", F: "[g#3 b3@6 e4]/2",
  G: "e4 c4!2 e4", H: "g#3 b3 g#3@2", I: "[e4,g4]!2", J: "[e4,a4]!2", K: "[e4,g#4]!2", L: "[e4,g#4] ~", M: "~@3 e4",
  N: "e4/2", O: "[e4@7 ~]/2",
})).s("gm_trumpet").gain(0.3)

// chords · trumpet · "B♭ Trumpet" · soft notes · C A5 E C A5 E
const trumpet_soft = note("<~@40 [[c4,e4]!2] [[e4,a4]!2] [[e4,g#4]!2]!2 [[c4,e4]!2] [[e4,a4]!2] [[e4,g#4]] ~@33>")
  .s("gm_trumpet").gain(0.15)

// chords · piano
const piano = note(`<
  A B C@2 A B C D A B C@2 A B C ~ E F G H E F G H E I G H E I G H J K L M J K L M N O P@2 N O Q R A B C@2 A B C D J K L
  M J K L M J S L T J S L U V W X@2 V W Y@2
>`.pickRestart({
  A: "[c4,e4] g3 [c4,e4] g3, [c2,c3]@15 ~", B: "[c4,e4] a3 [c4,e4] a3, [a1,a2]@15 ~",
  C: "[b3,e4] g#3 [b3,e4] g#3, [e2,e3]@15 ~", D: "d4 g#3 c4 g#3, [e2,e3]@15 ~",
  E: "[c4,e4] g3 [g3,c4,e4] [c3,g3], c3 ~", F: "[c4,e4] a3 [c4,e4] a3, a2 e3", G: "[b3,e4] g#3 [b3,e4] g#3, e3 b2",
  H: "[b3,e4] g#3 [b3,e4] g#3, e2 e3", I: "[a2,c4,e4] [a2,a3] [c4,e4] a3, ~ e3",
  J: "[c3,g3]@2 ~ c3, [c4,e4]@15 ~, ~@8 g3@7 ~", K: "a2!2 e3@2, [a3,c4,e4]@15 ~", L: "e3 b2, [g#3,b3,e4]@15 ~",
  M: "[g#3,b3,e4]@15 ~, e2 ~", N: "[b4,b5] [c5,c6] [b4,b5] [g4,g5], [g3,c4,e4]@15 ~",
  O: "[b4,b5] [c5,c6] [b4,b5] [g4,g5], [a3,c4,e4]@15 ~", P: "[[g#3,b3,e4,e5]@15 ~]/2", Q: "[g#3,b3,e4,e5]@15 ~",
  R: "[e4,g#4,d5] [e4,g#4,c5]", S: "a2 e3, [a3,c4,e4]@15 ~", T: "e2 e3, [g#3,b3,e4]@15 ~",
  U: "e2@2 e3 e6, [g#3,b3,e4]@11 ~@5", V: "d6 c6@2 e6, [c4,e4,g4]@15 ~", W: "d6 c6!2 b5, [e4,a4,c5]@15 ~",
  X: "[b5@27 ~ e6@4, [e4,g#4,b4]@15 ~]/2", Y: "[[e4,g#4,b4,b5]@15 ~]/2",
})).s("gm_piano").gain(0.14)

// bass · electric bass pick · "Bass Guitar"
const bass = note(`<
  A B C@2 A B C@2 A B D@2 A B D@2 A B D@2 A B D@2 A B D@2 A B D E A B C E A B C@2 A B C@2 A B C ~ A B D@2 A B C@2 A B C
  E A B C@2 A B D@2 A B D@2 ~@2 F@2 ~@4
>`.pickRestart({
  A: "c2", B: "a1", C: "e2", D: "e2@4 b1!2 ~@2", E: "e2@4 g1 b1@2 ~", F: "~@4 b1!2 ~@2",
})).s("gm_electric_bass_pick").gain(0.13)

stack(trumpet, trumpet_soft, piano, bass)

More by Twenty One Pilots