Strudelify

avengers endgame - portals

Alan Silvestri

KeyB♭ majorTempo71 bpm
0:00/0:00
// avengers endgame - portals — Alan Silvestri
// 71 bpm, 2/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: Transcription provider: pdmx. https://musescore.com/score/5889712; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 111 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(71/2)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · "B♭ Trumpet 2"
const trombone = note(`<
  A@8 ~@6 B C D@2 E@2 F@2 G@2 H I@4 J K L M N O C P Q R S O P T Q U@2 V@2 W@3 X@2 Y@2 Z AA@5 ~ AB AC AD AE@2 AF@2 AG
  AH@4 AI@5 AJ@6 AK@3 AL AM AN@8 AO@4 AP@2 AQ@5 AR@2
>`.pickRestart({
  A: "g3/8", B: "g3 f3", C: "eb3", D: "f3/2", E: "d3/2", F: "[g3@3 ~]/2", G: "d4", H: "eb4", I: "[c4@7 eb3]/4",
  J: "gb3!2", K: "eb3 [b2,eb3]", L: "e3 eb3", M: "ab3", N: "ab2@3 d3", O: "d3", P: "a3", Q: "bb3", R: "g3",
  S: "a3@4 a3@3 a3", T: "c4", U: "[d4@3 d4]/2", V: "[gb4@5 f4@5 gb4@5 gb4@5 e3@4]/2",
  W: "[~@2 eb3@10 ab3@20 ab3@15 ab3@5 ab3@20]/3", X: "[ab3@15 ab3@5 a3@20 ab3@8]/2",
  Y: "[~ ab3@5 g3@5 e3@5 e3@5 ~@3]/2", Z: "~@5 e3@19", AA: "[~ g3@15 g3@5 c4@20 a3@20 g3@20 a3@20 b2@3 ~@16]/5",
  AB: "~@10 g3@3 ~@11", AC: "~@13 g3@3 ~@8", AD: "~@5 g3 ~@2", AE: "[~@18 e3@13 gb3@13 ~ e3@3]/2",
  AF: "[e3@3 g3@3 ~ e3@3 e3@3 g3@3 ~ g3@3 e3@3 e3@3 ~ g3@3 g3@3 e3@3 eb3@3 ~ g3@3 g3@3 eb3@2]/2",
  AG: "~@2 e3@3 g3@3 g3@3 ~ e3@3 e3@3 g3@3 ~ g3@2", AH: "[~ e3@3 c3@3 ~ c3@10 c3@3 d3@37 e3@33 g3@5]/4",
  AI: "[~@2 g3@10 b3@3 e3@27 e3@13 gb3@13 b2@33 b2@7 b2@10 b2@2]/5",
  AJ: "[~ e3@13 ~ e3@13 e3@13 eb3@13 ~ b2@33 b2@7 b2@10 b2@3 e3@27 e3@9]/6",
  AK: "[~@4 d3@13 ~@4 c2@9 c2@3 ~ d2@10 d3@3 e3@10 e3@3 gb3@10 ~@2]/3", AL: "~@2 c4@10 c4@3 d4@9", AM: "~ d3@23",
  AN: "[~ d3@4 d3@7 ~@3 g3@19 g3@9 g3@9 ~ d3@23 d3@5 d3@7 ~@3 c3@14 g3@5 gb3@19 bb3@9 c4@19 eb4@5 g4@4 bb3@9 ~ c4@9 bb3@7]/8",
  AO: "[~@3 d3@5 d3@4 d4@9 ~ bb2@4 bb2@5 f3@24 f3@5 f3@7 ~@2 bb3@19 f3@8]/4",
  AP: "[~ f3@5 eb3@5 f3@24 f3@4 f3@7 ~@2]/2", AQ: "[~ f3@9 f3@5 ab3@5 f3@57 f3@23 f3@5 f3@7 c3@2 bb3@6]/5",
  AR: "[~ ab3@7 ~ f3@24 ~@15]/2",
})).s("gm_trombone").gain(0.2)

// other · trombone
const trombone_2 = note(`<
  A@8 ~@6 B C D E F G H@2 I E J K@3 L M N O P Q R S T G U V F T E U W@2 X@2 Y@3 Z@2 AA@3 AB@5 ~ AC AD AE AF@2 ~@2 AG
  AH@4 AI@5 AJ@2 AK@7 AL AM AN@8 AO@4 AP@2 AQ@5 AR@2
>`.pickRestart({
  A: "d3/8", B: "d3!2", C: "bb2", D: "c3", E: "a3", F: "d3", G: "f3", H: "[d3@3 ~]/2", I: "bb3", J: "c4",
  K: "[g3@5 ~]/3", L: "g3 eb3", M: "b3 bb3", N: "ab3 gb3", O: "e3 eb3", P: "db3", Q: "e2@3 ab2", R: "a2", S: "b2",
  T: "gb3", U: "g3", V: "gb3@4 a3@3 a3", W: "[bb3@3 bb3]/2", X: "[db4@5 f3@5 bb2@5 bb2@5 b3@4]/2",
  Y: "[~@2 gb3@10 eb3@20 eb3@15 eb3@5 f3@20]/3", Z: "[eb3@15 eb3@5 e3@20 eb3@8]/2",
  AA: "[~@2 eb3@10 b3@10 e3@10 c4@20 ~ db3@19]/3", AB: "[~ b2@15 g3@5 f3@20 gb3@20 e3@20 d3@20 g2@3 ~@16]/5",
  AC: "~@10 c3@3 ~@11", AD: "~@13 b2@3 ~@8", AE: "~@5 c3 ~@2", AF: "[~@18 c3@13 d3@13 ~ b2@3]/2", AG: "~@2 c3@3 ~@19",
  AH: "[~@4 c3@3 ~ c3@10 c3@3 d3@37 b2@33 b2@5]/4", AI: "[~@2 b2@10 b3@3 db3@27 c3@13 d3@13 g2@33 g2@7 g2@10 b2@2]/5",
  AJ: "[~ a3@13 ~ a3@13 b2@13 b3@7]/2",
  AK: "[b3@7 g2@33 g2@7 g2@10 b2@3 db3@27 c3@13 a2@13 d2@3 ~ e2@9 e2@3 ~ gb2@10 ~@3 c3@10 c3@3 d3@10 ~@2]/7",
  AL: "~@2 c4@10 c4@3 d4@9", AM: "~ bb2@23",
  AN: "[~ bb2@4 bb2@7 ~@3 e3@19 eb3@9 d3@9 ~ bb2@23 bb2@5 bb2@7 ~@3 g2@14 e3@5 c3@19 g3@9 a3@19 eb4@5 d4@4 g3@9 ~ g3@9 g3@7]/8",
  AO: "[~@3 bb2@5 bb2@4 bb3@9 ~ g2@4 g2@5 db3@24 db3@5 db3@7 ~@2 gb3@19 db3@8]/4",
  AP: "[~ c3@5 eb3@5 db3@24 db3@4 db3@7 ~@2]/2", AQ: "[~ db3@9 f3@5 ab2@5 db3@57 db3@23 db3@5 db3@7 c3@2 gb3@6]/5",
  AR: "[~ eb3@7 ~ d3@24 ~@15]/2",
})).s("gm_trombone").gain(0.2)

// bass · trombone · "Bass Trombone"
const bass = note(`<
  A@8 ~@6 B C D@2 E@2 C F G ~ H G I@3 J K L M N O P Q@2 R S Q@2 R T U@2 V@2 W@3 X@5 Y@5 Z@3 AA@5 AB@8 AC@4 AD AE@6 AF
  AG@4 AH@3 AI@2 AJ@2 AK@2 AL@2 AM@2 AN AO@2 AP@2
>`.pickRestart({
  A: "bb2/8", B: "g2 f2", C: "eb2", D: "f2/2", E: "d2/2", F: "eb2 eb2@3", G: "g3", H: "ab3", I: "[c3 c3@11]/3",
  J: "b2 bb2", K: "ab2 gb2", L: "e2 eb2", M: "db2", N: "db3@3 d3", O: "d2", P: "b1", Q: "d3", R: "e3",
  S: "a2@4 a3@3 a3", T: "eb3", U: "[g3@3 g3]/2", V: "[gb3@5 f3@5 eb3@5 db3@5 b2@4]/2",
  W: "[~@2 bb2@10 b2@20 b2@15 b2@5 db3@20]/3", X: "[bb2@15 bb2@5 a2@20 ab3@20 e3@20 c3@20 ~ a2@19]/5",
  Y: "[~ e2@20 c3@20 d3@20 b2@20 a2@20 e3@6 e3@7 e3@6]/5",
  Z: "[~ e3@6 e3@7 e3@7 e3@6 gb3@7 e3@7 e3@6 e3@7 e3@7 e3@6 e3@5]/3",
  AA: "[~@2 e3@7 e3@6 e3@7 e3@7 e3@6 e3@7 g2@13 a2@13 ~ e3@6 e3@7 e3@7 e3@6 e3@7 e3@6 e3@7 gb3@5]/5",
  AB: "[~@2 e3@6 e3@7 e3@7 e3@6 g2@3 ~ g2@10 g2@3 a2@37 e3@6 e3@13 ~ e3@6 c3@27 a2@27 g2@13 a2@13 e3@4]/8",
  AC: "[~@3 e3@13 e3@7 c3@26 a2@13 ~ a2@13 b2@13 b2@7]/4", AD: "b2@7 e3@6 e3@11",
  AE: "[~@3 e3@6 c3@27 a2@27 g2@13 a2@13 c3@3 ~ c3@9 d3@3 ~ d3@10 c3@3 c3@10 d3@3 d3@10 c3@2]/6",
  AF: "~@2 c3@10 d3@3 d3@9", AG: "[~ g2@9 ~ g2@9 g2@19 c3@19 bb2@9 g2@9 ~ g2@9 g2@9 ~]/4",
  AH: "[g2@19 c3@14 c3@5 d3@9 d3@5 d3@5 eb3@9 f3@6]/3", AI: "[~@3 f3@5 f3@5 g3@5 g3@4 g3@9 ~ g3@9 g3@7]/2",
  AJ: "[~@3 g3@9 g3@9 ~ eb3@4 eb3@5 bb3@9 ~ bb3@7]/2", AK: "[~@2 bb3@9 ~ bb3@9 bb3@9 ~ bb3@9 bb3@8]/2",
  AL: "[~ bb3@5 bb3@5 bb3@9 bb3@9 ~ bb3@9 bb3@9]/2", AM: "[~ bb3@9 ab3@5 eb3@5 bb3@9 bb3@5 bb3@5 bb3@9]/2",
  AN: "bb3@5 bb3@5 bb3@9 bb3@5", AO: "[bb3@5 bb3@9 bb3@9 bb3@9 ~ bb3@9 gb3@6]/2", AP: "[~ ab3@7 ~ bb2@24 ~@15]/2",
})).s("gm_trombone").gain(0.2)

stack(trombone, trombone_2, bass)

More by Alan Silvestri