Strudelify

Da Vinci's Demons

Bear McCreary

KeyE♭ majorTempo120 bpm
0:00/0:00
// Da Vinci's Demons — Bear McCreary
// 120 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 3/4 at bar 41, 4/4 at bar 76) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 1 "Violin I" named as a string part, played on violin (its marimba patch is not one); ch 4 "Violin II" named as a string part, played on violin (its marimba patch is not one); ch 11 "Violoncello" named as a string part, played on cello (its xylophone patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/1358541; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 105 bars on a 24-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 · [...]/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 · violin · "Violin I"
const violin = note(`<
  ~@12 A B C D E B C F G H I J G H I K L M N O ~@4 P Q P R ~@47 S@2 T U V@2 T W@2 X Y Z AA X AB@2 AC@2
>`.pickRestart({
  A: "ab5", B: "g5 f5@2 eb5", C: "d5 g4@2 d5", D: "eb5 g4@2 bb4", E: "b4", F: "eb5 g4@3",
  G: "eb4 bb4 g5!2 bb4 eb4!2 bb4 g5!2 bb4 eb4", H: "d4 b4 g5!2 b4 d4!2 b4 g5!2 b4 d4",
  I: "eb4 c5 g5!2 c5 eb4!2 c5 g5!2 c5 eb4", J: "eb4 b4 ab5!2 b4 eb4!2 b4 ab5!2 b4 eb4", K: "eb4", L: "d4!2", M: "a3",
  N: "gb4@2 e4 d4", O: "e4", P: "b4 d5 db5 bb4", Q: "b4 d5 eb5 c5", R: "g4 a4 bb4 ~", S: "[~ ab5@4 g5 f5@2]/2",
  T: "eb5 d5 g4@2", U: "d5 eb5 g4@2", V: "[bb4 b4@4 g5 f5@2]/2", W: "[d5@3 eb5@3 g4@9 eb4 bb4 g5!2 bb4 eb4!2 bb4 g5]/2",
  X: "g5 bb4 eb4 d4 b4 g5!2 b4 d4!2 b4 g5", Y: "g5 b4 d4 eb4 c5 g5!2 c5 eb4!2 c5 g5",
  Z: "g5 c5 eb4!2 b4 ab5!2 b4 eb4!2 b4 ab5", AA: "ab5 b4 eb4!2 bb4 g5!2 bb4 eb4!2 bb4 g5",
  AB: "[g5 b4 d4 c4@12 b3@3 d4@3 db4@3]/2", AC: "[bb3 b3@4 ~@3]/2",
})).s("gm_violin").gain(0.4)

// other · violin · "Violin I" · soft notes
const violin_soft = note(`<
  A B A B C D C E F G H I ~@28 J@3 K@3 L@3 M@3 N@3 O@3 P@3 Q@3 J@3 K@3 L@3 R@8 S@3 T U V W ~@17
>`.pickRestart({
  A: "eb4", B: "g4", C: "eb4 g4", D: "d4 g4", E: "eb4 ab4", F: "eb4!4", G: "g4!4", H: "c5!4", I: "ab4!4",
  J: "[d4@2 gb4 g4]/3", K: "[gb4 d4@3]/3", L: "[d4 g4 a4 g4]/3", M: "[gb4 d4 b3@2]/3", N: "[e4 g4 a4 b4]/3",
  O: "[a4 g4 gb4 ~]/3", P: "[c4 b3 d4 g4]/3", Q: "[gb4 e4 d4@2]/3",
  R: "[gb4@3 d4@3 b3@3 eb4@4 g4@4 eb4@4 g4@4 eb4@2 g4@2 d4@2 g4]/8", S: "[~ eb4@2 g4@2 eb4@2 ab4@2 eb4!3]/3",
  T: "eb4 g4!3", U: "g4 c5!3", V: "c5 ab4!3", W: "ab4 ~@3",
})).s("gm_violin").gain(0.2)

// other · viola
const viola = note(`<
  A B A B A B C D A B C D E F G E@2 F G E H I H J ~@4 K L M N ~@4 O P O Q ~@11 R S@2 T U@3 S@2 V W X@2 ~@11 Y Z AA Z AA
  Z AB AC AD Z AB AC AE AF AG AH AI AF AG AH AJ AK AL AM AN AK AO AP AQ@2
>`.pickRestart({
  A: "eb3 bb3 g4!2 bb3 eb3!2 bb3 g4!2 bb3 eb3", B: "d3 b3 g4!2 b3 d3!2 b3 g4!2 b3 d3",
  C: "eb3 c4 g4!2 c4 eb3!2 c4 g4!2 c4 eb3", D: "eb3 b3 ab4!2 b3 eb3!2 b3 ab4!2 b3 eb3", E: "eb3", F: "g3", G: "bb3",
  H: "eb4", I: "g4", J: "ab4", K: "d3 e3 f3 e3", L: "d3", M: "a3@2 b3 g3", N: "a3", O: "g3 db4", P: "g3 a3",
  Q: "e4@2 db4 ~", R: "~@2 e3 g3", S: "[a3@3 g3@3 a3@2]/2", T: "b3 g3 b3 d4", U: "[e4@3 d4@2 b3 a3@3 ~ e3 g3]/3",
  V: "b3 g3 b3 e4", W: "d4@3 b3", X: "[g3 e3 d3@6]/2", Y: "~@3 eb3 bb3 g4!2 bb3 eb3!2 bb3 g4",
  Z: "g4 bb3 eb3 d3 b3 g4!2 b3 d3!2 b3 g4", AA: "g4 b3 d3 eb3 bb3 g4!2 bb3 eb3!2 bb3 g4",
  AB: "g4 b3 d3 eb3 c4 g4!2 c4 eb3!2 c4 g4", AC: "g4 c4 eb3!2 b3 ab4!2 b3 eb3!2 b3 ab4",
  AD: "ab4 b3 eb3!2 bb3 g4!2 bb3 eb3!2 bb3 g4", AE: "ab4 b3 eb3 eb3@3 eb3@3 eb3@3", AF: "eb3 g3!3", AG: "g3 b3!3",
  AH: "b3 eb3!3", AI: "eb3!4", AJ: "eb3 eb4!3", AK: "eb4 g4!3", AL: "g4 eb4!3", AM: "eb4 ab4!3", AN: "ab4 eb4!3",
  AO: "g4 g3!3", AP: "g3 b3 d4 db4", AQ: "[bb3 d4@4 ~@3]/2",
})).s("gm_viola").gain(0.3)

// other · viola · soft notes
const viola_soft = note("<~@24 A B A C ~@12 D@3 E@3 F@3 G@3 ~@12 D@3 E@3 F@3 G@3 ~@29>".pickRestart({
  A: "eb4", B: "g4", C: "ab4", D: "[a3 g3 a3 b3]/3", E: "[a3 b3 g3 gb3]/3", F: "[d3@2 gb3 g3]/3", G: "[a3 b3 g3 ~]/3",
})).s("gm_viola").gain(0.2)

// other · cello · "Violoncello"
const cello = note(`<
  ~@4 A B C D E B C F@2 G B H D G B I A B C D E B C F ~@4 J K J L M N M O ~@39 P Q R S@2 Q R T@3 Q U V@2 Q W@2 Q R S@2 Q
  R X@3
>`.pickRestart({
  A: "g2@3 eb3", B: "d3 g2@2 d3", C: "eb3 f3@2 g3", D: "b2", E: "bb2 g2@2 eb3", F: "ab3", G: "g3 f3@2 eb3",
  H: "eb3 g2@2 bb2", I: "eb3 g2@3", J: "b2 d3 db3 bb2", K: "b2 d3 eb3 c3", L: "g2 a2 bb2@2", M: "b3 d4 db4 bb3",
  N: "b3 d4 eb4 c4", O: "g3 a3 bb3 ~", P: "~ g2@3", Q: "eb3 d3 g2@2", R: "d3 eb3 f3@2", S: "[g3 b2@4 bb2 g2@2]/2",
  T: "[g3 ab3@4 ab3@4 g3 f3@2]/3", U: "d3 eb3 g2@2", V: "[bb2 b2@4 g3 f3@2]/2", W: "[d3 eb3 g2@3 g2@3]/2",
  X: "[g3 ab3@8 ~@3]/3",
})).s("gm_cello").gain(0.3)

// other · cello · "Violoncello" · soft notes
const cello_soft = note(`<
  ~@40 A B@2 C D@2 E F@2 G H@2 I J@2 K L@2 M N@2 C O@2 A B@2 C D@2 E F@2 G P@2 ~@29
>`.pickRestart({
  A: "b2 d3@2 b2", B: "[d3@2 d3 gb3@2 d3 g3@2]/2", C: "gb3 a3@2 g3", D: "[b3@2 g3 b3@2 d3 gb3@2]/2", E: "b2 d3@2 d3",
  F: "[g3@2 d3 gb3@2 g3 b3@2]/2", G: "gb3 a3@2 d3", H: "[g3 g3@3]/2", I: "c3 e3@2 b2", J: "[d3@2 d3 gb3@2 g3 b3@2]/2",
  K: "e3 a3@2 g3", L: "[b3@2 gb3 a3@2 e3 g3@2]/2", M: "e3 a3@2 d3", N: "[g3@2 d3 gb3@2 e3 g3@2]/2", O: "[e3 gb3@3]/2",
  P: "[g3@2 g3@3 ~@3]/2",
})).s("gm_cello").gain(0.2)

stack(violin, violin_soft, viola, viola_soft, cello, cello_soft)

More by Bear McCreary