Strudelify

Waltz of the Meatball Man

Gooseworx

KeyD minorTempo150 bpm
0:00/0:00
// Waltz of the Meatball Man — Gooseworx
// 150 bpm, 3/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5894621; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 67 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// 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(`<
  A B A B A B A B C D A B E F D G B C B C A E H B A B@2 I J K I G L K G M N M N O P M N Q R S T U V W X Y O Y O Q Z S AA
  M AB Y AC AD AE AF AG
>`.pickRestart({
  A: "a2@3 ~@2 [d3,f3,a3]@3 ~@3 [d3,f3,a3]@3 ~@2", B: "f2@3 ~@2 [d3,f3,a3]@3 ~@3 [d3,f3,a3]@3 ~@2",
  C: "c2@3 ~@2 [d3,f3,a3]@3 ~@3 [d3,f3,a3]@3 ~@2", D: "c3@3 ~@2 [d3,f3,a3]@3 ~@3 [d3,f3,a3]@3 ~@2",
  E: "db2@3 ~@2 [d3,f3,a3]@3 ~@3 [d3,f3,a3]@3 ~@2", F: "bb1@3 ~@2 [d3,f3,a3]@3 ~@3 [d3,f3,a3]@3 ~@2",
  G: "g2@3 ~@2 [d3,f3,a3]@3 ~@3 [d3,f3,a3]@3 ~@2", H: "d2@3 ~@2 [d3,f3,a3]@3 ~@3 [d3,f3,a3]@3 ~@2",
  I: "gb2@3 ~@2 [d3,f3,a3]@3 ~@3 [d3,f3,a3]@3 ~@2", J: "g2@3 ~@2 [d3,ab3,a3]@3 ~@3 [d3,ab3,a3]@3 ~@2",
  K: "f2@3 ~@2 [eb3,g3,c4]@3 ~@3 [eb3,g3,c4]@3 ~@2", L: "c2@3 ~@2 [eb3,g3,c4]@3 ~@3 [eb3,g3,c4]@3 ~@2",
  M: "c3@3 ~@2 [eb3,g3,c4]@3 ~@3 [eb3,g3,c4]@3 ~@2", N: "g2@3 ~@2 [eb3,g3,c4]@3 ~@3 [eb3,g3,c4]@3 ~@2",
  O: "d2@3 ~@2 [d3,g3,bb3]@3 ~@3 [d3,g3,bb3]@3 ~@2", P: "d3@3 ~@2 [d3,g3,bb3]@3 ~@3 [d3,g3,bb3]@3 ~@2",
  Q: "bb2@3 ~@2 [d3,gb3,bb3]@3 ~@3 [d3,gb3,bb3]@3 ~@2", R: "gb2@3 ~@2 [d3,gb3,a3]@3 ~@3 [d3,gb3,a3]@3 ~@2",
  S: "eb2@3 ~@2 [eb3,g3,bb3]@3 ~@3 [eb3,g3,bb3]@3 ~@2", T: "bb2@3 ~@2 [eb3,g3,bb3]@3 ~@3 [eb3,g3,bb3]@3 ~@2",
  U: "a2@3 ~@2 [eb3,a3,db4]@3 ~@3 [eb3,a3,db4]@3 ~@2", V: "db2@3 ~@2 [eb3,a3,db4]@3 ~@3 [eb3,a3,db4]@3 ~@2",
  W: "d3@3 ~@2 [gb3,a3,d4]@3 ~@3 [gb3,a3,d4]@3 ~@2", X: "a2@3 ~@2 [gb3,a3,d4]@3 ~@3 [gb3,a3,d4]@3 ~@2",
  Y: "g2@3 ~@2 [d3,g3,bb3]@3 ~@3 [d3,g3,bb3]@3 ~@2", Z: "d2@3 ~@2 [d3,gb3,bb3]@3 ~@3 [d3,gb3,bb3]@3 ~@2",
  AA: "bb2@3 ~@2 [d3,g3,bb3]@3 ~@3 [d3,g3,bb3]@3 ~@2", AB: "eb2@3 ~@2 [eb3,g3,c4]@3 ~@3 [eb3,g3,c4]@3 ~@2",
  AC: "eb2@3 ~@2 [eb3,ab3,bb3]@3 ~@3 [eb3,ab3,bb3]@3 ~@2", AD: "a2@3 ~@2 [eb3,a3,c4]@3 ~@3 [eb3,a3,c4]@3 ~@2",
  AE: "d2@3 ~@2 [gb3,a3,d4]@3 ~@3 [gb3,a3,d4]@3 ~@2", AF: "[d3,g3]@3 ~@2 [bb2,d3]@3 ~@3 [g2,bb2]@3 ~@2",
  AG: "g2@5 ~@11",
})).s("gm_trumpet").gain(0.25)

stack(trumpet)