Strudelify

birdland

Joseph Zawinul

KeyF majorTempo120 bpm
0:00/0:00
// birdland — Joseph Zawinul
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/1151831; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 20 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 · [...]/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 · flute
const flute = note("<~@7 A@7 B C D@3 E>".pickRestart({
  A: "[~@7 ab4@3 g4!2 ~@3 g4@3 f4!2 ~@3 g4@3 eb4!2 ~@3 g4@3 f4!2 ~@3 g4@3 f4!2 ~@3 ab4@3 g4@6]/7", B: "f4!4",
  C: "ab4 ~ g4@6", D: "a4", E: "a4 ~@7",
})).s("gm_flute").gain(0.3)

// other · alto sax · "Alto Saxophone"
const alto_sax = note("<~@7 A@7 B C D@3 E>".pickRestart({
  A: "[~@7 eb4@3 eb4!2 ~@3 eb4@3 db4!2 ~@3 eb4@3 bb3!2 ~@3 eb4@3 db4!2 ~@3 eb4@3 c4!2 ~@3 eb4@3 eb4@6]/7",
  B: "f4 ~ f4@2 f4@2 f4@2", C: "eb4 ~ eb4@6", D: "f4", E: "f4 ~@7",
})).s("gm_alto_sax").gain(0.3)

// other · trumpet · "Bb Trumpet"
const trumpet = note("<A@3 B A@3 C@7 D E F@3 G>".pickRestart({
  A: "[ab4 g4 ab4 g4 f4@2 d4 f4@3 d4@2 f4@2 g4 ab4@3 g4@2 f4@2 d4 c4]/3", B: "~ f4@5 ~ ab4",
  C: "[~ f4@5 ~ ab4@3 g4!2 ~@3 g4@3 f4!2 ~@3 g4@3 eb4!2 ~@3 g4@3 f4!2 ~@3 g4@3 f4!2 ~@3 ab4@3 g4@6]/7",
  D: "~ f4 g4 ab4 a4 ~ f4 ~", E: "ab4 ~ g4@6", F: "a4", G: "a4 ~@7",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "Bb Trumpet"
const trumpet_2 = note("<~@4 A@3 B@7 C D E@3 F>".pickRestart({
  A: "[c5 bb4 c5 bb4 a4@2 f4 a4@3 f4@2 a4@2 bb4 c5@3 bb4@2 a4@2 f4 g4]/3",
  B: "[~ a4@5 ~ ab5@3 g5!2 ~@3 g5@3 f5!2 ~@3 g5@3 eb5!2 ~@3 g5@3 f5!2 ~@3 g5@3 f5!2 ~@3 ab5@3 g5@2 ~@4]/7",
  C: "~ f5 g5 ab5 a5 ~ f5 ~", D: "ab5 ~ g5@6", E: "f5", F: "f5 ~@7",
})).s("gm_trumpet").gain(0.3)

// other · trombone
const trombone = note("<A@2 B@2 A@2 B@2 C@5 D E F G@3 H>".pickRestart({
  A: "[a2@4 bb2@3 c3@9]/2", B: "[a2@4 bb2 ~ c3 f3@9]/2",
  C: "[f2@5 g2@2 ab2@6 ab2 bb2 c3@4 f2 ~ g2 ~ bb2@6 g2 ab2 a2@2 c3 d3 f3@4 bb2]/5", D: "~ c3 db3@6",
  E: "f2 ~ g2 ~ a2 ~ c3 ~", F: "bb2 bb2@3", G: "f2", H: "f2 ~@7",
})).s("gm_trombone").gain(0.3)

stack(flute, alto_sax, trumpet, trumpet_2, trombone)