Strudelify

Caro Ortolano

Giorgio

KeyF majorTempo180 bpm
0:00/0:00
// Caro Ortolano — Giorgio
// 180 bpm, 2/2, key F 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 (2/2 at bar 1, 3/4 at bar 48) are rendered on a constant 2/2 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/4710801; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 78 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(180/4)

// 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 · trombone · "Sopraan"
const trombone = note(`<
  A B C D A B E D F G H I J G K I A L M I A L M I A B C D A B E D F G H I J G K I A L M I A L M I N O@2 P@5 Q@3 R S@5 T
  U V@3 W@5 X Y@2
>`.pickRestart({
  A: "a4@2 a4 g4", B: "gb4@4 gb4@2 gb4 g4", C: "a4 f4 bb4 a4", D: "gb4!2", E: "a4!2 g4!2", F: "g4@2 a4 g4",
  G: "g4@2 g4!2", H: "a4 g4 a4 g4", I: "g4!2", J: "g4@3 g4 a4 g4 a4 g4", K: "a4 g4 a4 g4 a4@2 g4@2",
  L: "gb4@4 gb4@2 g4 a4", M: "bb4 g4!2 gb4", N: "a4@5 a4@3", O: "[g4@3 ~ gb4@9 gb4@7 gb4@2 ~ a4@7 a4@2, ~@11 g4 ~@4]/2",
  P: "[~ g4@7 g4@3 gb4@10 gb4@10 a4@9 a4@7 g4@3 gb4@10 gb4@7 ~ g4@2 a4@6 a4@3 ~, ~@67 gb4@2 ~@11]/5",
  Q: "[g4@6 e4@3 gb4@10 gb4@10 g4@7 g4@3 a4@6 g4@3]/3", R: "~ g4@10 g4@5",
  S: "[~ g4@3 a4@7 g4@3 a4@7 g4@3 g4@10 g4@10 g4@6 g4@3 a4@5 g4@2 a4@2 g4 g4@10 g4@7]/5",
  T: "g4@3 a4@5 ~ a4@5 g4@2, ~@4 g4 ~@3", U: "a4@5 g4@2 g4@9", V: "[g4@10 a4@10 a4@7 g4@3 gb4@10 gb4@6 a4@2]/3",
  W: "[~ g4@7 g4@3 gb4@7 gb4@3 g4@10 g4@10 a4@10 a4@6 g4@3 gb4@10 gb4@3 gb4@2 g4@2 ~ gb4@2, ~@77 a4@2 ~]/5",
  X: "g4@7 g4@3 gb4@6", Y: "[gb4@3 ~ g4@9 g4@10 ~@9]/2",
})).s("gm_trombone").gain(0.19).pan(0.6)

// other · bassoon · "Tenor"
const bassoon = note(`<
  A B C D E B F D G H I J K H L J A M N O P M N Q A B C D E B F D G H I J K H L J A M N O P M N Q R S@2 T@5 U@3 V W@5 X
  Y Z@3 AA@5 AB AC@2
>`.pickRestart({
  A: "c4@2 c4 bb3", B: "a3@2 a3!2", C: "a3 bb3 c4@2 bb3@2 c4@2", D: "a3!2", E: "a3@2 f3 g3",
  F: "a3 bb3 c4@2 bb3@2 g3@2", G: "c4@2 c4 b3", H: "c4@2 c4!2", I: "c4!3 b3", J: "c4!2", K: "c4@3 c4!4 b3",
  L: "c4!4 c4@2 b3@2", M: "a3@2 d4 c4", N: "bb3 c4 a3!2", O: "g3 b3 b3@2", P: "c4@2 c4@2 c4!2 bb3 g3", Q: "g3!2",
  R: "c4@5 c4@3", S: "[g3@3 ~ a3@9 a3@7 a3@3 a3@7 c4@2]/2",
  T: "[~ bb3@7 g3@3 a3@10 a3@10 a3@9 c4@7 bb3@3 a3@10 a3@10 a3@6 c4@3 ~]/5",
  U: "[b3@6 c4@3 a3@10 a3@10 c4@7 c4@3 c4@6 b3@3]/3", V: "~ c4@10 c4@5",
  W: "[~ c4@3 c4@7 c4@3 c4@7 b3@3 c4@10 c4@10 c4@6 c4@3 c4@5 c4@2 c4@2 ~ c4@10 c4@7, ~@31 b3 ~@8]/5",
  X: "c4@3 c4@5 c4 c4@5 c4@2", Y: "c4@5 b3@2 c4@9", Z: "[c4@10 c4@10 c4@7 bb3@3 a3@10 a3@6 a3@2]/3",
  AA: "[~ b3@7 c4@3 a3@7 a3@3 b3@10 b3@10 c4@10 c4@3 ~ d4@2 bb3@2 ~ a3@10 a3@7 a3@3, ~@54 c4@2 ~@3 c4@2 ~@19]/5",
  AB: "b3@7 c4@3 a3@6", AC: "[a3@3 ~ g3@9 g3@10 ~@9]/2",
})).s("gm_bassoon").gain(0.27).pan(0.6)

// other · trumpet · "Bas"
const trumpet = note(`<
  A B C D E B F D G H I J K H L J A M N O P M N O A B C D E B F D G H I J K H L J A M N O P M N O Q R@2 S@5 T@3 U V@5 W
  X Y@3 Z@5 AA AB@2
>`.pickRestart({
  A: "f3@2 f3 g3", B: "d3@4 d3@2 d3 e3", C: "f3!2 g3 a3", D: "d3!2", E: "f3@2 f3 eb3", F: "f3!2 g3 eb3",
  G: "c3@2 f3 g3", H: "c3@2 c3!2", I: "f3 c3 f3 g3", J: "c3!2", K: "c3@3 c3 f3 c3 f3 g3", L: "f3 c3 f3 c3 f3@2 g3@2",
  M: "d3@4 d3@2 e3 f3", N: "g3 c3 d3!2", O: "g2!2", P: "f3@2 f3 g3 a3 f3 g3 e3", Q: "f3@5 f3@3",
  R: "[eb3@3 ~ d3@9 d3@7 d3@2 ~ f3@7 f3@2, ~@11 e3 ~@4]/2",
  S: "[~ g3@7 eb3@3 d3@10 d3@10 f3@9 f3@7 g3@3 d3@10 d3@7 ~ e3@2 f3@6 f3@3 ~, ~@67 d3@2 ~@11]/5",
  T: "[g3@6 a3@3 d3@10 d3@10 c3@7 c3@3 f3@6 g3@3]/3", U: "~ c3@10 c3@5",
  V: "[~ c3@3 f3@7 c3@3 f3@7 g3@3 c3@10 c3@10 c3@6 c3@3 f3@5 c3@2 f3@2 ~ c3@10 c3@7, ~@31 g3 ~@8]/5",
  W: "c3@3 f3@5 ~ f3@5 c3@2, ~@4 c3 ~@3", X: "f3@5 g3@2 c3@9",
  Y: "[c3@10 f3@10 f3@7 g3@3 d3@10 d3@5 ~ gb3@2, ~@45 e3@2 ~]/3",
  Z: "[~ g3@7 c3@3 d3@7 d3@3 g2@10 g2@10 f3@10 f3@3 ~ d3@2 eb3@2 ~ d3@10 d3@3 d3@2 e3@2 ~ d3@2, ~@54 f3@2 ~@3 c3@2 ~@16 gb3@2 ~]/5",
  AA: "g3@7 c3@3 d3@6", AB: "[d3@3 ~ g2@9 g2@10 ~@9]/2",
})).s("gm_trumpet").gain(0.37).pan(0.4)

stack(trombone, bassoon, trumpet)