Strudelify

havana

Litster

KeyB♭ majorTempo120 bpm
0:00/0:00
// havana — Litster
// 120 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5113042; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 93 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  A B C B D@6 E F G@4 H@2 I@2 J@2 K@2 J@2 L ~ D@8 M N O P Q R S T U V W V X Y Z ~ D@8 AA@2 AB@2 AA@2 AB@2 AC AD AE AF AC
  AD AE AF D@6 AG@2 AC AD AE AF AC AH AI AJ ~
>`.pickRestart({
  A: "g3@2 [bb3,d4]@2 eb3 ~ [bb3,eb4] ~", B: "~ [d4,gb4] ~ [d4,gb4]", C: "~@2 [d4,g4]@2 ~@2 [d4,g4] ~",
  D: "[d4!2 g4@2 g3@2 bb3 d3@2 ~ gb4@3 d4 gb4@2]/2", E: "d4 bb3 g4@2 g3@2 bb3 d3", F: "d4 a3 ~ bb3 ~ bb3 a3 bb3",
  G: "[d4!2 ~ d4 g4!2 ~ g4 g3@4 bb3@2 d3@4 ~@2 gb4@6 d4@2 gb4@4]/2",
  H: "[d4!2 ~ d4 g4@4 g3@4 bb3@2 d3@4 ~@2 gb4@6 d4@2 gb4@4]/2",
  I: "[d4!2 ~ d4 g4@4 g3@4 bb3@2 d3@4 ~@2 gb4@6 d4@2 gb4@2 gb4@2]/2",
  J: "[d4 f4 g4@2 g3@2 bb3 d3@2 ~ gb4@3 d4 gb4@2]/2",
  K: "[d4@2 f4@2 g4@4 g3@4 bb3@2 d3@4 ~@2 gb4@6 d4@2 gb4!2 gb4@2]/2", L: "d4 f4 g4@2 g3@2 eb4 g3",
  M: "g3@2 a3@2 f3 bb3 a3 bb3", N: "d4 bb3 a3!2 g3@2 bb3@2", O: "g3!2 bb2!2 f4 d4 c4 bb3", P: "~ bb3 c4 bb3 ~ g3 bb3 ~",
  Q: "g3!2 bb2!2 ~@2 c4 gb3", R: "bb3@2 ~ bb3 ~ bb3 bb3@2 g3@2 ~@2 bb3@2 ~@2", S: "g3!2 bb3@2 ~ g3 bb3!2",
  T: "~ bb3!3 g3 ~ eb4 bb3", U: "~@2 [g3,f4]@2 f4 ~ [eb3,bb3] bb3", V: "bb3!2 ~@2 gb3@6 ~@2 gb3@4",
  W: "[g3,d4]@2 [g3,f4]@2 f4 ~ [eb3,bb3] bb3", X: "[g3,d4]@2 g3@2 ~@2 [eb3,bb3] d3", Y: "~@2 gb3@3 ~ gb3@2",
  Z: "[g3,d4]@2 g3@2 ~@2 [eb3,g3] ~", AA: "[f4 eb4 g4@2 ~@2 bb3 d3@2 ~ gb4@3 c4 gb4!2]/2",
  AB: "[g4 f4 g4@2 g3@2 bb3 d3@2 ~ gb4@3 d4 gb4@2]/2", AC: "~@2 g4@2 g4 [d4,d5] bb3 [bb3,bb4]",
  AD: "c4@2 ~@2 gb4@6 ~@2 gb4@2 d4 [eb4,f4]", AE: "g3 ~ g4@2 ~@2 bb3 ~", AF: "~@2 gb4@3 ~ gb4@2",
  AG: "[d4!2 g4@2 g3@2 bb3 d3@2 ~@7]/2", AH: "c4 ~ gb4@3 ~ gb4@2", AI: "~@2 g4@2 bb4 a4 bb3!2", AJ: "a3 ~@7",
})).s("gm_tenor_sax").gain(0.3)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  A@2 B C D@6 E ~ D@14 E ~ D@8 F G F G F G F G H@2 D@4 E ~ D@20 E C D@8 I@2 D@4 E C I@2 ~
>`.pickRestart({
  A: "[g2@2 d3!2 eb2 eb2@2 d2@2 a2 d3@3 a2 d3@2]/2", B: "g2@2 d3!2 eb2 eb2@2 d2", C: "d2 a2 d3@3 a2 d3@2",
  D: "[g2@2 d3@2 eb2!2 bb2 d2@2 a2 d3@3 a2 d3@2]/2", E: "g2@2 d3@2 eb2!2 bb2 d2", F: "g2!2 bb2!2 ~ g2 ~ gb2",
  G: "~ gb2 a2!2 ~ c3 eb3 d3", H: "[~@2 d3@2 eb2!2 bb2 d2@2 a2 d3@3 a2 d3@2]/2", I: "[g2@2 d3@2 eb2!2 bb2 d2@2 ~@7]/2",
})).s("gm_baritone_sax").gain(0.3)

stack(tenor_sax, baritone_sax)