Strudelify

banana boat song

Daniel Roupa

KeyG majorTempo120 bpm
0:00/0:00
// banana boat song — Daniel Roupa
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 3 "Alto Saxophone" alto sax (copy of ch 1 "B♭ Trumpet" trumpet)
// note: Transcription provider: pdmx. https://musescore.com/score/4787931; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 36 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.
// 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("<~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@4 A B ~@4 A B>".pickRestart({
  A: "a3 a3@2 c4@2 c4@2 a3", B: "a#3!2 a3 ~",
})).s("gm_tenor_sax").gain(0.3)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note("<~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@4 A B ~@4 A B>".pickRestart({
  A: "a2 a2@2 c3@2 c3@2 a2", B: "a#2!2 a2 ~",
})).s("gm_baritone_sax").gain(0.3)

// other · trombone
const trombone = note("<~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@4 A B ~@4 A B>".pickRestart({
  A: "f3 f3@2 f3@2 f3@2 f3", B: "c3!2 f2 ~",
})).s("gm_trombone").gain(0.3)

// bass · tuba
const bass = note("<~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@4 A B ~@4 A B>".pickRestart({
  A: "f2 f2@2 f2@2 f2@2 f2", B: "c2!2 f1 ~",
})).s("gm_tuba").gain(0.48)

stack(tenor_sax, baritone_sax, trombone, bass)