Strudelify

the medallion calls

The Next Generation

KeyG majorTempo100 bpm
0:00/0:00
// the medallion calls — The Next Generation
// 100 bpm, 3/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (3/4 at bar 1, 4/4 at bar 35, 3/4 at bar 37, 4/4 at bar 41) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5981170; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 49 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "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.

// other · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  ~@3 A@2 B@2 C D@2 E@2 F G@2 H@2 I J@2 K L M N O P Q R S T U V S T U W X Y Z AA AB AC AD AE AF AG AH ~ AI
>`.pickRestart({
  A: "[~@15 d4@6 e4@7 f4@10 g4@3 a4@7]/2", B: "[g4@7 f4@6 e4@7 f4@7 g4@6 a4@7 g4@8]/2", C: "~@5 f4@3 ~ g4@3 a4@10 g4@2",
  D: "[~ f4@7 e4@7 f4@6 e4@7 d4@10 e4@3 e4@7]/2",
  E: "[d4@2 d4 d4@3 ~@4 c4@3 a3@3 ~@4 a3@2 a3 a3@3 ~@4 a4@2 ~ f4@3 ~ a4@3 f4@8, ~@16 a4 ~@7]/2",
  F: "~@2 e4@3 f4@7 g4@7 f4@5", G: "[~ g4@7 a4@10 g4@3 a4@7 f4@13 d4@3 ~ e4@3]/2",
  H: "[a4@7 a#4@6 d5@7 d5@7 a#4@10 a#4@3 a4@8]/2", I: "~@2 e4@3 a4@7 f4@10 a3@2", J: "[~ d4@3 ~ c#4@3 d4@40]/2",
  K: "d4", L: "e4", M: "f4", N: "e4@4 d5 e5", O: "f5@3 e5 d5@2", P: "c5 f5 a4", Q: "g4@3 f4 g4@2", R: "a4",
  S: "a4 ~@9 a4 ~", T: "a4 ~@9 g4 ~", U: "a4 ~@11", V: "~@2 a4 ~@3 a4 ~@3 a4 ~", W: "a4 b4 c#5", X: "d4 e4 f4@3 g4",
  Y: "a4 g4 f4", Z: "e4 f4 g4", AA: "a4 g4@2", AB: "f4 g4 f4@2 d4@2", AC: "a3 g3 ~", AD: "a3 ~ a3", AE: "~ d4 ~",
  AF: "e4 ~ a#3", AG: "~ a3 ~", AH: "~@2 a3", AI: "d4 ~@2",
})).s("gm_trumpet").gain(0.54)

// other · trumpet · "B♭ Trumpet"
const trumpet_2 = note(`<
  ~@3 A@2 B@2 C D@2 E@2 F G@2 H@2 I J@2 ~@8 K L M N K L M O P Q R S T U V W X Y Z ~ AA
>`.pickRestart({
  A: "[~@15 f3@6 a3@7 d4@10 e4@3 f4@7]/2", B: "[e4@7 a3@6 g3@7 a3@7 d4@6 f4@7 e4@8]/2",
  C: "~@5 a3@3 ~ c4@3 c4@10 a#3@2", D: "[~ a#3@7 a3@7 a3@6 a3@7 f3@10 g3@3 c4@7]/2",
  E: "[a3@2 a3 a3@3 ~@4 g3@3 f3@3 ~@4 f3@2 f3 f3@3 ~@4 a4@2 ~ d4@3 ~ e4@3 d4@8, ~@16 a4 ~@7]/2",
  F: "~@2 a3@3 d4@7 c4@7 a3@5", G: "[~ c4@7 c4@10 c4@3 f4@7 d4@13 f4@3 ~ a4@3]/2",
  H: "[f4@7 g4@6 a4@7 a#4@7 d4@10 g4@3 f4@8]/2", I: "~@2 g4@3 e4@7 d4@10 a3@2", J: "[~ a3@3 ~ a3@3 a3@40]/2",
  K: "d4 ~@9 d4 ~", L: "d4 ~@9 c4 ~", M: "d4 ~@11", N: "~@2 a3 ~@3 a3 ~@3 a3 ~", O: "c#4@2 e4 b3 e4 c#4",
  P: "d4 e4 d4@3 d4", Q: "d4 e4 c4", R: "c4!3", S: "f4 e4@2", T: "f4 e4 a3@2 g3@2", U: "f3 e3 ~", V: "f3 ~ a3",
  W: "~ g3 ~", X: "a3 ~ f3", Y: "~ f3 ~", Z: "~@2 e4", AA: "a3 ~@2",
})).s("gm_trumpet").gain(0.52)

// other · trumpet · "B♭ Trumpet" · soft notes
const trumpet_soft = note("<~@20 A B A B C@2 A D ~@21>".pickRestart({
  A: "d4", B: "a3", C: "f4", D: "c#4 b3 c#4",
})).s("gm_trumpet").gain(0.26)

// other · trombone
const trombone = note(`<
  ~@4 A B@3 C D E F G H@2 I@2 J K@2 L M N O P Q R S T U V W T U V X Y Z AA AB AC AD AE AF AG AF AH ~ AI
>`.pickRestart({
  A: "~@4 d4@3 a3@2 a3@2 d4@3 d4@3 d4@3 ~ d4@3",
  B: "[g3@3 g3@2 g3@2 g3@3 g3@3 g3@3 ~ g3@3 f3@3 f3@2 f3@2 f3@3 f3@3 f3@3 ~ f3@3 c4@3 c4@2 c4@2 c4@3 c4@3 c4@3 ~ c4@3 f3@3 f3@2 f3@2 f3@3 g3@2]/3",
  C: "~ g3@3 ~ g3@3 e3@3 e3@2 e3@2 e3@3 e3@3 e3@3", D: "~ e3@3 d3@3 d3@2 d3@2 d3@3 d3@3 c4@3 ~ d4@3",
  E: "a3@3 a3@2 a3@2 a3@3 a3@3 a3@3 ~ a3@3 ~@4", F: "~@9 d4@3 ~ e4@3 f4@8", G: "~@2 e4@3 f4@7 g4@7 f4@5",
  H: "[~ g4@7 a4@10 g4@3 f4@7 d4@13 d4@3 ~ e4@3]/2", I: "[f4@7 g4@6 a4@7 a#4@7 d4@10 g4@3 f4@8]/2",
  J: "~@2 g4@3 e4@7 a3@10 a3@2", K: "[~ f3@3 ~ e3@3 d3@40]/2", L: "d3@3 a2 d3@2", M: "e3 a2 e3", N: "f3@3 e3 d3@2",
  O: "e3@2 ~", P: "f3", Q: "f3 f3@2 f3!3", R: "g3 g3@2 g3!3", S: "e4@3 e4 e4@2 e4@2 e4@2 e4@2",
  T: "d4@3 c4 d4@2 e4@2 f4@2 f3@2", U: "d4@3 f4 e4@2 c4@2 d4@2 a3@2", V: "d4@3 c4 d4@2 e4@2 f4@2 g4@2",
  W: "a4 ~ e4 ~ c4 ~", X: "a3 b3 c#4", Y: "d4 e4 f4@3 g4", Z: "a4 g4 f4", AA: "e4 f4 g4", AB: "a4 g4@2",
  AC: "f4 g4 a4@2 g4@2", AD: "d4 c#4 ~", AE: "d4 ~ d4", AF: "~ d4 ~", AG: "e4 ~ d4", AH: "~@2 c#4", AI: "d4 ~@2",
})).s("gm_trombone").gain(0.29)

// other · trombone
const trombone_2 = note("<~@4 A B@5 C@5 D@3 E@2 ~@8 F G H I F G H J K L M L N O P Q R S T U ~>".pickRestart({
  A: "~ d3@5", B: "[g2 f2 c3 f2 a2 d3]/5", C: "[d3@2 d3 d3@2 ~@15 a2@2 a2 a2@2 ~@15 d3@20 c3@20 f2@20 a#2@20]/5",
  D: "[a3@3 d3@3 ~ a#3@3 e3@3 c4@3 ~ f3@3 d3@3 d3@2 d3@2 d3@3 d3@3 d3@3 ~ d3@3 d3@3 d3@2 d3@2 d3@3 d3@3 d3@3 ~ d3@3 a2@3 a2@2 a2@2 a2@3 a2@2]/3",
  E: "[~ a2@3 ~ a2@3 f2@40]/2", F: "a3 ~@9 a3 ~", G: "a3 ~@9 g3 ~", H: "a3 ~@11", I: "~@2 a3 ~@3 a3 ~@3 a3 ~",
  J: "c#3@2 e3 b2 e3 c#3", K: "d3@2 e3@2 d3@2 d3!2 f3@2 f3@2", L: "f3!4 c3@2 c3!2 e3@2 e3@2",
  M: "e3!4 d3@2 d3!2 f3@2 f3@2", N: "e3!4 f3@4 d3@4", O: "a2 g2 d3", P: "~ f2 ~", Q: "e2 ~ c#3", R: "~ a#2 ~",
  S: "a2 ~@2", T: "~ a2 ~", U: "~@2 d3",
})).s("gm_trombone").gain(0.24)

// other · trombone · soft notes
const trombone_soft = note("<~@20 A B C B C D A B ~@21>".pickRestart({
  A: "d3", B: "e3", C: "f3", D: "c3",
})).s("gm_trombone").gain(0.16)

// other · trombone · "Bass Trombone"
const trombone_3 = note("<~@4 A B@5 C@3 D E F@5 ~@5 G H I J K L M J K L N O P Q P R S T U V U W ~ X>".pickRestart({
  A: "~ a3@5", B: "[g3@2 c3@2 g3@2 c3 d3 e3@2 a3@2]/5",
  C: "[a3@20 d3@20 d4@3 d4@2 d4@2 d4@3 d4@3 d4@3 ~ d4@3 c4@3 c4@2 c4@2 c4@3 c4@2]/3",
  D: "~ c4@3 ~ c4@3 c4@3 c4@2 c4@2 c4@3 c4@3 c4@3", E: "~ c4@3 a#3@3 a#3@2 a#3@2 a#3@3 a#3@3 a#3@3 ~ a3@3",
  F: "[d3@2 ~ f3@3 ~@2 a#3@2 g3@3 f3@2 c4@2 a3@3 d4@20 f3@20 a3@20 d4@40, ~@2 a3@2 ~@3 e3@2 ~@111]/5", G: "c4", H: "d4",
  I: "c#4 b3 c#4", J: "a3 ~@9 a3 ~", K: "a3 ~@9 g3 ~", L: "a3 ~@11", M: "~@2 a3 ~@3 a3 ~@3 a3 ~", N: "a3 ~ a3 ~ a3 ~",
  O: "a3@2 ~@2 d3@3 a3 f4@2 a3@2", P: "f4@2 d3@2 c3@3 g3 e4@2 g3@2", Q: "e4@2 c3@2 d3@3 a3 f4@2 a3@2",
  R: "e4 c3 f3@2 g3@2", S: "a3!2 ~", T: "d4 ~ d4", U: "~ d4 ~", V: "e4 ~ d4", W: "~@2 a3", X: "f3 ~@2",
})).s("gm_trombone").gain(0.4)

// bass · tuba
const bass = note("<A@3 B C D@5 E@3 F G H@3 I@2 ~@5 J K L M N O P M N O Q R@5 S T U V W X ~ Y>".pickRestart({
  A: "[d3@3 d3@2 d3@2 d3@3 d3@3 d3@3 ~ d3@3 d3@3 d3@2 d3@2 d3@3 d3@3 d3@3 ~ d3@3 d3@3 d3@2 d3@2 d3@3 d3@3 d3@3 ~ d3@3 d3@3 d3@2 d3@2 d3@3 d3@2]/3",
  B: "~ d3@3 ~ d3@3 d3@3 d3@2 d3@2 d3@3 d3@3 d3@3", C: "~ d3@3 f3@20", D: "[c3 a2 e3 a2 c3 f3]/5",
  E: "[d3@20 a2@20 d3@3 d3@2 d3@2 d3@3 d3@3 d3@3 ~ d3@3 c3@3 c3@2 c3@2 c3@3 c3@2]/3",
  F: "~ c3@3 ~ c3@3 f3@3 f3@2 f3@2 f3@3 f3@3 f3@3", G: "~ f3@3 a#2@3 a#2@2 a#2@2 a#2@3 a#2@3 a#2@3 ~ a2@3",
  H: "[d3@20 g2@3 g2@2 g2@2 g2@3 g2@3 g2@3 ~ g2@3 a2@3 a2@2 a2@2 a2@3 a2@3 a2@3 ~ a2@3 f3@3 f3@2 f3@2 f3@3 f3@2]/3",
  I: "[~ f3@3 ~ e3@3 a2@40]/2", J: "a3", K: "a#3", L: "e3@3 e3 e3@2 e3@2 e3@2 e3@2", M: "d3 ~@9 f3 ~", N: "d3 ~@9 c3 ~",
  O: "d3 ~@11", P: "~@2 a2 ~@3 a2 ~@3 a2 ~", Q: "~ a2 ~ a2 ~ a2", R: "[~ a2 d3@6 c3@6 d3@6 c3@6 c3@2 g3@2]/5",
  S: "f3 e3 ~", T: "a3 ~ a3", U: "~ g3 ~", V: "a3 ~ a#3", W: "~ a3 ~", X: "~@2 g3", Y: "d3 ~@2",
})).s("gm_tuba").gain(0.4)

stack(trumpet, trumpet_2, trumpet_soft, trombone, trombone_2, trombone_soft, trombone_3, bass)