Strudelify

spongebob squarepants - twelfth street rag

Euday Bowman

KeyF majorTempo200 bpm
0:00/0:00
// spongebob squarepants - twelfth street rag — Euday Bowman
// 200 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5823305; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 108 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(200/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · soprano sax · "Saxophone Soprano"
const soprano_sax = note(`<
  A B C D E F E G E F E G E F E G H I J K ~ L ~ M N O P Q R S T U V K ~@3 C W X@2 Y@4 X@4 Y@2 H I Z AA X@2 Y@4 X@2 AB R
  S AC U V K ~@3 AD D AE AF AG AH AI AJ AK AL AM@2 N@2 AN AO AP AQ ~ AR AS AR AT AR AT AU AV AW AX AY AZ BA BB BC BD
>`.pickRestart({
  A: "bb4 a4 bb4 c5 bb4@2 ~@2", B: "~@3 bb4", C: "bb4 bb4@2 bb4 c5@2 db5@2", D: "d5 ~@3",
  E: "eb5 d5 c5 eb5 d5 c5 eb5 d5", F: "c5 eb5 d5 c5 eb5 d5 c5 ~", G: "c5 ~@7", H: "g4@3 f4@2 ~@3", I: "d5@3 c5@2 ~@3",
  J: "bb4 ~ eb5!2 eb5@2 eb5@2", K: "eb5 ~@3", L: "~@8 bb4@4 bb4@2 bb4 ~", M: "~@8 d5@4 db5@2 d5 ~", N: "~ ab4 ~ ab4",
  O: "~ bb4 a4 ab4", P: "g4@2 f4 g4 ab4 bb4 c5 d5", Q: "eb5 ~@4 eb5@3", R: "db5 ~@4 db5@3", S: "c5 ~@4 c5@3",
  T: "a4@2 ~@3 gb5@3", U: "g5 gb5 f5 eb5@2 ~@3", V: "f5@3 f5@2 e5 f5@2", W: "d5 ~ d5 ~",
  X: "eb5@4 eb5@3 eb5 eb5@4 eb5@3 eb5", Y: "d5@4 d5@3 d5 d5@4 d5@3 d5", Z: "bb4 ~@7", AA: "f5 ~@3",
  AB: "eb5@2 ~@3 eb5@3", AC: "eb4 e4 gb4 ab4 bb4 b4 db5 eb5", AD: "f5 e5 eb5 d5 db5 c5 b4 bb4", AE: "~ bb3@2 c4",
  AF: "eb4 f4@2 g4@2 f4 eb4@2", AG: "g4 bb4@2 bb4@5", AH: "~@2 bb4 a4@2 a4 bb4@2", AI: "d5 f5@2 d5", AJ: "c5 bb4 c5 d5",
  AK: "d5 eb5@2 eb5@2 d5 c5@2", AL: "bb4 ~@3", AM: "~ bb4 ~ bb4", AN: "g4@3 f4@5", AO: "d5@3 c5@5", AP: "f5",
  AQ: "bb5 ~@3", AR: "eb4 d4 c4 eb4 d4 c4 eb4 d4", AS: "c4 eb4 d4 c4 eb4 d4 c4 ~", AT: "c4 ~@7", AU: "bb4 eb5 f5 g5",
  AV: "eb5 f5 g5 ab5", AW: "bb5@2 ~@3 bb5@3", AX: "bb5 ~@4 bb5@3", AY: "ab5 ~@4 ab5@3", AZ: "b5", BA: "bb5",
  BB: "a5@3 a5@2 a5 ab5@2", BC: "g5@2 bb4 c5@2 bb4 g4@2", BD: "eb5!3 ~",
})).s("gm_soprano_sax").gain(0.25)

// other · tenor sax · "Saxophone Ténor"
const tenor_sax = note(`<
  A B C D E@2 F G H I J K L@2 F M ~ N O P Q R Q S T U V W X Y Z AA AB AC AD ~@2 AE AF AG AH AI AJ AK AL AM AN AO@2 AP M
  ~ N O AQ AR AS AT AU AV AW AR AX AY X Y Z AA AB AC AZ BA ~ BB BC BD BE BF BG BH BI BJ BK BL@2 BM BN BO BP BQ AF ~@7 BR
  BS BT BU BV BW BX BY BZ CA
>`.pickRestart({
  A: "~@3 f3", B: "bb3 a3 bb3 c4 bb3@2 d4@2", C: "~@2 bb3 a3", D: "ab3 ~ bb2 ~", E: "~ f3 ~ eb3", F: "~ f3 ~ f3",
  G: "f3 ~@3", H: "~@2 d3 eb3 f3 eb3 d3 ~", I: "d3 ~ bb2 ~", J: "eb3!2 f3 gb3", K: "g3 ~@3", L: "~ f3 eb3 ~",
  M: "f3!2 eb3 d3", N: "~@3 a3@2 ~@3", O: "f3 ~@7", P: "~@5 bb3 c4 ~", Q: "eb4 d4 c4 eb4 d4 c4 eb4 d4",
  R: "c4 eb4 d4 c4 eb4 d4 c4 ~", S: "c4 ~@7", T: "bb2 c3 d3 eb3", U: "f3 g3 ab3 bb3", V: "eb4@2 bb2 c3 d3 eb3 f3 bb3",
  W: "eb4 ~@4 eb4@3", X: "db4 ~ eb4 f4 g4 db4@3", Y: "c4 ~@4 c4@3", Z: "gb3@2 ~@3 eb4@3", AA: "~ bb3@2 bb3 c4!2 eb4@2",
  AB: "g4@3 f4@5", AC: "eb4@2 bb3 c4 ~ bb3 g3@2", AD: "eb3 ~@3", AE: "~@2 eb4 e4", AF: "f4 ~@3", AG: "~ g3@2 ab3",
  AH: "bb3 eb4", AI: "~ g4@2 f4", AJ: "d4 bb3", AK: "~ g4@2 ab4", AL: "g4 f4", AM: "eb4@2 ~ c4", AN: "bb3 ~",
  AO: "~ g3 ~ g3", AP: "~@2 bb3 a3 ab3@2 ab3 g3", AQ: "~ gb4!3", AR: "eb4@2 ~ db4@2 ~ b3@2 bb3@8, ~@2 d4@2 ~ c4@2 ~@9",
  AS: "eb4@2 eb4 ~ d4@4 c4@4 bb3@4", AT: "f3 e3 f3 ab3@2 bb3 db4 d4", AU: "f4 e4 eb4 d4@2 bb3 f3@2",
  AV: "f4 e4 eb4 d4@2 c4 bb3@2", AW: "bb3!2 c4!2 db4!2 d4!2", AX: "g3 ~", AY: "eb4@2 ~@3 eb4@3",
  AZ: "eb3@2 ~@3 g3 ab3 a3", BA: "bb3 a3 bb3 c4 bb3@2 ~@2", BB: "~@4 f3 g3 ab3 bb3", BC: "ab3 ~@3", BD: "~ eb3@2 f3",
  BE: "ab3 bb3@2 c4@2 bb3 ab3@2", BF: "bb3 bb3@2 d4@5", BG: "~@2 d4 db4@2 db4 d4@2", BH: "d4 g4@2 f4",
  BI: "f4 ab4 g4 f4", BJ: "f4 eb4@2 eb4@2 g4 f4@2", BK: "eb4 ~@3", BL: "eb3 ~ bb2 ~", BM: "f3 ~ bb2 ~",
  BN: "f3 bb2 c3 d3", BO: "eb3@3 eb3@5", BP: "c4@3 c4@5", BQ: "~@3 d4", BR: "~@2 f4 g4", BS: "eb4 f4 g4 d4",
  BT: "eb4@2 ~@3 g4@3", BU: "g4 ~@4 db4@3", BV: "eb4 ~@4 c4@3", BW: "~@2 b3 db4 eb4 e4 gb4 ab4", BX: "~ eb4",
  BY: "a3@3 a3@2 a3 ab3@2", BZ: "bb3@2 bb3 c4@2 bb3 g3@2", CA: "~@2 g3 ~",
})).s("gm_tenor_sax").gain(0.4)

// other · tenor sax · "Saxophone Ténor" · soft notes
const tenor_sax_soft = note("<~@2 A ~@13 B C D E ~@17 F ~@13 B C ~@20 G ~@18 H I J K L M N ~@8 O>".pickRestart({
  A: "bb3 bb3@2 bb3 ~@4", B: "eb3@3 eb3@2 ~@3", C: "a3@3 ~@5", D: "~@2 ab3!2 ab3@2 ab3@2", E: "ab3 ~@3",
  F: "d4 d4@2 d4 ~@4", G: "bb2 c3 d3 eb3 ~@4", H: "g3 ab3 bb3 eb3", I: "bb2 c3 eb3 g3", J: "d3 eb3 f3 ab3",
  K: "f3 g3 ab3 bb3", L: "ab3 bb3 c4 d4", M: "bb3 c4 d4 g4", N: "bb3 eb4 ~@2", O: "ab3 g3 ~@2",
})).s("gm_tenor_sax").gain(0.15)

// other · baritone sax · "Saxophone Baryton"
const baritone_sax = note(`<
  A@2 B C D@2 E F E@2 D G H@2 E I ~ J K ~ D@2 L M E N O P@2 Q R S T U V ~ W ~ X Y@2 C@4 D Z D AA E I ~ J K ~ Y@2 C@4 D Z
  AB P Q R S T U V ~@4 AC AD AC AE AC AD AC AE AC AD AC AE AF AG ~ AH AI D@2 L@4 D G AB P AJ AK A AL AM AN
>`.pickRestart({
  A: "~@3 bb2", B: "~@2 f2!2", C: "bb2 ~ bb2 ~", D: "eb3 ~ bb2 ~", E: "bb2 ~ f2 ~", F: "bb2 f2 g2 ab2",
  G: "eb3 bb2 c3 d3", H: "eb3 ~@2 bb2", I: "bb2 ab2 g2 gb2", J: "~@3 f2@2 ~@3", K: "bb2 ~@7", L: "f3 ~ bb2 ~",
  M: "f3 bb2!2 ~", N: "bb2!2 ab2 f2", O: "eb2 ~ bb2 ~", P: "eb3 ~@4 eb3@3", Q: "ab2 ~ ab2 bb2 c3 eb3@3",
  R: "b2!2 gb2 b2", S: "bb2 eb3 c3 g2", T: "f2@3 bb2@5", U: "eb3@2 bb2 c3 ~ bb2 g2@2", V: "eb2 ~@3",
  W: "bb2 a2 bb2 c3 bb2@2 ~@2", X: "~ bb2 c3 d3", Y: "eb3 ~ eb3 ~", Z: "eb3@2 ~@3 bb2 c3@2",
  AA: "eb3@3 eb3 d3@4 c3@4 bb2@4", AB: "eb3@2 ~@3 eb3@3", AC: "eb3 d3 c3 eb3 d3 c3 eb3 d3",
  AD: "c3 eb3 d3 c3 eb3 d3 c3 ~", AE: "c3 ~@7", AF: "f2@3 f2@5", AG: "f3@3 f3@5", AH: "bb2@3 bb2 ab2@4 g2@4 f2@4",
  AI: "bb2@3 bb2 c3@4 db3@4 d3@4", AJ: "ab2 ~@4 ab2@3", AK: "b2 db3 eb3 e3 gb3 ab3 bb3 b3", AL: "f2@3 bb2!3 bb2@2",
  AM: "eb3@2 ~ bb2@3 bb2@2", AN: "~@2 eb3 ~",
})).s("gm_baritone_sax").gain(0.4)

// other · baritone sax · "Saxophone Baryton" · soft notes
const baritone_sax_soft = note("<~@2 A ~@13 B C D E ~@31 B C ~ E ~@52 F>".pickRestart({
  A: "f2 f2@2 f2 ~@4", B: "f2@3 f2@2 ~@3", C: "f2@3 ~@5", D: "~@2 ab3!2 ab3@2 ab3@2", E: "ab3 ~@3", F: "ab3!2 ~@2",
})).s("gm_baritone_sax").gain(0.2)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A@3 ~ A@3 ~ A@3 ~@5 A@3 ~ A@3 ~ A@3 ~@8 A@3 ~ A@3 ~ A@3 ~@5 A@3 ~ A@3 ~ A@3 ~@9 A@3 ~ A@3 ~ A@3 ~@5 A@3 ~ A@3 ~
  A@3 ~@6
>`.pickRestart({
  A: "~ x ~ x",
})).gain(0.3)

// drums · low tom
const low_tom = s("lt").struct("<~@4 A@12 ~@4 A@12 ~@7 A@12 ~@4 A@12 ~@8 A@12 ~@4 A@12 ~@5>".pickRestart({
  A: "x!2",
})).gain(0.3)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~ A ~ B ~@32 A ~ B ~@33 A ~ B ~@33>".pickRestart({
  A: "~@3 x", B: "~ x!3",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct("<~@15 A ~@15 A ~@18 A ~@15 A ~@19 A ~@15 A ~@5>".pickRestart({
  A: "~ x ~ x",
})).gain(0.3)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@7 A ~@3 A ~@11 A ~@3 A ~@14 A ~@3 A ~@11 A ~@3 A ~@15 A ~@3 A ~@11 A ~@3 A ~@9
>`.pickRestart({
  A: "~ x ~ x",
})).gain(0.3)

// drums · crash
const crash = s("cr").struct(`<
  A@2 ~ B ~@3 C ~@3 C ~@3 D E ~@2 B ~@3 C ~@3 C ~@3 D E ~@2 A@2 ~ B ~@3 C ~@3 C ~@3 D E ~@2 B ~@3 C ~@3 C ~@3 D E ~@2
  A@3 ~ B ~@3 C ~@3 C ~@3 D E ~@2 B ~@3 C ~@3 C ~@3 D E ~@2 A@2
>`.pickRestart({
  A: "~@3 x", B: "~ x!3", C: "~ x ~ x", D: "~@2 x!2", E: "x",
})).gain(0.3)

stack(
  soprano_sax, tenor_sax, tenor_sax_soft, baritone_sax, baritone_sax_soft, snare, low_tom, pedal_hat, open_hat,
  high_tom, crash
)