Strudelify

Royal Australian Navy

Alex F. Lithgow

KeyC majorTempo114 bpm
0:00/0:00
// Royal Australian Navy — Alex F. Lithgow
// 114 bpm, 2/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 2 "Piano, Right" named as a piano, played on piano (its church organ patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/6044860; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 164 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(114/2)

// 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 · piano · "Piano, Right"
const piano = note(`<
  A@2 B C D E D E F@2 G@2 D E D E H I J K L M N O P Q R S T U V W X Y Z AA AB E AB E F@2 G@2 AB E AC AD AE AF AG AH AI
  AJ AK AL AM AN AO AP AQ@2 AR AS AT AU AV AW AX AY AZ@2 BA BB BC BD BE BF BG BH BI@2 BJ@2 AX AY AZ@2 BA BK BL BM BN@2
  BO BP BQ BR BS BT BU@2 BV BW BX BY BZ@2 CA@2 CB CC CD CE CF CG CH@2 CI CJ CK@2 CL CM CN CO CP@2 CQ CR BS BT BU@2 BV BW
  BX BY BZ@2 CA@2 CB CC CD CE CF CG CH@2 CI CJ CK@2 CL CM CN CO CP@2 CQ CR CS@2
>`.pickRestart({
  A: "[[e4,c5]@2 g4 c5 ~@2 [b2,f3,f4,b4]@2 [e4,c5]@2 c5 e5 g5 e5 c5 e5, [c3,e3]@2 e5@3 ~@3, ~@4 [c3,e3]@2 ~ [c3,e3]]/2", // C Bdim C
  B: "g5@2 g5!2 g5@2 g5@2, [d3,f3,g4,d5,f5] [c3,e3,g4,c5,e5]", // G7 C
  C: "[b2,d3,g4,b4,d5,g5]@2 [g2,g4] [a2,a4] [b2,b4] [c3,c5] [d3,d5] [d#3,d#5]", // G A B C D D#
  D: "e5 [c3,e3,g3,c5,e5] [b2,b4] [a2,c3,e3,g3,a4,e5]", // C B Am7
  E: "e5 f5 [g2,c3,e3,g3,g4,g5]@2 e5 f5 [g2,c3,e3,g3,g4,g5]@2, a4!2, a2 ~ a2 ~", // C
  F: "[[b4,a5]@2 ~ [g4,b4] b2@2 [d3,f3,g3]@2 f3@2 [d3,f3,g3,b4,d5]@2 [b2,d5,f5]@2 [d3,f3,g3,f5,a5]@2, ~ [g2,d3,f3,g3] [g4,b4]@3 ~@3]/2", // B7 G G7 Bdim Dm G7 G
  G: "[[c3,e5,g5]@2 ~ [g4,c5] c3@2 [c3,e3,g3]@2 ~@2 g4 a4 b4 c5 d5 d#5, ~ [g2,c3,e3,g3] [e4,c5]@3 ~@3, ~@2 [c3,e3,g3] [b2,d3,f3,g3]]/2", // C C5 C G7
  H: "[b2,d3,g3,g4,b4,d5]@2 [g2,g4] [b2,b4] [d3,d5] [g2,g4] [b2,b4] [d3,d5]", // G B D G B D
  I: "[g3,g5] [c#3,e3,a#3,a#4,c#5,g5] [c#3,e3,a#3,a#4,c#5,f#5] [c#3,e3,a#3,a#4,c#5,e5]", // G C#dim F#7 A#dim
  J: "[d3,g3,b3,b4,d5] [c3,d3,a3,c5,f#5]", K: "[b2,d3,g3,b4,g5]@4 [a4,a5]@3 [g4,g5]",
  L: "f3 g3 f3 e3 d3 e3 d3 c3, [g4,b4] [g4,b4]@2 ~, ~ [b2,d3] ~ [b2,a4,c5]", // G Bm F
  M: "b2@2 g4 a4 [g4,b4] [a4,c5] [b4,d5] [g4,b4], [b4,d5] ~, ~ b2@2 [b2,d3,f3], ~ [d3,f3] ~@2", // G Am Bm G Bm Bdim Dm
  N: "g3 a3 g3 f3 e3 f3 e3 d3, [e4,c5] [e4,c5]@2 ~, ~ [c3,e3] ~ [c3,g4,d5]", // C Csus2
  O: "c4@2 [e3,g3]!2 [e3,g3,e4]@2 [e3,g3,c4]@2, [c3,c5,e5], ~ g4 ~@2", // Em C
  P: "e3 f3 e3 d3 c#3 d3 c#3 b2, [a4,c#5] [a4,c#5]@2 ~, ~ g3 ~ [e3,g3,b4,d5]", // A Em7
  Q: "a2@2 a4 b4 [a4,c#5] [b4,d5] [c#5,e5] [a4,c#5], [c#5,e5] ~, ~ [c#3,e3,g3] ~ [c#3,e3,g3]", // A Bm C#m A C#m C#dim
  R: "a3 b3 a3 g3 f3 g3 f3 e3, [f4,d5] [f4,d5]@2 ~, ~ [a2,d3,f3] ~ [a2,d3,a4,e5]", // Dm Asus4
  S: "f5@2 [a2,f3]!2 [a2,f3]@2 [a2,f3,a4]@2, d3, d5!2, ~ f5@3", // Dm
  T: "[b4,a5] [b2,d3,f3] ~ [b2,d3,f3,c5,g5], ~ [b4,a5]@2 ~", // B7 Bdim G7 B7
  U: "[d5,f5]@2 [b4,d5] [c5,e5] [d5,f5] [b4,d5] [c5,e5] [d5,f5], ~ [b2,d3,f3] ~ [b2,d3,f3]", // Dm Bm C Dm Bm C Dm Bdim
  V: "[e5,g5] [g2,c3,e3] ~ [g2,c3,e3,d5,f5], ~ [e5,g5]@2 ~", // Em C Em
  W: "[c5,e5]@4 c5 d5 ~ c5 b4@4 [g2,c3,e3,c5]@4, ~ [g2,c3,e3] ~@2", // C
  X: "[d3,d5]@2 ~ d5 [c3,d#3,b4,d#5]@2 ~ d#5, ~ [a2,c3,d3,f#3] ~ [a2,c3,d3,f#3]", // D Cm D7
  Y: "[b2,e3,b4,e5]@2 ~ e5 [a2,f#3,a4,f#5]@2 ~ f#5, ~ [a2,c3,d3,f#3] ~ [a2,c3,d3,f#3]", // E5 D D7
  Z: "[g2,b2,d3,g3,g4,b4,g5]@2 [g3,g4,g5]!2 [g3,g4,g5]@2 [g3,g4,g5]@2, ~ [d3,f3]", // G Dm
  AA: "[g3,g4,g5]@2 g4 a4 b4 c5 d5 d#5, [c3,e3] [b2,d3], ~ g3!2 [g3,g4]", // G C Bm G
  AB: "e5 [c3,e3,g3,c5,e5] [b2,b4] [c3,e3,g3,a4,e5]", AC: "d5 [g2,d3,f3,g3,g4,d5] [b2,b4] [d3,f3,g3,d5]",
  AD: "d5 e5 [d3,f3,g3,g4,f5]@2 [b4,d5] [a4,e5] [d3,f3,g3,g4,f5]@2, [b2,f3,b4] ~ [b2,f3] ~", // G7 Bm A5 G7 Bdim
  AE: "[g2,b2,g4,b4] [a2,c3,a4,c5] [b2,d3,b4,d5] [c3,e3,c5,e5]", // G Am Bm C
  AF: "[d3,f3,d5,f5] [c3,e3,c5,e5] [b2,d3,f3,b4,d5] [a2,c3,f#3,a4,c5]", // Dm C Bdim F#dim
  AG: "[g2,b2,g3,g4,b4]@4 g5 f5 e5 d5, ~ [d3,f3,g3,f4,b4]", AH: "[c3,e3,g3,e4,c5]@2 ~ [e2,e4]", AI: "a4@3 b4",
  AJ: "c5@4 d5@4 c5@4 e4 f#4 ~ g#4", AK: "a4 g#4 a4 b4 c5 b4 c5 d5, [c3,e3,a3]!2 [a2,d#3,f4] [c3,f3,a3,a4]",
  AL: "[b2,e3,g#3,e4,g#4,b4,e5]!2 ~ g4", AM: "c5@3 d5", AN: "e5@4 f5@4 e5@4 g4 a4 ~ b4",
  AO: "c5 b4 c5 d5 e5 d5 e5 f#5, [c3,e3,g3]!2 a4@2, ~@2 [c3,f#3] [c3,e3,f#3,c5]", // C Cdim F#m7b5
  AP: "[b2,d3,g3,g4,b4,d5,g5]@2 [b2,d3,g3,g4,b4,d5,g5]@2 ~@2 [d3,d4,d5]!2", // G D
  AQ: "~@2 [d3,f4,a4,c5]@2 ~@2 [d3,d4,d5]!2, g5, g3 [c3,g3,g4,b4]", // Dm7 D Cmaj7
  AR: "[g3,g5]@2 [d3,d4,d5]!2 [d3,g3,g4,g5]@2 [g2,d3,d4,d5]@2", AS: "[d3,g3,g4,g5]!2",
  AT: "b3@2 g3 a3 b3 a3 g3 a3, b4, ~ [b2,d3] g4@2, ~@3 [b2,d3]", AU: "~ [d3,f3] ~ [d3,f3], b3, b4 d5",
  AV: "d4@2 b3 c4 d4 c4 b3 c4, g4, ~ [d3,f3] ~ [d3,f3]", AW: "[d4,g4] [a2,d3,f3,a4] [b2,b4] [c3,d3,f3,b4,c5]",
  AX: "[b2,d3,f3,b4,d5] [c3,f3,c5,f5]", AY: "[b2,f3,b4,f5] [a2,f3,a4,f5]",
  AZ: "[[g2,e3]@10 [c3,e3,g3]!2 [c3,e3,g3]@2 [c3,e3,g3]@2, [g4,e5]@3 g4]/2", // C
  BA: "c5 [g2,c3,e3] ~ [g2,c3,e3,b4], ~ d5@2 ~", BB: "c5 [g2,c3,e3] ~ [g2,c3,e3,c5,a5], ~ [c5,e5]@2 ~",
  BC: "[b4,g5]@2 ~ [g4,b4] [g4,b4]@2 [b2,d3,f3,g4,b4]@2, ~ [b2,d3,f3] ~@2", // Em G G7 Bdim
  BD: "[g4,b4]@2 g4 a4 b4 a4 [b2,d3,f3,g4]@2, ~ [b2,d3,f3] ~@2", BE: "d5 [b2,d3,f3] ~ [b2,d3,f3,c#5], ~ e5@2 ~",
  BF: "d5 [b2,d3,f3] ~ [b2,d3,f3,b4,a5], ~ [b4,f5]@2 ~", // Bdim Bm7b5 Bdim
  BG: "[c5,g5]@2 ~ [e4,c5] [e4,c5]@2 [g2,c3,e3,e4,c5]@2, ~ [g2,c3,e3] ~@2", BH: "[g2,c3,e3,e4,c5] [g2,g3,g4,g5]",
  BI: "[b3@2 g3 a3 b3 a3 g3 a3 b3@2 [b2,d3,f3]@2 ~@2 [b2,d3,f3]@2, b4@3 d5, ~ [b2,d3] ~ [b2,d3] ~@4]/2", // Bdim Bm
  BJ: "[d4@2 b3 c4 d4 c4 b3 c4 d4@2 [a2,d3,f3,a4]@2 [b2,b4]@2 [c3,d3,f3,b4,c5]@2, g4@5 ~@3, ~ [d3,f3] ~ [d3,f3] ~@4]/2", // Dm B Bdim Dm
  BK: "c5 [a#2,c3,e3] ~ [a#2,c3,e3,b4], a#4, ~ d5@2 ~", // C7
  BL: "[a4,c5]@2 ~ [a4,c5] [a4,c5]@2 [a2,c3,f3,a4,c5]@2, ~ [a2,c3,f3] ~@2", // Am F
  BM: "e5@4 ~ f5 ~ e5 d#5@4 [g#2,b2,e3,e5]@4, g#4, ~ [g#2,b2,e3,e5] ~@2", // E
  BN: "[g5 [g2,e3,g3] ~ [c3,e3,g3,g5] e5 [c3,e3,g3,g4,c5] c5 [c3,e3,g3,g4,e5], g4@5 ~@3, ~ a5@2 ~@5]/2", // C
  BO: "~ [b2,d3,f3] ~ [b2,d3,f3], d5, g4 f4", BP: "[c3,e3,e4,c5] [a#2,e3,g3,g4,a#4,c5]",
  BQ: "[d3,d5] [e3,e5] [a2,f3,f4,a4,f5]@2 [c3,f3,a3,f4,a4]@2 [c3,f3,a3,f4,a4]@2 [c3,f3,a3,f4,a4]@4 [c3,f3,a3,f4,a4]@4", // D E Dm F
  BR: "[c3,f3,a3,f4,a4]!4", BS: "~ [a2,c3,f3] ~ [a2,c3,f3], [a4,f5]",
  BT: "~ [g#2,d3,e3] ~ [g#2,d3,f3], [g#4,e5] [g#4,d5]", // E7 Ddim C#m G#dim
  BU: "[[g4,b4] [a2,c3,f3,a#4,d5] ~ [a2,c3,f3] ~ [a2,c3,f3,a4,f5] [c5,e5] [a2,c3,f3,a#4,d5], ~@2 [a4,c5]@3 ~@3]/2", // G Dm7 F C Dm7 Am
  BV: "~ [a2,c3,f3] ~ [a2,c3,f3], [a4,c5] [f4,a4]", BW: "~ [a2,c3,f3] ~ [a2,c3,f3], [f4,a#4] [a4,c5]",
  BX: "[c#3,e3] [c#3,e3,g3] ~ [c#3,e3,g3], [a4,c#5]", BY: "d3 [a#2,d3,g3] ~ [a#2,d3,g3], [a#4,d5]",
  BZ: "[~ [a#2,c3,e3,g3] [a#2,e3] [a#2,c3,e3,g3] [a#2,e3] [a#2,c3,e3,g3,e4,g4] [f4,a4] [a#2,c3,e3,g3,g4,a#4], [e4,g4]@5 ~@3]/2", // C7 A#dim C7 A#dim C7 F C7 Em
  CA: "[f5 [a#2,c3,e3,g3,e5] [a#2,e3] [a#2,c3,e3,g3] [a#2,e3] [a#2,c3,e3,g3,f#4] g4 [a#2,c3,e3,g3,a4], [g4,a#4]@5 ~@3, ~@2 e5@3 ~@3]/2", // C7 A#dim C7 A#dim C7 Gm
  CB: "~ [c3,e3,g3,a#3] [f3,a#3] [c3,e3,g3,a#3], a#4 [g4,a#4,f5]", // C7 A#5 C7 Gm7
  CC: "[e3,a#3] [c3,e3,g3,a#3] [d3,a#3] [c3,e3,g3,a#3], [g4,a#4,e5] [g4,a#4,d5]", // Edim C7 Gm C7 Edim Gm
  CD: "[d3,g#3] [b2,d3] ~ [b2,d3,g#3,c#5], [f4,g#4], d5@3 ~", CE: "~ [c3,f3,a3] ~ [c3,f3,a3], [f4,a4,c5]",
  CF: "~ [c3,f3,a3] ~ [c3,f3,a3], [a4,f5]", CG: "~ [d3,e3,g#3] ~ [d3,f3,g#3], [g#4,e5] [g#4,d5]",
  CH: "[[g4,b4] [c3,f3,a3,a#4,d5] ~ [c3,f3,a3] ~ [c3,f3,a3,f4] a4 [c3,f3,a3,c5], ~@2 [a4,c5]@3 ~@3]/2", // G Dm7 F Am
  CI: "~ [c3,f3,a3] ~ [c3,f3,a3], f5 [f4,a4,c5]", CJ: "~ [c3,f3,a3] ~ [c3,f3,a3], [f4,a#4] [f4,a4]",
  CK: "[~@4 [d3,g3,a#3]@4 ~@4 [d3,g3,a#3,d5]@4 d5@4 d5 e5 ~ d5 c#5@4 [a#2,d3,g3,d5]@4, [g4,a#4]@3 ~, e5@3 ~@2 [a#2,d3,g3] ~@2]/2", // Gm
  CL: "~ [c3,f3,a3]!3, [a4,c5,f5]", CM: "[c3,g3,a#4,c5,e5,g5] [d3,g#3,b4,d5,g#5]",
  CN: "[c#3,a3,c#5,e5,a5] [b2,g#3,g#4,b4,f5]", CO: "[c3,a3,a4,c5,e5] [a#2,d3,a#4,d5]",
  CP: "[d5 [g2,a#2,e3,c5] ~ [g2,a#2,e3] ~ [g2,a#2,e3,d5] c5 [g2,a#2,e3,g5], [g4,a#4], ~@2 c5@3 ~@3]/2", // C7 Edim Em7b5 Edim Gm
  CQ: "f5!2 e5 d5, [a2,f3,f4,a4] ~", CR: "c5 a#4 a4 g4",
  CS: "[[a2,f3]@2 [a2,c3,f3]!2 [a2,c3,f3]@2 [a2,c3,f3]@2 [a2,c3,f3]@4 [a2,c3,f3,f4,a4,f5]@4, [f4,a4,f5]@5 ~@3]/2", // Dm F
})).s("gm_piano").gain(0.45)

// bass · tuba · "Tuba, Staff-1"
const bass = note(`<
  A B C D E F E F G@2 E@3 F E F D H I D J K E L M N O P Q G E F R S C@2 E F E F G@2 E@3 F Q C T U V W X Y Z AA AB AC AD
  AE AF@2 AG D G@4 T AH AI AJ E@2 G@4 E AK G@4 T AH AI AJ AL AM AN AO C@2 AP F AQ AD AR@2 AS@4 AT AU AV@6 AR@4 AS@4 AU@2
  AR AW AX AY F@2 AZ BA AR@2 AS@4 AT AU AV@6 AR@4 AS@4 AU@2 AR AW AX AY F@2 AZ BA BB AR
>`.pickRestart({
  A: "c3@2 ~ g2", B: "c3@2 ~ c3", C: "g2!2", D: "g2 ~", E: "c3 g2", F: "c3!2", G: "d3 g2", H: "~ c#3!3", I: "d3!2",
  J: "g2 d3", K: "b2 g2", L: "c3 g3 e3 c3", M: "a2 e3", N: "c#3 a2", O: "d3 a2", P: "d3 f3 d3 a2", Q: "g2 b2",
  R: "d3 c3", S: "b2 a2", T: "g2 a2 b2 c3", U: "d3 e3 f3 f#3", V: "g3 g2", W: "c3@2 ~ e2", X: "a2@3 b2",
  Y: "c3 d3 c3 b2", Z: "a2 f2", AA: "e2!2 ~ g2", AB: "c3@3 d3", AC: "e3 f3 e3 d3", AD: "c3 a2",
  AE: "g2@2 g2@2 ~@2 d2!2", AF: "g2@4 ~@2 d2!2, ~ g2", AG: "g2@2 g2 d2", AH: "d3 g2 a2 b2", AI: "c3!2 g2 e2",
  AJ: "c2 ~", AK: "c3 ~", AL: "c3", AM: "a#2", AN: "a2", AO: "g#2", AP: "g2!2 a2 b2", AQ: "f2 f3", AR: "f2!2",
  AS: "f2 c2", AT: "a2!2", AU: "a#2!2", AV: "g2 c2", AW: "e2 d2", AX: "c#2 g#2", AY: "a2 a#2", AZ: "f2 f3 e3 d3",
  BA: "c3 a#2 a2 g2", BB: "f2 f3 c3 a2",
})).s("gm_tuba").gain(0.72)

stack(piano, bass)