Strudelify

minnie the moocher

Cab Calloway

KeyE minorTempo92 bpm
0:00/0:00
// minnie the moocher — Cab Calloway
// 92 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/5961615; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 52 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(92/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 · trombone
const trombone = note(`<
  A B C D@2 B E F G H I H I J K L M N O P Q R S T U R S V ~@4 W X ~ Y Z@7 AA AB@2 AC AD AE@4
>`.pickRestart({
  A: "~@24 e3@5 g3@3", B: "e3@8 a2@4 g2@3 a2", C: "~@3 e3@9 e3@3 g3", D: "[b3@4 ~ b3@11 a3@8 g3@5 e3@27 e3@6 g3@2]/2",
  E: "~@24 b3@2 ~@3 e4@2 ~", F: "g4@2 ~@3 g4@2 ~ e4@2 ~@3 e4@2 ~ c4@2 ~@3 c4@2 ~ b3@2 ~@3 b3@2 ~",
  G: "g3@3 ~@3 f#3@2 ~@5 e3@19", H: "e2!2 g2 b2", I: "[c2,c3]!2 [b1,b2]!2", J: "b3@5 b3@8 b3@3 b3@6 b3@2 b3@8",
  K: "b3@5 b3@8 b3@3 a3@5 g3@3 ~@8", L: "~@6 a#3@2 a#3@5 a3@3 a#3@8 a#3@8", M: "a#3@5 a3@8 g3@3 e3@5 b2@3 ~@8",
  N: "~@5 e4@3 g4@13 e4@3 e4@5 b3@3", O: "~@5 b3@3 a#3@5 b3@11 ~@5 b3@3", P: "a#3@5 g3@3 a3@5 g3@3 a3@8 ~@5 a3@3",
  Q: "a#3@5 a3@3 g3@5 e3@11 e4@5 f#4@3", R: "g4@5 a4@3 f#4@5 g4@3 e4@8 ~@8", S: "~@21 e4@8 f#4@3",
  T: "g4@5 a4@3 f#4@5 g4@3 e4@5 b3@3 ~@8", U: "~@24 e4@5 f#4@3", V: "g4@5 a4@3 f#4@5 g4@3 e4@5 b4@3 ~@8",
  W: "~@6 a#3@2 a#3@5 a3@3 a#3@5 a3@3 a#3@5 a3@3", X: "a#3@5 a3@5 ~ g3@5 a#3@5 a3@5 ~ g3@5",
  Y: "~@3 g3@2 g3@3 g3@3 g3@2 g3@3 e3@3 e3@2 e3@3 e3@3 e3@2 e3@3",
  Z: "[e3@13 ~@13 d#3@13 ~@14 e3@4 g3@2 c4@4 b3@3 ~ e3@2 g3@2 c4@3 b3@2 ~@3 d#3@4 f#3@2 c4@4 b3@3 ~@3 f#3@2 c4@3 b3@2 ~@3 e3@4 g3@3 c4@4 b3@3 ~ e3@2 ~ c4@3 ~ b3@2 ~@2 d#3@4 f#3@3 c4@4 b3@3 ~ d#3@2 f#3@2 c4@3 b3@24 e4@4 f#4@3 g4@4 a4@3 f#4@4 g4@2 e4@7 ~@20, ~@47 d#3 ~@13 g3 ~@50]/7",
  AA: "~@3 e4@6 ~ f#4@3 g4@4 a4@2 f#4@4 g4@3 e4@4 b3@2",
  AB: "[e4@4 f#4@3 g4@4 a4@2 f#4@4 g4@3 e4@4 b3@3 e4@4 f#4@2 g4@4 a4@3 f#4@4 g4@2 e4@7 ~@11]/2",
  AC: "~@13 e4@6 f#4@3 g4@4 g4@2 f#4@4", AD: "f#4@3 e4@4 b4@2 e4@4 f#4@3 g4@4 g4@3 f#4@4 f#4@2 e4@3",
  AE: "[~ b4@9 e4@13 b3@13 ~ g3@13 b2@2 c3@3 c#3@3 d3@2 d#3@3 e3@26 e4@26 ~@13]/4",
})).s("gm_trombone").gain(0.25)

stack(trombone)