Strudelify

the chicken

Jano Pastorius

KeyC majorTempo120 bpm
0:00/0:00
// the chicken — Jano Pastorius
// 120 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 12 "C Tuba" tuba (copy of ch 5 "Baritone Saxophone" baritone sax)
// note: Transcription provider: pdmx. https://musescore.com/score/296696; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 15 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("<~@3 A B C D E@2 F@2 G@3 H>".pickRestart({
  A: "~@13 a5 c6 ~", B: "c6 ~@7", C: "~@4 g5 a5 c6 d#6@3 c6 a5 c6@2 f6@2", D: "e4 ~@7",
  E: "[~@4 e5@4 a5@2 g5@2 d#5@2 d5@6 c5 a4 c5@6 a#4@2 ~@2]/2", F: "[~@4 d6@2 d6 ~@5 d#6 d6 c6 d6@5 ~@12]/2",
  G: "~@4 c6!2 b5 c6@5 ~@4", H: "c6 a#5@2 g5@2 f5@2 d#5@2 c5 a#4@2 ~@2 c6@2",
})).s("gm_flute").gain(0.3)

// other · clarinet · "Bb Clarinet"
const clarinet = note("<~@3 A B C D E@2 F@2 G@3 H>".pickRestart({
  A: "~@13 a4 c5 ~", B: "e5 ~@7", C: "~@4 g4 a4 c5 d#5@3 c5 a4 c5@2 f5@2", D: "e4 ~@7",
  E: "[~@4 e5@4 a5@2 g5@2 d#5@2 d5@6 c5 a4 c5@6 g4@2 ~@2]/2", F: "[~@4 b4@2 b4 ~@5 d#5 d5 c5 d5@5 ~@12]/2",
  G: "~@4 c5!2 b4 c5@5 ~@4", H: "c5 a#4@2 g4@2 f4@2 d#4@2 c4 a#3@2 ~@2 g4@2",
})).s("gm_clarinet").gain(0.3)

// other · alto sax · "Alto Saxophone"
const alto_sax = note("<~@3 A B C B D@2 E@2 F@3 G>".pickRestart({
  A: "~@13 a3 c4 ~", B: "e4 ~@7", C: "~@4 g3 a3 c4 d#4@3 c4 a3 c4@2 f4@2",
  D: "[~@4 e4@4 a4@2 g4@2 d#4@2 d4@6 c4 a3 c4@6 e4@2 ~@2]/2", E: "[~@4 g#4@2 g#4 ~@5 d#5 d5 c5 d5@5 ~@12]/2",
  F: "~@4 c5!2 b4 c5@5 ~@4", G: "c5 a#4@2 g4@2 f4@2 d#4@2 c4 a#3@2 ~@2 e5@2",
})).s("gm_alto_sax").gain(0.3)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<~@3 A B C B D@2 E@2 F@3 G>".pickRestart({
  A: "~@13 a3 c4 ~", B: "e4 ~@7", C: "~@4 g3 a3 c4 d#4@3 c4 a3 c4@2 f4@2",
  D: "[~@4 e4@4 a4@2 g4@2 d#4@2 d4@6 c4 a3 c4@6 c4@2 ~@2]/2", E: "[~@4 e4@2 e4 ~@5 d#4 d4 c4 d4@5 ~@12]/2",
  F: "~@4 c4!2 b3 c4@5 ~@4", G: "c4 a#3@2 g3@2 f3@2 d#3@2 c3 a#2@2 ~@2 c4@2",
})).s("gm_tenor_sax").gain(0.3)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  [c2@4 e2@3 f2@3 g2@2 a2@2 c3@2]!8
  [f2@4 a2@3 a#2@3 a2@2 g2@2 f2@2]
  [e2 d#2]
  [d2 e2 f2 f#2]
  [d2!2 ~@2 d3!2 ~ d3@2 ~ e2@2 f2@2 f#2@2]!3
  [c4 a#3@2 g3@2 f3@2 d#3@2 c3 a#2@2 c2@2 c3@2]
>`).s("gm_baritone_sax").gain(0.3)

// other · trumpet · "Bb Trumpet"
const trumpet = note("<~@3 A B C B D E F G@4 H>".pickRestart({
  A: "~@13 a3 c4 ~", B: "e4 ~@7", C: "~@4 g3 a3 c4 d#4@3 c4 a3 c4@2 f4@2", D: "~@2 e4@2 a4 g4 d#4 d4",
  E: "d4@4 c4 a3 c4@6 c4@2 ~@2", F: "~@4 e4@2 e4 ~@5 d#4 d4 c4 d4",
  G: "[~@11 c4 e4 a4 c5 a4@9 ~@3 c4 e4 a4 c5 a4@9 ~@3 c4 e4 a4 c5 a4@9 ~@8]/4",
  H: "c5 a#4@2 g4@2 f4@2 d#4@2 c4 a#3@2 ~@2 c5@2",
})).s("gm_trumpet").gain(0.3)

// other · french horn · "Baritone Horn"
const french_horn = note(`<
  ~@4
  [e3@2 ~@2 e3@2 ~ e3@3 e3 ~@3 f3@2]!4
  [f3 e3 d#3 e3]
  [e3 d#3]
  [d3 e3 f3 f#3]
  [d3@2 ~@2 d3@2 ~ d3@3 d3 ~@3 d3@2]!3
  [c3@6 e3 c3]
>`).s("gm_french_horn").gain(0.3)

stack(flute, clarinet, alto_sax, tenor_sax, baritone_sax, trumpet, french_horn)