Strudelify

Theme From 'The Deerhunter' (Cavatina)

The Shadows

KeyE majorTempo87 bpm
0:00/0:00
// Theme From 'The Deerhunter' (Cavatina) — The Shadows
// 87 bpm, 3/4, key E 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 (3/4 at bar 1, 4/4 at bar 35, 3/4 at bar 36) are rendered on a constant 3/4 grid of one bar per cycle
// note: Full arrangement: all 92 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(87/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "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.

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~@14 A@7 B@7 C@4 ~@3 D E F G H I J I J I K L G M N O N P H Q I R N S L E T U M@2 V W H G M I G I W K L E X Y Z I W AA
  ~@5 AB@3 ~
>`.pickRestart({
  A: "[~@15 e1@24 e2@23 c#2@23 ~ f#2@23 b1@24 b2@23 f#2@12]/7",
  B: "[~@12 b1@23 e2@24 e1@23 a1@23 d2@24 e2@23 d#2@16]/7", C: "[~@8 d2@23 c2@24 b1@36 ~@5]/4", D: "a#1", E: "d2",
  F: "g#1", G: "f#1", H: "c#2", I: "b1", J: "b2", K: "e2@5 g#1", L: "a1", M: "b1@23 ~", N: "e2", O: "e1@5 b1",
  P: "d#2@23 ~", Q: "f#2", R: "b2@5 b1", S: "e1@5 g#1", T: "g1@5 b1", U: "c2", V: "e1@11 ~", W: "e1", X: "g1",
  Y: "c2@23 ~", Z: "b1@11 ~", AA: "e2@23 ~", AB: "[~@4 e1@61 ~@7]/3",
})).s("gm_fretless_bass").gain(0.24)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@8 A@7 B@8 C@8 ~ D ~@2 E@2 F G H I J@3 K L M N O@3 P Q R N S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL W AM Y
  AN AO AP AQ@2 AR AS@2 AT@6
>`.pickRestart({
  A: "[~@19 [a2,g#3,c#4]@23 [d2,f#3,c#4]@24 [g2,f#3,b3]@23 [c2,e3,b3]@23 [b1,e3,a3]@23 ~@9 f#3@8 d#3@7 [e2,e3]@9, ~@136 [b1,a3]@23 a3 ~@8]/7", // Amaj7 Dmaj7 Gmaj7 Cmaj7 Esus4 E B7
  B: "[~@15 [e2,e3,g#3]@23 [c#2,g#3,b3,e4]@23 ~ [f#2,b3,e4]@23 [b1,a#3,c#4,f#4]@24 [b1,g#3,b3,d#4]@23 [f#2,e3,a3,c#4]@23 ~@16 b3@8 [e2,d#3,g#3]@13, ~@62 g#3 ~@93 [b1,d#3,a3,c#4]@23 b3@8 ~@5]/8", // E C#m7 Esus2 F# G#m F#m7 Emaj7 B7
  C: "[~@11 [e2,d3,g#3,d4]@23 [a2,e3,c#4]@23 [d2,f#3,a3,c#4]@24 [e2,f#3]@23 c#4 ~@7 f#3 ~@7 f#4@8 [d2,b3]@23 [c2,e3,e4]@23 ~ [b1,f#3,a3,c4]@3 ~@14, ~@34 g#3 ~@46 c#4 ~@22 [d#2,b3]@23 ~ f#4@8 ~@39 e4@17, ~@128 f#3 ~@22 b3 ~@40]/8", // E7 A Dmaj7 Esus2 G C F#dim G#m
  D: "~@2 [b1,f#3,a3,c4,e4]@5 ~@17", E: "[[a#2,f#3,c#4]@3 ~ b3@2, f#4, ~ [f#3,c#4]]/2", F: "[f3,a#3,f4]",
  G: "~@2 d#4, [f#3,a#3,f4]", H: "g3, d#4 ~@2, a#3 ~@23", I: "[g#3,b3], d#4 ~@23",
  J: "[[b2,g#3] b2 [a3,b3,d#4], e4@49 ~@23, ~@24 g#3 ~@23 b2 ~@23]/3", K: "[a3,b3,d#4], b2 ~@23", L: "[e2,g#3,d4]",
  M: "[a2,e3,c#4]", N: "[f#2,c#3,a3,e4]",
  O: "[~@16 d#4@8 b2@24 g#3@17 ~@7, b3@31 ~@5, [b2,a3,e4]@8 e2@13 ~@3, ~@24 e4@35 ~@13, ~@24 a3 ~@23 b2 ~@23]/3", // Esus4
  P: "[e3,b3,g#4]", Q: "[d#3,b3,g#4]", R: "[c#3,a3,e4]", S: "[b2,e3,c#4], a3 ~@23", T: "[b1,b2,f#3,d#4]",
  U: "[e2,g#3,b3,d#4], b2 ~@23", V: "e1@5 g#1, [g#3,d4], b2 ~@23", W: "[a1,c#4], g#3 ~@23", X: "[d2,f#3,c#4,f#4]",
  Y: "[g2,f#3,b3,d4]", Z: "[c2,b3,e4]", AA: "[b1,a3,e4], b3 ~@23", AB: "[b3,e4] ~@7 d#4@16, [b1,a3]",
  AC: "[e2,f#3,e4], a3 ~@23", AD: "[e2,e3,g#3,b3]", AE: "[c#2,g#3,b3,e4]", AF: "[f#2,e4,g#4], b3 ~@23",
  AG: "[b1,a#3,c#4,f#4]", AH: "[b1,b3,d#4,f#4]", AI: "[f#2,a3,c#4,e4]", AJ: "[b1,a3,d#4]", AK: "[e2,b2,g#3,d#4]",
  AL: "[e2,b2,g#3,d4]", AM: "[d2,f#3,c#4]", AN: "[c2,e3,b3,e4]", AO: "[b1,e3,a3], b3 ~@23",
  AP: "f#3@2 d#3, [b1,a3], b3 ~@23", AQ: "[[a3,b3] ~@23 b3 ~@15 e4@8, e3@5 ~, e2 e2, ~@8 g#3@7 ~]/2",
  AR: "[b3,d#4,e4,g#4] ~@2, c#2 ~@5", AS: "[~@3 [e3,a3,b3]@2 ~@3, ~@9 [f#1,f#2]@8 ~@7]/2",
  AT: "[~@21 b3@27 ~ b2@21 c#3@11 ~ [b2,g#3]@59 ~@3, ~@5 a3@78 ~@61, ~@5 b1@44 e2@92 ~@3, ~@5 c#4@17 ~@122, ~@7 e4@136 ~]/6", // E
})).s("gm_string_ensemble_2").gain(0.19)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  A@8 B C@5 D@7 E@7 F@4 G@2 ~ H@8 I@6 J@8 K L M@6 N@8 O@8 P@5 Q@2 R@3 ~
>`.pickRestart({
  A: "[~@183 g#3 ~@3 e2@4 g#3, ~@23 e3@19 b3@8 b3@8 g#4@8 b3@8 a3@8 a4@7 a3@8 a3@8 a4@8 a3@8 a3@7 a4@8 a3@8 a3@8 a4@8 a3@8 g#3@7 g#3@8 ~@9, ~@27 b3@8 g#4@8 ~@3 d#3@21 ~@3 c#3@21 ~@2 f#2@21 ~@3 b2@21 ~@2 b2@21 ~@3 e3@21 ~@7, ~@31 e4@8 e4@8 ~@7 d#4@8 d#4@8 ~@8 e4@7 e4@8 ~@8 e4@8 e4@8 ~@8 e4@7 e4@8 ~@8 d#4@8 d#4@8 ~@8 d#4@7 d#4@8 ~@5]/8",
  B: "~@7 g#3 ~@7 g#3 ~@3 a2@4 g#3, ~@3 d4@8 d4@8 ~@5",
  C: "[~@29 a3, ~@2 c#4@8 c#4@8 d3@21 ~@3 g2@21 ~@2 c3@21 ~@2 b2@21 ~@3 b2@8, ~@6 g#4@8 g#3@8 f#3@8 f#4@8 f#3@7 f#3@8 f#4@8 f#3@8 e3@8 e4@8 e3@7 e3@8 b3@8 e3@8 ~@4, ~@26 c#4@8 c#4@8 ~@7 b3@8 b3@8 ~@8 b3@8 b3@8 ~@7 a3@8 a3@8 ~@8]/5",
  D: "[~@11 a3 ~@152 a3@4, f#3@8 d#3@8 ~@3 b2@21 ~@14 e4@8 ~@8 b3@8 b3@8 ~@8 b3@7 b3@8 ~@8 a#3@8 a#3@8 ~@4 g#3@8 ~@7 g#3@8 e3@8, ~@4 a3@7 ~@4 e2@21 ~@3 e2@21 ~@2 c#3@21 ~@3 f#2@21 ~@2 b2@21 ~@3 b2@21 ~@2 f#2@12, ~@23 e3@8 a3@8 g#3@8 g#3@8 ~@3 f#4@8 ~@8 e4@8 ~@15 e4@8 ~@16 d#4@8 ~@11 b3@8 b3@8 ~@12, ~@27 f#3@8 f#3@8 e3@8 b3@8 ~@7 g#3@8 ~@8 g#3@8 g#3@8 ~@7 g#3@8 f#3@8 ~@8 f#3@8 ~@7 d#4@8 ~@16]/7",
  E: "[~@102 e3@3 ~@59 f#4@4, c#4@8 e3@7 d#3@8 b3@8 d#3@8 d#3@8 b3@8 d#3@8 ~@3 g#3@8 g#3@8 ~@8 g#3@8 g#3@8 ~@3 f#3@8 f#4@8 f#3@8 f#3@8 f#4@7 f#3@8 f#3@8 ~@4, ~@4 a3@8 b2@21 ~@2 e2@21 ~@3 e2@21 ~@2 a2@21 ~@2 d3@21 ~@3 e3@21 ~@2 d#3@16, ~@19 a3@8 a3@8 ~@8 g#3@8 g#3@8 ~@3 d3@8 b3@8 d3@8 e3@8 c#4@8 ~@11 c#4@8 c#4@8 ~@8 c#4@8 c#4@8 ~@7 b3@8]/7",
  F: "[~@51 e3@4 ~@2 e4@33 ~@6, b3@8 d3@19 f#3@8 e3@8 e4@8 ~@45, ~@4 f#3@8 f#3@8 f#4@8 ~@11 b3@8 b3@8 ~ [a3,c4]@34 ~@6, ~@16 b3@7 b3@8 c3@21 ~@3 [b2,f#3]@34 ~@7]/4", // Am B5
  G: "[~@2 [a3,c4,e4]@29 ~@17, b2@29 ~@19, ~ f#3@29 ~@18]/2", // Am
  H: "[~@47 g#3, a#2@21 ~@3 d3@21 ~@3 g#2@21 ~@3 d#3@8 ~@12 f#3@8 d#3@8 d#4@8 g3@8 g#3@8 d#4@8 f#3@8 g#3@8 e4@8 g#3@8 g#3@8 e4@8 ~@4, ~ f#3@2 f#4@2 f#3@2 f#3@2 f#4@2 f#3@2 f3@2 f4@2 f3@2 f#3@2 d#4@2 ~@3 a#3@2 a#3@2 ~@2 b3@2 b3@2 ~@2 b3@2 b3@2 ~@2 b3@2 b3@2, ~@8 c#4@8 c#4@8 ~@8 b3@8 b3@8 ~@8 a#3@8 a#3@8 ~@8 a#3@8 a#3@8 c#3@21 ~@3 b2@21 ~@3 b2@21 ~@3 b2@21 ~@3]/8",
  I: "[~@136 b2 ~@3 a3 ~@3, b2@21 ~@3 b2@21 ~@3 e2@21 ~@3 a2@21 ~@3 f#2@21 ~@3 b2@8 b2@8 ~@8, ~ a3@2 d#4@2 a3@2 a3@2 d#4@2 a3@2 g#3@2 d4@2 g#3@2 e3@2 c#4@2 c#3@2 e3@2 c#4@2 e3@2 ~@5, ~@2 b3@2 b3@2 ~@2 b3@2 b3@2 ~@2 b3@2 b3@2 ~@2 a3@2 a3@2 ~@2 a3@2 a3@2 ~ a3@2 a3@2 ~]/6",
  J: "[~@47 a3, e2@7 ~ e2@7 ~ e3@7 ~ d#3@7 ~ c#3@7 ~ f#2@7 ~ b2@7 ~ b2@7 ~, ~ b2@2 f#3@2 f#3@2 e3@2 b3@2 f#4@2 ~ e4@2 e4@2 ~@2 d#4@2 d#4@2 ~@2 e4@2 e4@2 ~@2 e4@2 e4@2 ~@2 e4@2 e4@2 ~@2 d#4@2 d#4@2, ~@2 e3@2 a3@2 g#3@2 g#3@2 e4@2 ~ b3@2 g#4@2 b3@2 b3@2 g#4@2 b3@2 a3@2 a4@2 a3@2 a3@2 a4@2 a3@2 a3@2 a4@2 a3@2 a3@2 a4@2 ~]/8",
  K: "~@20 g#3 ~@3, e3@7 ~, ~ g#3@2 g#3@2 ~, ~ d#4!2", L: "~@4 g#3 ~@7 g#3 ~@7 g#3 ~@3, e3@7 ~, ~ d4!2",
  M: "[~@4 g#3 ~@135 a3 ~@3, a2@7 ~ d3@7 ~ g2@7 ~ c3@7 ~ b2@7 ~ b2@7 ~, ~@2 c#4@2 c#4@2 ~@2 c#4@2 c#4@2 ~@2 b3@2 b3@2 ~@2 b3@2 b3@2 ~@2 a3@2 a3@2 ~ a3@2 a3@2 ~, ~@3 g#4@2 g#3@2 f#3@2 f#4@2 f#3@2 f#3@2 f#4@2 f#3@2 e3@2 e4@2 e3@2 e3@2 b3@2 e3@2 ~ f#3@2 d#3@2]/6",
  N: "[~@47 d#3, e2@21 ~@3 e2@21 ~@3 c#3@21 ~@3 f#2@21 ~@3 b2@21 ~@3 b2@21 ~@3 f#2@8 ~@16 b2@21 ~@3, ~ b2@2 f#3@2 f#3@2 e3@2 b3@2 f#4@2 ~ b3@2 b3@2 ~@2 b3@2 b3@2 ~@2 a#3@2 a#3@2 ~ g#3@2 d#4@2 g#3@2 e3@2 c#4@2 e3@2 d#3@2 b3@2 ~, ~@2 e3@2 a3@2 g#3@2 g#3@2 e4@2 ~ g#3@2 e4@2 g#3@2 g#3@2 e4@2 g#3@2 f#3@2 d#4@2 f#3@2 ~ b3@2 b3@2 ~@2 a3@2 a3@2 ~@2 a3@2 a3@2]/8",
  O: "[~@188 a3 ~@3, e2@7 ~ e2@7 ~ a2@7 ~ d3@7 ~ g2@7 ~ c3@7 ~ b2@7 ~ b2@7 ~, ~ d#3@2 b3@2 d#3@2 d3@2 b3@2 d3@2 ~ c#4@2 c#4@2 ~@2 c#4@2 c#4@2 ~@2 b3@2 b3@2 ~@2 b3@2 b3@2 ~@2 a3@2 a3@2 ~ a3@2 a3@2 ~, ~@2 g#3@2 g#3@2 ~@2 g#3@2 g#3@2 ~ g#3@2 g#4@2 g#3@2 f#3@2 f#4@2 f#3@2 f#3@2 f#4@2 f#3@2 e3@2 e4@2 e3@2 e3@2 b3@2 e3@2 ~ f#3@2 d#3@2]/8",
  P: "[~@53 e4@34 ~@4 b3@29, e2@21 ~@3 e2@21 ~@3 c#3@29 ~@10 f#2@25 ~@8, ~@4 b2@8 f#3@8 f#3@8 e3@8 b3@8 f#4@7 b3@30 ~@8 e3@25 ~@6, ~@8 e3@8 a3@8 g#3@8 g#3@8 e4@8 ~@2 g#3@27 ~@11 c#3@24 ~@8, ~@90 a3@23 ~@7]/5",
  Q: "[~@9 b3@28 ~@11, ~@5 b2@24 ~@19, ~@7 e3@25 ~@16, ~@8 a3@23 ~@17]/2",
  R: "[~@16 f#3@5 a3@6 f#3@4 ~@7 e4@32 ~@2, ~@3 e2@28 ~@2 e2@37 ~@2, ~@7 b2@26 ~@2 b2@35 ~@2, ~@11 e3@17 ~@8 g#3@33 ~@3]/3",
})).s("gm_acoustic_guitar_nylon").gain(0.3)

stack(bass, string_ensemble_2, acoustic_guitar_nylon)

More by The Shadows