Strudelify

Notorius

Duran Duran

KeyD minorTempo107 bpm
0:00/0:00
// Notorius — Duran Duran
// 107 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 106 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(107/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@2 A B A C D E F G H I J K D L F M N O N P H I J K Q R Q R Q R Q S T E F U H I J K D L F M N O N P H I J K Q R Q R Q
  R Q S T E F U T E F U Q R Q R Q R Q S Q R Q R Q R Q S D E F G H I J K D L F M D L F M D E F V
>`.pickRestart({
  A: "[d4,f4,a4]@2 ~@3 [d4,f4,b4] ~@3 [d4,f4,c5]@2 ~@13", B: "[d4,f4,c5]@2 ~@3 [d4,f4,b4] ~@3 [d4,f4,a4]@2 ~@13",
  C: "[d4,f4,c5]@2 ~@3 [d4,f4,b4] ~@3 [d4,f4,a4] ~@2 [d4,f4,b4]@2 a4 [d4,f4,a4] ~@2 [d4,f4,b4] ~@2 [d4,f4,a4] ~@2", // Dm7 Bdim Dm Bdim Dm Bdim Dm
  D: "[d4,f4,a4]@2 ~ a4 ~ [d4,f4,b4] ~@3 [d4,f4,c5] ~@5 [d4,f4,c5]@2 [d4,f4,c5] [d4,f4,c5]@2 [d4,f4,c5] [d4,f4,a4] ~ a4", // Dm Bdim Dm7 Dm
  E: "[d4,f4,c5]@2 ~ a4 ~ [d4,f4,b4] ~@3 [d4,f4,a4]@2 ~@4 [d4,f4,a4]@2 [d4,f4,a4] [d4,f4,a4]@2 [d4,f4,a4] ~@3", // Dm7 Bdim Dm
  F: "[f4,a4]@2 ~ a4 ~ [d4,f4,b4] ~@2 a4 [d4,f4,c5] ~@5 [d4,f4,c5]@2 [f4,c5] [d4,f4,c5]@2 [f4,c5] [d4,f4,c5] ~ a4", // F Bdim Dm7 F5 Dm7 F5 Dm7
  G: "[d4,f4,c5]@2 ~ a4 ~ [d4,f4,b4] ~@3 [d4,f4,a4] ~@2 [d4,f4,b4]@2 [f4,b4] [d4,f4,a4] ~@2 [d4,f4,b4]@2 ~ [d4,f4,a4] ~@2", // Dm7 Bdim Dm Bdim Fdim Dm Bdim Dm
  H: "[d4,f4,a4]@2 ~ a4 ~ [d4,f4,b4] ~@3 [d4,f4,c5]@2 ~@4 [d4,f4,c5]@2 [f4,c5] c5@2 [d4,f4,c5] [f4,c5] ~ a4, ~@17 d4@3 ~@4", // Dm Bdim Dm7 F5 Dm7 F5
  I: "[d4,f4,c5]@2 ~ a4 ~ [d4,f4,b4] ~@3 [d4,f4,a4]@2 ~@4 [f4,a4]@2 [f4,a4] [f4,a4]@2 [d4,f4,a4] ~@3, ~@15 d4@5 ~@4", // Dm7 Bdim Dm F Dm
  J: "[d4,f4,a4]@2 ~ a4 ~ [d4,f4,b4] ~@2 a4 [d4,f4,c5]@2 ~@4 [d4,f4,c5]@2 [f4,c5] [d4,f4]@2 [d4,f4,c5] [f4,c5] ~ a4", // Dm Bdim Dm7 F5 Dm Dm7 F5
  K: "[d4,f4,c5]@2 ~ a4 ~ [d4,f4,b4] ~@3 [d4,f4,a4] ~@2 [d4,f4,b4]@2 [f4,b4] [d4,f4,a4] ~@2 [d4,f4,b4] ~@2 [d4,f4,a4] ~@2", // Dm7 Bdim Dm Bdim Fdim Dm Bdim Dm
  L: "[d4,f4,c5]@2 ~ a4 ~ [d4,f4,b4] ~@3 [d4,f4,a4]@2 ~@4 [d4,f4,a4] ~@2 [d4,f4,a4]@2 [d4,f4,a4] ~@3", // Dm7 Bdim Dm
  M: "[d4,f4,c5]@2 ~ a4 ~ [d4,f4,b4] ~@3 [d4,f4,a4] ~@2 [d4,f4,b4]@2 [f4,b4] [d4,f4,a4] ~@2 [d4,f4,b4]@2 ~ a4 ~ a4", // Dm7 Bdim Dm Bdim Fdim Dm Bdim
  N: "[c4,d4,g4]@2 ~ g4 ~ [c4,d4,g4] ~@2 g4 [b3,d4,g4]@2 ~@4 [b3,d4,g4]@2 [d4,g4] [b3,d4,g4]@2 [b3,d4,g4] [d4,g4] ~@2", // Csus2 G G5 G G5
  O: "[c4,d4,g4]@2 ~ g4 ~ [c4,d4,g4] ~@2 g4 [b3,d4,g4]@2 ~@4 [b3,d4,g4]@2 [d4,g4] [b3,d4,g4]@2 [b3,d4,g4] [d4,g4] ~ g4", // Csus2 G G5 G G5
  P: "[c4,d4,g4]@2 ~ g4 ~ [c4,d4,g4] ~@2 g4 [db4,e4,a4]@2 ~@4 [db4,e4,a4]@2 [e4,a4] [db4,e4,a4]@2 [db4,e4,a4] [e4,a4] ~@2", // Csus2 A A5 A A5
  Q: "[d4,e4,a4]@3 a4 ~ a4 [d4,e4,a4]@3 [db4,e4,a4]@2 ~@3 a4 [db4,e4,a4]@2 ~ [db4,e4,a4]@2 [db4,e4,a4] ~@3", // Dsus2 A
  R: "[c4,d4,g4]@2 ~ g4 [c4,d4,g4]@5 [b3,d4,g4] ~@2 [b3,d4,g4]@3 ~@3 [b3,d4,g4]@3 ~@3", // Csus2 G
  S: "[c4,d4,g4]!2 ~ [c4,d4,g4]!2 ~@4 [b3,d4,g4]!2 ~ [b3,d4,g4] [b3,d4,g4]@2 ~@3 [b3,d4,g4]@3 ~@3", // Csus2 G
  T: "[d4,f4,a4]@2 ~ a4 ~ [d4,f4,b4] ~@3 [d4,f4,c5] ~@5 [d4,f4,c5]@2 [d4,f4,c5] [d4,f4,c5]@2 [d4,f4,c5]!2 ~@2", // Dm Bdim Dm7
  U: "[d4,f4,c5]@2 ~ a4 ~ [d4,f4,b4] ~@3 [d4,f4,a4] ~@5 [d4,f4,b4] ~@2 [d4,f4,a4]@2 ~@4", // Dm7 Bdim Dm Bdim Dm
  V: "[d4,f4,c5]@2 ~ a4 ~ [d4,f4,b4] ~@2 [d4,f4,a4] ~@15", // Dm7 Bdim Dm
})).s("gm_electric_guitar_clean").gain(0.38).pan(0.6)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  ~@5 A B C D C E C F C B C D G H I H@2 E C F C J K J K J K J ~ C@2 D C E C F C B C D G H I H@2 E C F C J K J K J K J ~
  C@2 D C@3 D C J K J K J K J ~ J K J K J K J ~ B C D C E C F C B C D G B C D G B C D C
>`.pickRestart({
  A: "~@14 [d4,f4] ~@9", B: "~@3 [d4,f4] ~@19 [d4,f4]", C: "~@3 [d4,f4] ~@20",
  D: "~@3 [d4,f4] ~@4 [d4,f4] ~@14 [d4,f4]", E: "~@3 [d4,f4] ~@14 f4@2 ~@3 [d4,f4]",
  F: "~@3 [d4,f4] ~@4 [d4,f4] ~@9 c5@2 ~@3 [d4,f4]", G: "~@3 [d4,f4] ~@17 [d4,f4] ~ [d4,f4]",
  H: "~@3 [c4,d4] ~@4 [c4,d4] ~@15", I: "~@3 [c4,d4] ~@4 [c4,d4] ~@14 [b3,d4]",
  J: "~@3 [d4,e4] ~ [d4,e4] ~@8 [db4,e4] ~@9", K: "~@3 [c4,d4] ~@20",
})).s("gm_electric_guitar_clean").gain(0.22).pan(0.6)

// chords · distortion guitar
const distortion_guitar = note("<~@5 A B ~ C ~@8 D ~@7 E ~@7 F G ~@2 H B ~@8 I J ~@4 K ~@23 F ~@7 F ~@20>".pickRestart({
  A: "~@12 [d4,f4,a4]@2 ~@4 [d4,f4,a4]@4 ~ [c4,db4,e4]", B: "b3 ~@23", C: "[d3,a3,d4]@4 ~ [c3,db3,g3,ab3,c4,db4] ~@18",
  D: "~@12 [d3,a3]@3 ~ [db3,g3,ab3] [c3,gb3] b2 ~@5", E: "~@12 [d4,f4,a4]@4 ~ [c4,db4,e4] ~@6",
  F: "~@18 [g2,d3]@3 ~ [gb2,c3,db3] [f2,b2]", G: "e2 ~@23", H: "~@12 [f3,d4,a4]@6 [f3,d4,a4]@4 ~ [c4,db4,e4]",
  I: "~@18 [g4,d5]@3 ~ [gb4,c5,db5] [f4,b4]", J: "e4 ~@23",
  K: "~@12 [d4,f4,a4]@4 ~ [c4,db4,e4] [d4,a4]!2 ~ [d4,a4]!2 ~", // Dm C D5
})).s("gm_distortion_guitar").gain(0.33).pan(0.3)

// chords · distortion guitar · soft notes
const distortion_guitar_soft = note("<~@5 A ~@11 B ~@7 C ~@8 D ~@2 A ~@15 C ~@52>".pickRestart({
  A: "~@23 [eb4,g4,ab4]", B: "~@6 f3 ~", C: "~@17 [eb4,g4,ab4] ~@6", D: "bb2 ~@7",
})).s("gm_distortion_guitar").gain(0.16).pan(0.3)

// other · synth brass 1
const synth_brass_1 = note(`<
  ~@2 A ~ A ~@28 B A ~@26 C A ~ A ~ D E F@2 G H I J G H I K I L G M G L I N ~@4 O P ~@6 F Q F A F Q F R
>`.pickRestart({
  A: "d5 ~", B: "~ f5 ~@2 g4@2 ~@3 g5 f5@2 ~ g4@2 ~@9, g5@2 ~ d5@2 ~@7 d5@2 ~@10",
  C: "g5 f5@2 ~ g4@2 ~@3 g5 f5@2 d5 g4@2 ~@9, ~@3 d5@2 ~@19", D: "~@3 d5!2 ~@4 d5 ~@11 d5 ~@2",
  E: "[f5,a5]@4 ~ [f5,a5]!2 ~@17", F: "d5@2 f5 g5", G: "a5@9 g5@2 ~@13", H: "g5@3 a5 ~@4", I: "a5@3 g5 ~@4",
  J: "g5@9 a5@2 ~@7 g5@2 ~ ab5 ~@2, ~@17 f5@2 ~@5",
  K: "~ f5 ~@2 g4@2 ~@3 g5 f5@2 d5 g4@2 ~ f5@2 g5@2 ~ ab5 ~@2, g5@2 ~ d5@2 ~@19", L: "g5@9 a5@2 ~@13",
  M: "g5@9 a5@2 ~@5 f5 ~ g5 ~@2 ab5 ~@2", N: "~ f5 ~@2 g4@2 ~@3 g5 f5@2 ~ g4@2 ~@3 d5@2 ~@4, g5@2 ~ d5@2 ~@7 d5@2 ~@10",
  O: "~@9 d5@2 ~@10 d5 ~@2", P: "f5@4 ~ f5!2 ~@17", Q: "d5@13 ~@11", R: "d5@11 ~@13",
})).s("gm_synth_brass_1").gain(0.55)

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

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B C B D E F G F@4 G F H F H F@2 H I F@2 H E F H F H F H@2 J K L M N F@3 G F H F H F@2 H I F@2 H E F H F H F H@2 O
  F@3 P Q F@2 R S T S T S T@2 O S T S T S T@2 O F@2 H L F@15 U
>`.pickRestart({
  A: "~@21 x!2 ~", B: "~ x!3", C: "x ~@5 x ~@5 x!2 ~@4 x ~@2 x!2 ~", D: "x ~ x ~@2 x ~ x",
  E: "~@3 x ~@2 x ~@2 x ~ x!2 ~@2 x ~@2 x ~@2 x ~@2", F: "x ~@2 x ~@2 x ~@2 x ~ x!2 ~@2 x ~@2 x ~@2 x ~@2",
  G: "x ~@2 x ~@2 x ~@2 x ~ x!2 ~@2 x ~@2 x ~ x!2 ~@2", H: "x ~@2 x ~@2 x ~@2 x ~ x!2 ~@2 x ~@2 x ~@2 x ~ x",
  I: "~@3 x ~@2 x ~@2 x ~ x!2 ~@2 x ~@2 x ~@2 x ~ x", J: "x ~@5 x ~@4 x ~@4 x ~@7",
  K: "~@3 x ~@2 x ~@2 x ~ x!2 ~@2 x ~@2 x ~ x ~@3", L: "x ~@2 x ~@2 x ~@2 x ~ x!2 ~@2 x ~@2 x ~@5",
  M: "x ~@2 x ~@2 x ~@2 x!4 ~@2 x ~@2 x ~@2 x ~@2", N: "x ~@2 x ~@2 x ~@2 x ~ x!2 ~@2 x ~@2 x ~@2 x!2 ~",
  O: "x ~@2 x ~@4 x ~@3", P: "x ~@5 x ~@2 x ~ x!2 ~@2 x ~@2 x ~@2 x ~@2",
  Q: "x ~@2 x ~@2 x ~ x ~@3 x ~@2 x ~@2 x ~@2 x ~ x", R: "x ~@10 x!2 ~@2 x ~@2 x ~@5", S: "x!8",
  T: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x", U: "x!4 ~@4",
})).gain(0.38)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A B A C D@2 ~ E D@3 ~ D ~ D ~ D@2 ~@2 D@2 ~@2 F ~ D ~ D ~@2 G H@2 ~@2 D@3 ~ D ~ D ~ D@2 ~@2 D@2 ~@2 F ~ D ~ D ~@2
  G D@4 I D@2 J F ~ D ~ D ~@2 G F ~ D ~ D ~@2 G D@2 ~ H D@15 K
>`.pickRestart({
  A: "x ~ x", B: "~@5 x ~@2", C: "~@2 x!2", D: "~@23 x", E: "~ x ~@10", F: "~@5 x", G: "~@5 x ~@8 x ~@9", H: "~@7 x",
  I: "~@3 x ~@4", J: "~@2 x ~@4 x", K: "~@5 x ~@2 x ~@15",
})).gain(0.49)

// drums · crash
const crash = s("cr").struct(`<
  ~@6 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A B ~ B A B ~ B ~@3 B A ~@3 A ~@3 A ~@3 A ~@3 A B ~ B A B ~ B ~@3 C ~@4 A B ~ B A B
  ~ B A B ~ B A B ~ B ~@4 A ~@3 A ~@7 A ~@3
>`.pickRestart({
  A: "x", B: "~@3 x", C: "~@3 x ~@3 x ~@16",
})).gain(0.44)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@2 A@4 B@20 C D E F E@3 G A@4 B@16 C D E F E@3 G A@8 C D E F E@3 G C D E F E@3 G B@19 ~
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "x!2 ~ x!2 ~ x ~ x!2 ~ x!2 ~ x!3 ~ x!2 ~ x ~ x",
  D: "x ~ x!2 ~ x!2 ~ x!3 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~", E: "x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~",
  F: "x!2 ~ x ~ x!3 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~", G: "x!2 ~ x ~@5 x ~@2 x!2 ~@10",
})).gain(0.27)

stack(
  electric_guitar_clean, electric_guitar_clean_2, distortion_guitar, distortion_guitar_soft, synth_brass_1, kick, snare,
  hihat, open_hat, crash, tambourine
)

More by Duran Duran