Strudelify
KeyA majorTempo60 bpm
0:00/0:00
// goner — Twenty One Pilots
// 60 bpm, 3/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 3/4 at bar 2) are rendered on a constant 3/4 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/3619846; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 89 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · piano
const piano = note(`<
  ~@20 A B C B C B C B C B C B C B C B D ~@10 E F B C B C B C B G H I H I H I H J ~@8 K I K I K I K L M N M N M N M O
>`.pickRestart({
  A: "~@32 c#2@5 c#2@5 ~ c#2@5, ~@32 [e3,g#3,c#4]@15 ~", // C#m
  B: "d2@5 d2@5 ~ d2@5 d2@5 d2@5 ~ d2@5 f#2@5 f#2@5 ~ f#2@5, [f#3,a3,d4]@30 ~@2 [f#3,a3,c#4]@15 ~", // D F#m
  C: "e2@5 e2@5 ~ e2@5 e2@5 e2@5 ~ e2@5 c#2@5 c#2@5 ~ c#2@5, [e3,g#3,b3]@30 ~@2 [e3,g#3,c#4]@15 ~", // E C#m
  D: "[e2,e3,g#3,b3]@5 ~@3", E: "~@11 a3", F: "[a1,a2,e3]@30 ~@2 c#2@5 c#2@5 ~ c#2@5, ~@32 [e3,g#3,c#4]@15 ~",
  G: "e2@5 e2@5 ~ e2@5 e2@5 e2@5 ~ e2@5 [c#2,e3,g#3,c#4]@5 [c#2,e3,g#3,c#4]@5 ~ [c#2,e3,g#3,c#4]@5, [e3,g#3,b3]@5 ~@3", // C#m E
  H: "[d2,f#3,a3,d4]@5 [d2,f#3,a3,d4]@5 ~ [d2,f#3,a3,d4]@5 [d2,f#3,a3,d4]@5 [d2,f#3,a3,d4]@5 ~ [d2,f#3,a3,d4]@5 [f#2,f#3,a3,c#4]@5 [f#2,f#3,a3,c#4]@5 ~ [f#2,f#3,a3,c#4]@5", // D F#m
  I: "[e2,e3,g#3,b3]@5 [e2,e3,g#3,b3]@5 ~ [e2,e3,g#3,b3]@5 [e2,e3,g#3,b3]@5 [e2,e3,g#3,b3]@5 ~ [e2,e3,g#3,b3]@5 [c#2,e3,g#3,c#4]@5 [c#2,e3,g#3,c#4]@5 ~ [c#2,e3,g#3,c#4]@5", // E C#m
  J: "[e2,e3,g#3,b3]@5 [e2,e3,g#3,b3]@5 ~ [e2,e3,g#3,b3]@5 [e2,e3,g#3,b3]@5 [e2,e3,g#3,b3]@5 ~ [e2,e3,g#3,b3]@5 ~@16", // E
  K: "[d2,g#3,a3,d4]@5 [d2,g#3,a3,d4]@5 ~ [d2,g#3,a3,d4]@5 [d2,g#3,a3,d4]@5 [d2,g#3,a3,d4]@5 ~ [d2,g#3,a3,d4]@5 [f#2,f#3,g#3,c#4]@5 [f#2,f#3,g#3,c#4]@5 ~ [f#2,f#3,g#3,c#4]@5", // D F#sus2
  L: "[e2,e3,g#3,b3]@5 [e2,e3,g#3,b3]@5 ~ [e2,e3,g#3,b3]@5 [e2,e3,g#3,b3]@5 [e2,e3,g#3,b3]@5 ~ [e2,e3,g#3,b3]@5 e2@5 e2@5 ~ e2@5", // E
  M: "[f#2,f#3,a3,c#4]@5 [f#2,f#3,a3,c#4]@5 ~ [f#2,f#3,a3,c#4]@5 [e2,e3,g#3,b3]@5 [e2,e3,g#3,b3]@5 ~ [e2,e3,g#3,b3]@5 [e2,e3,g#3,b3]@5 [e2,e3,g#3,b3]@5 ~ [e2,e3,g#3,b3]@5", // F#m E
  N: "[d2,d3,f#3,a3]@5 [d2,d3,f#3,a3]@5 ~ [d2,d3,f#3,a3]@5 [a1,a2,c#3,e3,a3]@5 [a1,a2,c#3,e3,a3]@5 ~ [a1,a2,c#3,e3,a3]@5 [a1,a2,c#3,e3,a3]@5 [a1,a2,c#3,e3,a3]@5 ~ [a1,a2,c#3,e3,a3]@5", // D A
  O: "[d2,d3,f#3,a3]@5 [d2,d3,f#3,a3]@5 ~ [d2,d3,f#3,a3]@5 a2@30 ~@2", // D
})).s("gm_piano").gain(0.45)

// chords · piano · soft notes
const piano_soft = note(`<
  A B C B C B C B C B C B D E F E F E F E G ~@15 A B C B D E F E F E F H ~@16 I J K L K J M J N ~@16
>`.pickRestart({
  A: "~@8 a3 c#4 a3 c#4, ~@32 f#3@15 ~", B: "[e3,g#3]@15 ~ f#3@2 a3@2 f#3@2 a3@2, ~@32 d3@15 ~",
  C: "[a2,e3]@15 ~ a3@2 c#4@2 a3@2 c#4@2, ~@32 f#3@15 ~", D: "[a2,e3]@15 ~ a3@2 c#4@2 a3@2 c#4@2, ~@32 [f#2,f#3]@15 ~",
  E: "[e2,e3,g#3]@15 ~ f#3@2 a3@2 f#3@2 a3@2, ~@32 [d2,d3]@15 ~", // E D
  F: "[a1,a2,e3]@15 ~ a3@2 c#4@2 a3@2 c#4@2, ~@32 [f#2,f#3]@15 ~", G: "[a1,a2,e3]@5 ~@3",
  H: "[e2,e3,g#3]@15 ~ f#3@2 a3@2 f#3@2 ~@2, ~@32 [d2,d3]@15 ~", I: "~@32 g#3@5 g#3@5 ~ g#3@5, ~@2 c#2",
  J: "g#3@5 g#3@5 ~ g#3@5 g#3@5 g#3@5 ~ g#3@5 g#3@5 g#3@5 ~ g#3@5, d2@30 ~@2 f#2@15 ~",
  K: "g#3@5 g#3@5 ~ g#3@5 g#3@5 g#3@5 ~ g#3@5 g#3@5 g#3@5 ~ g#3@5, e2@30 ~@2 c#2@15 ~",
  L: "g#3@5 g#3@5 ~ g#3@5 g#3@5 g#3@5 ~ g#3@5 g#3@5 g#3@5 ~ g#3@5, d2, ~@2 f#2",
  M: "g#3@5 g#3@5 ~ g#3@5 g#3@5 g#3@5 ~ g#3@5 g#3@5 g#3@5 ~ g#3@5, e2, ~@2 c#2", N: "[e2,g#3]@23 ~",
})).s("gm_piano").gain(0.2)

// drums · kick
const kick = s("bd").struct("<~@20 A B@15 C ~@11 A B@15 D ~@8 B@15 E>".pickRestart({
  A: "~@32 x ~@4 x ~@5 x ~@4", B: "x ~@4 x ~@5 x ~@4 x ~@4 x ~@5 x ~@4 x ~@4 x ~@5 x ~@4", C: "x",
  D: "x ~@4 x ~@5 x ~@4 x ~@4 x ~@5 x ~@20", E: "x ~@4 x ~@5 x ~@36",
})).gain(0.3)

// drums · snare
const snare = s("sd").struct("<~@20 A B@15 C ~@11 A B@15 D ~@8 B@15 E>".pickRestart({
  A: "~@32 x ~@4 x ~@5 x ~@4", B: "x ~@4 x ~@5 x ~@4 x ~@4 x ~@5 x ~@4 x ~@4 x ~@5 x ~@4", C: "x",
  D: "x ~@4 x ~@5 x ~@4 x ~@4 x ~@5 x ~@20", E: "x ~@4 x ~@5 x ~@36",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct("<~@88 [~ x ~]>").gain(0.3)

// drums · tambourine
const tambourine = s("tb").struct("<~@56 [~@2 x] [x!3]!7 [x!2 ~] ~@24>").gain(0.3)

// drums · crash
const crash = s("cr").struct(`<
  ~@73
  [x ~@4 x ~@5 x ~@4 x ~@4 x ~@5 x ~@4 x ~@4 x ~@5 x ~@4]!15
  [x ~@4 x ~@5 x ~@4 x ~@31]
>`).gain(0.3)

stack(piano, piano_soft, kick, snare, open_hat, tambourine, crash)

More by Twenty One Pilots