Strudelify

Haitian Fight Song Jazz Combo Final

Gonzalo The Trombonist

KeyB♭ majorTempo175 bpm
0:00/0:00
// Haitian Fight Song Jazz Combo Final — Gonzalo The Trombonist
// 175 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Trumpet" named as a brass, played on trumpet (its slap bass 2 patch is not one); ch 3 "B♭ Clarinet" named as a reed, played on clarinet (its piano patch is not one); ch 4 "Alto Saxophone" named as a reed, played on alto sax (its piano patch is not one); ch 5 "Trombone" named as a brass, played on trombone (its piano patch is not one); ch 6 "Bass Trombone" named as a bass, played on electric bass finger (its piano patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5911661; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 172 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(175/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 · trumpet
const trumpet = note(`<
  ~@35 A B@2 C@2 D@2 E ~ B@2 C@2 B@2 C@2 F@4 G@4 ~@34 H@2 ~@34 H@2 ~@10 I J ~@4 B@2 C@2 D@2 E K@2 H F@4 G@4 ~@2 L M I J
>`.pickRestart({
  A: "~@4 g5 g5@3", B: "[g4@12 bb4@2 d5@4 g5@2 d5 c5 ~ bb4 c5@2 bb4@2 g4@2 f4@2]/2", C: "[c5@6 bb4 d5@9]/2",
  D: "f4 g4 ~ g4!3 ~ g4 bb4 g4 ~ g4!3 ~ g4", E: "f4 g4@6 ~", F: "[bb5!2 ~ bb5!3 ~ bb5 ab5 bb5 ~ bb5 bb5@20]/2",
  G: "[c6!2 ~ c6 c6@60]/4", H: "f5 g5 ~ g5!3 ~ g5 bb5 g5 ~ g5!3 ~ g5", I: "~@3 g3@2 d4@3 f4@3 bb4@2 c5@3", J: "bb5 g5",
  K: "[f4 g4 ~ g4!3 ~ g4 bb4 g4 ~ g4!3 ~ g4@17]/2", L: "g5@2 bb5 g5 db6@2 d6 d5", M: "g5@2 bb5 g5 db6@2 d6 ~",
})).s("gm_trumpet").gain(0.4)

// other · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  ~@35 A B@2 C@2 D@2 E ~ B@2 C@2 B@2 C@2 F@4 G@4 ~@34 D@2 ~@34 D@2 ~@10 H I ~@4 B@2 C@2 D@2 E J@2 K F@4 G@4 ~@2 L M H I
>`.pickRestart({
  A: "~@4 g5 g5@3", B: "[g4@12 bb4@2 d5@4 g5@2 d5 c5 ~ bb4 c5@2 bb4@2 g4@2 f4@2]/2", C: "[c5@6 bb4 d5@9]/2",
  D: "f4 g4 ~ g4!3 ~ g4 bb4 g4 ~ g4!3 ~ g4", E: "f4 g4@6 ~", F: "[f5 g5 ~ g5!3 ~ g5 bb5 g5 ~ g5 g5@20]/2",
  G: "[f5!2 ~ f5 f5@60]/4", H: "~@3 g3 ~ d4 ~@2 f4 ~@2 bb4 ~ c5 ~@2", I: "d5 bb4",
  J: "[f4 g4 ~ g4!3 ~ g4 bb4 g4 ~ g4!3 ~ g4@17]/2", K: "f5 g5 ~ g5!3 ~ g5 bb5 g5 ~ g5!3 ~ g5",
  L: "g5@2 bb5 g5 db6@2 d6 d5", M: "g5@2 bb5 g5 db6@2 d6 ~",
})).s("gm_clarinet").gain(0.4)

// other · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  ~@24 A@2 B@2 C@2 D@2 A@2 B@2 C@2 E ~@3 A@2 B@2 F@2 E ~ G@2 H@4 I@4 ~@34 C@2 ~@34 C@2 ~@10 J K ~@2 C@2 E ~ A@2 B@2 G@8
  I@4 ~@2 L M J K
>`.pickRestart({
  A: "[g3@12 bb3@2 d4@4 g4@2 d4 c4 ~ bb3 c4@2 bb3@2 g3@2 f3@2]/2", B: "[c4@6 bb3 d4@9]/2",
  C: "f4 g4 ~ g4!3 ~ g4 bb4 g4 ~ g4!3 ~ g4", D: "[f4 g4@15]/2", E: "f4 g4@6 ~",
  F: "[g4@12 bb4@2 d5@4 g5@2 d5 c5 ~ bb4 c5@2 bb4@2 g4@2 f4@2]/2", G: "[f4 g4 ~ g4!3 ~ g4 f4 g4 ~ g4 g4@20]/2",
  H: "[d4 eb4 ~ eb4!3 ~ eb4 d4 eb4 ~ eb4 eb4@20]/2", I: "[g4!2 ~ g4 g4@60]/4", J: "~@3 g3@2 d4@3 f4@3 bb4@2 c5@3",
  K: "d5 bb4", L: "g5@2 bb5 g5 db6@2 d6 d5", M: "g5@2 bb5 g5 db6@2 d6 ~",
})).s("gm_alto_sax").gain(0.4)

// bass · electric bass finger · "Bass Trombone"
const bass = note(`<
  ~@20 A@3 ~ B@2 C@2 D@2 E@2 ~@2 B@2 F ~ B@2 F ~ B@2 F ~ G@2 H@4 G@4 I@4 ~@34 B@2 ~@34 B@2 ~@10 J K L@2 M@2 B@2 F ~ G@10
  N@4 ~@2 O@2 J P
>`.pickRestart({
  A: "g1/3", B: "f3 g3 ~ g3!3 ~ g3 bb3 g3 ~ g3!3 ~ g3", C: "[g3 g3@15]/2",
  D: "[g1@12 bb2@2 d3@4 g3@2 d3 c3 ~ bb2 c3@2 bb2@2 g2@2 f2@2]/2", E: "[c3@6 bb2 d3@9]/2", F: "f3 g3@6 ~",
  G: "[f3 g3 ~ g3!3 ~ g3 f3 g3 ~ g3 g3@20]/2", H: "[f3 g3 ~ g3!3 ~ g3 bb3 g3 ~ g3 g3@20]/2", I: "[d4!2 ~ d4 d4@60]/4",
  J: "~@3 bb3@2 f3@3 d3@3 bb2@2 f2@3", K: "bb2 g2", L: "[g3@12 bb3@2 d4@4 g4@2 d4 c4 ~ bb3 c4@2 bb3@2 g3@2 f3@2]/2",
  M: "[c4@6 bb3 d4@9]/2", N: "[d3!2 ~ d3 d3@60]/4", O: "g1", P: "bb1 g1",
})).s("gm_electric_bass_finger").gain(0.4)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  ~@20 A@3 ~ B@2 C@2 D@2 ~@2 B@2 E ~@5 F@2 G@2 ~@2 H@2 I@4 H@4 J@4 ~@34 K@2 ~@34 K@2 ~@10 L M N@2 O@2 K@2 P ~ Q@10 R@4
  ~@2 S@2 L M
>`.pickRestart({
  A: "g2/3", B: "f2 g2 ~ g2!3 ~ g2 bb2 g2 ~ g2!3 ~ g2", C: "[f2 g2@15]/2", D: "g2/2", E: "f2 g2@6 ~",
  F: "[g2@12 bb2@2 d3@4 g3@2 d3 c3 ~ bb2 c3@2 bb2@2 g2@2 f2@2]/2", G: "[c3@6 bb2 d3@9]/2",
  H: "[f2 g2 ~ g2!3 ~ g2 f2 g2 ~ g2 g2@20]/2", I: "[f2 g2 ~ g2!3 ~ g2 bb2 g2 ~ g2 g2@20]/2", J: "[d3!2 ~ d3 d3@60]/4",
  K: "f3 g3 ~ g3!3 ~ g3 bb3 g3 ~ g3!3 ~ g3", L: "~@3 d4 ~ bb3 ~@2 g3 ~@2 d3 ~ bb2 ~@2", M: "d3 bb2",
  N: "[g3@12 bb3@2 d4@4 g4@2 d4 c4 ~ bb3 c4@2 bb3@2 g3@2 f3@2]/2", O: "[c4@6 bb3 d4@9]/2", P: "f3 g3@6 ~",
  Q: "[f3 g3 ~ g3!3 ~ g3 f3 g3 ~ g3 g3@20]/2", R: "[d4!2 ~ d4 d4@60]/4", S: "g2",
})).s("gm_baritone_sax").gain(0.4)

// chords · piano
const piano = note("<~@20 A@36 B@4 ~@82 C D ~@4 A@12 E@2 B@4 ~@2 F G C D>".pickRestart({
  A: "[[g1,bb2]@31 ~]/4", B: "[[g1,bb2,bb3,d5]!2 ~ [g1,bb2,bb3,d5] [g1,bb2,bb3,d5]@57 ~@3]/4",
  C: "~@3 [g3,g5]@2 [d3,d5]@3 [bb2,bb4]@3 [g2,g4]@2 [d2,d4]@3", D: "[bb2,a3,a4,d5] [g1,d2,f4,bb4]",
  E: "[[g1,bb2]@31 ~]/2", F: "[g2,g5]@2 [bb2,bb5] [g2,g5] [db3,db6]@2 [d3,d6] [d2,d5]",
  G: "[g2,g5]@2 [bb2,bb5] [g2,g5] [db3,db6]@2 [d3,d6] ~", // G Bb G Db D
})).s("gm_piano").gain(0.35)

// bass · acoustic bass
const bass_2 = note(`<
  A@2 B C A@2 B C A D E F A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A B A C A B@2
  C ~@72 A@2 G C A@2 G C A G E H A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@3 C A I E H
>`.pickRestart({
  A: "g2@2 bb2 g2 db3@2 d3 d2", B: "g2@2 bb2 g2 db3@2 d3 g2", C: "eb3@2 d3 g2 db3@2 bb2 d2",
  D: "g2@2 bb2 g2 db3@2 d3@2", E: "~@3 g3@2 d3@3 bb2@3 g2@2 d2@3", F: "bb1@4 g1@3 d2",
  G: "g2@4 bb2@2 g2@2 db3@4 d3@2 g2 ~", H: "bb1 g1", I: "g2@2 bb2 g2 db3@2 d3 ~",
})).s("gm_acoustic_bass").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@142 [~@3 x ~ x ~@2 x ~@2 x ~ x ~@2] ~@27 [~@3 x ~ x ~@2 x ~@2 x ~ x ~@2] ~>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@16 A@44 ~@82 B C A@20 ~@4 A@2 B C>".pickRestart({
  A: "~@7 x", B: "~@3 x ~ x ~@2 x ~@2 x ~ x ~@2", C: "x!2",
})).gain(0.25)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@12 A@48 ~@82 B ~ A@20 ~@4 A@2 B ~>".pickRestart({
  A: "~ x ~ x", B: "~@3 x ~ x ~@2 x ~@2 x ~ x ~@2",
})).gain(0.2)

// drums · crash
const crash = s("cr").struct("<~@143 [x!2] ~@27 [x!2]>").gain(0.4)

// drums · ride
const ride = s("rd").struct(`<
  ~@12 A@4 B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C ~@82 D ~ B@2 C B@3 C B@3 C B@3 C B@3 C B
  ~@4 B@2 D ~
>`.pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x!2", C: "x!3 ~ x ~ x!2", D: "~@3 x ~ x ~@2 x ~@2 x ~ x ~@2",
})).gain(0.2)

stack(trumpet, clarinet, alto_sax, bass, baritone_sax, piano, bass_2, kick, snare, pedal_hat, crash, ride)