Strudelify

Battle Hymn of the Republic

Andy Williams

KeyB♭ majorTempo100 bpm
0:00/0:00
// Battle Hymn of the Republic — Andy Williams
// 100 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 3 "Bass" named as a bass, played on electric bass finger (its string ensemble 1 patch is not one)
// note: Full arrangement: all 74 bars on a 16-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 · [...]/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 · string ensemble 1 · "Tenor"
const string_ensemble_1 = note(`<
  ~@12 A B C D E F G H ~@9 A B C D E F G H ~@12 A B C D E F G H ~@9 A B C D E F G H
>`.pickRestart({
  A: "d4@6 c4@2 d4@3 d4 d4@3 eb4", B: "f4@2 d4 ~", C: "eb4@3 eb4 eb4@3 f4 g4@3 g4 f4@3 eb4", D: "d4!2 d4@2",
  E: "d4@6 c4@2 d4@3 d4 d4@3 d4", F: "f4@4 d4@2 ~ f4", G: "g4!2 f4 eb4", H: "d4 ~",
})).s("gm_string_ensemble_1").gain(0.56)

// bass · electric bass finger · "Bass"
const bass = note("<~@12 A B C D A E F G ~@9 A B C D A E F G ~@12 A B C D A E F G ~@9 A B C D A E F G>".pickRestart({
  A: "bb2@6 bb2@2 bb2@3 bb2 bb2@3 bb2", B: "bb2@2 bb2 ~", C: "eb3@3 eb3 eb3@3 eb3 eb3@3 eb3 eb3@3 eb3",
  D: "bb2!2 bb2@2", E: "bb2@4 bb2@2 ~ bb2", F: "eb3!2 f3!2", G: "bb2 ~",
})).s("gm_electric_bass_finger").gain(0.56)

// chords · piano · "Keyboard Treble"
const piano = note(`<
  A B C D E@2 F E@3 G H E@2 F E@3 I J E@3 F E@3 G H E@2 F E@3 I J A B C K E@2 F E@3 G H E@2 F E@3 I J E@3 F E@3 G H E@2
  F E@3 I J
>`.pickRestart({
  A: "f4@6 eb4@2 d4@2 f4@2 bb4@3 c5", B: "d5@4 bb4@2 ~ b4", C: "c5!2 bb4 a4", D: "bb4 [f3,bb3,d4]!3",
  E: "[f3,bb3,d4]!4", F: "[g3,bb3,eb4]!4", G: "[eb3,bb3,eb4]!2 [f3,bb3,d4] [f3,c4,eb4]",
  H: "[bb3,d4]@2 f4!2 f4@2 f4@2 f4@4 f4@4", I: "[g3,c4,eb4]!2 [f3,bb3,d4] [eb3,f3,a3,c4]", J: "[d3,f3,bb3] ~",
  K: "[eb4,a4,c5]@2 [d4,bb4] ~", // Adim Gm
})).s("gm_piano").gain(0.56)

// bass · string ensemble 1 · "Keyboard Bass"
const bass_2 = note(`<
  A@2 B C D@2 E D@3 F G ~@8 D@3 E D@3 F G ~@8 A@2 B H D@2 E D@3 F G D@2 E D@3 I ~ D@3 E D@3 F G D@2 E D@3 I ~
>`.pickRestart({
  A: "bb2 [f3,bb3,d4] bb2 [f3,bb3,d4]", B: "eb2 [eb3,g3,c4] f2 [f3,c4,eb4]", C: "[bb3,d4] bb2!3", D: "bb2!4",
  E: "eb3!4", F: "eb2!2 f2!2", G: "bb2 ~@3", H: "[f2,f3]@2 [bb2,f3] ~", I: "eb3 eb2 f2!2",
})).s("gm_string_ensemble_1").gain(0.48)

// bass · epiano2 · "Keyboard Bass"
const bass_3 = note("<~@12 A@2 B A@3 C@8 ~@3 A@2 B A@3 D ~@38>".pickRestart({
  A: "bb2!4", B: "eb3!4", C: "[eb3 eb2 f2 f2@29]/8", D: "eb3 eb2 ~@2",
})).s("gm_epiano2").gain(0.48)

// bass · piano · "Keyboard Bass"
const bass_4 = note(`<
  ~@19
  [bb2@2 f2!2 d2@2 f2@2 bb1@8]
  ~@16
  [bb2@2 f2!2 d2@2 f2@2 bb1@8]
  ~@19
  [bb2@2 f2!2 d2@2 f2@2 bb1@8]
  ~@16
  [bb2@2 f2!2 d2@2 f2@2 bb1@8]
>`).s("gm_piano").gain(0.64)

stack(string_ensemble_1, bass, piano, bass_2, bass_3, bass_4)

More by Andy Williams