Strudelify
A View To A Kill cover art

1989 · Decade

A View To A Kill

Duran Duran

KeyG♯ minorTempo127 bpm
0:00/0:00
// A View To A Kill — Duran Duran
// 127 bpm, 4/4, key G# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 115 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(127/4)

// 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 · electric bass finger · "bass"
const bass = note(`<
  ~@2 A B C D A B C E F G@2 H F H G F A B A B A B C D A B C E I J K L I J K L M N O P M N O P Q R O P M N O S@2 T@2 ~ F
  G@2 H F H G F A B A B A B C D A B C E I J K L I J K L M N O P M N O P Q R O P M N O P M N M N M N M U@2 ~@4
>`.pickRestart({
  A: "c2 ~ c2@4 d#2 ~ d#2@4 c2@2 d#2@2", B: "b1 ~ b1@4 g1 ~ g1@4 b1@2 g1@2", C: "a#1 ~ a#1@4 g1 ~ g1@4 a#1@2 g1@2",
  D: "f1@2 f1@3 ~ f1@2 g#1@4 a#1@3 ~", E: "f1!2 ~ f1 g#1 ~ a#1 ~", F: "c2 ~ c2 ~@3 c2 ~ c2@2 ~@2 c2 ~ c2 ~",
  G: "c2 ~ c2@2 ~@2 c2 ~ c2@2 ~@2 c2 ~ c2 ~", H: "c2 ~ c2@2 ~@2 c2 ~ c2 ~@3 c2 ~ c2 ~",
  I: "g#1@4 ~@2 g#1@2 c2@2 ~ a#1@3 g#1@2", J: "d#2@4 ~@2 d#2@2 f#2@3 f2@3 d#2@2", K: "b1@4 ~@2 b1@4 ~@4 f#1 b1",
  L: "c#2@3 ~@3 c#2@4 ~@4 f#1 g1", M: "e2@2 ~ e1 f#1 f#2 g1 g2", N: "g#1@2 ~ g#1 b1 b2 c2 c3",
  O: "c#2@4 ~@2 c#2 ~ c#2@4 ~@2 c#2@2", P: "d#2@4 ~@2 d#2 ~ d#2@3 ~ f#1@4", Q: "~ e2 f#2 g2",
  R: "g#1@2 ~ g#1 b1 b2 c2 c3, g2 ~@15", S: "[d#1@4 ~@2 d#1 ~ d#1@3 ~@3 g#1@18]/2", T: "[~@5 c#2 b1 g1@9]/2",
  U: "[g#1@4 ~@2 g#1 ~@3 g#1 ~@3 g#1@14 ~@4]/2",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · brass section · "brass"
const brass_section = note(`<
  ~@2 A B C D A B C E ~@9 F ~ G ~@16 H I J ~ H I J ~@2 I J ~ H I J ~@14 F ~ G ~@16 H I J ~ H I J ~@2 I J ~ H I J ~ K L M
  N O P M Q@2 ~@4
>`.pickRestart({
  A: "[c4,g4,c5,d#5] ~@9 [c4,g4,c5,d#5] ~@3 [c4,g4,c5,d#5] ~", B: "[b3,g4,b4,d5] ~@9 [b3,g4,b4,d5] ~@3 [b3,g4,b4,d5] ~",
  C: "[a#3,g4,a#4,d#5] ~@9 [a#3,g4,a#4,d#5] ~@3 [a#3,g4,a#4,d#5] ~", D: "[f4,a4,c5,f5] ~@3 [f4,a4,c5,f5] ~@11",
  E: "[f4,a4,c5,f5] ~ [f4,a4,c5,f5] ~ [g4,c5,d#5] [a4,c5,f5] [g4,c5,d#5] [a4,c5,f5]", F: "~@4 [g4,b4,d5,g5,d6] ~@11",
  G: "~@4 [g4,b4,d5,g5,d6] ~ [g4,b4,d5,g5,d6] ~@3 [g4,b4,d5,g5,d6]!2 [g4,b4,d5,d6] ~@3, ~@6 g5 ~", // G
  H: "~@2 [e3,e4,b4,e5,g#5]!2 [e3,e4,b4,e5,g#5]@2 ~@10, ~@4 [a2,a3] ~@11", // E A
  I: "~@3 [d#3,d#4,g#4,b4,d#5,g#5,b5] ~ [d#3,d#4,g#4,b4,d#5,g#5,b5] ~@2", J: "~@5 [c#3,c#4,e4,g#4,c#5,e5,g#5,c#6] ~@2",
  K: "~@2 [e4,b4,e5,g#5]!3 e5 ~@10", L: "~@6 [d#4,b4,d#5,g#5] ~@3 [d#4,b4,d#5,g#5] ~@5", M: "~@2 [e4,b4,e5,g#5]!3 ~@11",
  N: "~@6 [d#4,b4,d#5,g#5] ~@3 [b4,d#5,g#5] ~@5, ~@5 d#4 ~@2", O: "~@2 [e4,b4,c5,e5,g#5] [e4,b4,e5,g#5]!2 ~@11",
  P: "~@6 [d#4,b4,d#5,g#5] ~@3 [d#4,b4]@2 ~@4, ~@10 [d#5,g#5] ~@5", // G#m G#5
  Q: "[~@6 [d#4,b4,d#5,g#5] ~@3 [d#4,b4,d#5,g#5] ~@3 [d#4,b4,d#5,g#5]@13 e4 ~@4]/2", // G#m
})).s("gm_brass_section").gain(0.28)

// chords · orchestra hit · "orch hit"
const orchestra_hit = note("<~@2 A B C D A B C E ~@48 F ~@56>".pickRestart({
  A: "[c5,g5,c6,d#6] ~@9 [c5,g5,c6,d#6] ~@3 [c5,g5,c6,d#6] ~", B: "[b4,g5,b5,d6] ~@9 [b4,g5,b5,d6] ~@3 [b4,g5,b5,d6] ~",
  C: "[a#4,g5,a#5,d#6] ~@9 [a#4,g5,a#5,d#6] ~@3 [a#4,g5,a#5,d#6] ~", D: "[f5,a5,c6,f6] ~@3 [f5,a5,c6,f6] ~@11",
  E: "[f4,a4,c5,f5] ~ [f4,a4,c5,f5] ~ [g4,c5,d#5] [a4,c5,f5] [g4,c5,d#5] [a4,c5,f5]", F: "[g5,c#6,g6]@3 ~@13, f#6 ~@15",
})).s("gm_orchestra_hit").gain(0.09).pan(0.8)

// other · brass section · "brass2"
const brass_section_2 = note("<~@18 A ~ A ~@34 B ~ A C ~@7 A ~ A ~@46>".pickRestart({
  A: "~@8 [c3,c4,c5]!2 [c4,c5] [c3,c4,c5]!5", B: "~@2 [c#4,g#5,c#6] ~ [c#4,g#4,c#5,g#5,c#6]@2 ~@10, ~ [g#4,c#5] ~@6",
  C: "[d#5,g5,c6,d#6]@3 ~@13", // Cm
})).s("gm_brass_section").gain(0.16).pan(0.4)

// chords · overdriven guitar · "heavy guit"
const overdriven_guitar = note(`<
  ~@2 A B C D A B C E ~@12 F G H@2 F G H@2 I J K L I M K N ~ O@2 ~@2 P Q R@2 O@2 ~@2 P Q ~@17 F G H@2 F G H@2 I J K L I
  M K N ~ O@2 ~@2 P Q R@2 O@2 ~@2 O@2 ~@2 O@6 S@3 ~@2 T
>`.pickRestart({
  A: "[g2,c3] ~ [g2,c3]@2 ~@12, c2 ~@3", B: "[d2,g2,d3]!2 ~@6", C: "[d#2,a#2,d#3]!2 ~@6", D: "[c2,f2,c3,f3]!2 ~@6",
  E: "[f3,a3,c4,f4] ~ [f3,a3,c4,f4] ~ [g3,c4,d#4] [a3,c4,f4] [g3,c4,d#4] [a3,c4,f4]", // F Cm F Cm F
  F: "[c3,g3,c4]@4 [c3,g3,c4] ~ [g2,c3] ~ [g2,c3] ~ [c3,g3,c4]@2 [c3,g3] ~ [c3,g3,c4]@2, [f3,f4] ~@15", // C5 F
  G: "[d3,g3]@4 [g2,d3] ~ [d2,g2] ~ [d2,g2] ~ d2@2 f2@2 d2@2", // G5
  H: "[[a#2,f3,a#3]@4 [a#2,f3,a#3] ~ [f2,a#2] ~ [f2,a#2] ~ [a#2,f3,a#3]@2 [a#2,f3] ~ [a#2,a#3]@2 [c4,f4]@4 [f3,c4] ~ [c3,c4,d#4] ~ [f3,d#4]@4 [c4,f4]@3 ~, [g3,d4,g4] ~@13 f3@6 ~@4 c3 ~@7]/2", // A#5 A# F5 Cm F7 F5 G5
  I: "[g#2,d#3,g#3]@4 [g#2,d#3,g#3] ~ [d#2,g#2] ~ [d#2,g#2] ~ [g#2,d#3,g#3]@2 [g#2,d#3] ~ [g#2,d#3,g#3]@2", // G#5
  J: "[d#3,a#3]@4 [d#3,a#3] ~ [a#2,d#3] ~@9", // D#5
  K: "[b2,f#3,b3]@4 [b2,f#3,b3] ~ [f#2,b2] ~ [f#2,b2] ~ [b2,f#3,b3]@2 [b2,f#3] ~ [b2,f#3,b3]@2, [d#3,a#3,d#4] ~@15", // B5 D#5
  L: "[c#3,g#3,c#4]@4 [c#3,g#3] ~ [g#2,g#3,b3] ~@9", M: "[d#3,a#3,d#4]@4 [d#3,a#3] ~ [a#2,d#3] ~@9, [g#3,g#4] ~@15",
  N: "[c#3,g#3,c#4]@4 [c#3,g#3] ~ [g#2,g#3,b3] ~ [c#3,b3]@4 [g#3,c#4]@3 ~, ~@8 g#2 ~@7", // C#5 G#m C#7 C#5
  O: "[~@2 g#3@4 d#3 ~ f#3@17 ~@7]/2", P: "~@2 g#3@4 d#3 ~ f#3@8", Q: "f#3@9 ~@7", R: "[~@12 f#2@7 ~@13]/2",
  S: "[~ g#3 f#3 d#3 f#3 d#3 f#3 d#3@7 g#2@10]/3", T: "~@9 g#2@3 ~@4",
})).s("gm_overdriven_guitar").gain(0.09).pan(1)

// chords · electric guitar clean · "clean guit"
const electric_guitar_clean = note("<~@13 A B ~@2 A B ~@42 A B ~@2 A B ~@48>".pickRestart({
  A: "~@8 [d#4,g4,d5] [d#4,g4] ~ [d#4,g4,d5] ~@4", B: "[d#4,g4,d5]@2 ~ [d#4,g4,d5] ~@12",
})).s("gm_electric_guitar_clean").gain(0.17).pan(0)

// chords · string ensemble 2 · "slow string"
const string_ensemble_2 = note(`<
  ~@22 A@3 B C@3 D E@3 F G@2 H I J@2 K L M@2 K N O P K L M@2 K N ~@16 A@3 B C@3 D E@3 F G@2 H I Q R@2 S T U V W X Y V S
  T U V S T U T U T U T Z@2 ~@4
>`.pickRestart({
  A: "[[c4,c5,d#5]@16 [b4,d5]@15 ~ [g4,a#4,d5]@16, g4@31 ~@17, ~ g3@2]/3", B: "[f3,f4,a4,c5]",
  C: "[[c4,c5,d#5]@16 [g3,b4]@15 ~ [g3,a#4]@16, g4@47 ~, ~ d5@2]/3", D: "[f3,f4,a4,c5]@15 ~",
  E: "[[g#4,c5]@16 [a#4,c#5]@16 ~ f#4@15, d#4@17 ~@7, ~@2 [b4,d#5]]/3", F: "[f4,g#4,c#5]",
  G: "[[g#4,c5] [a#4,c#5], d#4, c#5 ~@31]/2", H: "[f#4,b4,d#5]", I: "[g#4,c#5]", J: "[[e3,e4] [d#3,d#4], g#4@31 ~]/2",
  K: "[c#3,c#4,e4]", L: "[d#3,d#4,f#4]", M: "[[e3,e4]@15 ~ [d#3,d#4]@16, g#4]/2", N: "[d#3,d#4,f#4]@13 ~@3",
  O: "~ [e3,e4,g#4]@3", P: "[d#3,d#4,g#4]@15 ~", Q: "[e4,g#4,b4]@15 ~", R: "[[d#4,b4] [c#4,e4], g#4]/2",
  S: "[d#4,f#4,a#4]@15 ~", T: "[e4,g#4,b4]", U: "[d#4,g#4,b4]", V: "[c#4,e4,g#4]", W: "[d#4,f#4,a#4]@7 ~",
  X: "~ [e4,g#4,b4]@3", Y: "[d#4,g#4,b4]@15 ~", Z: "[[d#4,g#4,b4]@27 ~@5]/2",
})).s("gm_string_ensemble_2").gain(0.19).pan(0.6)

// chords · rock organ · "orgAN" · C#5 Cm
const rock_organ = note("<~@55 [~@2 [c#5,g#5,c#6] ~ [c#5,g#5,c#6]@3 ~@9] ~@2 [[g5,c6,d#6]@3 ~@13] ~@56>")
  .s("gm_rock_organ").gain(0.17)

// drums · kick
const kick = s("bd").struct(`<
  A@9 B A@7 C A@11 B A@2 D@2 A@2 D B E@7 F G E@6 H ~ I ~ C A@7 C A@11 B A@2 D@2 A@2 D B E@7 F J E@6 B E@7 K ~@5
>`.pickRestart({
  A: "x ~@4 x ~@2", B: "~@2 x!2 ~@4", C: "~ x!2 ~ x!2 ~ x", D: "x ~@6 x", E: "x ~@2 x!2 ~@3", F: "~@3 x ~@4",
  G: "~ x!2 ~", H: "x ~@2 x ~@3 x", I: "~@7 x", J: "~ x ~@2", K: "x ~@2 x ~@2 x ~",
})).gain(0.52)

// drums · clap
const clap = s("cp").struct("<~@54 [~@8 x!3 ~ x ~ x!2] [~ x!2 ~ x ~@11] ~@59>").gain(0.33)

// drums · snare
const snare = s("sd").struct(`<
  A@9 B A@7 C A@11 B A@2 D@2 A@2 D B A@7 E F A@6 G ~@3 C A@7 C A@11 B A@2 D@2 A@2 D B A@7 E F A@6 B A@7 H F ~@4
>`.pickRestart({
  A: "~ x ~ x", B: "x!2 ~@2 x ~ x ~", C: "x ~@2 x ~@2 x ~", D: "~@2 x ~@2 x ~@2", E: "~ x!2 ~ x ~@3", F: "~@3 x",
  G: "~ x ~@2", H: "~@2 x ~ x!2 ~ x",
})).gain(0.52)

// drums · low tom
const low_tom = s("lt").struct("<~ A ~@43 B ~@7 C ~ C ~@37 B ~@16 D ~@4>".pickRestart({
  A: "~@14 x!2", B: "~@6 x!2", C: "~@3 x", D: "~@11 x ~@4",
})).gain(0.52)

// drums · hihat
const hihat = s("hh").struct(`<
  A B@8 C A B@6 ~ A D B D A B@6 C A B@2 E B@3 C F G@3 F G@2 ~ H G@3 F G@2 I A B@2 ~ A B@6 ~ A D B D A B@6 C A B@2 E B@3
  C F G@3 F G@2 ~ H G@3 F G@2 C F G@6 I ~@5
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "x", D: "x ~ x!2", E: "x ~@3 x ~@3 x ~@4 x ~@2", F: "~ x!4 ~ x!2", G: "x!5 ~ x!2",
  H: "~@4 x!4", I: "x!4 ~@4",
})).gain(0.46)

// drums · mid tom
const mid_tom = s("mt").struct("<~@45 A ~@7 B ~ B ~@37 A ~@16 C ~@4>".pickRestart({
  A: "~@3 x", B: "~@4 x!2 ~@2", C: "~@5 x ~@2",
})).gain(0.52)

// drums · open hat
const open_hat = s("oh").struct(`<
  A@9 B A@4 ~ A@2 C A@3 ~ A@7 B A@2 ~@2 D A ~ B E@7 ~@2 E@6 ~@4 C D A@3 ~ A@2 C A@3 ~ A@7 B A@2 ~@2 D A ~ B E@7 ~@2 E@6
  F E@7 ~@6
>`.pickRestart({
  A: "~@7 x", B: "~ x ~@2 x ~ x ~", C: "x ~@2 x ~@4", D: "x ~@6 x", E: "~@5 x ~@2", F: "x!2 ~@2 x ~ x ~",
})).gain(0.46)

// drums · crash
const crash = s("cr").struct(`<
  A ~@9 A ~@6 B A C ~ D A ~@7 A ~ E@2 ~@2 E ~ A ~@3 A ~@3 F ~@3 A ~@2 G ~ G ~ B A ~@6 B A C ~ D A ~@7 A ~ E@2 ~@2 E ~ A
  ~@3 A ~@3 H ~@3 A ~@3 A ~@6 I ~@5
>`.pickRestart({
  A: "x", B: "~@3 x", C: "~ x ~@2", D: "~@4 x ~ x ~@3 x!2 ~@4", E: "~@5 x ~@2", F: "~ x!3", G: "~@7 x", H: "~ x!2 ~",
  I: "~@4 x ~@2 x",
})).gain(0.46)

stack(
  bass, brass_section, orchestra_hit, brass_section_2, overdriven_guitar, electric_guitar_clean, string_ensemble_2,
  rock_organ, kick, clap, snare, low_tom, hihat, mid_tom, open_hat, crash
)

More by Duran Duran