Strudelify

Castle Town Theme

Paul Anthony Romero

KeyD minorTempo100 bpm
0:00/0:00
// Castle Town Theme — Paul Anthony Romero
// 100 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 3 "Basson" named as a bass, played on electric bass finger (its bassoon patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5984703; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 60 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/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.

// chords · cello · "Violon"
const cello = note(`<
  A@8 B@2 C@2 D@2 E F G H I J K L M N K L M N O@2 P Q R@2 S T S U V@2 W X Y Z W X Y Z AA AB AC AD AE AF AG AH AI AJ AK@2
>`.pickRestart({
  A: "[a4@2 b4@2 db5@2 d5@2 c5@7 ~, a2@15 ~]/4", B: "[f4 f4, f5]/2", C: "[e5@2 e5@2 eb5@3 ~, c3@7 ~]/2", D: "g4 a4",
  E: "f4 bb4", F: "a4@3 ~", G: "f5!2, d3", H: "e5!2, a2", I: "[d3,gb5]", J: "[d3,gb5]@3 ~", K: "d4 e4", L: "gb4 g4, d3",
  M: "a4 bb4, a2", N: "[a2,a4]@3 ~", O: "bb4 c5", P: "a4!2", Q: "ab4@3 ~", R: "c5 d5, eb3", S: "eb5 f5, eb3",
  T: "[d3,d5]@3 ~", U: "gb5 eb5, d3", V: "[[g3,g5]@7 ~]/2", W: "g2", X: "g2 f3", Y: "eb3 d3", Z: "eb3@3 ~",
  AA: "ab3 bb3", AB: "c4 d4", AC: "eb4 f4", AD: "gb4", AE: "gb4 ab4, db3", AF: "bb4 c5, db3", AG: "db5 eb5, f3",
  AH: "[c3,f5]@3 ~", AI: "f5!2, db3", AJ: "e5!2, c3", AK: "[[f3,f5]@7 ~]/2",
})).s("gm_cello").gain(0.3)

// other · tubular bells · "Alto"
const tubular_bells = note(`<
  A B C D A B C D E F G H I J K L M N O P Q R S T Q R S T U@2 V L W@2 X Y Z AA AB@2 ~@8 AC AD@2 AE AF AG AH AI AJ AK
  AL@2
>`.pickRestart({
  A: "[a3,a4] ~@2 [d4,a4], db4 e4", B: "[a3,a4] ~@2 [d4,a4], e4!2", C: "[a3,a4] ~@2 [d4,a4], e4 f4",
  D: "[a3,a4] ~@3, e4@3 ~", E: "a4!2", F: "b4 a4", G: "g4 f4", H: "eb4@3 ~", I: "g3 a3", J: "bb3 c4", K: "d4 c4",
  L: "f4@3 ~", M: "d4!2", N: "db4@2 d4 e4", O: "gb4", P: "gb4@3 ~", Q: "[gb4,a4] ~@3", R: "d4 a3", S: "f4 e4",
  T: "d4@3 ~", U: "bb4", V: "f4", W: "ab4 bb4", X: "g4 ab4", Y: "g4@3 ~", Z: "bb3!2", AA: "a3!2", AB: "[b3@7 ~]/2",
  AC: "eb3!2", AD: "eb3 f3", AE: "~ eb4 gb4 eb4, eb3 ~", AF: "gb3!2", AG: "gb3 ab3", AH: "f3 eb3",
  AI: "~ f4 ab4 f4, f3@3 ~", AJ: "ab4!2", AK: "g4!2", AL: "[f4@7 ~]/2",
})).s("gm_tubular_bells").gain(0.3)

// bass · contrabass · "Contrebasse"
const bass = note(`<
  A@8 ~@2 B@2 C@2 D E F G F E F@2 ~@2 F@2 ~@2 H@2 I J K@3 E K F L@2 ~@8 M@2 K@2 N@2 O J O P Q@2
>`.pickRestart({
  A: "[a1@15 ~]/4", B: "[c2@7 ~]/2", C: "eb2/2", D: "bb1", E: "d2@3 ~", F: "d2", G: "a1", H: "bb2", I: "f2",
  J: "f2@3 ~", K: "eb2", L: "[g1@7 ~]/2", M: "ab2", N: "gb2", O: "db2", P: "c2", Q: "[f2@7 ~]/2",
})).s("gm_contrabass").gain(0.3)

// other · french horn · "Cor en Fa"
const french_horn = note("<~@3 A ~@3 A B C D E F G H I J K L A ~@14 M@2 ~@6 N O ~@2 N O ~@7 P ~@3 P>".pickRestart({
  A: "a4@3 ~", B: "a4!2", C: "b4 a4", D: "g4 f4", E: "c5@3 ~", F: "eb4!2", G: "f4 eb4", H: "d4 c4", I: "d4@3 ~",
  J: "d4!2", K: "db4@2 d4 e4", L: "gb4", M: "[g4@7 ~]/2", N: "c4 d4", O: "c4@3 ~", P: "ab4@3 ~",
})).s("gm_french_horn").gain(0.3)

// other · trombone
const trombone = note("<~@3 A ~@3 A ~@3 B ~@6 C@2 ~@22 D E ~@2 D E ~@7 F ~@3 F>".pickRestart({
  A: "a2@3 ~", B: "c3@3 ~", C: "[d4@7 ~]/2", D: "c2 d2", E: "[c2,eb2]@3 ~", F: "f2@3 ~",
})).s("gm_trombone").gain(0.3)

// other · flute · "Flûte"
const flute = note("<~@16 A B C@2 ~@22 D E ~@2 D E ~@8 F E ~@2>".pickRestart({
  A: "f6@15 ~ bb6@15 ~", B: "a6@15 ~ g6@15 ~", C: "[a6@53 ~@11]/2",
  D: "g6 ab6 g6 ab6 g6 ab6 g6 ab6 g6@8 g6 ab6 g6 ab6 g6 ab6 g6 ab6 g6@8",
  E: "g6 ab6 g6 ab6 g6 ab6 g6 ab6 g6 ab6 g6 ab6 g6 ab6 g6 ab6 g6@8 ~@8",
  F: "ab6 a6 ab6 a6 ab6 a6 ab6 a6 ab6@8 ab6 a6 ab6 a6 ab6 a6 ab6 a6 ab6@8",
})).s("gm_flute").gain(0.3)

// other · orchestral harp · "Harpe"
const orchestral_harp = note("<~@20 A@8 B@2 C@2 D@2 E@3 F G ~@21>".pickRestart({
  A: "~@3 a2 d3 f3 a3 d4", B: "~@3 bb2 d3 f3 bb3 d4", C: "~@3 f2 ab2 c3 f3 ab3", D: "~@3 ab2 c3 eb3 ab3 c4",
  E: "~@3 g2 bb2 d3 g3 bb3", F: "~@3 d3 gb3 a3 d4 gb4", G: "~@3 g2 b2 d3 g3 b3",
})).s("gm_orchestral_harp").gain(0.3)

// bass · electric bass finger · "Basson" · Dm
const bass_2 = note(`<
  ~@40
  [g2@2 f2 g2 ab2@2 g2 f2]
  [g2 d2 [d2,f2]@2]
  ~@2
  [g2@2 f2 g2 ab2@2 g2 f2]
  [g2 d2 [d2,f2]@2]
  ~@14
>`).s("gm_electric_bass_finger").gain(0.3)

// other · timpani · "Timbales"
const timpani = note("<~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@23 A ~@3 A ~@3 A ~@3 A ~@3 A>".pickRestart({
  A: "a1 b1 a1 b1 a1 b1 a1 b1 a1 b1 a1 b1 a1 b1 a1 b1 a1 b1 a1 b1 a1 b1 a1 b1 ~@8",
})).s("gm_timpani").gain(0.3)

// drums · snare
const snare = s("sd").struct("<A@3 B A@3 B A@3 B A@3 B A@2 B@2 ~@31 C ~@3 B ~@2 B@2>".pickRestart({
  A: "x ~@11 x!5 ~@7 x ~@7", B: "x ~@7 x ~@2 x ~@2 x ~@2 x ~@14", C: "x ~@4 x!4 ~@7",
})).gain(0.3)

stack(cello, tubular_bells, bass, french_horn, trombone, flute, orchestral_harp, bass_2, timpani, snare)

More by Paul Anthony Romero