Strudelify

honeysuckle rose

Fats Waller

KeyG majorTempo180 bpm
0:00/0:00
// honeysuckle rose — Fats Waller
// 180 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (2/4 at bar 1, 4/4 at bar 1) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5941545; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 144 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(180/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  A B@2 C@2 D E ~ A F@2 G H I J K A F@2 G ~@5 L M N O ~ P ~ A F@2 G H I J K Q R ~ S T U ~@2 V W@2 X Y ~@5 Z ~@3 AA ~ AB
  ~@7 AC@2 ~@9 AD@3 ~ AE AF AG ~@2 AH@2 AI AJ ~ AK AL AM AN@2 AO ~@3 AP AQ AR AS ~ AT ~ AU AV AW AX AY@2 ~@3 AZ BA BB ~
  BC BD BE BF BG@2 ~ BH BI BJ@2 B@2 BK@2 BL BM@2
>`.pickRestart({
  A: "~@14 c5 ~", B: "[~@2 a#4@22 c5@2 c#5@2 d5@2 d#5 ~]/2", C: "[~@2 c#5@22 ~@2 c5@2 a#4@2 a4 ~]/2",
  D: "~@6 c5 ~@7 f4 ~", E: "~@3 a4@3 a4 f4", F: "~@2 a#4 ~@11 c5 ~", G: "~@2 a#4 ~@13", H: "~@4 a4 g4 f4 d4",
  I: "f4@3 ~ f4@2 f4@10", J: "~@4 g#4 g4 f4 d4", K: "f4", L: "f4 g4", M: "g#4@3 a4@4 ~",
  N: "~@4 a#4@2 c5 ~@3 a#4@2 c5@3 ~", O: "c#5@3 ~ c5@2 a#4@10", P: "~@10 g4@2 a4@2 c5 ~", Q: "~@8 g#4@2 a4@2 c5@2 d5 ~",
  R: "~@6 d5@6 c#5@2 d5 ~", S: "~ g4", T: "g4@8 a#4@6 a4 ~", U: "~@14 a4 ~", V: "~@10 f#4@2 a#4@2 a4 ~",
  W: "[~@14 a4@6 g#4@2 a4 ~@9]/2", X: "~@6 c5 ~@3 a#4@6", Y: "a4@2 a4@2 g#4@2 a4 ~@9", Z: "~@12 a4@2 a#4 ~",
  AA: "~@12 b4@2 c5 ~", AB: "~@2 c5 ~@3 c5 ~@3 c5@4 ~@2", AC: "[~@3 f5@2 ~@3]/2",
  AD: "[~@4 d4 f4 g4 d5@4 e5@4 c5@7 ~@2]/3", AE: "~@4 g4 g#4 g4 f4", AF: "g4 g#4 g4 f4 g4 g#4 g4 d4",
  AG: "f4@2 f4 ~@13", AH: "[~@5 d5 c5 b4@5 c5@4]/2", AI: "a4@2 a#4@2 c#5@2 b4@6 b4@3 ~", AJ: "a#4@3 ~@13",
  AK: "~@2 d5 ~@7 e5 ~@5", AL: "~@2 f5 ~@7 e5 ~@5", AM: "~@2 d5@2 ~@2 f5@6 f5@3 ~",
  AN: "[e5@4 d#5@2 e5 ~@3 g4@2 g#4@2 a4@10 f4@8]/2", AO: "c5@8 g#4@6 a4 ~", AP: "~@5 c5 ~ a4",
  AQ: "c5@3 ~@7 c5@2 ~@2 a4@2", AR: "c5@3 ~@7 c5@2 e5@4", AS: "f5@3 ~@13", AT: "~@3 f5 ~@4",
  AU: "g4 a#4 a4 g4 c5!2 ~ g4", AV: "a#4@2 a4@2 g4@2 c5 ~@9", AW: "~ f#4 g4 a#4 a4 g4 f4 d#4", AX: "e4 c5 ~@6",
  AY: "[~ c5 ~ c5 d5 f5 d5 f5@8 ~]/2", AZ: "~@12 a#4 c5 ~ c#5", BA: "d5 c#5 d5 f5 c#5 c5 a#4 g4",
  BB: "a#4@4 g4@2 a#4@2 c#5@2 d5@2 ~@2 g4 ~", BC: "~@12 a4 a#4 ~ b4", BD: "c5@2 c5@2 ~@2 c5@2 d5@3 ~ d#5@3 ~",
  BE: "e5@3 ~@11 d5@2", BF: "~@6 c#5@6 d5@3 ~", BG: "[~ c#5@3 d5 e5 ~ f5@4 d5@5]/2", BH: "~@2 f5@6 d5@2 c5@2 ~@2 f5 ~",
  BI: "~ f5@3 d5 f5 ~@2", BJ: "[~@8 d5@2 f5@2 d5@2 f5@10 ~@6 c5 ~]/2", BK: "[~@2 c#5@22 ~@2 g#4@2 a#4@2 c5 ~]/2",
  BL: "~@6 c#5 ~@7 d5 ~", BM: "[~@6 d#5 ~@7 e6@18]/2",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "B♭ Trumpet"
const trumpet_2 = note(`<
  A B@2 C@2 D E ~ F G@2 H I J K L F G@2 H ~@5 M N O P ~ Q ~ F G@2 H I J K L R S ~ T U V ~@2 W X@2 Y Z ~@5 AA ~@3 AB ~ AC
  ~@7 AD@2 ~@9 AE@3 ~ AF AG AH ~@2 AI@2 AJ AK ~ AL AM AN AO@2 AP ~@3 AQ AR AS AT ~ AU ~ AV AW AX AY AZ@2 ~@3 BA BB BC ~
  BD BE BF BG BH@2 ~ BI BJ BK@2 B@2 BL@2 BM BN@2
>`.pickRestart({
  A: "~@14 c5 ~", B: "[~@2 a#4@22 a4@2 a#4@2 a#4@2 c5 ~]/2", C: "[~@2 a#4@22 ~@2 c5@2 a#4@2 a4 ~]/2",
  D: "~@6 a4 ~@7 f4 ~", E: "~@3 a4@3 a4 f4", F: "~@14 a4 ~", G: "~@2 g4 ~@11 a4 ~", H: "~@2 g4 ~@13",
  I: "~@4 a4 g4 f4 d4", J: "f4@3 ~ f4@2 f4@10", K: "~@4 g#4 g4 f4 d4", L: "f4", M: "f4 g4", N: "g#4@3 a4@4 ~",
  O: "~@4 g4@2 a4 ~@3 g4@2 a4@3 ~", P: "a#4@3 ~ a4@2 g4@10", Q: "~@10 g4@2 a4@2 a4 ~", R: "~@8 g#4@2 a4@2 c5@2 a#4 ~",
  S: "~@6 a#4@6 a#4@2 a#4 ~", T: "~ f4", U: "e4@8 f4@6 f4 ~", V: "~@14 e4 ~", W: "~@10 e4@2 f#4@2 f4 ~",
  X: "[~@14 a4@6 g#4@2 a4 ~@9]/2", Y: "~@6 a4 ~@3 g4@6", Z: "e4@2 e4@2 f4@2 e4 ~@9", AA: "~@12 f#4@2 g4 ~",
  AB: "~@12 g#4@2 a4 ~", AC: "~@2 a#4 ~@3 a#4 ~@3 a#4@4 ~@2", AD: "[~@3 f5@2 ~@3]/2",
  AE: "[~@4 d4 f4 g4 a#4@4 c#5@4 a4@7 ~@2]/3", AF: "~@4 g4 g#4 g4 f4", AG: "g4 g#4 g4 f4 g4 g#4 g4 d4",
  AH: "d4@2 d4 ~@13", AI: "[~@5 a4 f#4 g4@5 a4@4]/2", AJ: "f4@2 g4@2 a#4@2 a4@6 a4@3 ~", AK: "g4@3 ~@13",
  AL: "~@2 a#4 ~@7 c5 ~@5", AM: "~@2 d5 ~@7 c#5 ~@5", AN: "~@2 a#4@2 ~@2 d5@6 d5@3 ~",
  AO: "[c5@4 b4@2 c5 ~@3 f4@2 e4@2 d#4@10 d#4@8]/2", AP: "f4@8 f4@6 d#4 ~", AQ: "~@5 a4 ~ g4",
  AR: "a4@3 ~@7 a4@2 ~@2 g4@2", AS: "a4@3 ~@7 a#4@2 c5@4", AT: "d5@3 ~@13", AU: "~@3 d5 ~@4",
  AV: "g4 a#4 a4 g4 a4!2 ~ g4", AW: "a#4@2 a4@2 g4@2 a4 ~@9", AX: "~ f#4 g4 a#4 a4 g4 f4 d#4", AY: "e4 a4 ~@6",
  AZ: "[~ a4 ~ a4 c5 d5 a#4 d5@8 ~]/2", BA: "~@12 g4 g#4 ~ a4", BB: "a#4 a4 a#4 d5 a#4 a4 g4 f4",
  BC: "g4@4 f4@2 g4@2 a#4@2 a#4@2 ~@2 g4 ~", BD: "~@12 f4 f#4 ~ g4", BE: "a4@2 a4@2 ~@2 a4@2 b4@3 ~ c5@3 ~",
  BF: "c#5@3 ~@11 a#4@2", BG: "~@6 b4@6 a#4@3 ~", BH: "[~ a#4@3 a#4 d5 ~ d5@4 a#4@5]/2",
  BI: "~@2 d5@6 c5@2 a#4@2 ~@2 d5 ~", BJ: "~ d5@3 b4 d5 ~@2", BK: "[~@8 b4@2 d5@2 b4@2 d5@10 ~@6 c5 ~]/2",
  BL: "[~@2 a#4@22 ~@2 g#4@2 a#4@2 a4 ~]/2", BM: "~@6 a#4 ~@7 a#4 ~", BN: "[~@6 c5 ~@7 c5@18]/2",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "B♭ Trumpet"
const trumpet_3 = note(`<
  ~ A B C D ~@4 E@2 F@2 G@2 H I E@2 J@2 K@2 L M ~@4 N O P Q E@2 F@2 R@2 ~ S ~@26 T@3 ~@2 U@2 ~@6 V@2 W X ~@2 Y Z ~@17 AA
  AB AC AD AE AF AG AH ~ AI@2 AJ@2 AK@2 AL ~@3 AM@3 ~@4 AN AO@3 AP@2 A B C D AQ AR@2
>`.pickRestart({
  A: "~@4 d4 f4 g4 f4", B: "a4 f4 d4 a#3 a3 g3 ~@2", C: "~@4 f4 g#4 a#4 g#4", D: "c5@2 c#5 c5 a#4@2 c5@8 ~@2",
  E: "~@2 d4 f4 a4@3 ~", F: "[~@4 d4@2 f4@2 f4@3 ~ d#4@2 e4@10 c#4@8]/2", G: "[d4@8 ~@2 c5@2 d5@2 c5@6 f4@2 d4 ~@9]/2",
  H: "~ c4 d4 e4 f4 g4 f4 e4", I: "d#4@3 ~ c4@2 c4@4 a3@2 c4@2 g3 ~", J: "[~@4 d4@2 f4@2 f4@3 ~ d#4@2 e4@10 a4@8]/2",
  K: "[~@8 a4@2 f4@2 c5@2 f4@6 d4@3 ~ b3@3 ~@5]/2", L: "~ d4 e4 f4!2 a4 c5 a4", M: "b4 c5 b4 c5@5", N: "e4 f#4",
  O: "e4@6 f4@4 g4@2 a4@2 a4 ~", P: "~@4 a4@2 a4 ~@3 f#4@2 a4@3 ~", Q: "g#4@3 ~ g#4@2 g4@8 ~@2",
  R: "[d4@8 ~@2 c5@2 d5@2 c5@6 a4@2 f4 ~@9]/2", S: "g#4@2 g4@2 f4@2 d4@2 f4@6 f4 ~", T: "[e4@6 ~ a4@5 g4@3 c5@7 ~@2]/3",
  U: "[~@3 d5@2 ~@3]/2", V: "~@14 f5 ~", W: "~@14 e5 ~", X: "~@2 f5 ~@13", Y: "d5@3 f5@4 f5", Z: "d5 c5 ~@6",
  AA: "a#3 a3 a#3 c#4 d4 c#4 d4 e4", AB: "e4 f4!2 e4@3 ~@2", AC: "a4@3 ~ d4@2 f4@6 ~@2 d#4@2", AD: "e4 c4 b3 a#3@3 ~@2",
  AE: "~@4 c5@3 ~ a4@2 d4@2 ~@2 a4 ~", AF: "~ g#4@3 f4 d4 f4!2", AG: "d4@2 d4@2 ~@6 b3@2 c4 d4 ~ e4",
  AH: "e4@3 ~ c4@2 c4@10", AI: "[~@5 a#4 g4 a4@9]/2", AJ: "[~ a4 ~ a4 c5 d5 a#4 d5@7 ~@2]/2",
  AK: "[~@2 f4@2 ~@2 f4@2 g#4@2 b4@2 g#4@2 d5@6 a4@3 ~ b4@2 a4@2 ~@2 a4 ~]/2", AL: "~@2 f4 ~@3 d4@2 e4@2 d4@2 ~@4",
  AM: "[~@7 g4@3 g4 a4@3 a4 a#4@3 a#4 b4@5]/3", AN: "~ d4 f4 a4 f4 d4 f4 a4",
  AO: "[e4 d#4 e4 f#4@2 e4!2 g4@7 f4 a4@5 b4@2 ~@2]/3", AP: "[~@2 g4 g#4 a4@2 c5@2 d5@2 g#4@2 g4@2 d#4@10 ~@8]/2",
  AQ: "~ b4 c5 ~@2 c5 c#5 ~", AR: "[~ c#5 d5 ~@2 b4 c5 c5@9]/2",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "B♭ Trumpet"
const trumpet_4 = note(`<
  A B@2 C@2 D E ~ F G@2 H ~ I@2 ~ F G@2 H J K L M ~@3 N O P Q ~ F G@2 H ~ R@2 L M S ~ T U V ~ W@2 X@2 Y Z@2 AA AB@2 AC
  AD ~@2 AC AD ~ AE AF AG AH@3 ~@2 AI@2 ~@6 V@2 AJ AK ~@2 AL AM ~@9 AN AO AP AQ ~@5 AR AS AT AU ~ AV ~ AW AX AY AZ BA@2
  ~@2 BB@2 BC BD ~@2 BE BF BG BH@2 ~ BI BJ BK@2 B@2 BL@2 BM BN@2
>`.pickRestart({
  A: "~@14 a4 ~", B: "[~@2 g4@22 a4@2 a#4@2 g4@2 g#4 ~]/2", C: "[~@2 g#4@22 ~@2 a4@2 g4@2 f4 ~]/2",
  D: "~@6 f4 ~@7 d4 ~", E: "~@3 e4@3 e4 d4", F: "~@14 f4 ~", G: "~@2 f4 ~@11 f4 ~", H: "~@2 f4 ~@13",
  I: "[~@10 c4@2 d4@2 f4@8 f4 ~@9]/2", J: "~@4 a4 g4 f4 d4", K: "f4@3 ~ f4@2 f4@10", L: "~@4 g#4 g4 f4 d4", M: "f4",
  N: "~@4 f4@2 f#4 ~@3 f4@2 f#4@3 ~", O: "g4@3 ~ f#4@2 f4@10", P: "~ d5 ~@3 c5 ~@2",
  Q: "~@2 c#5@2 ~@2 d5@2 ~@2 g4@2 a4@2 g4 ~", R: "[f4@8 ~@2 c5@2 d5@2 f5@6 f5 ~@11]/2", S: "~@6 g4@6 f#4@2 g4 ~",
  T: "~ d5", U: "c#5@8 e5@6 e5 ~", V: "~@14 d5 ~", W: "[~@8 f5@2 f5@2 ~@2 e5@8 d5@8 d5 ~]/2",
  X: "[~@14 f4@6 f4@2 e4 ~@9]/2", Y: "~@6 g4 ~@3 f4@6", Z: "[~@5 c4 e4 g4@4 f4@5]/2", AA: "d4@3 f4@5",
  AB: "[d4@3 c4@9 ~@4]/2", AC: "f4 g4", AD: "g#4@6 a4@6 a4@2 a#4 ~", AE: "~@2 g#4 ~@3 g#4 ~@3 g#4@4 ~@2", AF: "f4 e4",
  AG: "d4 c#4", AH: "[a#3@6 ~ d4@5 c#4@3 g4@7 ~@2]/3", AI: "[~@3 a#4@2 ~@3]/2", AJ: "~@14 c#5 ~", AK: "~@2 d5 ~@13",
  AL: "a#4@3 d5@4 d5", AM: "c5 a#4 ~@6", AN: "~@2 f4 ~@7 a4 ~@5", AO: "~@2 a#4 ~@7 a4 ~@5",
  AP: "~@2 g4@2 ~@2 a#4@6 a#4@3 ~", AQ: "a#4@4 a4@2 a#4 ~@9", AR: "~@5 g4 ~ e4", AS: "f4@3 ~@7 f4@2 ~@2 d#4@2",
  AT: "g4@3 ~@7 g4@2 a#4@4", AU: "c5@3 ~@13", AV: "~@3 c5 ~@4", AW: "g4 a#4 a4 g4!3 ~ g4", AX: "a#4@2 a4@2 g4@2 g4 ~@9",
  AY: "~ f#4 g4 a#4 a4 g4 f4 d#4", AZ: "e4 g4 ~@6", BA: "[~ f4 ~ f4 a4 c5 a4 c5@8 ~]/2",
  BB: "[f4@2 f4 g4@3 g4 g#4@3 g#4 a4@5]/2", BC: "g4 f#4 g4 a#4 g4 f#4 f4 d4", BD: "f4@4 d4@2 g4@2 g4@2 g4@2 ~@2 g4 ~",
  BE: "f#4@2 f#4@2 ~@2 f#4@2 g#4@3 ~ a4@3 ~", BF: "a#4@3 ~@11 g4@2", BG: "~@6 g#4@6 g4@3 ~",
  BH: "[~ g4@3 g4 a#4 ~ a#4@4 g4@5]/2", BI: "~@2 c5@6 a4@2 f4@2 ~@2 c5 ~", BJ: "~ c5@3 g#4 b4 ~@2",
  BK: "[~@8 g#4@2 b4@2 g#4@2 c5@10 ~@6 a4 ~]/2", BL: "[~@2 g#4@22 ~@2 f4@2 g#4@2 g4 ~]/2", BM: "~@6 f#4 ~@7 g4 ~",
  BN: "[~@6 a#4 ~@7 a4@18]/2",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "B♭ Trumpet"
const trumpet_5 = note(`<
  A B@2 C@2 D E ~ F G@2 H ~ I@2 ~ F G@2 H J K L M ~@3 N O P Q ~ F G@2 H ~ R@2 L M S ~ T U V ~ W@2 X@2 Y Z@2 AA AB@2 AC
  AD ~@2 AC AD ~ AE AF AG ~@5 AH@2 ~@6 AI@2 A AJ ~@13 AK AL AM AN ~@5 AO AP AQ AR ~ AS ~ AT AU AV AW AX@2 ~@2 AY@2 AZ BA
  ~@2 BB BC BD BE@2 ~ BF BG BH@2 B@2 BI@2 BJ BK@2
>`.pickRestart({
  A: "~@14 a4 ~", B: "[~@2 g4@22 a#4@3 ~ a#4@2 c#5 ~]/2", C: "[~@2 g#4@22 ~@2 a4@2 g4@2 f4 ~]/2", D: "~@6 d4 ~@7 d4 ~",
  E: "~@3 e4@3 e4 d4", F: "~@14 d4 ~", G: "~@2 d4 ~@11 d4 ~", H: "~@2 d4 ~@13", I: "[~@10 c4@2 d4@2 d4@8 d4 ~@9]/2",
  J: "~@4 a4 g4 f4 d4", K: "f4@3 ~ f4@2 f4@10", L: "~@4 g#4 g4 f4 d4", M: "f4", N: "~@4 d4@2 d#4 ~@3 d4@2 d#4@3 ~",
  O: "e4@3 ~ d#4@2 d4@10", P: "~ b4 ~@3 a4 ~@2", Q: "~@2 a#4@2 ~@2 a#4@2 ~@2 g4@2 a4@2 e4 ~",
  R: "[d4@8 ~@2 c5@2 d5@2 c5@6 c5 ~@11]/2", S: "~@6 e4@6 e4@2 f4 ~", T: "~ a#4", U: "a#4@8 d5@6 c5 ~", V: "~@14 d5 ~",
  W: "[~@8 d5@2 d5@2 ~@2 c5@8 c5@8 a#4 ~]/2", X: "[~@14 f4@6 f4@2 e4 ~@9]/2", Y: "~@6 f4 ~@3 e4@6",
  Z: "[~@5 c4 e4 e4@4 d4@5]/2", AA: "c4@3 d4@5", AB: "[c4@3 a3@9 ~@4]/2", AC: "f4 g4", AD: "g#4@6 a4@6 f4@2 g4 ~",
  AE: "~@2 e4 ~@3 e4 ~@3 e4@4 ~@2", AF: "d4!2", AG: "a#3!2", AH: "[~@3 f4@2 ~@3]/2", AI: "~@14 a#4 ~",
  AJ: "~@2 a#4 ~@13", AK: "~@2 e4 ~@7 f4 ~@5", AL: "~@2 a4 ~@7 f4 ~@5", AM: "~@2 f4@2 ~@2 g4@6 g4@3 ~",
  AN: "g4@4 g4@2 g4 ~@9", AO: "~@5 e4 ~ c4", AP: "d4@3 ~@7 d4@2 ~@2 c4@2", AQ: "e4@3 ~@7 e4@2 g4@4", AR: "a4@3 ~@13",
  AS: "~@3 a4 ~@4", AT: "g4 a#4 a4 g4 e4!2 ~ g4", AU: "a#4@2 a4@2 g4@2 e4 ~@9", AV: "~ f#4 g4 a#4 a4 g4 f4 d#4",
  AW: "e4!2 ~@6", AX: "[~ d4 ~ d4 f4 a4 f4 g#4@8 ~]/2", AY: "[f4@2 f4 g4@3 g4 g#4@3 g#4 a4@5]/2",
  AZ: "f4 e4 f4 g4 e4 d#4 d4 a#3", BA: "d4@4 a#3@2 d4@2 e4@2 f4@2 ~@2 f4 ~", BB: "d#4@2 d#4@2 ~@2 d#4@2 f4@3 ~ f#4@3 ~",
  BC: "e4@3 ~@11 f4@2", BD: "~@6 f4@6 e4@3 ~", BE: "[~ e4@3 e4 g4 ~ g4@4 f4@5]/2", BF: "~ a4@3 f4 d4 ~ g#4",
  BG: "~ g#4@3 f4 a4 ~@2", BH: "[~@8 f4@2 g#4@2 f4@2 a4@10 ~@6 a4 ~]/2", BI: "[~@2 g#4@22 ~@2 f4@2 f4@2 e4 ~]/2",
  BJ: "~@6 d#4 ~@7 f4 ~", BK: "[~@6 g#4 ~@7 g4@18]/2",
})).s("gm_trumpet").gain(0.4)

stack(trumpet, trumpet_2, trumpet_3, trumpet_4, trumpet_5)

More by Fats Waller