Strudelify

Bloody Stream

Coda

KeyC minorTempo120 bpm
0:00/0:00
// Bloody Stream — Coda
// 120 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5913573; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 48 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. 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 · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  A@2 B@2 ~@7 C D@2 E@2 F@2 G H I@2 J@2 K@2 L M N O P Q R O S T ~ O P Q U O V W X@2 Y Z
>`.pickRestart({
  A: "c4 eb4 g4 ~ gb4@3 f4@2 f4 ~ c4 eb4@2 f4 ~", B: "[c4 eb4 g4 ~ gb4@3 f4@2 f4 ~ c4 eb4@2 f4@18]/2", C: "~@2 g3!2",
  D: "[gb3@3 g3@6 ~@3 eb3@2 f3@2]/2", E: "[gb3@3 g3@9 ~@3 g3]/2",
  F: "[c4@2 c4@2 c4@2 d4 eb4@3 d4@2 c4@2 d4 c4@7 ~@4 eb3@2 eb3@2 eb3@2]/2", G: "bb3@2 ab3 g3@13", H: "~@5 eb3 f3 eb3",
  I: "[c4@4 c4@2 bb3 c4@12 ~@5 c4@3 d4@3 eb4@2]/2", J: "[d4@10 bb3@2 bb3@2 f3 g3@9 ~@6 eb3@2]/2",
  K: "[f3@4 g3@2 g3@6 c3@2 eb3@8 ~@2 g3@3 ab3@3 bb3@2]/2", L: "g4 ~ b3@2 c4@2 d4@2",
  M: "ab3 bb3@2 c4@2 d4@2 eb4@2 f4@2 g4@2 ab4@2 ~", N: "~ g3 b3 d4", O: "eb5@2 d5@2 c5 bb4@2 c5 ~@2 g4@2 c5@2 eb5@2",
  P: "g5@2 f5@2 eb5 f5@2 eb5 ~@6 bb4!2", Q: "c5@2 c5@2 c5@2 c5 c5@2 c5@2 c5 c5@2 c5@2",
  R: "c5@2 b4@2 b4 c5@2 d5 ~@6 d5@2", S: "g5@3 bb4 ab5 g5 f5 g5", T: "f5@3 eb5@5", U: "c5@2 b4@2 b4 c5@2 d5@9",
  V: "g5@2 f5@2 eb5 f5@2 eb5 ~@2 g4@2 g4@2 f5@2", W: "g5@3 ~", X: "[g4@8 d5@4 f5@2 eb5 d5@2 c5@15]/2", Y: "d5", Z: "c5",
})).s("gm_alto_sax").gain(0.45)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note("<A B C@2 ~@24 D E F ~@2 E ~@2 G E F ~@4 H I@4>".pickRestart({
  A: "c3@4 b2@4 bb2@3 a2@3 ab2@2", B: "~@2 c3@2 b2@4 bb2 a2@2 g2@2 g2 gb2@2", C: "[c3@4 b2@4 bb2@3 a2@3 g2@18]/2",
  D: "~ g3 b3 d4", E: "~@4 c4 c4@2 c4 ~@8", F: "~@4 ab3 ab3@2 ab3 ~@8", G: "g2 ab2 bb2 d3 eb3 f3 ab3 bb3 b3@2 g2@6",
  H: "d2@4 d2 e2@2 f2@2 a2@2 c3@2 f3 g3@2", I: "[g3@7 ab3@8 bb3@8 c4@9]/4",
})).s("gm_baritone_sax").gain(0.3)

// other · baritone sax · "Baritone Saxophone" · soft notes
const baritone_sax_soft = note("<~@4 A@2 B C A@2 D ~ E ~ D ~@11 F ~@21>".pickRestart({
  A: "c3/2", B: "d3@3 eb3", C: "f3@3 ab3", D: "d3", E: "c3", F: "g2",
})).s("gm_baritone_sax").gain(0.2)

// other · clarinet · "B♭ Clarinet"
const clarinet = note("<A@2 B@2 ~@7 C ~@7 D E@2 F@2 G@2 H I J K L M N K O P Q K L M R S T U V@2 W X>".pickRestart({
  A: "c4 eb4 g4 ~ gb4@3 f4@2 f4 ~ c4 eb4@2 f4 ~", B: "[c4 eb4 g4 ~ gb4@3 f4@2 f4 ~ c4 eb4@2 bb4@18]/2",
  C: "eb5 f5@2 c5 eb5@2 bb4 c5@2 g4 c4 eb4 bb4 g4 eb4 c4", D: "g5 ab5 bb5 eb5 f5 g5 b4 c5 d5 g4 a4 g4 f4 eb4 d4 c4",
  E: "[c5@4 c5@2 bb4 c5@12 ~@5 c5@3 d5@3 eb5@2]/2", F: "[d5@10 bb4@2 bb4@2 f4 g4@9 ~@6 eb4@2]/2",
  G: "[f4@4 g4@2 g4@6 c4@2 eb4@8 ~@2 g4@3 ab4@3 bb4@2]/2", H: "g4 ~ b3@2 c4@2 d4@2",
  I: "ab4 bb4@2 c5@2 d5@2 eb5@2 f5@2 g5@2 ab5@2 ~", J: "~ g4 b4 d5", K: "eb5@2 d5@2 c6 c6@2 c6 ~@2 g4@2 c5@2 eb5@2",
  L: "g5@2 f5@2 c6 c6@2 c6 ~@6 bb4!2", M: "c5@2 c5@2 c5@2 c5 c5@2 c5@2 c5 c5@2 c5@2",
  N: "c5@2 b4@2 b4 c5@2 d5 ~@6 d5@2", O: "g5@3 bb4 ab5 g5 f5 g5", P: "f5@3 eb5@5",
  Q: "g4 ab4 bb4 d5 eb5 f5 ab5 bb5 b5@2 g4@6", R: "c5@2 b4@2 b4 c5@2 d5@9",
  S: "eb5@2 d5@2 c5 bb4@2 c5 ~@2 g4@2 c5@2 eb5@2", T: "g5@2 f5@2 eb5 f5@2 eb5 ~@2 g4@2 g4@2 f5@2", U: "g5@3 ~",
  V: "[g4@8 d5@4 f5@2 eb5 d5@2 c5@15]/2", W: "d5", X: "c5",
})).s("gm_clarinet").gain(0.45)

// other · trumpet · "B♭ Trumpet"
const trumpet = note("<A@2 B@2 ~@7 C ~@7 D ~@8 E F G H I F J K L F G H M F N O ~ P Q R>".pickRestart({
  A: "c5 eb5 g5 ~ gb5@3 f5@2 f5 ~ c5 eb5@2 f5 ~", B: "[c5 eb5 g5 ~ gb5@3 f5@2 f5 ~ c5 eb5@2 bb5@18]/2",
  C: "eb5 f5@2 c5 eb5@2 bb4 c5@2 g4 c4 eb4 bb4 g4 eb4 c4", D: "g5 ab5 bb5 eb5 f5 g5 b4 c5 d5 g4 a4 g4 f4 eb4 d4 c4",
  E: "~ g4 b4 d5", F: "eb5@2 d5@2 c5 bb4@2 c5 ~@2 g4@2 c5@2 eb5@2", G: "g5@2 f5@2 eb5 f5@2 eb5 ~@6 bb4!2",
  H: "c5@2 c5@2 c5@2 c5 c5@2 c5@2 c5 c5@2 c5@2", I: "c5@2 b4@2 b4 c5@2 d5 ~@6 d5@2", J: "g5@3 bb4 ab5 g5 f5 g5",
  K: "f5@3 eb5@5", L: "g4 ab4 bb4 d5 eb5 f5 ab5 bb5 b5@2 g4@6", M: "c5@2 b4@2 b4 c5@2 d5@9",
  N: "g5@2 f5@2 eb5 f5@2 eb5 ~@2 g4@2 g4@2 f5@2", O: "g5@3 ~", P: "~ c5@3", Q: "d5", R: "c5",
})).s("gm_trumpet").gain(0.45)

// other · trombone
const trombone = note(`<
  A B C@2 D E F G D E F G D E F G H I J K L M N O P Q R S T U V W X U V W Y U V W X Z AA AB AC@4
>`.pickRestart({
  A: "c3@4 b2@4 bb2@3 a2@3 ab2@2", B: "~@2 c3@2 b2@4 bb2 a2@2 g2@2 g2 gb2@2", C: "[c3@4 b2@4 bb2@3 a2@3 g2@18]/2",
  D: "c3@4 c3@3 g2@2 bb2@2 g2 c3@2 g2@2", E: "eb3@4 eb3@3 bb2@2 db3@2 bb2 eb3@2 bb2@2",
  F: "d3@4 d3@3 a2@2 c3@2 a2 d3@2 a2@2", G: "db3@4 db3@3 ab2@2 b2@2 ab2 db3@2 ab2@2",
  H: "c3@4 c3@3 g2!2 bb2@2 g2 c3@2 g2@2", I: "eb3@4 eb3@3 bb2!2 db3@2 bb2 eb3@2 bb2@2",
  J: "ab2@4 ab2@3 c3@2 c3@2 c3 d3@2 eb3@2", K: "g2@4 g2@3 b2!2 b2@2 b2 c3@2 d3@2", L: "f3@2 f3@2 f3@2 f3 c3",
  M: "db3@4 db3@4 db3@3 db3 ab2@2 db3@2", N: "c3@4 c3@4 c3@3 c3 g3@2 c3@2", O: "bb2@4 bb2@4 bb2@3 bb2 g3@2 bb2@2",
  P: "a2@4 a2@4 a2@3 a2 f2@2 a2@2", Q: "ab2@4 ab2@4 ab2@3 ab2 eb3@2 ab2@2", R: "g2",
  S: "g2 f3@2 eb3@2 d3@2 c3@2 bb2@2 ab2@2 g2@2 ~", T: "~ g3 b3 d4", U: "c3@4 c3@3 eb2@3 f2@2 g2@2 c3@2",
  V: "eb3@4 eb3@3 g2@3 ab2@2 bb2@2 eb3@2", W: "ab2@3 ab2 ab2@3 c3@2 c3 d3@2 eb3@2 ab2@2",
  X: "g2@3 g2 b2@3 b2@2 b2 c3@2 d3@2 g2@2", Y: "~@3 d3 eb3 f3 ab3 bb3 b3@2 g2@6", Z: "f2 eb2", AA: "db2",
  AB: "d2@4 d2 e2@2 f2@2 a2@2 c3@2 f3 g3@2", AC: "[g3@7 ab3@8 bb3@8 c4@9]/4",
})).s("gm_trombone").gain(0.2)

stack(alto_sax, baritone_sax, baritone_sax_soft, clarinet, trumpet, trombone)