Strudelify

Londonderry Air

Preston Ware Orem

KeyB♭ majorTempo56 bpm
0:00/0:00
// Londonderry Air — Preston Ware Orem
// 56 bpm, 4/4, key Bb 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/8 at bar 1, 4/4 at bar 2, 3/8 at bar 15, 4/4 at bar 16) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5941498; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 18 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(56/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 · trombone
const trombone = note("<A B C D E F G H I J@4 K@2 L@3>".pickRestart({
  A: "~@5 f3 g3 a3", B: "bb3 f3 bb3 a3 bb3@4", C: "g3@3 ~@3 g3@2", D: "~ f3 bb3@2 bb3@2 g3 f3", E: "bb3@5 f3 g3 a3",
  F: "bb3 f3 bb3 a3 ab3@4", G: "g3@2 eb3 d3 eb3 gb3 g3 bb3", H: "bb3@4 a3@2 g3 a3", I: "d3 eb3 f3 eb3 d3 eb3 a3 bb3",
  J: "[bb3@11 bb3@4 bb3@7 eb3@7 ~ bb3@7 bb3@4 c4@4 bb3@4 g3@3 ab3@4 bb3@4 c4@11 bb3@4 bb3@7 bb3@4 ab3@4 ab3@3 ab3@7 ~ ab3@4 f3@3 f3@4 g3@4 ab3@3 eb4@9]/4",
  K: "[~@3 db4@3 db4@4 c4@4 ab3@7 bb3@7 ~ c3@22 ~@13]/2",
  L: "[~@3 eb3@5 ~ ab3@5 eb3@11 c4@10 ab3@11 bb3@5 c4@5 ~ d4@5 c4@5 bb3@21 ~@8]/3",
})).s("gm_trombone").gain(0.25)

// other · trombone
const trombone_2 = note("<~ A B C D A E F G H@5 I J@3>".pickRestart({
  A: "bb3@4 f3 eb3 d3 f3", B: "eb3@2 c3 bb2 c3 ~ bb3@2", C: "bb3@3 bb3 bb3@4", D: "eb3@4 f3 ~@3",
  E: "eb3@2 bb2 a2 bb2 eb3@3", F: "~ f3 gb3 g3 f3 eb3 d3 eb3", G: "f3 g3 a3 g3 f3 eb3!2 ab3",
  H: "[g3@11 g3@4 eb3@7 bb2@7 ~ eb3@19 d3@3 eb3@4 ab3@4 g3@11 g3@4 eb3@7 eb3@4 eb3@4 eb3@3 eb3@7 ~ eb3@4 d3@3 f3@4 g3@4 ab3@3 bb3@7 ~ db4@7 eb3@4 ab3@7 ~ c4@3 eb3@4 d3@4 c4@3]/5",
  I: "~ bb3@3 a3@15 ~@13", J: "[~@9 ab3@5 g3@5 eb3@5 ~ f3@10 f3@11 g3@5 ab3@5 ~ bb3@5 ab3@5 g3@21 ~@8]/3",
})).s("gm_trombone").gain(0.25)

// bass · trombone · "Bass Trombone"
const bass = note("<~ A B C D E F G H I@3 J@6>".pickRestart({
  A: "bb2 bb3", B: "eb3@5 ~ eb3@2", C: "d3@3 eb3 d3@2 g3@2", D: "g2@2 gb2@2 f2 ~@3", E: "bb1 bb2", F: "eb2@3 eb2",
  G: "f3 f2", H: "bb2@5 g2 gb2 f2",
  I: "[eb2@4 g2@3 bb2@4 g2@4 bb2@4 ab2@3 g2@4 eb2@4 g2@7 g2@4 ab2@4 g2@7 ab2@4 f2@4 c2@3 g2@4 c3@7 ~ ab2@7 g2@4 c3@4 b2@6]/3",
  J: "[~ b1@7 ~ bb1@3 ab2@4 g2@4 f2@3 eb2@4 g2@4 bb2@7 eb2@15 g2@7 ~ c3@7 f2@15 ~@6 b2@10 bb2@21 ~ ab2@10 bb2@11 eb2@43 ~@7]/6",
})).s("gm_trombone").gain(0.25)

stack(trombone, trombone_2, bass)