Strudelify

Uncle Meat

Zappa Frank

KeyD minorTempo135 bpm
0:00/0:00
// Uncle Meat — Zappa Frank
// 135 bpm, 3/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 66 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(135/3)

// 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 · lead 5 charang · "Charang"
const lead_5_charang = note(`<
  ~@8 A B C D E F ~@9 G H I J@2 K L M N O@2 P Q R S T U V W X Y Z ~@6 A B C D E F AA AB AC AD AE AF AG AH@2
>`.pickRestart({
  A: "gb5@3 a5@2 e5@3 b4@3 b4@5", B: "db5 d5 ~ db5 b4 db5@8 b4@3", C: "e5@3 d5@2 a5@3 b4@3 a4@2 e5@3",
  D: "d5@3 db5@2 d5@3 a5@3 db6@5", E: "b5@3 a4@2 a4@3 db5@3 e5@2 d5@3", F: "e5@3 d5@2 db5@3 b4@3 d5@2 db5@3",
  G: "~@3 a5@2 e5@3 b4@3 b4@5", H: "g5@3 d5@2 a4@3 a4@5 gb5@3", I: "db5@3 e5@2 b4@3 d5@3 a4@2 db5@3",
  J: "[d5 e5 ~ gb5 g5 a5@21 ~ [ab5,a5] gb5 [eb5,f5] d5 [b4,c5]]/2", K: "a4@8 b4@3 a4@2 g4@3",
  L: "f4@2 eb4@2 ~ c4@2 d4@2 eb4@2 f4@2 g4@3, ~@2 d4 ~@5", M: "a4@3 d5@2 d5@3 g5@3 g5@2 c6 ~ d6",
  N: "f6 [d6,eb6] eb6 d6@2 c6@3 bb5 [c5,f5] bb5 ab5@2 g5@3", // Ebmaj7 F5
  O: "[f5 g5 ~ f5 e5 d5 ~ b4 c5 d5 ~ e5 f5 g5@8 ~@3 eb4 f4 ~ d5 c5 g4 ~ ab4]/2", P: "b4 c5 ~ b4@13",
  Q: "c5!2 ~ c5!2 eb5 ~ d5 c5 bb4 ~ bb4 c5 c5@3", R: "d5!2 ~ d5!2 f5 ~ e5 d5 c5 ~ c5 d5 d5@3",
  S: "e5 f5 ~ e5 d5!2 ~ c5!2 d5 ~ e5 d5 c5 ~ bb4", T: "a4!2 ~ a4!2 c5 ~ b4 a4 g4 ~ g4 a4 a4@3",
  U: "bb4 b4 ~ bb4 ab4 g4 ~ ab4!2 f4 ~ g4@3 ~@2", V: "a4@3 b4@2 g5 d5 [a4,g5] e5@3 d5@2 d5 g5 [e5,c6]",
  W: "d5 c5 ~ c5@9 eb5 d5 ~ g4", X: "gb4 g4 ~ b4 c5 d5 ~ e5 d5@8", Y: "~ c5 ~ bb4 ab4 g4 ~ ab4 g5@8",
  Z: "b4@3 b4@2 b4@3 b4@3 b4 db5 d5 ~ e5", AA: "c5@3 eb4@2 eb4@3 d4@3 d4@2 c4@3", AB: "c4@3 g4@2 g4@7 d4 c4 ~ bb3",
  AC: "c4@3 d4@2 d4@3 c4@3 bb3@2 c4@3", AD: "bb4@8 eb5@3 d5@2 g4@3", AE: "eb4@3 d4@2 c4@3 d4@3 c4@2 bb3@3",
  AF: "ab3@3 g4 c4 f3@3 c4@3 bb3@2 c4@3", AG: "eb4@2 ~ eb4@2 ab3 ~ bb3 ab3 g3 ~ f3 g3 ab3 ~ bb3, ~ f4 ~@6",
  AH: "[ab3 g3 f3 g3@29]/2",
})).s("gm_lead_5_charang").gain(0.46)

// chords · piano
const piano = note("<A@14 B@7 C A@6 D E F G D E F G D E F G H I J B C A@12 B@7 K@2>".pickRestart({
  A: "[d3,g3,a3]@5 [d3,g3,a3]@5 ~ [d3,g3,a3]@5", B: "[eb3,f3,bb3]@5 [eb3,f3,bb3]@5 ~ [eb3,f3,bb3]@5",
  C: "e3@5 d3@5 ~ db3@5", D: "[c3,g3]@5 [c3,g3]@5 ~ [c3,g3]@5", E: "[bb2,f3]@5 [bb2,f3]@5 ~ [bb2,f3]@5",
  F: "[a2,e3]@5 [a2,e3]@5 ~ [a2,e3]@5", G: "[ab2,eb3]@5 [ab2,eb3]@5 ~ [ab2,eb3]@5",
  H: "[c3,d3,g3]@5 [c3,d3,g3]@5 ~ [c3,d3,g3]@5", I: "[db3,eb3,ab3]@5 [db3,eb3,ab3]@5 ~ [db3,eb3,ab3]@5",
  J: "[d3,e3,a3]@5 [d3,e3,a3]@5 ~ [d3,e3,a3]@5", K: "[d3,g3,a3]/2",
})).s("gm_piano").gain(0.32).pan(0.4)

stack(lead_5_charang, piano)

More by Zappa Frank