Strudelify
KeyA majorTempo138 bpm
0:00/0:00
// Taxi Cab — Twenty One Pilots
// 138 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5376652; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 161 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(138/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 · piano
const piano = note(`<
  A B C D A B C E A B C D A B C E A B C D A B C F G H I J G H K L G H I J M N O@2 M N O@2 P@2 Q R S T Q R S U Q R S T Q
  R S U Q R S T Q R S U V H W J V H K X G H Y J M N O@2 M N O@2 P@2 Z AA AB AC Z AA AB AC Z AA AB AC Z AA AB AC Z AA AB
  AC Z AA AB AC Z AA AB AC Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AL AM AN AO AL AM AN AO AP AQ AL AR AP AQ AL
  AS AT AU AV AW AT AU AV AX@2
>`.pickRestart({
  A: "[a3,c#4,e4]@5 ~@3 f#3@3 f#3, f#3@9 ~ f#3@6 ~@8, ~@12 [a3,c#4,e4]@11 ~", // A
  B: "[d3,a3,d4,e4] ~@5 d3@6 ~@10 a3@2, ~@6 [a3,d4,e4]@9 ~ a3@6 ~@2, ~@2 d3!2", // Dsus2 Asus4
  C: "[a3,c#4,e4]@5 ~@3 c#3@3 c#3, c#3@9 ~ c#3@6 ~@8, ~@12 [a3,c#4,e4]@11 ~", // A
  D: "[b2,a3,b3,e4] ~@5 b2@6 ~@10 a3@2, ~@6 [a3,b3,e4]@9 ~ a3@6 ~@2, ~@2 b2 e3", // Esus4 Asus2
  E: "[e3,a3,b3,e4] ~@5 e3@6 ~@10 a3@2, ~@6 [a3,b3,e4]@9 ~ g#3@6 ~@2, ~@2 e3!2", // Esus4 Asus2
  F: "[e3,a3,b3,e4] ~@5 e3@6 ~@10 g#3@2, ~@6 [a3,b3,e4]@9 ~ g#3@6 ~@2, ~@2 e3!2", // Esus4 Asus2
  G: "[b1,b2] b2 ~ b2, [f#3,b3]@12 [f#3,b3]@11 ~", H: "[f#3,b3] b2 f#3 b2",
  I: "[e2,e3] e3 ~ e3, [g#3,b3]@12 [g#3,b3]@11 ~", J: "[g#3,b3] e3 [g#3,b3] e3",
  K: "[f#2,c#3,f#3] f#2 [c#3,f#3] f#2, [a3,d4]@23 ~", L: "[e2,b2,e3] e3 [b2,g#3] e3", M: "[a1,a2,a3,c#4,e4]@23 ~",
  N: "[c#2,c#3,g#3,c#4,e4]@23 ~", // C#m
  O: "[[a3,c#4,e4,f#4]@11 ~ [a3,c#4,e4,f#4]@11 ~ [a3,c#4,e4,f#4]@11 ~ [a3,c#4,e4,f#4]@11 ~, [f#1,f#2]@23 ~]/2", // F#m7 F#
  P: "[[a3,d4,e4]@11 ~ [a3,d4,e4]@11 ~ g#3@4 a3@8 b3@4 c#4@8, [d2,d3]@23 ~]/2", // Asus4 D
  Q: "[a3,c#4,e4]@5 ~@3 f#3@3 f#3, [f#2,f#3]@9 ~ f#3@6 ~@8, ~@12 [a3,c#4,e4]@11 ~", // A F# A
  R: "[d2,d3,a3,d4,e4] ~@5 [d2,d3]@6 ~@10 a3@2, ~@6 [a3,d4,e4]@9 ~ a3@6 ~@2, ~@2 d3!2", // Dsus2 D Asus4
  S: "[a3,c#4,e4]@5 ~@3 c#3@3 c#3, [a2,c#3]@9 ~ c#3@6 ~@8, ~@12 [a3,c#4,e4]@11 ~", // A
  T: "[e2,b2,a3,b3,e4] ~@5 [e2,b2]@6 ~@10 a3@2, ~@6 [a3,b3,e4]@9 ~ a3@6 ~@2, ~@2 b2 e3", // Esus4 E5 Asus2
  U: "[e2,e3,a3,b3,e4] ~@5 [e2,e3]@6 ~@10 a3@2, ~@6 [a3,b3,e4]@9 ~ g#3@6 ~@2, ~@2 e3!2", // Esus4 E Asus2
  V: "[b1,b2] b2 ~ b2, d4@23 ~, [f#3,b3]@12 [f#3,b3]@11 ~", W: "[e2,e3] e3 ~ e3, d4@23 ~, [g#3,b3]@12 [g#3,b3]@11 ~",
  X: "[e2,e3] e3 b2 e3, b3@23 ~, g#3@12 g#3@11 ~", Y: "[e2,e3] e3 g#3 e3, d4@23 ~, b3@12 b3@11 ~",
  Z: "[a3,c#4,e4]@11 ~ [a3,c#4,e4]@11 ~, a2@23 ~", AA: "[c#3,g#3,c#4,e4] ~@5 [g#3,c#4,e4]@9 ~ g#3@6 a3@2, ~@6 c#3@17 ~",
  AB: "[f#3,a3,c#4,e4,f#4]@11 ~ [a3,c#4,e4,f#4]@11 ~, f#2@23 ~", // F#m7
  AC: "f#2 ~@15 g#2@8, [a3,c#4,e4,f#4]@11 ~ [a3,c#4,e4,f#4]@11 ~, ~@2 f#2@3 ~@3", AD: "[a2,a3,c#4,e4]@23 ~",
  AE: "c#3 ~@5 c#3@17 ~", AF: "f#2@23 ~", AG: "f#2 ~@5 f#2@9 ~ g#2@8", AH: "a2@23 ~", AI: "c#3@3 ~@3 c#3@17 ~",
  AJ: "f#2@21 ~ e2@2", AK: "f#2@3 ~@3 f#2@9 ~ g#2@8",
  AL: "[a3,c#4,e4]@5 ~@3 a2@3 a2, [a1,a2]@9 ~ a2@6 ~@8, ~@12 [a3,c#4,e4]@11 ~", // A
  AM: "[c#2,c#3,g#3,c#4,e4] ~@5 [c#2,c#3]@6 ~@6 c#3@6, ~@6 [g#3,c#4,e4]@9 ~ c#4@8, ~@2 c#3 ~", // C#m C# C#m
  AN: "[a3,c#4,f#4]@5 ~@3 f#2@3 f#2, [f#1,f#2]@9 ~ f#2@6 ~@8, ~@12 [a3,c#4,f#4]@11 ~", // F#m F# F#m
  AO: "[f#1,f#2] ~@15 [g#1,g#2]@8, [a3,c#4,f#4]@11 ~ [a3,c#4,f#4]@11 ~, ~@2 [f#1,f#2]@3 ~@3", // F# G# F#m F#
  AP: "[a3,c#4,e4]@5 ~@3 f#2@3 f#2, [f#1,f#2]@9 ~ f#2@6 ~@8, ~@12 [a3,c#4,e4]@11 ~", // A F# A
  AQ: "[d1,d2,a3,d4,e4] ~@5 [d1,d2]@6 ~@10 a3@2, ~@6 [a3,d4,e4]@9 ~ a3@6 ~@2, ~@2 d2!2", // Dsus2 D Asus4
  AR: "[e2,b2,a3,b3,e4] ~@5 [e2,b2]@6 ~@10 a3@2, ~@6 [a3,b3,e4]@9 ~ a3@6 ~@2, ~@2 b2 f#3", // Esus4 E5 Asus2
  AS: "[e2,e3,a3,b3,e4] ~@5 [e2,e3]@6 ~@4 g#3@8, ~@2 [a3,b3,e4]@3 ~@3, ~@12 e3@11 ~", // Esus4 E Asus2
  AT: "[a4,c#5,e5]@5 ~@3 f#4@3 f#4, f#4@9 ~ f#4@6 ~@8, ~@12 [a4,c#5,e5]@11 ~", // A
  AU: "[d4,a4,d5,e5] ~@5 d4@6 ~@10 a4@2, ~@6 [a4,d5,e5]@9 ~ a4@6 ~@2, ~@2 d4!2", // Dsus2 Asus4
  AV: "[a4,c#5,e5]@5 ~@3 c#4@3 c#4, c#4@9 ~ c#4@6 ~@8, ~@12 [a4,c#5,e5]@11 ~", // A
  AW: "[a3,a4,b4,e5] ~@5 b3@6 ~@10 a4@2, ~@6 [a4,b4,e5]@9 ~ a4@6 ~@2, ~@2 b3 e4", // Asus2
  AX: "[[e4,a4,b4,e5] ~@5 e4@6 ~@4 g#4@30 ~@2, ~@2 [a4,b4,e5]@3 ~@11, ~@6 e4@17 ~]/2", // Esus4 Asus2
})).s("gm_piano").gain(0.3)

// bass · electric bass finger · "Bass Guitar [Tablature]"
const bass = note(`<
  ~@24 A@2 B@2 A@2 C B A@2 B@2 D E F@2 D E F@2 ~ G H I J K H I L M H I J K H I L M H I J K H I L M A@2 B@2 A@2 C B A@2
  B@2 D E N@2 D E F@2 ~@2 O P Q R D P Q R D S Q R D S Q R D S Q R D S Q R D S Q R D S Q R D S Q R D S Q R D T U V D T W
  X D T W V Y Z AA AB AC Z AA AB H I J K H I J AD@2
>`.pickRestart({
  A: "b1!4", B: "e1!4", C: "f#1!4", D: "a1", E: "c#2", F: "f#1/2", G: "~@3 c#2", H: "f#2 e2", I: "d2 ~ d2@4 a2@2",
  J: "a2", K: "b2 ~ b2@4 c#3@2", L: "a2 b2", M: "e2 ~ e2@4 c#3@2", N: "[f#1@5 ~ f#1 g#1]/2", O: "c#2 a1",
  P: "c#2 ~ c#2@6", Q: "f#1@3 e1", R: "f#1 ~ f#1@2 ~@2 g#1@2", S: "c#2 ~ c#2@4 e1@2", T: "c#2 ~ c#2@4 ~@2",
  U: "f#1@2 f#1!2", V: "f#1 ~ f#1@4 g#1@2", W: "f#1@2 f#1 e1", X: "f#1 f#1@2 g#1", Y: "f#1", Z: "d2 ~ d2@4 ~@2",
  AA: "a1@2 a1!2", AB: "e1 ~ e1@2 b1@2 f#1@2", AC: "f1", AD: "[b2 ~ b2@2 b2@8 ~@4]/2",
})).s("gm_electric_bass_finger").gain(0.09)

// drums · kick
const kick = s("bd").struct(`<
  ~@46 A B A B A B A C A B A B A B A B A B A B A B A D E B A F A B G D G D H@2 ~@9 I A B A B A B A J A B A B A B A B A B
  A B A B A B A B A B A B A B A B A B A B A B A B A J A B A K A B A L A@3 J A J A M N ~@8
>`.pickRestart({
  A: "x ~@4 x!2 ~@4 x", B: "x ~@2 x ~@2 x ~@4 x", C: "x ~@2 x ~ x ~@5 x", D: "x!2 ~ x", E: "x ~@4 x!2 ~@5",
  F: "x ~ x!2 ~@5 x ~@2", G: "x ~@2 x ~ x!2 ~@5", H: "x!4", I: "~@6 x ~ x!2 ~ x", J: "x ~@2 x ~@4 x ~@2 x",
  K: "x ~@2 x ~@2 x ~ x!2 ~ x", L: "x ~@2 x ~@2 x ~ x ~ x ~", M: "x ~@2 x ~@2 x ~ x ~@2 x", N: "x",
})).gain(0.1)

// drums · snare
const snare = s("sd").struct(`<
  ~@46 A B A B A B A C A B A B A B A B A B A B A B A D A B A E A B F E F G A H ~@9 I A B A J A B A K A B A J A B A J A B
  A J A B A J A B A J A B A J A B A J A B A E A B A L A B F M A N A O A F A P A P A P ~@9
>`.pickRestart({
  A: "~ x", B: "~@2 x", C: "~@6 x ~@4 x", D: "~@5 x!2 ~@5", E: "~@2 x ~@2 x!2 ~@5", F: "~@2 x!2", G: "~@2 x ~@2 x ~@6",
  H: "x!2", I: "~@5 x!2 ~@4 x", J: "~@8 x ~@2 x", K: "~@6 x ~@3 x!2", L: "~@9 x ~ x", M: "~ x ~@4", N: "~@8 x!2 ~@2",
  O: "~@6 x!6", P: "~@3 x",
})).gain(0.1)

// drums · low tom
const low_tom = s("lt").struct("<~@77 [~@3 x] ~@53 [~@11 x] ~@7 [~@11 x] ~@21>").gain(0.13)

// drums · hihat
const hihat = s("hh").struct("<~@46 A B@22 C ~@22 A B@7 A B@7 A B@15 A B@7 ~@29>".pickRestart({
  A: "~ x!3", B: "x!4", C: "x!2 ~@2",
})).gain(0.08)

// drums · mid tom
const mid_tom = s("mt").struct("<~@53 A ~@15 B ~@10 C D E ~@48 A ~@7 F ~@21>".pickRestart({
  A: "~@8 x!2 ~@2", B: "~@3 x", C: "~ x!3", D: "x ~@2 x ~@2 x ~@2 x!3", E: "x", F: "~@6 x ~ x!2 ~@2",
})).gain(0.13)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@49 A ~@7 A ~@3 A ~@3 A ~@29 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@4 B C@3 B C B D B C@2 D B C@3 B C@2 ~@10
>`.pickRestart({
  A: "~@5 x ~@6", B: "~ x!3", C: "x!4", D: "x!2 ~@2",
})).gain(0.13)

// drums · crash
const crash = s("cr").struct(`<
  ~@46 A ~@23 A ~@3 A ~@3 A ~ A ~ A ~@3 A ~@5 A ~@7 A ~@7 A ~@15 A ~@7 A ~@3 A ~ A ~ A ~@3 A ~@3 A ~@2 B A ~@8
>`.pickRestart({
  A: "x", B: "x!2 ~ x",
})).gain(0.13)

// drums · ride
const ride = s("rd").struct("<~@70 [~ x!3] [x!4]!3 [~ x!3] [x!4]!3 [~ x!3] [x!4] ~@81>").gain(0.13)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@36 [x!2]!9 ~@37 [~ x]!4 ~ [~ x]!4 x ~@69>").gain(0.06)

stack(piano, bass, kick, snare, low_tom, hihat, mid_tom, open_hat, crash, ride, ride_soft)

More by Twenty One Pilots