Strudelify
KeyA majorTempo80 bpm
0:00/0:00
// one day more — Andrew Custodia and Alex Chiriboga
// 80 bpm, 4/4, key A 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 37, 4/4 at bar 38) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5955366; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 41 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/4)

// 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
const trombone = note("<A B C D A B C D E@2 F@2 G H I J K L M N O P@2 Q R S T U V@4 W X@8>".pickRestart({
  A: "a3 g#3", B: "f#3 e3", C: "d3 c#3", D: "b2 e3", E: "e4", F: "d4", G: "~@4 e4@3 f4 g4@3 e4 c4@3 a#3", H: "g#3 ~",
  I: "~@4 e4@3 f4 g4 e4 c4@4 a#3@2", J: "a3 f4@3 ~@4", K: "~@4 d4@2 d#4@2 f4@3 d4 a#3@3 g#3", L: "f#3 d#3",
  M: "~@4 d4@3 f4 a#4@3 a#4 f4@3 a#4", N: "g4 ~@3", O: "f3@3 ~ g3@3 g3", P: "g#3",
  Q: "~@3 c#4 c#4@3 c#4 c#4@3 c4 c#4@3 d#4", R: "f4", S: "~ c#4!5 d#4 f4", T: "f#4@4 g#4 f4 d#4 g#4",
  U: "f4@6 f4@2 f4@3 d#4 f4@2 f#4@2", V: "g#4/4", W: "~ f4!3 f4@3 d#4", X: "[d#4@12 c#4@101 ~@15]/8",
})).s("gm_trombone").gain(0.4)

// other · trombone
const trombone_2 = note("<A B C D E F G H I J K L M N O P Q R S T@2 U@2 V W X Y Z AA@4 ~@2 AB@2 AC@5>".pickRestart({
  A: "e3", B: "a3", C: "d3", D: "b2@4 ~@2 a3 g#3", E: "e3@4 ~@5 e3 a3 g#3!2 f#3!2 e3", F: "f#3 e3 c#3@6 ~@8",
  G: "d3@8 ~@7 f#3", H: "c#4 b3!2 a3!2 f#3!2 e3 c#4 b3!2 g#3!2 e3 e3@2", I: "~@3 a3 a3@3 a3 a3@3 g#3 a3@3 b3", J: "c#4",
  K: "~@4 a3!2 ~ a3 a3@2 a3@2 b3@2 c#4@2", L: "f#3@2 a3@10 a3 b3 c#4 d4", M: "e3!2 g3!2",
  N: "~@4 f4@3 g4 g#4@3 g4 f4@3 g#4", O: "g4@2 c4!2", P: "a2@4 a3@2 g3@2 f3@3 g3 a3@3 c4", Q: "[d3,a#3]!2 [d3,f3]!2",
  R: "~@4 d#4@2 d#4@2 d#4@3 d#4!2 a#3@3", S: "d4 ~", T: "d#4 d#4@2 d#4@2 d#4@2 d#4", U: "d#4", V: "f4@4 f4@3 f4",
  W: "a#3 f4@3 f#4 f4 d#4 f4", X: "c#4!2", Y: "a#3 c4 c#4 d#4 f4@2 d#4@2", Z: "f4 d#4 c#4@6 c4@8",
  AA: "[~@4 c#4@3 d#4 f4@56]/4", AB: "[~ g#3@8 ~@3 a3@11 a#3@8 ~]/2", AC: "[~ c#4@11 c#4@8 ~@3 g#3@43 ~@14]/5",
})).s("gm_trombone").gain(0.4)

// other · trombone
const trombone_3 = note("<~@5 A B C D@2 E F G H G I J K L M@2 N@2 O P Q R O S@2 T@2 ~@2 U@2 V@5>".pickRestart({
  A: "~@9 c#3 f#3 e3!2 d3!2 c#3", B: "d3 c#3 a2@4 ~@10", C: "d3 b3", D: "a3", E: "d4", F: "~@12 a3 b3 c#4 d4",
  G: "c3 e3", H: "f3@12 ~@2 g#3 a#3", I: "~@4 f3@2 f3@2 f3@3 f3 f3@3 f3", J: "f4!2 a#3!2", K: "f#4@7 f4 d#4@4 a#3@4",
  L: "a#3!2 d4!2", M: "d#3 d#3@2 d#3@2 d#3@2 d#3", N: "d#3", O: "c#4 c4", P: "a#3 g#3", Q: "f#3 f3", R: "d#3 g#3",
  S: "[~ [a#2,a#3]@7]/2", T: "[g#2,g#3]/2", U: "[~ c#3@8 ~@3 e3@11 c#3@8 ~]/2", V: "[~ e3@11 c#3@8 ~@3 c#3@43 ~@14]/5",
})).s("gm_trombone").gain(0.4)

// other · trombone · soft notes
const trombone_soft = note("<c#4!2 a3 [d3 e3] e3 ~@36>").s("gm_trombone").gain(0.15)

stack(trombone, trombone_2, trombone_3, trombone_soft)