Strudelify

Lucas Pope

Lucas Pope

KeyF majorTempo186 bpm
0:00/0:00
// Lucas Pope — Lucas Pope
// 186 bpm, 12/8, key F 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, 12/8 at bar 30) are rendered on a constant 12/8 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5924871; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 66 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(186/6)

// 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.

// chords · french horn · "Horn"
const french_horn = note(`<
  ~@9 A B C D E F G H I J K L M N O P Q R@3 ~@17 S T U V W X Y Z S T U V W X Y Z AA@2 ~@2
>`.pickRestart({
  A: "~@14 c3@3 ~@7", B: "eb3@2 ~ c3@3 ~@8 eb3@2 ~ c3@3 ~@4", C: "~@3 eb3@2 ~@2 b2@3 ~@2 b2@3 ~@2 eb3@2 ~@2 c3@3",
  D: "~@7 eb3@2 ~ c3@3 ~@8 eb3@2 ~", E: "c3@3 ~@8 eb3@2 ~ f3@3 ~@2 f3@3 ~@2",
  F: "ab3@2 ~@2 c3@3 ~@7 eb3@2 ~@2 c3@3 ~@3", G: "~@4 eb3@2 ~ c3@3 ~@8 eb3@2 ~ b2@3",
  H: "~@2 b2@3 ~@2 eb3@2 ~@2 f3@3 ~@2 f3@3 ~@2 f3@2 ~", I: "~ eb3@13 bb2@3 ~@3 bb2@3 ~", J: "~ bb2@2 ~ b2@14 ~@6",
  K: "~ [g3,bb3,d4]@2 ~@12 [g3,bb3,d4]@2 ~@7", L: "~@4 [g3,bb3,d4]@2 ~@5 [gb3,a3,d4]@3 ~@2 [gb3,a3,d4]@3 ~@5",
  M: "~@4 [g3,bb3,d4] ~@6 [g3,bb3,d4]", N: "~@12 [g3,bb3,d4]@2 ~@4 [g3,c4,eb4]@3 ~@3",
  O: "[g3,c4,eb4]@3 ~@12 [g3,bb3,d4]@2 ~@7", P: "~@5 [g3,bb3,d4]@2 ~@12 [g3,bb3,d4]@2 ~@3",
  Q: "~@2 [gb3,a3,d4]@3 ~@2 [gb3,a3,d4]@3 ~@5 [g3,c4,eb4]@3 ~@2 [g3,c4,eb4]@3 ~", // D Cm
  R: "[~@2 [g3,c4,eb4]@2 ~ [f3,bb3,d4]@25 [f3,a3,d4]@3 ~@2 [f3,a3,d4]@3 ~@2 [f3,a3,d4]@2 ~@2 [gb3,a3,d4]@25 ~@3]/3", // Cm Bb Dm D
  S: "[d3,f3,a3]", T: "a2", U: "e3", V: "db3", W: "g3", X: "eb3", Y: "f3", Z: "bb3", AA: "[d3,f3,a3]/2",
})).s("gm_french_horn").gain(0.52)

// other · trombone
const trombone = note(`<
  ~@9 A B C D E F G H I J K L M N O P Q R@3 ~@17 S T U V W X Y Z S T U V W X Y Z AA@2 ~@2
>`.pickRestart({
  A: "~@14 c3@3 ~@7", B: "eb3@2 ~ c3@3 ~@8 eb3@2 ~ c3@3 ~@4", C: "~@3 eb3@2 ~@2 b2@3 ~@2 b2@3 ~@2 eb3@2 ~@2 c3@3",
  D: "~@7 eb3@2 ~ c3@3 ~@8 eb3@2 ~", E: "c3@3 ~@8 eb3@2 ~ f3@3 ~@2 f3@3 ~@2",
  F: "ab3@2 ~@2 c3@3 ~@7 eb3@2 ~@2 c3@3 ~@3", G: "~@4 eb3@2 ~ c3@3 ~@8 eb3@2 ~ b2@3",
  H: "~@2 b2@3 ~@2 eb3@2 ~@2 f3@3 ~@2 f3@3 ~@2 f3@2 ~", I: "~ eb3@13 bb2@3 ~@3 bb2@3 ~", J: "~ bb2@2 ~ b2@14 g2@3 ~@3",
  K: "~@4 bb2@2 ~@2 g2@3 ~@7 bb2@2 ~@2 g2@2", L: "~@8 bb2@2 ~ gb2@3 ~@2 gb2@3 ~@3 bb2@2",
  M: "~ g2@3 ~@7 bb2@2 ~@2 g2@3 ~@6", N: "~ bb2@2 ~@2 g2@3 ~@7 bb2@2 ~ c3@3 ~@3",
  O: "c3@3 ~@2 eb3@2 ~ g2@3 ~@8 bb2@2 ~ g2@2", P: "~@8 bb2@2 ~@2 g2@3 ~@7 bb2@2",
  Q: "~@2 gb2@3 ~@2 gb2@3 ~@2 bb2@2 ~ c3@3 ~@2 c3@3 ~",
  R: "[~@2 c3@2 ~ bb2@25 f2@3 ~@2 f2@3 ~@2 f2@2 ~@2 gb2@24 g2@3 ~]/3", S: "d3", T: "a2", U: "e3", V: "db3", W: "g3",
  X: "eb3", Y: "[f2,f3]", Z: "[bb2,bb3]", AA: "[f2,a2,d3]/2",
})).s("gm_trombone").gain(0.26)

// other · tuba
const tuba = note("<~@18 A B C D E F G H I@3 ~@23 J K ~@6 J K L@2 ~@2>".pickRestart({
  A: "~@6 g2 ~", B: "~@4 bb2@2 ~@2 g2@3 ~@7 bb2@2 ~@2 g2@2", C: "~@8 bb2@2 ~ gb2@3 ~@2 gb2@3 ~@3 bb2@2",
  D: "~ g2@3 ~@7 bb2@2 ~@2 g2@3 ~@6", E: "~ bb2@2 ~@2 g2@3 ~@7 bb2@2 ~ c3@3 ~@3",
  F: "c3@3 ~@2 eb3@2 ~ g2@3 ~@8 bb2@2 ~ g2@2", G: "~@8 bb2@2 ~@2 g2@3 ~@7 bb2@2",
  H: "~@2 gb2@3 ~@2 gb2@3 ~@2 bb2@2 ~ c3@3 ~@2 c3@3 ~",
  I: "[~@2 c3@2 ~ bb2@25 f2@3 ~@2 f2@3 ~@2 f2@2 ~@2 gb2@24 g2@3 ~]/3", J: "f2", K: "bb2", L: "d2/2",
})).s("gm_tuba").gain(0.45)

// chords · violin · "Violin and Viola"
const violin = note(`<
  A B C@2 D B E F@2 G H I J K L M N O P Q R S T U V W X@3 ~@9 Y@2 Z@2 AA@2 AB@2 Y ~@7 Y@2 Z@2 AA@2 AB@2 ~@4
>`.pickRestart({
  A: "~@8 [g3,bb3,d4] ~@3", B: "~@3 [g3,bb3,d4] ~@6 [g3,bb3,d4] ~",
  C: "[~@2 [gb3,a3,d4]@3 ~@3 [gb3,a3,d4]@3 ~@12 [g3,bb3,d4]@2 ~@12 [g3,bb3,d4]@2 ~@9]/2", // D Gm
  D: "~@3 [g3,bb3,d4]@2 ~@5 [g3,c4,eb4]@3 ~@2 [g3,c4,eb4]@3 ~@6", // Gm Cm
  E: "~@10 [g3,bb3,d4]@2 ~@5 [gb3,a3,d4]@3 ~@2 [gb3,a3,d4]@2", // Gm D
  F: "[~@6 [g3,c4,eb4]@3 ~@3 [g3,c4,eb4]@3 ~@2 [g3,c4,eb4]@2 ~ [f3,bb3,d4]@14 [f3,a3,d4]@3 ~@2 [f3,a3,d4]@3 ~@2 [f3,a3,d4]@2 ~@2]/2", // Cm Bb Dm
  G: "[gb3,a3,d4]@7 ~@3 [c4,eb4,g4] ~", H: "~@5 [c4,eb4,g4] ~@6",
  I: "[c4,eb4,g4]@2 ~@5 [b3,d4,g4]@3 ~@2 [b3,d4,g4]@3 ~@9", J: "~@4 [c4,eb4,g4]@2 ~@11 [c4,eb4,g4]@2 ~@5",
  K: "~@7 [c4,eb4,g4]@2 ~@5 [c4,f4,ab4]@3 ~@2 [c4,f4,ab4]@3 ~@2", L: "~@11 [c4,eb4,g4]@2 ~@11",
  M: "[c4,eb4,g4]@2 ~@12 [c4,eb4,g4]@2 ~@5 [b3,d4,g4]@3", // Cm G
  N: "~@2 [b3,d4,g4]@3 ~@6 [c4,f4,ab4]@3 ~@2 [c4,f4,ab4]@3 ~@2 [c4,f4,ab4]@2 ~", // G Fm
  O: "~ [bb3,eb4,g4]@13 [bb3,d4,g4]@3 ~@3 [bb3,d4,g4]@3 ~", P: "~ [bb3,d4,g4]@2 ~ [b3,d4,g4]@14 ~@6",
  Q: "~ [g3,bb3,d4]@2 ~@12 [g3,bb3,d4]@2 ~@7", R: "~@4 [g3,bb3,d4]@2 ~@5 [gb3,a3,d4]@3 ~@2 [gb3,a3,d4]@3 ~@5",
  S: "~@4 [g3,bb3,d4] ~@6 [g3,bb3,d4]", T: "~@12 [g3,bb3,d4]@2 ~@4 [g3,c4,eb4]@3 ~@3",
  U: "[g3,c4,eb4]@3 ~@12 [g3,bb3,d4]@2 ~@7", V: "~@5 [g3,bb3,d4]@2 ~@12 [g3,bb3,d4]@2 ~@3",
  W: "~@2 [gb3,a3,d4]@3 ~@2 [gb3,a3,d4]@3 ~@5 [g3,c4,eb4]@3 ~@2 [g3,c4,eb4]@3 ~", // D Cm
  X: "[~@2 [g3,c4,eb4]@2 ~ [f3,bb3,d4]@25 [f3,a3,d4]@3 ~@2 [f3,a3,d4]@3 ~@2 [f3,a3,d4]@2 ~@2 [gb3,a3,d4]@25 ~@3]/3", // Cm Bb Dm D
  Y: "[d3,f3,a3] ~@11", Z: "[db3,e3,ab3] ~@11", AA: "[eb3,g3,bb3] ~@11", AB: "[d3,f3,bb3] ~@11",
})).s("gm_violin").gain(0.4)

// bass · contrabass
const bass = note(`<
  A@3 B C@3 D@2 E F G H I J K L M N O P Q R S T U V@3 ~@9 W@2 X@2 Y@2 W@4 X@2 Y@2 W@4 X@2 Y@2 W@2 ~@4
>`.pickRestart({
  A: "[~@9 [g1,g2]@2 ~@8 [bb1,bb2]@2 ~@2 [g1,g2]@2 ~@8 [bb1,bb2]@2 ~@2 [g1,g2]@2 ~@8 [bb1,bb2]@2 ~ [gb1,gb2]@3 ~@3 [gb1,gb2]@3 ~@2 [bb1,bb2]@2 ~ [g1,g2]@2 ~@6]/3", // G Bb G Bb G Bb Gb Bb …
  B: "~@3 [bb1,bb2]@2 ~ [g1,g2]@2 ~@8 [bb1,bb2]@2 ~@2 [g1,g2]@2 ~@2", // Bb G Bb G
  C: "[~@6 [bb1,bb2]@2 ~@2 [c2,c3]@3 ~@2 [c2,c3]@3 ~@2 [eb2,eb3]@2 ~ [g1,g2]@2 ~@9 [bb1,bb2]@2 ~ [g1,g2]@2 ~@8 [bb1,bb2]@2 ~@2 [g1,g2]@2 ~@8 [bb1,bb2]@2 ~@2 [gb1,gb2]@3 ~@2 [gb1,gb2]@2]/3", // Bb C Eb G Bb G Bb G …
  D: "[~@3 [bb1,bb2]@2 ~ [c2,c3]@3 ~@3 [c2,c3]@3 ~@2 [c2,c3]@2 ~ [bb1,bb2]@14 [f1,f2]@3 ~@2 [f1,f2]@3 ~@2 [f1,f2]@2 ~@2]/2", // Bb C Bb F
  E: "[gb1,gb2]@14 [c2,c3]@3 ~@7", F: "[eb2,eb3]@2 ~ [c2,c3]@3 ~@8 [eb2,eb3]@2 ~ [c2,c3]@3 ~@4",
  G: "~@3 [eb2,eb3]@2 ~@2 [b1,b2]@3 ~@2 [b1,b2]@3 ~@2 [eb2,eb3]@2 ~@2 [c2,c3]@3", // Eb B Eb C
  H: "~@7 [eb2,eb3]@2 ~ [c2,c3]@3 ~@8 [eb2,eb3]@2 ~", I: "[c2,c3]@3 ~@8 [eb2,eb3]@2 ~ [f2,f3]@3 ~@2 [f2,f3]@3 ~@2",
  J: "[ab2,ab3]@2 ~@2 [c2,c3]@3 ~@7 [eb2,eb3]@2 ~@2 [c2,c3]@3 ~@3", // Ab C Eb C
  K: "~@4 [eb2,eb3]@2 ~ [c2,c3]@3 ~@8 [eb2,eb3]@2 ~ [b1,b2]@3", // Eb C Eb B
  L: "~@2 [b1,b2]@3 ~@2 [eb2,eb3]@2 ~@2 [f2,f3]@3 ~@2 [f2,f3]@3 ~@2 [f2,f3]@2 ~", // B Eb F
  M: "~ [eb2,eb3]@13 [bb1,bb2]@3 ~@3 [bb1,bb2]@3 ~", N: "~ [bb1,bb2]@2 ~ [b1,b2]@14 [g1,g2]@3 ~@3",
  O: "~@4 [bb1,bb2]@2 ~@2 [g1,g2]@3 ~@7 [bb1,bb2]@2 ~@2 [g1,g2]@2", // Bb G Bb G
  P: "~@8 [bb1,bb2]@2 ~ [gb1,gb2]@3 ~@2 [gb1,gb2]@3 ~@3 [bb1,bb2]@2", // Bb Gb Bb
  Q: "~ [g1,g2]@3 ~@7 [bb1,bb2]@2 ~@2 [g1,g2]@3 ~@6", R: "~ [bb1,bb2]@2 ~@2 [g1,g2]@3 ~@7 [bb1,bb2]@2 ~ [c2,c3]@3 ~@3",
  S: "[c2,c3]@3 ~@2 [eb2,eb3]@2 ~ [g1,g2]@3 ~@8 [bb1,bb2]@2 ~ [g1,g2]@2", // C Eb G Bb G
  T: "~@8 [bb1,bb2]@2 ~@2 [g1,g2]@3 ~@7 [bb1,bb2]@2", // Bb G Bb
  U: "~@2 [gb1,gb2]@3 ~@2 [gb1,gb2]@3 ~@2 [bb1,bb2]@2 ~ [c2,c3]@3 ~@2 [c2,c3]@3 ~", // Gb Bb C
  V: "[~@2 [c2,c3]@2 ~ [bb1,bb2]@25 [f1,f2]@3 ~@2 [f1,f2]@3 ~@2 [f1,f2]@2 ~@2 [gb1,gb2]@24 [g1,g2]@3 ~]/3", // C Bb F Gb G
  W: "[d1,d2] ~@11", X: "[db1,db2] ~@11", Y: "[eb1,eb2] ~@11",
})).s("gm_contrabass").gain(0.4)

// bass · acoustic bass · D Db Eb D
const bass_2 = note("<~@30 [[d1,d2]]!2 [[db1,db2]]!2 [[eb1,eb2]]!2 [[d1,d2]]!2 ~@28>").s("gm_acoustic_bass").gain(0.2)

// other · timpani
const timpani = note("<~@38 A@2 B@2 C@2 A@4 B@2 C@2 A@4 B@2 C@2 A@3 ~@3>".pickRestart({
  A: "d3", B: "db3", C: "eb3",
})).s("gm_timpani").gain(0.3)

// other · timpani · soft notes
const timpani_soft = note("<~@30 d3!2 db3!2 eb3!2 d3!2 ~@28>").s("gm_timpani").gain(0.2)

stack(french_horn, trombone, tuba, violin, bass, bass_2, timpani, timpani_soft)

More by Lucas Pope