Strudelify

Canzone a 2: Cornetto o violino e trombone

Giulio Belli

KeyG majorTempo120 bpm
0:00/0:00
// Canzone a 2: Cornetto o violino e trombone — Giulio Belli
// 120 bpm, 4/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 (4/4 at bar 1, 6/2 at bar 52, 4/4 at bar 63) are rendered on a constant 4/4 grid of one bar per cycle
// note: duplicate parts dropped: ch 2 "Trombone" trombone (copy of ch 3 "Organ" church organ)
// note: Transcription provider: pdmx. https://musescore.com/score/5602993; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 103 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · church organ · "Organ"
const church_organ = note(`<
  A B C D E F G H I J K L M N O P Q R S T U@2 V W X Y Z AA AB AC AB AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT
  AU AV AW AX@6 AY@3 AZ@7 BA BB@8 BC@8 BD@2 BE@8 BF@3 BG@6
>`.pickRestart({
  A: "d5@2 d5!2", B: "c5@2 b4@2 a4 b4 c5 a4", C: "g3@2 g3!2", D: "f3@2 e3@2 d3 e3 f3 d3", E: "e3@2 c3 d3 e3 f3 g3 e3",
  F: "f3@3 f3 g3@4", G: "c3@2 f3 d3", H: "a3 g3 f#3 g3", I: "d3 g2", J: "g3@2 a3!2", K: "a3@2 a3@2 g3@3 f3",
  L: "e3@2 c3@3 d3 e3 f3", M: "g3 a3 g3@2", N: "c3!2", O: "d3", P: "e3 f3", Q: "d3@4 c3@3 b2", R: "a2", S: "g2 g3 a3@2",
  T: "f3@4 g3 f3 e3 d3", U: "[c3@2 b2@2 a2@6 a2@2 g2@3 d3]/2", V: "e3!2 c3@2", W: "d3 e3 f3 g3 a3@2 f3@2",
  X: "g3 a3 d3@2", Y: "g3 a3 g3 d3", Z: "e3 f3 g3@2", AA: "a3 g3 c3 e3", AB: "f3 g3 a3@2", AC: "g3@2 c3 e3",
  AD: "g3@4 c3@2 f3 d3", AE: "e3 c3 g3 e3", AF: "d3 a3", AG: "g3@3 e3 f3@2 a3@2", AH: "g3@2 e3@2 d3@3 e3",
  AI: "f#3 g3 d3@2", AJ: "g2 g3", AK: "g3@3 f3 e3@2 g3@2", AL: "f3 e3 d3@2", AM: "c3@2 c4@2 c4@3 b3", AN: "a3 c4 g3 a3",
  AO: "e3@4 a3@3 b3", AP: "c4 f3!2 g3 a3@4", AQ: "e3@3 f3 g3 d3!2 e3", AR: "f3@3 g3 a3@4", AS: "e3@3 f3 g3@4",
  AT: "c3@2 d3 c3", AU: "f3 g3 a3 g3", AV: "c3@2 g3@2 a3@2 g3 e3", AW: "f3 d3 a3@2",
  AX: "[d3@2 g3@3 a3 b3@2 b3@4 a3@2 g3@6 c3@3 d3 e3@2 f3@4 d3@2]/6", AY: "[c3@3 f3@2 f3 g3@2]/3",
  AZ: "[g3@6 a3@9 g3@3 f3@6 g3@6 d3@12 g2@16 a2@4 g2@4 a2@8 g2@4 g3@4 g3@4 g3@4 f3@4 e3@4 d3@2 e3@2 f3@2 d3@2 e3@4 c3@2]/7",
  BA: "d3 e3 f3 g3 e3 f3@3",
  BB: "[f3 g3@4 c3@4 f3@2 d3@2 a3@2 g3@2 f#3@2 g3@2 d3@4 g2@4 g3@4 a3@4 a3@2 a3@2 g3@3 f3 e3@2 c3@3 d3 e3 f3 g3@2 a3@2 g3@4 c3@3]/8",
  BC: "[~ c3@4 d3@8 e3@4 f3@4 d3@4 c3@3 b2 a2@8 g2@2 g3@2 a3@4 f3@4 g3 f3 e3 d3 c3@2 b2@2 a2@6 a2]/8",
  BD: "[~ g2@3 d3 e3@4 c3@4 d3 e3 f3]/2",
  BE: "[g3 a3@2 f3@2 g3@2 a3@2 d3@4 g3@2 a3@2 g3@2 d3@2 e3@2 f3@2 g3@4 a3@2 g3@2 c3@2 e3@2 f3@2 g3@2 a3@4 g3@4 ~@2 e3@2 f3@2 g3@2 a3@4 g3@3]/8",
  BF: "[~@3 f3 d3 e3@2 c3@2 g3@2 e3@2 d3@4 a3@4 g3@3]/3",
  BG: "[e3 f3@2 a3@2 g3@2 e3@2 d3@3 e3 f#3@2 g3@2 d3@4 g2@4 c3@6 b2@2 c3@4 g2@8 ~@3]/6",
})).s("gm_church_organ").gain(0.3)

stack(church_organ)