Strudelify

Save a Prayer

Duran Duran

KeyD majorTempo113 bpm
0:00/0:00
// Save a Prayer — Duran Duran
// 113 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 2 "Organ" named as an organ, played on drawbar organ (its piano patch is not one); ch 6 "BASS" named as a bass, played on electric bass finger (its piano patch is not one)
// note: duplicate parts dropped: ch 3 "Supplimental Backround" piano (copy of ch 1 "Backround Keyboards" piano, 0.167 beats late)
// note: Full arrangement: all 158 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(113/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.

// chords · piano · "Backround Keyboards"
const piano = note(`<
  A@26 B@2 C D B@2 C D A@24 B@2 C D B@2 C D ~@8 A@24 B@2 C D B@2 C D ~@16 A@18 E@4 F E@6 G H F E@4
>`.pickRestart({
  A: "d5 e5 f5 a5 c6 a5 c6 a5, ~@2 d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~", B: "d6 c#6 b5 a5 b5 a5 d6 f#6",
  C: "d6 c#6 b5 a5 b5 c#6 d6 f#6", D: "d6 c#6 b5 a5 d6 c#6 b5 a5",
  E: "d6 e6 f6 a6 c7 a6 c7 a6, ~@2 d6 ~ d6 ~ d6 ~ d6 ~ d6 ~ d6 ~ d6 ~",
  F: "[d6,f6] e6!2 f6 c7 a6 c7 a6, ~@2 d6 ~ d6 ~ d6 ~ d6 ~ d6 ~ d6 ~ d6 ~", // Dm
  G: "[d6,f6] e6!2 f6 a6!4, ~@2 d6 ~ d6 ~ d6 ~ d6 ~ d6 ~ d6 ~ d6 ~", // Dm
  H: "[d6,f6] e6!3 a6!4, ~@2 d6 ~ d6 ~ d6 ~ d6 ~ d6 ~ d6 ~ d6 ~", // Dm
})).s("gm_piano").gain(0.51)

// other · drawbar organ · "Organ"
const drawbar_organ = note(`<
  ~@2 A B C D A B C D ~@8 A B C D A B C D ~@8 A B C D A B C D A B C D A B C D E F G H E F G H ~@8 I J K L I J M N ~@4 E
  F O H A B C D A B C D E F G H E F G H ~@8 I J K L I J M N I J K L I J M N P@8 ~@20 Q R Q R Q R Q R
>`.pickRestart({
  A: "d5@6 d6 g5, ~@12 c#6 ~@3", B: "a5@6 d6 g5, ~@12 c#6 ~@3", C: "a5@5 d6 g5@2", D: "d5@7 c5",
  E: "d6@6 d7 g6, ~@12 c#7 ~@3", F: "a6@6 d7 g6, ~@12 c#7 ~@3", G: "a6@5 d7 g6@2", H: "d6@7 c6",
  I: "a5@3 a5!2 g5@2 f#5", J: "d5@3 d5 a5 g5@2 f#5", K: "d5@3 e5", L: "c#5", M: "d5@3 e6", N: "c#6",
  O: "a6@5 d7 g6@2, ~@10 c#7 ~@5", P: "d6/8", Q: "d5", R: "a5",
})).s("gm_drawbar_organ").gain(0.51)

// other · electric bass finger · "BASS"
const electric_bass_finger = note(`<
  ~@2 A B C D A B E F A B C D A B E G H I J K H I J K L M N O L M N O A B C D A B E F A B C D A B E G H I J K H I J K L
  M N O P M N Q R S T U R S T U V W X Y V W Z AA V W X Y V W X Y V W X Y V W X Y AB AC AD O AB AC AD Q R S T U R S T U R
  S T U R S T U AE AF AG AH AE AF AG AH AE AF AG AH AE AF AG AI AE AF AE AJ AE AF AG AI AK AL AM AI AN@8
>`.pickRestart({
  A: "d4@3 a4@2 g4@2 f#4", B: "f4@3 f4@2 c4@2 b3", C: "a#3@3 a#3@2 f4@2 f#4", D: "g4@3 g4 f4@3 f4",
  E: "a#3@3 a#3@2 a3@2 a3", F: "g3@5 c4@2 c#4", G: "g3@5 ~@5 c4@4 c#4@2", H: "d4@3 f#4@2 g4@2 a4",
  I: "f4@3 a4@2 c5@2 c#5", J: "a#3@3 a#3@2 a#3 a3@2", K: "g3@3 g3@2 c#4@2 c#4", L: "b3@5 b3@2 c#4", M: "d4@5 d4@2 d4",
  N: "g4@5 g4@2 g4", O: "f#4@3 f#4 a4@3 a4", P: "b3@5 b3@2 c4", Q: "f#4@3 f#4 a3@3 a4", R: "b4@3 b4@2 b4@2 b4",
  S: "d5@3 d5@2 d5@2 d5", T: "g5@3 g5@2 g5@2 g5", U: "f#5@3 f#5 a4@3 a4", V: "d5@3 d5@2 d5@3", W: "f5@3 f5@2 f5@3",
  X: "a#4@3 a#4@2 a#4@2 a4", Y: "g4@3 g4 c#5@3 c#5", Z: "a#4@3 a#4@2 a#4 a4@2", AA: "g5@3 g5 f5@3 c#5",
  AB: "b3@3 b3 b3@4", AC: "d4@3 d4 d4@4", AD: "g4@3 g4 g4@4", AE: "d5", AF: "c5", AG: "a#4", AH: "a4", AI: "a4 c5",
  AJ: "c5@7 c5", AK: "d5@3 d5@5", AL: "c5@3 c5@5", AM: "a#4@3 a#4@5", AN: "[d5@3 d5 d5@60]/8",
})).s("gm_lead_8_bass_lead").gain(0.51)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A@24 ~@8 A@24 ~@8 B@56 C@2 D C@3 A@2 C@3 A C A C A C@3 A C A C A C@4 D@8
>`.pickRestart({
  A: "x ~@2 x ~ x ~ x", B: "x!2", C: "x ~@2 x ~@3 x", D: "x ~@5 x!2 ~@6 x ~",
})).gain(0.51)

// drums · rim
const rim = s("rim").struct("<~@2 [~ x ~ x]!32 [~ x!2 ~]!24 [~ x ~ x]!8 [~ x!2 ~]!56 ~@36>").gain(0.51)

// drums · snare
const snare = s("sd").struct("<~@9 A ~@7 B ~@7 A ~@15 C ~@15 C ~@8 D@56 E@36>".pickRestart({
  A: "~@8 x ~@3 x!4", B: "~@4 x ~ x!2", C: "~@12 x!4", D: "~ x ~ x", E: "~ x",
})).gain(0.51)

// drums · hihat
const hihat = s("hh").struct("<~@2 [x!5 ~ x ~]!120 [~ x!3 ~ x!3]!36>").gain(0.51)

// drums · mid tom
const mid_tom = s("mt").struct("<~@26 A B@3 A B@3 ~@24 A B@3 A B@3 ~@92>".pickRestart({
  A: "~@5 x ~@2", B: "x ~@4 x ~@2",
})).gain(0.51)

// drums · open hat
const open_hat = s("oh").struct("<~@34 [~@5 x ~@2]!24 ~@8 [~@5 x ~@2]!56 ~@36>").gain(0.51)

stack(piano, drawbar_organ, electric_bass_finger, kick, rim, snare, hihat, mid_tom, open_hat)

More by Duran Duran