Strudelify

Liberty Bell

John Philip Sousa

KeyG majorTempo180 bpm
0:00/0:00
// Liberty Bell — John Philip Sousa
// 180 bpm, 6/8, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5981248; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 212 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(180/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// 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 B C D E F G H I J K L E M N O P Q R S E F G H I J K L E M N O P Q R T ~@7 U V W X Y Z AA AB AC ~@7 U V W X Y Z AA AB
  AC ~@2 AD AE ~@2 AF AG AH AI AJ AK ~@2 AL AM ~@2 AD AE ~@2 AF AG AH AI AJ AK AN AO AP AQ AR AS AT AU AR AV AW AK AX AK
  AY AK AY AZ BA BB BC BD BC BD BE BF BG BH ~@2 AD AE ~@2 AF AG AH AI AJ AK ~@2 AL AM ~@2 AD AE ~@2 AF AG AH AI AJ AK AN
  AO AP AQ AR AS AT AU AR AV AW AK AX AK AY AK AY AZ BA BB BC BD BC BD BE BF BG BH ~@2 AD AE ~@2 AF AG AH AI AJ AK ~@2
  AL AM ~@2 AD AE ~@2 AF AG AH AI AJ AK AN AO AP BI
>`.pickRestart({
  A: "f5@5 e5@3 d5@5 c#5@3", B: "c5@5 b4@3 a#4@5 a4@3", C: "g4 ~@2 a4 ~ a#4 ~@2 a4@5 g4@3", D: "c4@5 ~@8 c5@3",
  E: "a4@3 ~@2 a4@3 a4@3 g#4@2 a4@3", F: "f5@3 ~@2 c5@3 c5@3 ~@2 a4@3", G: "a#4@5 a#4@3 a#4@5 c5@3", H: "d5@13 a#4@3",
  I: "g4@3 ~@2 g4@3 g4@3 f#4@2 g4@3", J: "e5@3 ~@2 d5@3 d5@3 ~@2 a#4@3", K: "a4@3 ~@2 a4@3 a4@3 ~@2 a#4@3",
  L: "c5@13 c5@3", M: "a5@3 ~@2 f5@3 f5@3 ~@2 c5@3", N: "b4@3 ~@2 g5@3 g5@3 ~@2 g5@3", O: "g5@13 f5@3",
  P: "e5@3 ~@2 g5@3 g5@3 f#5@2 g5@3", Q: "d5@3 ~@2 g5@3 g5@3 f#5@2 g5@3", R: "c5@3 ~@2 b4@3 c5@3 ~@2 b4@3", S: "c5!2",
  T: "c5 ~", U: "~@13 c5@3", V: "d5@3 ~@2 d5@3 d5@3 c#5@2 d5@3", W: "e5!2", X: "f5@5 f5@3 g5@3 f5@2 g5@3",
  Y: "a5@13 a5@3", Z: "g5@3 ~@2 f5@3 d5@3 ~@2 a#4@3", AA: "a4 f4", AB: "g4 e4", AC: "f4@13 ~@3",
  AD: "d5@2 ~@3 d5@3 d5@3 ~@2 c#5@3", AE: "d5@13 ~@3", AF: "d#5@2 ~@3 d#5@3 d#5@3 ~@2 d5@3", AG: "d#5@13 d5@3",
  AH: "c5 b4", AI: "c5@5 ~@11", AJ: "d5 c#5", AK: "d5@5 ~@11", AL: "d#4!2", AM: "d#4 c4", AN: "g4 d#5",
  AO: "d5@5 a#4@3 c5@5 a4@3", AP: "a#4", AQ: "a#4@5 ~@11", AR: "~@5 d#5@3 d#5@3 d5@2 c5@3", AS: "a#4 ~",
  AT: "~@5 d#5 ~@2 d#5 ~@2 d5 ~ c5 ~@2", AU: "g4@5 ~@11", AV: "a#4@5 a#4@3 c5@3 a#4@2 c5@3", AW: "d5@5 ~@3 d5@5 ~@3",
  AX: "~@5 g5 ~@2 g5 ~@2 f5 ~ d#5 ~@2", AY: "~@5 g5@3 g5@3 f5@2 d#5@3", AZ: "d5@5 d5@3 e5@3 d5@2 e5@3",
  BA: "f5@5 ~@3 f5@5 ~@3", BB: "f5@5 ~@11", BC: "~@13 e5@2 ~", BD: "f5@4 ~ c5@2 ~ f5@5 ~@3", BE: "e5@11 ~@5",
  BF: "f5@11 ~@5", BG: "f#5@11 ~@5", BH: "a4@8 d#5@5 ~@3", BI: "a#4@5 ~@3 a#4@5 ~@3",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "B♭ Trumpet"
const trumpet_2 = note(`<
  A B C D ~@10 E F G H I J ~@10 E F G H I K ~@7 L M N O P Q R S T ~@7 L M N O P Q R S T ~@2 U V ~@2 W X Y Z AA AB ~@2 AC
  AD ~@2 U V ~@2 W X Y Z AA AB ~@2 AE AF AG K AH AI AG AJ AK Z AL AB AM AB AM AN AO AP AQ AR AQ AR AS@3 AT ~@2 U V ~@2 W
  X Y Z AA AB ~@2 AC AD ~@2 U V ~@2 W X Y Z AA AB ~@2 AE AF AG K AH AI AG AJ AK Z AL AB AM AB AM AN AO AP AQ AR AQ AR
  AS@3 AT ~@2 U V ~@2 W X Y Z AA AB ~@2 AC AD ~@2 U V ~@2 W X Y Z AA AB ~@2 AE AU
>`.pickRestart({
  A: "f5@5 e5@3 d5@5 c#5@3", B: "c5@5 b4@3 a#4@5 a4@3", C: "g4 ~@2 a4 ~ a#4 ~@2 a4@5 g4@3", D: "c4@5 ~@11",
  E: "~@13 d5@3", F: "d5@13 ~@3", G: "c5!2", H: "b4 d5", I: "g4@3 ~@2 g4@3 g4@3 ~@2 g4@3", J: "g4!2", K: "g4 ~",
  L: "~@13 c5@3", M: "f4", N: "a4 g4", O: "f4 d5", P: "a4@13 a4@3", Q: "d5@3 ~@2 f5@3 d5@3 ~@2 a#4@3", R: "a4 f4",
  S: "g4 e4", T: "f4@13 ~@3", U: "a#4@2 ~@3 a#4@3 a#4@3 ~@2 a#4@3", V: "a#4@13 ~@3", W: "c5@2 ~@3 c5@3 c5@3 ~@2 b4@3",
  X: "c5@13 ~@3", Y: "~@5 a4@3 ~@5 g#4@3", Z: "a4@5 ~@11", AA: "~@5 a#4@3 ~@5 a#4@3", AB: "a#4@5 ~@11", AC: "c4 a#3",
  AD: "a3!2", AE: "~@5 d4@3 d4@5 d4@3", AF: "d4@5 ~@11", AG: "~@5 a4@3 a4@3 a4@2 a4@3",
  AH: "~@5 a4 ~@2 a4 ~@2 a4 ~ a4 ~@2", AI: "g4@5 ~@11", AJ: "g4@5 g4@3 g4@3 g4@2 g4@3", AK: "a4@5 ~@3 a4@5 ~@3",
  AL: "~@5 d#5 ~@2 d#5 ~@2 d5 ~ c5 ~@2", AM: "~@5 d#5@3 d#5@3 d5@2 c5@3", AN: "a#4@5 a#4@3 a#4@3 d5@2 a#4@3",
  AO: "c5@5 ~@3 c5@5 ~@3", AP: "c5@5 ~@11", AQ: "~@13 a#4@2 ~", AR: "c5@4 ~ c5@2 ~ f5@5 ~@3", AS: "a#4@11 ~@5",
  AT: "d#5@8 d#5@5 ~@3", AU: "d4@5 ~@3 d4@5 ~@3",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "B♭ Trumpet" · soft notes
const trumpet_soft = note("<~@4 A B C D E F G H A I J ~@5 A B C D E F G H A I J ~@181>".pickRestart({
  A: "f4@3 ~@2 f4@3 f4@3 g#4@2 f4@3", B: "a4@3 ~@2 a4@3 a4@3 ~@2 f4@3", C: "g4@5 g4@3 g4@5 a4@3", D: "a#4@13 g4@3",
  E: "e4@3 ~@2 e4@3 e4@3 f#4@2 e4@3", F: "a#4@3 ~@2 a#4@3 a#4@3 ~@2 g4@3", G: "f4@3 ~@2 f4@3 f4@3 ~@2 g4@3",
  H: "a4@13 a4@3", I: "c5@3 ~@2 a4@3 a4@3 ~@2 a4@3", J: "g4@3 ~@2 d5@3 d5@3 ~@5",
})).s("gm_trumpet").gain(0.2)

// other · french horn · "Horn in F"
const french_horn = note(`<
  A B C D ~@12 E F G H ~@12 E F G I J K L M N O P Q R S T U V W X Y J K L M N O P Q R S T U V W X Z AA AB ~ AC AA AB ~@2
  AD AE AF AG AH@2 AI@2 ~@4 AA AB ~@2 AD AE AF AG AJ AK AL AM AN AO AN AP AN AQ AR AS AT AM AT AU AT AV AW AX AY AZ AY
  AZ BA BB BC BD BE AB ~ AC BE AB ~@2 AD AE AF AG AH@2 AI@2 ~@4 AA AB ~@2 AD AE AF AG AJ AK AL AM AN AO AN AP AN AQ AR
  AS AT AM AT AU AT AV AW AX AY AZ AY AZ BA BB BC BD BE AB ~ AC BE AB ~@2 AD AE AF AG AH@2 AI@2 ~@4 AA AB ~@2 AD AE AF
  AG AJ AK AL BF
>`.pickRestart({
  A: "f4@5 e4@3 d4@5 c#4@3", B: "c4@5 b3@3 a#3@5 a3@3", C: "g3 ~@2 a3 ~ a#3 ~@2 a3@5 g3@3", D: "c3@5 ~@11",
  E: "g3@3 ~@2 c5@3 c5@3 ~@2 c5@3", F: "g3@3 ~@2 b4@3 b4@3 ~@2 b4@3", G: "c4@3 ~@2 g3@3 c4@3 ~@2 g3@3",
  H: "c4@3 ~@5 g4@3 ~@5", I: "c4@3 ~@5 a#3@8", J: "a3@3 g#3@2 a3@3 d4@5 c4@3", K: "a3 f3", L: "d3 g3", M: "f3@13 f3@3",
  N: "g3@3 a3@2 a#3@3 e4@5 d4@3", O: "c4 f4", P: "e4 d4", Q: "c4@13 ~@3", R: "a#3@3 ~@2 d4@3 d4@3 ~@2 d4@3",
  S: "a3@3 ~@2 c#4@3 c#4@3 ~@2 c#4@3", T: "d3@3 ~@2 d4@3 a#3@3 ~@2 d4@3", U: "a3@3 ~@2 e4@3 e4@3 ~@2 e4@3",
  V: "a#3@3 ~@2 g4@3 g4@3 ~@2 g4@3", W: "c3@3 ~@2 c4@3 c4@3 ~@2 c4@3", X: "e3@3 ~@2 c4@3 c3@3 ~@2 c4@3",
  Y: "c4@3 ~@2 c4@3 c4@5 c4@3", Z: "c4@3 ~@2 c4@3 c4@5 f4@3", AA: "~ d#4", AB: "e4 f4", AC: "~@13 f4@3",
  AD: "f3@3 ~@2 a4@3 f3@3 ~@2 g#4@3", AE: "f3@3 ~@2 a4@3 f3@3 ~@2 a4@3", AF: "a#3@3 ~@2 a#4@3 a#2@3 ~@2 c#4@3",
  AG: "a#2@3 ~@2 d4@3 a#2@3 ~@2 d4@3", AH: "c3@3 ~@2 c4@3 c3@3 ~@2 c4@3", AI: "f3@5 f4@3 f3@5 f4@3",
  AJ: "d#3@3 ~@2 a#3@3 c3@3 ~@2 a#3@3", AK: "f3@3 ~@2 a#3@3 f3@3 ~@2 a3@3", AL: "a#2@3 ~@2 a#3@3 a#3@3 ~@2 a#3@3",
  AM: "a#3@5 a#3 ~@2 a#3 ~@2 a3 ~ g3 ~@2", AN: "f#3", AO: "g3@5 a#3 ~@2 a#3 ~@2 a3 ~ g3 ~@2",
  AP: "g3@5 a#3@3 a#3@3 a3@2 g3@3", AQ: "g3@5 g4@3 d#4@5 d#4@3", AR: "f#4@5 ~@3 d3@5 ~@3",
  AS: "~@5 a#3 ~@2 a#3 ~@2 a3 ~ g3 ~@2", AT: "a3", AU: "a#3@5 d4 ~@2 d4 ~@2 c4 ~ a#3 ~@2", AV: "a#3 f#3",
  AW: "f3@5 ~@3 f3@5 ~@3", AX: "~@5 f3@3 f3@3 f3@2 f3@3", AY: "f#3@5 c#4@3 a#3@5 f#3@3", AZ: "f3@5 c3@3 f3@5 f3@3",
  BA: "a#3@5 a3@3 a#3@5 f#3@3", BB: "f3@4 ~ e3@3 f3@5 d3@3", BC: "c3@4 ~ d3@3 d#3@5 c3@3", BD: "f3 ~", BE: "d4 d#4",
  BF: "a#3@5 ~@3 a#3@5 ~@3",
})).s("gm_french_horn").gain(0.4)

// other · french horn · "Horn in F" · soft notes
const french_horn_soft = note(`<
  ~@4 A@4 B@4 A@4 ~@4 A@4 B@4 A@4 ~@36 C ~@3 C ~@11 D E ~ F C ~@51 D E ~ F C ~@51 D E ~ F C ~@11
>`.pickRestart({
  A: "f3@3 ~@2 a4@3 a4@3 ~@2 a4@3", B: "c4@3 ~@2 a#4@3 a#4@3 ~@2 a#4@3", C: "d4 ~", D: "d4 d#4", E: "e4 f4",
  F: "~@13 f4@3",
})).s("gm_french_horn").gain(0.15)

stack(trumpet, trumpet_2, trumpet_soft, french_horn, french_horn_soft)

More by John Philip Sousa