Strudelify

Hollow Bastion Field Theme

YourLocalAlchemist

KeyD majorTempo176 bpm
0:00/0:00
// Hollow Bastion Field Theme — YourLocalAlchemist
// 176 bpm, 5/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 5 "Bass" named as a bass, played on electric bass finger (its pizzicato strings patch is not one); ch 3 "Oboe" named as a reed, played on oboe (its tremolo strings patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5611402; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 42 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(176/5)

// 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.

// chords · cello · "Soprano"
const cello = note("<A@8 B@8 C@4 B@8 D@2 E@2 F@2 E@2 ~ G ~ H I@2>".pickRestart({
  A: "[~@48 c#3@2 ~@5 d3@2 ~@5 c#3@2 ~@3 d3@2 ~@3 c#3@2 ~@5 d3@2 ~@5 c#3@2 ~@3 d3@2 ~@3 c#3@2 ~@5 d3@2 ~@5 c#3@2 ~@3 d3@2 ~@3 c#3@2 ~@5 d3@2 ~@5 c#3@2 ~@3 d3@2 ~@3 f#3@2 ~@5 g3@2 ~@5 f#3@2 ~@3 g3@2 ~@3 f#3@2 ~@5 g3@2 ~@5 f#3@2 ~@3 g3@2 ~@3, b4]/8",
  B: "[c#3@2 ~@5 d3@2 ~@5 c#3@2 ~@3 d3@2 ~@3 c#3@2 ~@5 d3@2 ~@5 c#3@2 ~@3 d3@2 ~@3 f#3@2 ~@5 g3@2 ~@5 f#3@2 ~@3 g3@2 ~@3 f#3@2 ~@5 g3@2 ~@5 f#3@2 ~@3 g3@2 ~@3 c#3@2 ~@5 d3@2 ~@5 c#3@2 ~@3 d3@2 ~@3 c#3@2 ~@5 d3@2 ~@5 c#3@2 ~@3 d3@2 ~@3 f#3@2 ~@5 g3@2 ~@5 f#3@2 ~@3 g3@2 ~@3 f#3@2 ~@5 g3@2 ~@5 f#3@2 ~@3 g3@2 ~@3, b4]/8",
  C: "[d3@2 d3@2 ~ d3@2 d3@2 ~ d3@2 d3@2 b2@2 ~ b2@2 b2@2 ~ b2@2 c#3@2 c#3@2 ~ c#3@2 c#3@2 ~ c#3@2 d3@2 a2@2 ~ a2@2 a2@2 ~ a2@2 d3@2 d3@2 ~ d3@2 d3@2 ~ d3@2 d3@2 b2@2 ~ b2@2 b2@2 ~ b2@2 c#3@2 c#3@2 ~ c#3@2 c#3@2 ~ c#3@2 c#3@2 a2@2 ~ a2@2 a2@2 ~ a2@2, b4]/4",
  D: "[b2@24 d3@14 c#3@5 d3@2 ~ f#3@2, b4]/2", E: "[g3,c5]/2", F: "[g3@24 f#3@14 e3@5 c3@5, b4]/2", G: "[b4,d5]",
  H: "b4", I: "[~@14 b2@29 ~@5, b4@43 ~@5]/2",
})).s("gm_cello").gain(0.2)

// chords · violin · "Alto"
const violin = note("<A@6 B@2 C D E F D@2 E F G@4 C D E F C D H I J@2 K@2 L M K@2 ~ N ~ N O@2>".pickRestart({
  A: "[~@48 c#4@2 ~@5 d4@2 ~@5 c#4@2 ~@3 d4@2 ~@3 c#4@2 ~@5 d4@2 ~@5 c#4@2 ~@3 d4@2 ~@3 c#4@2 ~@5 d4@2 ~@5 c#4@2 ~@3 d4@2 ~@3 c#4@2 ~@5 d4@2 ~@5 c#4@2 ~@3 d4@2 ~@3, f#4]/6",
  B: "f#4@2 ~@5 g4@2 ~@5 f#4@2 ~@3 g4@2 ~@3",
  C: "~@2 g4@2 ~ f#4@2 b4@2 ~ f#4@2 g4@2 f#4@2 ~ g4@2 f#4@2 ~ c#5@2, f#4@5 ~@19",
  D: "f#4@2 g4@2 ~ f#4@2 b4@2 ~ f#4@2 g4@2 f#4@2 ~ g4@2 f#4@2 ~ c#5@2",
  E: "d5@2 c#5@2 ~ b4@2 e5@2 ~ d5@2 c#5@2 d5@2 ~ c#5@2 d5@2 ~ e5@2",
  F: "d5@2 c#5@2 ~ d5@2 f#5@2 ~ e5@2 d5@2 e5@2 ~ c#5@2 d5@2 ~ b4@2",
  G: "[d5@2 d5@2 ~ d5@2 d5@2 ~ d5@2 d5@2 b4@2 ~ b4@2 b4@2 ~ b4@2 c#5@2 c#5@2 ~ c#5@2 c#5@2 ~ c#5@2 d5@2 a4@2 ~ a4@2 a4@2 ~ a4@2 d5@2 d5@2 ~ d5@2 d5@2 ~ d5@2 d5@2 b4@2 ~ b4@2 b4@2 ~ b4@2 c#5@2 c#5@2 ~ c#5@2 c#5@2 ~ c#5@2 c#5@2 a4@2 ~ a4@2 a4@2 ~ a4@2, f#4]/4",
  H: "d5@2 c#5@2 ~ b4@2 e5@2 ~ d5@2 c#5@2 d5@2 ~ c#5@2 d5@2 ~ e5@2, g4",
  I: "d5@2 c#5@2 ~ d5@2 f#5@2 ~ e5@2 d5@2 e5@2 ~ c#5@2 d5@2 ~ b4@2, f#4",
  J: "[b3@24 d4@14 c#4@5 d4@2 ~ f#4@2, f#4@23 ~]/2", K: "g4/2", L: "[f#4,g4]", M: "f#4@14 e4@5 c4@5", N: "f#4",
  O: "[f#4@14 f#4@29 ~@5]/2",
})).s("gm_violin").gain(0.2)

// chords · pizzicato strings · "Tenor"
const pizzicato_strings = note("<A@8 B@12 A@8 C@2 D@2 C@2 D@2 E@2 F@2 G@2>".pickRestart({
  A: "[f#3,b3]/8", B: "[f#3,b3]/4", C: "[f#3,b3]/2", D: "[g3,c4]/2", E: "b3", F: "[f#3,b3]", G: "[[f#3,b3]@43 ~@5]/2",
})).s("gm_pizzicato_strings").gain(0.2)

// bass · electric bass finger · "Bass"
const bass = note("<A@8 B@4 C D E@2 B@4 A@8 E@2 F@2 E@2 F@2 C ~ C@2 G@2>".pickRestart({
  A: "b2/8", B: "b2/4", C: "b2", D: "d3@14 c#3@5 ~@3 e3@2, ~@19 d3@5", E: "b2/2", F: "c3/2", G: "[b2@43 ~@5]/2",
})).s("gm_electric_bass_finger").gain(0.2)

// other · oboe
const oboe = note("<~@17 A B@2 C ~@19 D@2>".pickRestart({
  A: "~@19 f#5@2 ~ g5@2", B: "[a5@10 g5@4 f#5@5 e5@19 d5@5 c#5@5]/2", C: "b4", D: "[~@5 b4@17 ~@2]/2",
})).s("gm_oboe").gain(0.2)

// other · viola
const viola = note("<~@8 A@2 B C A@2 B C D E D F A@2 G@2 A@2 B C H I J@2 K L J@2 ~@4 M@2>".pickRestart({
  A: "f#4@2 g4@2 ~ f#4@2 b4@2 ~ f#4@2 g4@2 f#4@2 ~ g4@2 f#4@2 ~ c#5@2",
  B: "d5@2 c#5@2 ~ b4@2 e5@2 ~ d5@2 c#5@2 d5@2 ~ c#5@2 d5@2 ~ e5@2",
  C: "d5@2 c#5@2 ~ d5@2 f#5@2 ~ e5@2 d5@2 e5@2 ~ c#5@2 d5@2 ~ b4@2",
  D: "g4@2 g4@2 ~ g4@2 g4@2 ~ g4@2 g4@2 e4@2 ~ e4@2 e4@2 ~ e4@2",
  E: "f#4@2 f#4@2 ~ f#4@2 f#4@2 ~ f#4@2 g4@2 d4@2 ~ d4@2 d4@2 ~ d4@2",
  F: "f#4@2 f#4@2 ~ f#4@2 f#4@2 ~ f#4@2 f#4@2 d4@2 ~ d4@2 d4@2 ~ d4@2", G: "[g4@7 f#4@17]/2", H: "b3",
  I: "d4@14 c#4@5 d4@2 ~ f#4@2", J: "c4/2", K: "g4", L: "f#4@14 e4@5 c4@5", M: "[~@14 e4@29 ~@5]/2",
})).s("gm_viola").gain(0.2)

// other · piano
const piano = note("<~@4 A@2 B@2 A@2 B@2 A@2 B@2 ~@4 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C@2>".pickRestart({
  A: "c#4@2 ~@5 d4@2 ~@5 c#4@2 ~@3 d4@2 ~@3", B: "f#4@2 ~@5 g4@2 ~@5 f#4@2 ~@3 g4@2 ~@3", C: "[[b3,f#4,b4]@41 ~@7]/2",
})).s("gm_piano").gain(0.3)

// other · piano · soft notes
const piano_soft = note("<[c#4@2 ~@5 d4@2 ~@5 c#4@2 ~@3 d4@2 ~@3]!4 ~@38>").s("gm_piano").gain(0.1)

// other · piano
const piano_2 = note("<~@4 A@8 B@4 ~@4 A@8 ~@9 A ~ C D@2>".pickRestart({
  A: "f#4@2 g4@2 ~ f#4@2 b4@2 ~ f#4@2 g4@2 f#4@2 ~ g4@2 f#4@2 ~ c#5@2",
  B: "[b2@23 ~ d3@14 c#3@5 ~@3 e3@2 b2@46 ~@2, f#3@91 ~@5, ~@43 d3@5 ~@48]/4",
  C: "d5@2 c#5@2 ~ d5@2 f#5@2 ~ e5@2 d5@2 e5@2 ~ c#5@2 d5@2 ~ b4@2", D: "[[b2,f#3]@41 ~@7]/2",
})).s("gm_piano").gain(0.15)

stack(cello, violin, pizzicato_strings, bass, oboe, viola, piano, piano_soft, piano_2)