Strudelify

High

The Cure

KeyA majorTempo107 bpm
0:00/0:00
// High — The Cure
// 107.1 bpm, 3/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 128 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.1/3)

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

// other · electric guitar clean
const electric_guitar_clean = note(`<
  ~@10 A B C D@2 E F G@2 B C H ~@10 I@2 J@2 ~ K@2 ~ I@2 A L M@3 N O@3 L P@3 Q@3 R@2 ~ S T U@3 V@3 W@2 U@3 X@8 Y@3 Z@8 AA
  AB@8 AC@6 ~ S T AD@3 R@2 ~ W@2 U@3 V@3 W@2 ~
>`.pickRestart({
  A: "~@2 c#4", B: "b3@3 a3@3 a3@2 b3@2 c#4@2", C: "f#4@4 e4@3 c#4@3 c#4@2",
  D: "[d4@2 c#4@2 c#4@4 b3@3 a3@3 a3@2 b3@2 c#4@2 f#4@4]/2", E: "e4@3 c#4@3 c#4@2 d4@2 c#4@2",
  F: "c#4@4 b3@3 a3@3 a3@2", G: "[b3@2 c#4@2 f#4@4 e4@3 c#4@3 c#4@2 d4@2 c#4@2 c#4@4]/2", H: "d4 c#4 ~@4",
  I: "[e4@3 d4@3 c#4 c#4@2 c#4@6 ~@9]/2", J: "[~@7 e4 e4@3 d4@3 c#4 c#4@2 c#4@6 ~]/2",
  K: "[~@4 e4@3 d4@3 c#4 c#4@2 c#4@6 ~@5]/2", L: "b3 a3 a3@2", M: "[e3@4 e3@3 e3@3 e3@6 c#4@4 b3@3 a3@3 a3@6 e3@4]/3",
  N: "e3!2 e3@2", O: "[c#4@4 b3@3 a3@3 a3@6 e3@4 e3@3 e3@3 e3@6 c#4@4]/3",
  P: "[e3@4 e3@3 e3@3 ~@6 e4@3 d4@3 c#4 c#4@2 c#4@6 ~@5, ~@20 e3@21 ~@31]/3",
  Q: "[~@21 e4@2 e4@6 d4@6 c#4@2 c#4@4 c#4@12 ~@19]/3", R: "[~@15 e4@6 d4@6 c#4@2 c#4@4 c#4@12 ~@3]/2",
  S: "~@7 e4@6 d4@6 c#4@2 c#4@3", T: "~ c#4@12 ~@11", U: "[~@23 e4@8 d4@8 c#4@8 a3@16 ~@9]/3",
  V: "[~@15 e4@8 d4@8 c#4@8 a3@16 ~@17]/3", W: "[~@7 e4@8 d4@8 c#4@8 a3@16 ~]/2",
  X: "[~@15 e4@8 d4@6 c#4@2 c#4@4 c#4@4 d4@4 e4@4 a4@8 g#4@6 e4@2 e4@4 e4@4 f#4@4 e4@4 e4@8 d4@6 c#4@2 c#4@4 c#4@4 d4@4 e4@4 a4@8 g#4@6 e4@2 e4@4 e4@4 f#4@4 e4@4 e4@8 d4@6 c#4@2 c#4@4 c#4@4 d4@4 e4@4 a4@8 g#4@6 e4@2 e4]/8",
  Y: "[~@3 e4@4 f#4@4 e4@4 e4@8 d4@6 c#4@2 c#4@4 c#4@4 d4@4 e4@4 a3@16 ~@9]/3",
  Z: "[~@7 e4@8 d4@6 c#4@2 c#4@4 c#4@4 d4@4 e4@4 a4@8 g#4@6 e4@2 e4@4 e4@4 f#4@4 e4@4 e4@8 d4@6 c#4@2 c#4@4 c#4@4 d4@4 e4@4 a3@16 a3@4 a3@2 a3@10 e4@8 d4@6 c#4@2 c#4@4 c#4@4 d4@4 e4@4 a4@8 g#4@6 e4@2 e4@4 e4@4 f#4]/8",
  AA: "~@3 e4@4 e4@8 d4@6 c#4@2 c#4",
  AB: "[~@3 c#4@4 d4@4 e4@4 a3@16 a3@4 a3@2 a3@10 c#4@8 b3@6 a3@6 a3@12 e3@8 e3@6 e3@8 e3@10 c#4@8 b3@6 a3@6 a3@12 e3@8 e3@6 e3@8 e3@10 c#4@8 b3@6 a3@3]/8",
  AC: "[~@3 a3@12 e3@8 e3@6 e3@8 e3@10 c#4@8 b3@6 a3@6 a3@12 e3@8 e3@6 e3@8 ~@10 e4@6 d4@6 c#4@2 c#4@4 c#4@12 ~@3, ~@101 e3@21 ~@22]/6",
  AD: "[~@23 e4@6 d4@6 c#4@2 c#4@4 c#4@12 ~@19]/3",
})).s("gm_electric_guitar_clean").gain(0.41)

// other · synth strings 1
const synth_strings_1 = note("<~@63 A@7 B@3 ~@44 C@6 D@3 ~@2>".pickRestart({
  A: "[~@23 a3@8 a3@8 a3@8 a3@8 b3@8 b3@8 b3@8 b3@8 c#4@8 c#4@8 c#4@8 c#4@8 b3@8 b3@8 b3@8 b3@8 ~@12 e5@5]/7",
  B: "[~ e5@6 e5@7 ~ b3@8 b3@8 b3@8 b3@8 e5@6 e5@6 ~@13]/3",
  C: "[~@7 a3@8 a3@8 a3@8 a3@8 b3@8 b3@8 b3@8 b3@8 c#4@8 c#4@8 c#4@8 c#4@8 b3@8 b3@8 b3@8 b3@8 ~@9]/6",
  D: "[~@3 e5@6 e5@6 e5@7 ~ b3@8 b3@8 b3@8 b3@8 e5@6 e5@6 ~@5]/3",
})).s("gm_synth_strings_1").gain(0.31)

// other · synth strings 1 · soft notes
const synth_strings_1_soft = note("<~@69 A ~@2 B@3 ~@47 C@2 ~ D E F>".pickRestart({
  A: "~@7 e5@6 e5@6 ~@5", B: "[~@11 e5@6 e5@6 e5@6 e5@6 e5@6 e5@6 e5@6 e5@7 ~@12]/3", C: "[~@5 e5@2 e5@2 ~@7]/2",
  D: "~@19 e5@5", E: "~ e5@6 e5@6 e5@6 e5@5", F: "~ e5@6 e5@6 e5@7 ~@4",
})).s("gm_synth_strings_1").gain(0.15)

// drums · kick
const kick = s("bd").struct(`<
  A B A C D E D F A B A C D E D F A B A C D E D F A B A C D E D F A B A C D E D F A B A C D E D F A B A C D E D G H I H
  J K L K M H I H J K L K M H I H J K L K M H I H J K L K M H I H J K L K M H I H J K L K M H I H J K L K M H I H J K L
  K M H I H J K L K N
>`.pickRestart({
  A: "x ~ x", B: "~@3 x!2 ~@6 x", C: "~@4 x ~@6 x", D: "x ~@6 x!2 ~@3", E: "~ x ~", F: "~@3 x!2 ~@7",
  G: "~@6 x ~ x ~@14 x", H: "~@5 x ~@2", I: "~@5 x ~ x ~@13 x ~ x", J: "~@7 x ~@13 x ~ x", K: "~@13 x ~ x ~@8",
  L: "~@7 x ~@15 x", M: "~@5 x ~ x ~@15 x", N: "~@5 x ~ x ~@16",
})).gain(0.51)

// drums · snare
const snare = s("sd").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A C D E D
  E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E
  D E D E D E D E D E
>`.pickRestart({
  A: "~ x ~", B: "x ~ x", C: "x ~@4 x ~@2", D: "~@7 x ~@15 x", E: "~@5 x ~@2",
})).gain(0.51)

// drums · open hat
const open_hat = s("oh").struct("<A@10 B ~@10 C A@10 ~@10 D A@10 E ~@74>".pickRestart({
  A: "x!6", B: "x!4 ~@2", C: "~@2 x!4", D: "~@4 x!2", E: "x!2 ~@4",
})).gain(0.51)

stack(electric_guitar_clean, synth_strings_1, synth_strings_1_soft, kick, snare, open_hat)

More by The Cure