Strudelify

final masquerade

Linkin Park

KeyE♭ majorTempo164 bpm
0:00/0:00
// final masquerade — Linkin Park
// 164 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/1357216; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 146 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.

// other · clarinet · "B Klarinette"
const clarinet = note(`<
  ~@11 A B C@2 A D E@2 F@2 G@2 H@2 I J ~@3 K L@2 M@2 ~@4 L@2 M@2 ~@15 K N@2 O@2 P@2 Q R S T U@2 L@2 V@2 S T W@2 L@2 X@4
  M@2 L@2 M@2 ~@15 Y A B Z@2 AA@2 AB@2 S T W@2 AC@2 M@2 AD AE@2 AF AG AF AG AH AD AE@2 AF AG AF AG AH AI AJ@2 ~ AK AL AF
>`.pickRestart({
  A: "eb4 f4 eb4 d4", B: "c4@4 c4@3 c4", C: "[eb4@2 c4@2 eb4@2 c4 eb4@2 d4 c4@6]/2", D: "c4!2",
  E: "[eb4@2 c4@2 eb4@2 f4 g4@7 ~ eb4]/2", F: "[ab4@2 ab4@2 ab4@2 g4 f4@5 eb4@3 eb4]/2",
  G: "[eb4@2 c4@2 eb4@2 f4 g4@7 ~ g4]/2", H: "[ab4@2 ab4@2 ab4 g4@2 f4@5 eb4@3 eb4]/2", I: "g4!4", J: "g4@7 ~",
  K: "~@7 eb4", L: "[eb4@2 eb4@2 eb4@2 eb4 eb4@5 d4@3 d4]/2", M: "[d4@2 d4@2 eb4@2 d4 d4@7 ~@2]/2",
  N: "[eb4@2 eb4@2 eb4@2 eb4 d4@5 c4@4]/2", O: "[c4@2 c4@2 c4@2 d4 eb4@7 ~ eb4]/2",
  P: "[f4@2 f4@2 f4 eb4@2 f4@5 eb4@3 eb4]/2", Q: "d4!4", R: "d4@7 c4", S: "c4!3 bb3", T: "ab3@4 ab3@3 ab3",
  U: "[ab3@2 ab3@2 c4@2 d4 eb4@7 ~ eb4]/2", V: "[d4@2 d4@2 eb4@2 d4 d4@7 ~ c4]/2", W: "[ab3@2 ab3@2 c4@2 d4 eb4@9]/2",
  X: "[d4@2 d4@2 eb4@2 d4 d4@7 ~ d4]/2", Y: "~@7 c4", Z: "[c4@2 c4@2 eb4@2 f4 g4@7 ~ g4]/2",
  AA: "[g4@2 g4@2 g4@2 g4 g4@5 f4@3 f4]/2", AB: "[f4@2 f4@2 g4@2 f4 f4@7 ~ c4]/2",
  AC: "[eb4@2 eb4@2 eb4@2 eb4 f4@5 d4@3 d4]/2", AD: "g3 bb3", AE: "c4", AF: "bb3", AG: "bb3!2", AH: "c4@3 ~",
  AI: "c4 bb3", AJ: "c4/2", AK: "eb4 d4", AL: "eb4",
})).s("gm_clarinet").gain(0.45)

// other · trumpet · "B Trompete"
const trumpet = note(`<
  ~@26 A B C D@2 E@2 F@2 B C G@2 E@2 H I H J ~@6 B C K@2 B C L@2 M@2 N@2 O@2 P Q B C D@2 E@2 R@2 B C G@2 E@2 S@4 T@2 E@2
  T@2 ~@15 A B C D@2 E@2 R@2 B C G@2 U@2 T@2 V W X Y Z AA AB J V W X Y Z AA AB J AB AC@2 ~@4
>`.pickRestart({
  A: "~@7 c4", B: "eb4 f4 eb4 d4", C: "c4@4 c4@3 c4", D: "[c4@2 c4@2 eb4@2 f4 g4@7 ~ g4]/2",
  E: "[g4@2 g4@2 g4@2 g4 g4@5 f4@3 f4]/2", F: "[f4@2 f4@2 g4@2 f4 f4@7 ~ c4]/2", G: "[c4@2 c4@2 eb4@2 f4 g4@9]/2",
  H: "f4@2 f4@2 g4@2 f4!2", I: "eb4@6 ~ f4", J: "eb4@3 ~", K: "[eb4@2 c4@2 eb4@2 c4 eb4@7 ~@2]/2",
  L: "[eb4@2 c4@2 eb4 f4@2 g4@7 ~ ab4]/2", M: "[ab4@2 ab4@2 ab4@2 g4 f4@5 eb4@3 eb4]/2",
  N: "[eb4@2 c4@2 eb4@2 f4 g4@7 ~ g4]/2", O: "[ab4@2 ab4@2 ab4 g4@2 ab4@5 g4@3 g4]/2", P: "g4!4", Q: "g4@7 c4",
  R: "[f4@2 f4@2 g4@2 f4 f4@7 ~ eb4]/2", S: "[f4@2 f4@2 g4@2 f4 f4@7 ~ f4]/2", T: "[f4@2 f4@2 g4@2 f4 f4@7 ~@2]/2",
  U: "[g4@2 g4@2 g4@2 g4 ab4@5 f4@3 f4]/2", V: "c4 d4", W: "eb4", X: "eb4 bb4", Y: "g4", Z: "g4 eb4", AA: "f4",
  AB: "f4 g4", AC: "eb4/2",
})).s("gm_trumpet").gain(0.45)

// chords · synth brass 1 · "Brass Synthesizer"
const synth_brass_1 = note(`<
  ~@4 A@2 B@2 A@2 C@2 D@2 E@2 F@4 G@2 H@2 I@2 J@2 K@7 L M@6 N O P Q R S P T R U V@8 W@2 X@2 Y Z@2 AA AB@3 AC@4 AD AE@3
  AF@4 AG@4 AH AI@2 AJ AK AL@2 AM AN AO@2 AP AQ AR@2 AS@2 AT@2 AU@2 AV@2 AW@2 AX@2 AY@2 AZ@2 BA AH AI@2 AJ BB AZ@2 BA
  BC@4 BB AZ@2 BA BD@4 BE@3 BF@2 BG@2
>`.pickRestart({
  A: "[c3,g3,c4,eb4]/2", B: "[eb3,g3,bb3,eb4]/2", C: "[eb4@4 ~ f4 ~ d4, [eb3,g3,bb3], ~@2 eb4!2]/2",
  D: "[c4@4 c4@3 ~@8 eb4, [c3,g3], eb4@8 eb4@4 eb4@3 ~, ~@7 c4@3 c4@4 c4@2]/2", // C5
  E: "[~ d4 c4@6 ~@2 f4@2 ~@2 d4@2, [eb3,g3,bb3], eb4@2 eb4!2]/2", // Eb
  F: "[c4@4 ~@10 f4 ~ eb4@7 ~ ab4@2 ab4@2 ab4@2 g4 f4, [c3,g3] [eb3,g3,bb3], eb4@8 eb4@4 eb4@4 ~@7 eb4@9, ~@2 c4@3 c4@3 ~@8, ~@15 g4@7 ~@10]/4", // C5 Eb
  G: "[c4!8 c4!3 ~ eb4!4, [c3,g3], eb4@3 ~, ~@11 c4@5]/2", H: "[g4!8 g4!8, [eb3,g3,bb3,eb4]]/2",
  I: "[f4!8 f4!8, [bb2,f3,d4]]/2", J: "[g4!8 g4!8, [g2,g3,d4]]/2",
  K: "[c4@4 c4@3 c4 c4@2 c4@2 eb4@2 f4 ~@8 g4 g4@2 g4@2 g4@2 g4 ~@5 f4@3 f4 f4@2 f4@2 g4@2 f4 ~@8 c4, ab2@2 eb3@2 bb2@2 c3, ~@15 g4@7 ~@9 g4@5 ~@11 f4@7 ~@2]/7",
  L: "eb4 f4 eb4 d4, bb2",
  M: "[c4@4 c4@3 c4 c4@2 c4@2 eb4@2 f4 ~@9 g4@2 g4@2 g4@2 g4 ~@5 f4@3 f4 f4@2 f4@2 g4@2 f4!2, ab2 eb3 bb2, ~@15 g4@9 ~@7 g4@5 ~@12]/6",
  N: "eb4@3 ~", O: "[eb4,c5,eb5] ~ [f4,c5,f5] ~ [eb4,c5,eb5] ~ [d4,d5] ~", P: "c3!8, [c4,c5]!2",
  Q: "c3!8, [c4,c5]!2 [eb4,eb5]@2", R: "eb2!8, [g4,c5,g5]",
  S: "eb2!4 [eb2,eb4,c5,eb5] eb2 [eb2,d4,d5] eb2, [g4,c5,g5] ~", T: "c3!8, [c4,c5] [eb4,eb5]",
  U: "[eb2,eb4,c5,eb5] eb2 [eb2,f4,c5,f5] eb2 [eb2,eb4,c5,eb5] eb2 [eb2,d4,d5] eb2", // Cm F7 Cm Ebmaj7
  V: "[c3!8 c4!8 eb3!8 eb3!7 ~ c4!8 c4!8 eb3!8 eb3!8, g3, eb3@16 ~@15 eb3@17 ~@16, [c4,c5] ~@15]/8", // C
  W: "[ab3!8 ab3!8, eb3]/2", X: "[c4!8 c4!8, [eb3,g3]]/2", Y: "bb3!8, [eb3,ab3]", Z: "[bb3!8 g3!8, d3, g3 ~]/2",
  AA: "g3!8", AB: "[c4@4 c4@3 c4 c4@2 c4@2 eb4@2 f4 ~@8 g4, [ab2,c3]@3 [c3,eb3] [eb3,g3]@2, ~@15 g4@7 ~@2]/3",
  AC: "[g4@2 g4@2 g4@2 g4 ~@5 f4@3 f4 f4@2 f4@2 g4@2 f4 ~@8 eb4, [eb3,g3] [bb2,eb3] [bb2,d3]@4 [c3,eb3]@2, ~@7 g4@5 ~@11 f4@7 ~@2]/4", // Eb Eb5 Bb Cm
  AD: "[bb2,eb3,eb4] [bb2,f3,f4] [bb2,eb3,eb4] [bb2,d3,d4]", // Eb5 Bb5 Eb5 Bb
  AE: "[c4@4 c4@3 c4 c4@2 c4@2 eb4@2 f4 ~ [eb3,g3]@8, [ab2,c3]@3 [c3,eb3] ~@2, ~@5 g4@3]/3", // Eb Ab Cm
  AF: "[g4@2 g4@2 g4@2 g4 ~@5 f4@3 f4 f4@2 f4@2 g4@2 f4 ~@8 f4, [eb3,g3] [bb2,eb3] [bb2,d3]@4 [c3,eb3]@2, ~@7 g4@5 ~@11 f4@7 ~@2]/4", // Eb Eb5 Bb Cm
  AG: "[[bb2,eb3,f4]@2 [bb2,f3,f4]@2 [bb2,eb3,g4]@2 f4 ~@8 f4 f4@2 f4@2 g4@2 f4 ~ [eb3,g3]@8, ~@3 [bb2,d3] [ab2,c3]@6 [c3,eb3]@2 ~@4, ~@7 f4@7 ~@9 f4@7 ~@2]/4", // Bbsus4 Bb5 Eb Bb Ab Cm
  AH: "[eb3,g3] [bb2,eb3]", AI: "[bb2,d3]/2", AJ: "[c3,eb3]", AK: "[bb3,eb4] [bb3,f4] [bb3,eb4] [bb3,d4]",
  AL: "[ab2!8 ab2!8, [ab3,c4]@3 ~, ~ d4 eb4 [c4,eb4,bb4]]/2", AM: "eb2!8, [bb3,eb4,g4]",
  AN: "eb2!8, [bb3,eb4,g4,bb4] [bb3,eb4]", AO: "[bb2!8 bb2!8, bb3, d4 eb4 f4 d4]/2", AP: "c3!8, [c4,eb4]",
  AQ: "eb2!8, [bb3,eb4] [bb3,f4] [bb3,eb4] [bb3,d4]", AR: "[~ d4 ~ bb4, [eb3,ab3,c4], eb4 eb4]/2",
  AS: "[g4@2 bb4 eb4, [eb3,g3,bb3], eb4@3 ~]/2", AT: "[~ eb4 f4 d4, [d3,f3,bb3], d4@3 ~]/2",
  AU: "[eb4@4 ~ f4 ~ d4, [c3,g3,c4], ~@2 eb4!2]/2", AV: "[c4!4 c4 ~ eb4!2, [eb3,ab3], eb4@3 ~, ~@5 c4@3]/2",
  AW: "[g4!4 g4!2 eb4!2, [eb3,g3,bb3], eb4@3 ~]/2", AX: "[d4!4 d4!4, [d3,f3,bb3]]/2",
  AY: "[[c3,g3,c4]@4 [bb2,eb3] [bb2,f3] [bb2,eb3] [bb2,d3], eb4]/2", AZ: "[[ab2,c3]@3 [c3,eb3]]/2", BA: "[eb3,g3]",
  BB: "[bb2,eb3] [bb2,f3] [bb2,eb3] [bb2,d3]", // Eb5 Bb5 Eb5 Bb
  BC: "[[eb4,g4]@2 [eb4,g4]@2 [eb4,g4]@2 [eb4,g4] ~@5 [d4,f4]@3 [d4,f4] [d4,f4]@2 [d4,f4]@2 [eb4,g4]@2 [d4,f4] ~ [c3,eb3]@8, [eb3,g3] [bb2,eb3] [bb2,d3]@4 ~@2, ~@7 [eb4,g4]@5 ~@11 [d4,f4]@7 ~@2]/4", // Eb Dm Eb Dm Cm Eb Eb5 Bb …
  BD: "[[eb4,g4]@2 [eb4,g4]@2 [eb4,g4]@2 [eb4,g4] ~@5 [d4,f4]@3 [d4,f4] [d4,f4]@2 [d4,f4]@2 [eb4,g4]@2 [d4,f4] ~@8 [d4,f4], [eb3,g3] [bb2,eb3] [bb2,d3]@4 [c3,eb3]@2, ~@7 [eb4,g4]@5 ~@11 [d4,f4]@7 ~@2]/4", // Eb Dm Eb Dm Eb Eb5 Bb Cm …
  BE: "[[bb2,eb3,d4,f4]@2 [bb2,f3,d4,f4]@2 [bb2,eb3,eb4,g4]@2 [d4,f4] ~ [c2,eb2,ab2,c3]@16, ~@3 [bb2,d3] ~@8, ~@7 [d4,f4]@7 ~@10]/3", // Bb Eb Dm Ab Bb Dm
  BF: "[bb1,eb2,g2,bb2]/2", BG: "[bb1,d2,f2,bb2]/2",
})).s("gm_synth_brass_1").gain(0.4)

// other · french horn · "Bariton Horn (Violinschlüssel)"
const french_horn = note(`<
  ~@8 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C@2 D E F G@2 H@2 I@2 E F J@2 H@2 K L ~ M@2 N@2 M@2 N@2 O P Q@2 P@2 Q@2 R@2 P@2
  S@2 T@2 U@2 V W X@2 Y E U@2 V W X@2 Y E U@2 V W X@2 Y E Z@2 N@2 AA@2 M@2 Z@2 N@2 AA@2 M@4 N@2 C@2 AB E U@2 V W X@2 Y E
  U@2 V W X@2 Y E U@2 V W X@2 Y E M@2 AA@4
>`.pickRestart({
  A: "c4/2", B: "eb4/2", C: "bb3/2", D: "g3@7 c3", E: "eb3 f3 eb3 d3", F: "c3@4 c3@3 c3",
  G: "[c3@2 c3@2 eb3@2 f3 g3@7 ~ g3]/2", H: "[g3@2 g3@2 g3@2 g3 g3@5 f3@3 f3]/2", I: "[f3@2 f3@2 g3@2 f3 f3@7 ~ c3]/2",
  J: "[c3@2 c3@2 eb3@2 f3 g3@9]/2", K: "f3@2 f3@2 g3@2 f3!2", L: "eb3@3 ~", M: "c3/2", N: "eb3/2", O: "c3!8", P: "c4!8",
  Q: "eb3!8", R: "ab3!8", S: "bb3!8", T: "g3!8", U: "[c3@3 eb3]/2", V: "g3", W: "g3 eb3", X: "d3/2", Y: "eb3",
  Z: "ab2/2", AA: "bb2/2", AB: "c4",
})).s("gm_french_horn").gain(0.4)

// 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 E B F ~@7 A B C D A G ~ H A B C I J B K G A B C D A B C D A B C D
  A G ~ H C B C I J G K G C B C I J G K H C G C L C M K N C G C O C M K@2 F ~@13 H P C G C L C M K H C G C L C M Q R@5
  S@3 T F ~@5
>`.pickRestart({
  A: "x!2 ~@3 x ~@2", B: "~ x!2 ~@2 x ~ x", C: "x!2 ~ x ~ x ~@2", D: "~ x!2 ~@5", E: "x!2 ~ x ~ x ~ x", F: "x",
  G: "~ x!2 ~@2 x ~@2", H: "~ x!2 ~ x!2 ~ x", I: "~ x!2 ~@3 x!2", J: "x ~@2 x ~ x ~@2", K: "x ~ x!2 ~ x ~@2",
  L: "x ~ x!2 ~ x!2 ~", M: "x!3 ~@2 x ~@2", N: "x ~ x ~ x ~@2 x", O: "~@2 x ~@2 x ~@2", P: "x ~ x!2 ~ x ~ x",
  Q: "~@2 x!2 ~ x ~@2", R: "~@2 x ~@3 x ~@3 x ~@3 x!2", S: "~@2 x ~@3 x!2 ~@2 x ~@3 x!2", T: "~@3 x ~@3 x",
})).gain(0.35)

// drums · snare
const snare = s("sd").struct(`<
  A@27 B ~@8 A@6 ~ B A@22 ~ B A@15 B A C A D A@3 E A C A F C G C@2 ~@14 H I A C A C A@3 B A C A D A@2 J@6 K@3 L ~@6
>`.pickRestart({
  A: "~ x", B: "x ~@2 x ~@2 x ~", C: "~@4 x ~@2 x", D: "~ x ~@2 x ~@2 x", E: "~ x ~ x ~ x!2 ~",
  F: "~@2 x ~@5 x ~@3 x!4", G: "~@4 x ~ x!2", H: "x ~@2 x", I: "~ x ~@4 x ~", J: "x!2", K: "x!4", L: "x!3 ~ x!3 ~",
})).gain(0.35)

// drums · low tom
const low_tom = s("lt").struct("<~@51 [~@6 x!2] ~@23 [~@6 x!2] ~@38 [~@3 x ~@4] [~ x] ~@30>").gain(0.35)

// drums · hihat
const hihat = s("hh").struct("<A@27 ~@13 A@2 ~@10 B A@4 C A@8 ~@80>".pickRestart({
  A: "x!8", B: "~ x!7", C: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2",
})).gain(0.4)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@36 [x!8]!4 ~@106>").gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<~@75 [~@3 x] ~@70>").gain(0.35)

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

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@7 A ~@7 A ~@6 B A ~@15 A ~@2 C A ~@3 A ~@7 A ~@7 A ~@2 C A ~@3 A ~@2 C A ~@3 A ~@3 A ~@3 A ~@3 A ~ A ~ A ~@15
  A ~@2 C A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 D A ~@5
>`.pickRestart({
  A: "x", B: "~@2 x!2", C: "~ x", D: "x!2",
})).gain(0.35)

stack(clarinet, trumpet, synth_brass_1, french_horn, kick, snare, low_tom, hihat, hihat_soft, mid_tom, open_hat, crash)

More by Linkin Park