Strudelify

Moanin'

Elliot Danko

KeyB♭ majorTempo245 bpm
0:00/0:00
// Moanin' — Elliot Danko
// 245 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5830707; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 64 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(245/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.

// melody · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  A B C D E@2 F G H I J K@2 L M N O P Q R S T U V W@2 X Y Z@4 AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS
  AT AU@3 AV AW AX AY AZ BA BB BC@2
>`.pickRestart({
  A: "f3 ~ f3 g3 ab3 ~ ab3 bb3", B: "b3 c4 f4 c4 b3 bb3 ab3 ~", C: "bb3 ab3 ~ f3 db3@2 bb2@2 c3@2 bb2@2 db3@2 bb2@2",
  D: "c3 ~@4 bb3 b3 f4", E: "[g4@2 e4@2 f4@2 g4 ab4@13 f4@2 eb4@2 c4@2 b3@2 bb3@2 ab3@2]/2",
  F: "b3 c4 ~ ab3 f3@2 ~@2 ab3@4 bb3@4", G: "~@11 f3 ab3 bb3 ~ b3",
  H: "c4 db4 [b3,c4] bb3 ab3 f3 ab3 b3 c4 eb4 b3 bb3 ab3 f3 ab3 b3", // Cmaj7
  I: "c4 eb4 b3 bb3 ab3 f3 ab3 b3 c4 eb4 b3 bb3 ab3 f3 ab3 bb3",
  J: "b3 c4 eb4 b3 bb3 ab3 f3 ab3 bb3 b3 c4 eb4 b3 bb3 ab3 f3",
  K: "[ab3 bb3 b3 c4 eb4 b3 bb3 ab3 f3 ab3 bb3 b3 c4 ab4@7 f4@2 eb4@2 c4@2 b3@2 bb3@2 ab3@2]/2",
  L: "bb3@2 ab3@2 c4@2 ~@6 [g3,ab3] [a3,bb3,b3] [c4,db4,d4] [eb4,e4,f4]", // Abmaj7
  M: "g4@3 f4@2 e4@3 db4@3 c4@2 bb3@3, gb4 ~@15", N: "db4@3 c4@2 bb3@3 ab3@4 bb3@4", O: "f3 ~@2 f5 ~ ab4@3",
  P: "f4 eb4 c4 b3 bb3 ab3 bb3 ab3", Q: "bb3 c4 ~@2 bb3@2 ab3@2 bb3@2 ab3@2 f3@2 bb3 c4", R: "~ c4 bb3@3 ~@3",
  S: "c4!4 eb4 c4 ~ c4 eb4 c4 ~ c4 eb4 c4 ~ c4", T: "eb4 c4 ~ c4 eb4 c4 ~ c4 eb4 c4 ~ c4 eb4 c4 ~ c4",
  U: "e4 c4 ~ c4 e4 c4 ~ c4 e4 c4 ~ c4 e4 c4 ~ c4", V: "e4 c4 ~ c4 e4 c4 ~ c4!9",
  W: "[f4 ~@3 ab4@6 ~@2 ab3 bb3 c4 db4]/2", X: "~@2 c3 ~@5 db3@2 ab3@2 bb3@2 db4@2", Y: "c4@2 ~@2 c3 ~@5 c3 ~@5",
  Z: "[~@4 bb2@2 c3@2 f3@2 ab3@2 ~@2 bb3 c4@7 bb3@2 ab3@2 g3@4 ab3 bb3@7 ab3@2 g3@4 f3@2 e3@14 ~@4]/4",
  AA: "~@3 bb3@2 c4@3 db4@3 c4@2 bb3@3", AB: "db4@3 c4@2 bb3@3 db4@3 c4@2 bb3@3", AC: "eb4@3 db4", AD: "c4",
  AE: "~@3 db4@2 eb4@3 f4@3 eb4@2 db4@3", AF: "f4@3 eb4@2 db4@3 f4@3 eb4@2 db4@3", AG: "f4 gb4@11 f4@4",
  AH: "eb4@6 e4 f4 gb4@8", AI: "f4@3 ~ db4@3 ~ bb3@3 ~@5", AJ: "~@3 bb3 ~ db4 f4 ~", AK: "gb4@3 ~ f4@3 ~ eb4@3 ~@5",
  AL: "~@4 c4@2 eb4 ~@9", AM: "f4 d4 b3 e4 db4 ~ eb4 c4", AN: "a3 d4 b3 ~ db4 ~ c4 a3", AO: "b3 ab3 f3 bb3 g3 ~ a3 gb3",
  AP: "eb3 ab3 f3 db3 g3 e3 c3@2", AQ: "f3@3 ~@5 ab3@3 ~@5", AR: "b3 bb3 ab3 bb3 ~ ab3 bb3 ab3",
  AS: "b3 c4 eb4 b3 bb3 ab3 f3 eb3", AT: "ab3@2 bb3 ~@5", AU: "[~@4 f5@2 ~@2 ab5@32 a5 bb5@5 a5 ab5]/3",
  AV: "g5 gb5 f5 e5@3 ~@2", AW: "~@4 f5@2 ~@2 ab4!8", AX: "ab4!4 f4@2 eb4@2 c4@2 b3@2 bb3@2 ab3@2, ~@4 ab4 ~@11",
  AY: "bb3@2 ab3@2 bb3@2 ab3@2 b3 c4 ~@2 bb3@2 ab3@2", AZ: "bb3 ab3 f3 ~@5", BA: "~@4 g5 ab5@11",
  BB: "ab5 a5 bb5 b5 c6 db6 d6 eb6", BC: "[e6@9 ~@7]/2",
})).s("gm_tenor_sax").gain(0.3)

stack(tenor_sax)