Strudelify

Jagged Line

Bluecoats

KeyD minorTempo200 bpm
0:00/0:00
// Jagged Line — Bluecoats
// 200 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 5/4 at bar 11, 4/4 at bar 12, 3/4 at bar 14, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: duplicate parts dropped: ch 14 "B♭ Tuba" tuba (copy of ch 13 "B♭ Tuba" tuba)
// note: Transcription provider: pdmx. https://musescore.com/score/4156576; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 55 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(200/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/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 · "B♭ Trumpet"
const trumpet = note("<A ~@17 B C@2 D E F ~@3 G H ~ I J K L M N@4 O P@3 Q@3 R S@8>".pickRestart({
  A: "~ [d5,eb5] ~@2", B: "~@6 d4 ~", C: "[gb4@3 a4@3 c5@2]/2", D: "db5 d5@5 eb5@2 d5@2 a4@2 ~@2 d5@2",
  E: "c5@6 bb4@2 a4@2 bb4 a4 g4@3 gb4", F: "a4, g4 ~@15", G: "~@2 gb5@6 g5@4 d5 e5 f5 g5", H: "a5@2 bb5 a5@2 g5 a5@2",
  I: "~@12 d5 e5 [f5,g5] a5", J: "bb5@2 bb5 a5@2 a5 g5@2", K: "g5 f5@2 f5 e5 f5 e5@2", L: "~@3 d5",
  M: "d5 c5@2 c5 d5@2 eb5@2", N: "[d5@6 bb4 a4@3 bb4 c5@3 a4 bb4]/4", O: "a4@3 g4 g4@4",
  P: "[~@2 bb4@2 a4@2 bb4 a4@2 g4 g4@2 a4@2 bb4 a4@2 g4 g4@6]/3", Q: "[~@4 a4@2 bb4 a4@2 g4@3 f4@2 f4 f4@2 bb4@7]/3",
  R: "~ f5!3", S: "gb5/4",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "B♭ Trumpet"
const trumpet_2 = note("<A ~@34 B@4 C D@3 E@3 F G@8>".pickRestart({
  A: "~ bb4 ~@2", B: "[bb4@6 bb4 a4@3 bb4 c5@3 a4 bb4]/4", C: "a4@3 g4 g4@4",
  D: "[~@2 bb4@2 a4@2 bb4 a4@2 g4 g4@2 a4@2 bb4 a4@2 g4 g4@6]/3", E: "[~@4 a4@2 bb4 a4@2 g4@3 f4@2 f4 f4@2 f4@7]/3",
  F: "~ d5!3", G: "d5/4",
})).s("gm_trumpet").gain(0.34)

// other · french horn · "Mellophone"
const french_horn = note("<A ~@34 B@2 C@2 D@4 E@4 F@2 G@2 H@4>".pickRestart({
  A: "~ d5 ~@2", B: "[f5 eb5 d5 c5@3 d5 c5]/2", C: "[a4@3 gb4@2 a4 eb5 d5]/2",
  D: "[c5@8 bb4@4 a4@12 f4@4 bb4@28 g4 a4 bb4 c5 d5@4]/4",
  E: "[d5@8 c5@4 bb4@12 c5@4 d5@12 c5@4 bb4@8 d4 f4 [f4,g4] a4 bb4@2 c5@2 bb4@2 c5@2]/4", F: "d5/2", G: "e5/2",
  H: "d5/4",
})).s("gm_french_horn").gain(0.46)

// other · french horn · "Mellophone"
const french_horn_2 = note("<A ~@34 B@2 C@2 D@4 E@4 F@2 G@2 H@4>".pickRestart({
  A: "~ a4 ~@2", B: "[bb4@2 bb4 a4@3 d5 c5]/2", C: "[a4@3 gb4@2 a4 eb5 d5]/2",
  D: "[c5@8 bb4@4 a4@12 f4@4 bb4@28 g4 a4 bb4 c5 d5@4]/4",
  E: "[d5@8 c5@4 bb4@12 c5@4 d5@12 c5@4 bb4@8 d4 f4 [f4,g4] a4 bb4@2 c5@2 bb4@2 c5@2]/4", F: "a4/2", G: "bb4/2",
  H: "a4/4",
})).s("gm_french_horn").gain(0.57)

// other · french horn · "Baritone Horn"
const french_horn_3 = note("<A ~@34 B@2 C@2 D E F@5 G ~@2 H@2 I@4>".pickRestart({
  A: "~ d4 ~@2", B: "[bb3 d4@2 d4]/2", C: "[d4@3 d4]/2", D: "d4", E: "d4 f4", F: "[eb4@5 c4 f4 d4@6 c4 f4 d4@5]/5",
  G: "f4 eb4", H: "d4/2", I: "d4/4",
})).s("gm_french_horn").gain(0.52)

// other · tuba · "Euphonium"
const tuba = note("<A ~@34 B@2 C@2 D@2 E F@4 G ~@2 H@2 I@4>".pickRestart({
  A: "~ bb3 ~@2", B: "[bb3@3 bb3]/2", C: "[a3@3 a3]/2", D: "bb3", E: "bb3 d4", F: "[c4 bb3@7]/4", G: "c4 bb3",
  H: "bb3/2", I: "a3/4",
})).s("gm_tuba").gain(0.26)

// other · tuba · "Euphonium"
const tuba_2 = note("<A ~@34 B@2 C@2 D E F@5 G ~@2 H@2 I@4>".pickRestart({
  A: "~ g3 ~@2", B: "[f3@3 f3]/2", C: "[gb3@3 gb3]/2", D: "g3", E: "a3", F: "g3/5", G: "a3 g3", H: "g3/2", I: "gb3/4",
})).s("gm_tuba").gain(0.26)

// bass · tuba · "B♭ Tuba"
const bass = note("<A ~@34 B@2 C@2 D E F@5 G ~@2 H@2 I@4>".pickRestart({
  A: "~ g2 ~@2", B: "[bb1@6 bb1 c2]/2", C: "[d2@3 d2]/2", D: "g2", E: "f2", F: "eb2/5", G: "f2 eb2", H: "bb2/2",
  I: "d2/4",
})).s("gm_tuba").gain(0.31)

stack(trumpet, trumpet_2, french_horn, french_horn_2, french_horn_3, tuba, tuba_2, bass)