Strudelify

lupin the third theme

Franco Micalizzi

KeyB♭ majorTempo120 bpm
0:00/0:00
// lupin the third theme — Franco Micalizzi
// 120 bpm, 3/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/3653386; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 155 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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(`<
  A B C D A B C E F G H G F G I J K L M J N O P Q F G H G R S T U V W X Y I Z AA Y AB S AC AD AE AF AG AH A B C D A B C
  E F G H G F G I J K L M J N O P Q F G H G R S T U V W X Y I Z AA Y AB S AC AD AE AF AG AH AI AJ AK AL AM AL AK AL AN
  AO AP AQ AN AO AR AS AT AU F G H G R S T U V W X Y I Z AA Y AB S AC AD AE AF AG AH AV AW M J AV AW M J AV AW M J AV AW
  M AX AY
>`.pickRestart({
  A: "~@5 [bb3,d4,f4]@10 ~, bb2@15 ~", B: "~@5 [a3,d4,f4]@10 ~, f2@15 ~", C: "~@5 [bb3,eb4,g4]@10 ~, c3@15 ~",
  D: "~@5 [f3,c4,eb4]@10 ~, f2@15 ~", E: "[f2,f3]@5 [g2,g3]@5 ~ [a2,a3]@5",
  F: "~@5 [f3,bb3,d4]@5 ~ [f3,bb3,d4]@5, bb2@15 ~", G: "~@5 [f3,a3,d4]@5 ~ [f3,a3,d4]@5, f2@15 ~",
  H: "~@5 [f3,g3,d4]@5 ~ [f3,g3,d4]@5, bb2@15 ~", I: "~@5 [g3,bb3,eb4]@5 ~ [g3,bb3,eb4]@5, c3@15 ~",
  J: "~@5 [f3,c4,eb4]@5 ~ [f3,c4,eb4]@5, f2@15 ~", K: "~@5 [c4,eb4,g4]@5 ~ [c4,eb4,g4]@5, c3@15 ~",
  L: "~@5 [b3,eb4,g4]@5 ~ [b3,eb4,g4]@5, g2@15 ~", M: "~@5 [bb3,eb4,g4]@5 ~ [bb3,eb4,g4]@5, c3@15 ~",
  N: "~@5 [f3,bb3,d4]@5 ~ [f3,bb3,d4]@5, g2@15 ~", O: "~@5 [g3,bb3,e4]@5 ~ [g3,bb3,e4]@5, c3@15 ~",
  P: "~@5 [g3,bb3,c4,eb4]@10 ~, f2@15 ~", Q: "~@5 [a3,c4,eb4,f4]@10 ~, f2@5 ~@3",
  R: "~@5 [ab3,c4,eb4]@5 ~ [ab3,c4,eb4]@5, f2@15 ~", S: "~@5 [ab3,d4,f4]@5 ~ [ab3,d4,f4]@5, bb2@15 ~",
  T: "~@5 [g3,d4,f4]@5 ~ [g3,d4,f4]@5, eb2@15 ~", U: "~@5 [g3,c4,eb4]@10 ~, bb2@15 ~",
  V: "~@5 [gb3,db4,eb4]@5 ~ [gb3,db4,eb4]@5, eb3@15 ~", W: "~@5 [gb3,c4,eb4]@5 ~ [gb3,c4,eb4]@5, ab2@15 ~",
  X: "~@5 [a3,c4,f4]@5 ~ [a3,c4,f4]@5, d3@15 ~", Y: "~@5 [g3,bb3,f4]@10 ~, g2@15 ~",
  Z: "~@5 [f3,a3,c4]@5 ~ [f3,a3,c4]@5, f2@15 ~", AA: "~@5 [f3,a3,c4]@5 ~ [f3,a3,c4]@5, d3@15 ~",
  AB: "~@5 [ab3,eb4,ab4]@5 ~ [ab3,eb4,ab4]@5, f2@15 ~", AC: "[eb2,eb3,bb3,eb4,g4]@15 ~",
  AD: "[d2,d3,a3,d4,gb4,a4]@15 ~", AE: "~@5 [bb3,d4,bb4]@10 ~, [g2,g3]@15 ~", AF: "~@5 [bb3,d4,bb4]@10 ~, [f2,f3]@15 ~",
  AG: "~@5 [g3,eb4,g4]@10 ~, [eb2,eb3]@15 ~", AH: "[f2,f3,a3,eb4,f4]@15 ~", AI: "bb3@5 f3@5 ~ d3@5", AJ: "bb2@5 ~@3",
  AK: "~@5 [d4,g4,b4]@5 ~ [d4,g4,b4]@5, g3@15 ~", AL: "~@5 [d4,gb4,b4]@5 ~ [d4,gb4,b4]@5, d3@15 ~",
  AM: "~@5 [d4,e4,b4]@5 ~ [d4,e4,b4]@5, g3@15 ~", AN: "~@5 [e4,g4,c5]@5 ~ [e4,g4,c5]@5, a3@15 ~",
  AO: "~@5 [d4,a4,c5]@5 ~ [d4,a4,c5]@5, d3@15 ~", AP: "~@5 [e4,a4,c5]@5 ~ [e4,a4,c5]@5, a3@15 ~",
  AQ: "~@5 [e4,ab4,c5]@5 ~ [e4,ab4,c5]@5, e3@15 ~", AR: "~@5 [d4,g4,b4]@5 ~ [d4,g4,b4]@5, e3@15 ~",
  AS: "~@5 [e4,g4,db5]@5 ~ [e4,g4,db5]@5, a3@15 ~", AT: "~@5 [e4,g4,a4,c5]@10 ~, d3@15 ~",
  AU: "[f3,f4]@5 [eb3,eb4]@5 ~ [c3,c4]@5", AV: "~@5 [bb3,d4,f4]@5 ~ [bb3,d4,f4]@5, bb2@15 ~",
  AW: "~@5 [a3,d4,f4]@5 ~ [a3,d4,f4]@5, f2@15 ~", AX: "[f2,f3]@5 [eb2,eb3]@5 ~ [c2,c3]@5", AY: "[bb1,bb2]@15 ~",
})).s("gm_piano").gain(0.25)

stack(piano)