Strudelify

Medley

John Williams

KeyB♭ majorTempo120 bpm
0:00/0:00
// Medley — John Williams
// 120 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 (4/4 at bar 1, 2/4 at bar 76, 4/4 at bar 76) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/2955051; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 82 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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
const trombone = note(`<
  ~@3 A@6 B@4 C@3 D@3 E@6 F G H@3 I J@3 K L M N O@2 ~ P ~ Q R S@2 T@2 U T U ~ V T V T ~ W X@4 Y Z AA ~@5 AB AC AD AE@4
  AF@4
>`.pickRestart({
  A: "[~@25 bb2@6 f3@12 c3@5 g3@12 g3@3 a3@3 bb3@9 bb3@3 a3@5 f3@6 g3@23 d3@12 d3@12 d3@11 d3@12 eb3@23 a3@10]/6",
  B: "[~@2 a3@12 ~@5 bb2@6 f3@12 c3@6 g3@11 g3@3 a3@3 bb3@9 bb3@3 a3@6 f3@5 g3@23 ~@6 bb3@6 a3@10]/4",
  C: "[~@2 bb3@12 c4@11 a3@12 a3@11 db4@23 ~ g3@8 g3@9 g3@7]/3",
  D: "[~@2 eb3@6 bb3 ~@2 g3@8 eb3@7 bb3 ~ g3@17 ~ d3@8 d3@9 d3@9 eb3@9 ~@15]/3",
  E: "[~@2 g3@17 g4@9 g3@7 g3 ~ g4@9 gb4@6 f4 ~ e4 ~ eb4 ~@2 e4@8 ab3@2 ~@3 db4@8 c4@7 b3 ~ bb3 ~ a3 ~@2 bb3@8 eb3@2 ~@3 gb3@8 eb3@7 g3 ~ bb3@9 g3@6 bb3 ~@2 d4@17 bb3@17 bb3@16]/6",
  F: "~@2 c4@9 ~@21", G: "~@5 bb3@9 ~@18", H: "[~@8 d3@9 ~@8 d3@17 ~ bb3@14 c4@14 g3@4 ~@7 g3@2 g3 g3@4 g3@4 ~@3]/3",
  I: "~@25 e3@5 f3@2", J: "[g3@4 c4@17 d3@5 ~@2 f3@18 ~@4 g3@5 a3@2 b3@3 f4@18 ~@7 c4@4 ~@7, ~@27 e3@2 ~@67]/3",
  K: "c4@2 c4@2 c4 c4@2 c4@4 ~@7 g3@4 ~@6 g3@2 g3@2", L: "g3@4 g3@4 ~@6 f3@4 ~@7 f3@2 f3 f3@2 f3@2",
  M: "f3@4 ~@7 e4@7 d4@5 g3@2 e4@7", N: "d4@5 g3@2 e4@7 d4@5 ~@2 f4@7 e4@4, ~@10 g3 ~@5",
  O: "[~@2 d4@2 c4@14 e3@7 e2@39]/2", P: "e2@4 f2 ~@3", Q: "e2@4 f2 ~@7 e2@4", R: "f2 ~@15", S: "e2@2 f2 ~ e2@2 f2 ~",
  T: "e2 ~ f2 ~ e2 ~ f2 ~ e2 ~ f2 ~ e2 ~ f2 ~", U: "d2@2 e2@2 e2 ~ f2 ~ d2@2 e2@2 e2 ~ f2 ~", V: "d3 ~@3 d3 ~@3",
  W: "b3 ~ bb3@2",
  X: "[d4@2 ~ d4@2 ~ d4@2 ~ d4@2 ~ d4@2 ~ d4@2 ~@2 db4@2 ~ d4@2 ~ eb4@3 ~@3 d4@2 ~ db4@2 ~ d4@3 ~@3 bb3@6 ~ c4@3 ~@3 c4@2 ~ b3@2 ~ c4@6 eb3@6 d3@2 ~@5 g3@2 ~ bb3@3 db4@12 d4@2 ~ d4@2 ~ d4@2 ~ d4@2 ~ d4@2 ~@2 d4@2 ~ db4@2 ~ d4@2 ~ f4@4]/4",
  Y: "~@2 eb4@2 ~ d4@2 ~ eb4@3 ~@3 ab3@6 ~ eb4@6 d4@2 ~ db4@2", Z: "~ d4@2 ~@4 g3@3 ~@3 bb3@12 ~ a3@6", AA: "d3@3 ~@29",
  AB: "~@6 f3@2 ~ gb3@2 ~ ab3@12 ~ db3@6 ~", AC: "~@24 b3@3 c4@3 d4@2", AD: "~ c4@3 b3@2 ~ a3@2 ~ g3@6 ~@16",
  AE: "[~@9 g3@3 a3@3 bb3@6 ~ eb3@6 f3@12 ~@9 e4@4 eb4@4 ~ e4@8 b3@9 a3@9 ~@9 e4@8 b3@9 a3@9 e4@4 eb4@4 ~]/4",
  AF: "[eb4@4 b3@17 ~@5 b3@8 e4@17 ~ eb4@17 e4@35 ~@24]/4",
})).s("gm_trombone").gain(0.4)

// other · trombone
const trombone_2 = note(`<
  A B@4 C@2 D@2 E@4 F@3 G@3 H I@2 J K@2 L@5 M N O P@3 Q R S ~@6 T@2 U@2 V ~ V ~ W ~@3 W X Y@4 Z AA AB@3 AC AD@3 AE@2
  AF@4 AG@4
>`.pickRestart({
  A: "~@11 bb3@5",
  B: "[~@8 bb3 ~@2 bb3 ~@2 bb3@12 ~@5 bb3@6 bb3@12 ~@5 bb3 ~@2 bb3 ~@2 bb3@12 ~@6 bb3@5 bb2@17 ~ bb2@6 bb2@17 bb2@4]/4",
  C: "[~@2 d3@12 d3@11 eb3@23 ~@6 bb3@6 a3@4]/2",
  D: "[~@2 f3@6 gb3@8 d3@3 g3@3 a3@3 bb3@6 bb2@17 bb2@3 d3@3 d3@9 e3]/2",
  E: "[d3 ~ db3@12 bb2@17 bb2@6 bb2@17 bb2@6 d3@12 d3@11 eb3@23 ~@6 bb3@6 a3@6 f3@4]/4",
  F: "[~@2 gb3@6 d3@6 c3@2 d3@3 eb3@6 d3@6 a2@3 d3@3 g3@6 d3@3 a3@2 a3@23 ~ d3@8 g2@9 d3@7]/3",
  G: "[~@2 eb2@9 g2@8 eb2@9 d3@17 ~ d3@8 d3@9 d3@9 eb3@6 bb2 ~ gb2@9 eb2@7]/3", H: "bb2 ~ g2@17 bb2@2 ~@7 bb2@2 ~@2",
  I: "[~@5 bb2@2 ~@7 bb2@2 ~@6 b2@2 ~@7 b2@2 ~@7 bb2@2 ~@6 bb2@2 ~@7 bb2@2 ~@5]/2",
  J: "~@2 bb2@2 ~@7 bb2@2 ~@6 bb2@2 ~@7 f3@2 ~@2", K: "[~@14 a3@17 g3@9 g2@6 g2 ~ g3@9 gb3@7]/2",
  L: "[f3 ~ e3 ~ eb3@2 e3@2 ~@7 ab2@2 ~@2 db3@9 c3@7 b2 ~ bb2 ~ a2 ~ bb2@2 ~@7 eb2@4 gb2@9 eb2@7 bb2 ~ g2@8 eb2@7 bb2 ~ g2@17 ~ bb2@14 g3@14 c4@4 ~@7 c4@2 c4 c4@4 c4@4 ~@3]/5",
  M: "~@4 c4@4 ~@6 c4@2 c4@2 c4@2 c4 c4@4 ~@7", N: "g3@4 ~@7 g3 g3@2 g3@4 g3@4 ~@6 g3@4",
  O: "~@7 g3@2 g3@2 g3 g3@2 g3@4 ~@14",
  P: "[~@14 a3@5 ~@2 c4@7 d4@7 ~ e4@4 ~@3 e3@5 f3@2 g3@3 c4@18 d4@5 e4@2 f4@18, ~@10 b3 ~@37]/3",
  Q: "~@4 g3@5 g3@2 c3@7 g2@5 g2@2 c3@7", R: "g2@5 g2@2 c3@7 g2@5 ~@2 f3@7 e3@4, ~@10 g2 ~@5", S: "~ d3 c3@14",
  T: "e2@2 f2 ~ e2@2 f2 ~", U: "e2 ~ f2 ~ e2 ~ f2 ~ e2 ~ f2 ~ e2 ~ f2 ~", V: "d2 ~@3 d2 ~@3", W: "~ bb3 ~@3 bb3 ~@2",
  X: "g3 ~ eb3@2",
  Y: "[d3@2 ~ d3@2 ~ d3@2 ~ d3@2 ~ d3@2 ~ d3@2 ~@2 db3@2 ~ d3@2 ~ eb3@3 ~@3 d3@2 ~ db3@2 ~ d3@3 ~@3 bb2@6 ~ c3@3 ~@3 c3@2 ~ b2@2 ~ c3@6 eb3@6 d3@2 ~@5 g2@2 ~ bb2@2 ~ db3@12 d3@2 ~ d3@2 ~ d3@2 ~ d3@2 ~ d3@2 ~@2 d3@2 ~ db3@2 ~ d3@2 ~ f3@4]/4",
  Z: "~@2 eb3@2 ~ d3@2 ~ eb3@3 ~@3 ab2@6 ~ eb3@6 d3@2 ~ db3@2", AA: "~ d3@2 ~@4 g2@3 ~@3 bb2@12 ~ a2@6",
  AB: "[d3@3 ~@3 eb3@12 ~ e3@12 d3@12 d3@6 ~ db3@6 d3@12 e3@12 ~ gb3@15]/3", AC: "~@9 d3@12 ~ e3@10",
  AD: "[~@2 f3@12 gb3@6 ~ e3@6 f3@12 g3@12 ~ a3@15 ~@3 f3@2 ~ gb3@2 ~ ab3@3 gb3@3 ~ f3@2 ~ eb3@2 ~ db3@6 ~]/3",
  AE: "[~@24 b3@3 c4@3 d4@12 g3@6 ~@16]/2",
  AF: "[~@9 c3@3 d3@3 ab2@6 ~ ab2@6 f2@12 ~@18 e3@8 b2@9 a2@9 e3@4 eb3@4 ~ e3@8 b2@9 a2@9 e3@4 eb3@4 ~]/4",
  AG: "[eb3@4 e3@17 ~@5 b2@8 b3@17 ~ bb3@17 ab3@35 ~@24]/4",
})).s("gm_trombone").gain(0.3)

// other · trombone · "Tenor Trombone"
const trombone_3 = note(`<
  A B@4 C@2 D@2 E@4 F@6 G@6 H I J@3 K L M N@3 O@2 P ~@8 Q@2 R ~ R ~@13 S@3 T@2 U@3 V@5 W X@3
>`.pickRestart({
  A: "~@11 d3@5",
  B: "[~@8 d3 ~@2 d3 ~@2 d3@12 ~@5 d3@6 d3@12 ~@5 d3 ~@2 d3 ~@2 d3@12 ~@6 d3@5 f3@17 ~ f3@6 g3@17 f3@4]/4",
  C: "[~@2 g3@17 f3@6 c3@23 ~@6 bb3@6 a3@4]/2", D: "[~@2 f3@6 gb3@8 d3@3 g3@3 a3@3 bb3@6 bb2@17 bb2@3 d3@3 d3@9 e3]/2",
  E: "[d3 ~ db3@12 f3@17 f3@6 g3@17 f3@6 g3@17 ~ f3@5 c3@23 ~@6 bb3@6 a3@6 f3@4]/4",
  F: "[~@2 gb3@6 d3@6 c3@2 d3@3 eb3@6 d3@6 a2@3 d3@3 g3@6 d3@3 a3@2 e3@23 ~ d3@17 g2@17 ~ d3@17 d3@17 ~ d4@8 d4@9 d4@9 eb4@6 bb3 ~ gb3@9 eb3@7]/6",
  G: "[bb3 ~ g3@17 g3@9 g2@7 g2@2 g3@9 gb3@6 gb3@2 e3@2 eb3@2 ~ e3@8 ab2@4 ~ db3@8 c3@7 b2@2 bb2@2 a2@2 ~ bb2@8 eb2@4 ~ gb2@8 eb2@7 g2@2 bb2@9 g2@6 bb2 ~@2 d3@17 bb2@17 bb2@16]/6",
  H: "~@2 c3@9 ~@21", I: "~@5 bb2@13 ~@14", J: "[~@8 d3@9 ~@8 d3@17 ~ bb2@14 c3@14 c3@4 ~@7 c3@2 c3 c3@4 c3@4 ~@3]/3",
  K: "~@4 c3@4 ~@6 c3@2 c3@2 c3@2 c3 c3@4 ~@7", L: "c3@4 ~@7 c3 c3@2 c3@4 c3@4 ~@6 f3@4",
  M: "~@7 f3@2 f3@2 f3 f3@2 f3@4 ~@14",
  N: "[~@14 a3@5 ~@2 c4@7 d4@7 ~ e4@4 ~@3 e3@5 f3@2 g3@3 c4@18 d4@5 e4@2 c4@18, ~@10 b3 ~@37]/3",
  O: "[~@4 g3@5 g3@2 c4@12 g3@2 c4@12 g3@2 c4@12 ~@2 f4@7 e4@4, ~@26 g3 ~@5]/2", P: "~ d4 g3@14",
  Q: "e2 ~ f2 ~ e2 ~ f2 ~ e2 ~ f2 ~ e2 ~ f2 ~", R: "d2 ~@3 d2 ~@3",
  S: "[~@6 bb2@6 a2@3 bb2@3 ~ c3@6 bb2@3 a2@3 bb2@3 c3@3 d3@6 bb2@6 ~ a2@6 bb2@6 ~ bb2@2 a2@2 ~ c3@6 d3@2 ~ bb2@2 c3@2 d3@15, ~@62 c3@2 ~@3 bb2@2 ~@7 c3@2 ~@18]/3",
  T: "[~@3 d3@6 bb2@6 a2@3 ~ bb2@3 c3@6 bb2@3 c3@3 db3@3 eb3@3 f3@6 db3@6 ~ c3@6 db3@5]/2",
  U: "[~ eb3@2 ~ c3@2 ~ eb3@6 f3@2 eb3@2 ~ eb3@2 f3@15 ~@28 db3@3 eb3@3 gb3@3 f3@3 eb3@2 ~ db3@2 ~@2 b2@3 ~@11, ~@3 db3@2 ~ db3@2 ~@9 db3@2 ~@77]/3",
  V: "[~@17 e3@3 f3@3 g3@12 c3@6 c4@3 c4@3 ab3@6 ~ c3@6 d3@12 ~@9 e3@4 eb3@4 ~ e3@8 b2@9 a2@9 ~@9 e3@8 b2@9 a2@9 e3@4 eb3@4 ~]/5",
  W: "eb3@4 b2@17 ~@5 b2@6", X: "[~@2 b2@17 ~ bb2@17 b2@35 ~@24]/3",
})).s("gm_trombone").gain(0.3)

// other · trombone · "Tenor Trombone" · soft notes
const trombone_soft = note("<~@52 A B A B A ~ C D E@3 F G H ~@16>".pickRestart({
  A: "e2 ~ f2 ~ e2 ~ f2 ~ e2 ~ f2 ~ e2 ~ f2 ~", B: "d2 ~ e2 ~ e2 ~ f2 ~ d2 ~ e2 ~ e2 ~ f2 ~", C: "e2 ~@3 eb3@4",
  D: "gb3@12 gb3@12 ~ bb3@3 ~@4",
  E: "[~@5 gb3@3 ~@3 d3@6 ~ e3@3 ~@9 g3@6 g3@6 gb3@3 ~@10 ab3@12 gb3@12 gb3@12 ~ c3@3 ~]/3",
  F: "~@8 bb2@3 ~@3 eb3@6 ~ g3@6 ~@5", G: "~@7 gb3@3 ~@3 d3@12 ~ db3@6", H: "a2@3 ~@29",
})).s("gm_trombone").gain(0.2)

stack(trombone, trombone_2, trombone_3, trombone_soft)

More by John Williams