Strudelify

Apart

The Cure

KeyA minorTempo84 bpm
0:00/0:00
// Apart — The Cure
// 84 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 13 distortion guitar (copy of ch 12 lead 1 square)
// note: Full arrangement: all 137 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(84/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 · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@43 A B C D A B C D ~@4 E F G E@2 F G E@2 F G H F I J@2 F I J@2 ~@28 E F G E@2 F G E@2 F G H F I J@2 F I J@2 F I J@2
  F I J@2 ~@6
>`.pickRestart({
  A: "[c4,g4]@2 c4!2 [c4,g4]@2 c4!2 ~ c4 [a3,c4,g4]@2 [c4,g4] c4 [c4,g4] c4", // C5 Am7 C5
  B: "[c4,g4]@2 c4!2 [c4,g4]@2 c4!2 ~ c4 [c4,g4]@2 c4!4", // C5
  C: "[c4,g4]@2 c4!2 [c4,g4]@2 c4!2 ~ c4 [c4,g4]@2 [c4,g4] c4!3", // C5
  D: "[c4,g4]@2 c4!2 [a3,c4,a4]@2 c4!2 ~ c4 [c4,g4]@2 c4!4", E: "a3@4 d4@2 a3 d4@2 c4@2 a3@2 d4 a3@2",
  F: "g3@4 d4@2 g3 g4@2 d4@2 g3@2 d4 g3@2", G: "a3@4 d4@2 a3 g4@2 d4@2 a3@2 d4 a3@2",
  H: "a3@4 d4@2 a3 e4@2 d4@2 a3@2 d4 a3@2", I: "[d4,f4]!11 [d4,f4]@2 [d4,f4] [d4,e4]@2",
  J: "a3@4 e4@2 b3 c4@2 e4@2 b3@2 e4 b3@2",
})).s("gm_acoustic_guitar_nylon").gain(0.64)

// chords · acoustic guitar nylon · soft notes
const acoustic_guitar_nylon_2 = note("<~@43 A B C D A B C D ~@86>".pickRestart({
  A: "a3@2 [a3,g4]!2 a3@2 [a3,g4]!2 ~ [a3,g4] ~@2 a3 [a3,g4] a3 [a3,g4]", // A7
  B: "a3@2 [a3,g4]!2 a3@2 [a3,g4]!2 ~ [a3,g4] a3@2 [a3,g4]!4", // A7
  C: "a3@2 [a3,g4]!2 a3@2 [a3,g4]!2 ~ [a3,g4] a3@2 a3 [a3,a4]!3", D: "a3@2 [a3,g4]!2 ~@2 a3!2 ~ [a3,g4] a3@2 [a3,a4]!4",
})).s("gm_acoustic_guitar_nylon").gain(0.32)

// other · viola
const viola = note("<~@19 A B C D A B C D ~@16 A B C D A B C D ~@32 A B C D A B C D A B C D A B C D ~@38>".pickRestart({
  A: "e4!3 f4@3 e4@2", B: "d4@3 e4@3 d4@2", C: "c4@3 d4@3 e4@2", D: "c4",
})).s("gm_viola").gain(0.64)

// chords · vibraphone
const vibraphone = note(`<
  ~@26 A B C D@2 E@2 F A G@2 H@2 I@2 J@2 ~@7 A B C K@2 L@2 M A N@2 O@2 P@2 Q ~ R S@2 T@2 S@2 U V ~@22 A B C K@2 L@2 W A
  N@2 O@2 X@2 Q ~ R S@2 Y@2 S@2 U Z S@2 Y@2 S@2 U AA S@2 AB AC ~
>`.pickRestart({
  A: "~@7 e4", B: "g4 a4@2 a4@2 b4@2 b4", C: "a4 g4@3 ~@3 g4", D: "[g4 f4@3 e4 f4@2 g4@2 f4 e4@4 ~ e4]/2",
  E: "[g4@2 a4@4 a4@4 b4@4 c5 b4@3 a4 g4@6 ~@5 g4@2]/2", F: "g4@2 f4@4 g4@4 f4 e4 c4@4",
  G: "[g4@2 a4@4 a4@4 b4@4 b4 c5@3 c5@2 b4@4 ~@6 a4@2]/2", H: "[b4 a4@2 g4@2 a4@2 b4@2 a4@2 g4@3 ~ e4]/2",
  I: "[g4@4 a4@2 a4@4 c5 b4@3 b4@4 c5@4 b4@2 g4@4 ~@2 g4@2]/2", J: "[g4@2 f4@2 g4 f4@2 e4@3 ~@6]/2",
  K: "[g4 f4@3 e4 f4@2 g4@2 f4 c4@2 ~@3 e4]/2", L: "[g4 a4@2 a4@3 a4 b4@2 c5 b4@2 ~@3 g4]/2", M: "a4 b4@2 a4@2 g4 e4@2",
  N: "[c5 b4@2 c5@2 b4@2 a4@2 b4 g4@2 ~@3 g4]/2", O: "[a4 g4@2 a4@2 e4@2 g4@2 a4@2 e4@3 ~ e4]/2",
  P: "[a4@2 g4 a4@2 a4@2 b4@2 a4 g4@2 ~@3 g4]/2", Q: "g4 f4@2 g4@2 f4 e4@2", R: "~@4 [b4,d5]!4",
  S: "[~@2 [c5,e5]@2 [a4,c5] [b4,d5]@2 [g4,b4]@3 ~ [e4,a4] [g4,c5] [a4,d5]@2 [b4,e5]]/2", // C Am Bm G A5 C5 D5 E5
  T: "[~@6 [e4,d5]@2 [g4,c5]@4 [a4,c5]@2 [g4,c5]@4 e4 d4 ~@4 [b4,d5]@2 [b4,d5]@2 [b4,d5]@2 [b4,d5]@2, ~@9 b4 ~@6]/2", // E7 C5 Am C5 Bm
  U: "~@3 [e4,e5] [g4,g5]@2 [f4,b4]!2", V: "[e4,a4] ~@3", W: "g4 f4@2 e4@2 ~@3",
  X: "[a4@2 g4 a4@2 b4@2 b4@2 c5@2 b4@2 g4@2 g4]/2",
  Y: "[~@3 [e4,d5] [g4,c5]@2 [a4,c5] [g4,c5]@2 e4@2 ~ [b4,d5]!4, ~@9 b4 ~@6]/2", Z: "[d4,g4]@2 ~@2 [b4,d5]!4",
  AA: "d4@2 ~@2 [b4,d5]!4, b4 ~@7", AB: "~@3 [e4,b4] [g4,d5]@2 [f4,c5]!2", AC: "[e4,a4]",
})).s("gm_vibraphone").gain(0.64)

// other · bassoon · "Synth"
const bassoon = note(`<
  ~@19 A B C D A B C D ~@16 A B C D A B C D ~@8 A B C D A B C D ~@16 A B C D A B C D A B C D A B C D ~@8 A B C D A B C D
  ~@22
>`.pickRestart({
  A: "e4!3 f4@3 e4@2", B: "d4@3 e4@3 d4@2", C: "c4@3 d4@3 e4@2", D: "c4",
})).s("gm_bassoon").gain(0.64)

// other · acoustic guitar steel · "Guitar"
const acoustic_guitar_steel = note(`<
  A@2 B@2 C@2 D@2 E@2 D F@3 D@2 E@2 D ~@25 C@2 D@2 E@2 D ~@9 C@2 D@2 E@2 D ~@41 G H I J K@2 I L ~@21
>`.pickRestart({
  A: "[a2@2 a2@2 a3@2 g3@5 a3@16 ~@5]/2", B: "[a2!2 a3 g3@3 a3@8 ~@2]/2", C: "[a2!2 a3 g3@3 a3@4 a3@6]/2",
  D: "a2!2 a3 g3@4 ~", E: "[a3@4 a2!2 a3 g3@3 a3@6]/2",
  F: "[a2!2 a3 g3@3 ~@2 a2!2 ~ g3@3 a3@4 a3@6, ~@3 a3@2 a3@2 ~@5]/3", G: "~@6 a2!2", H: "a3 g3@3 a3@4", I: "a3@6 a2!2",
  J: "a3 g3@4 ~ a2!2", K: "[a3 g3@4 ~ a3@4 a2!2 a3 g3@3]/2", L: "a3 g3@4 ~@3",
})).s("gm_acoustic_guitar_steel").gain(0.64)

// bass · slap bass 2 · "Bass"
const bass = note(`<
  ~@3 A B C D E F C G A B C D E F C G A B C D E F C G A B C D E F C G A B C D E F C G A B C D E F C G A B C D E F C G A
  B C D E F C G H I A@2 H I A@3 B C D E F C G A B C D E F C G A B C D E F C G A B C D E F C G A B C D E F C G H I A@2 H
  I A@2 H I A@2 H I A@2 H I A@2 J ~
>`.pickRestart({
  A: "a1!2 a1@2 a1!4", B: "g2@2 g2@2 g2@4 g2@2 g2@2 g2 a2 g2 a2", C: "d2@4 d2@3 d2 d2@2 d2@2 d2 e2 d2 e2",
  D: "a1@2 a1@2 a1@3 a1 a1@2 a1@2 a1!2 a1@2", E: "a2@2 a2@2 a2@3 a2 a2@2 a2@2 a2!4",
  F: "g2@4 g2@3 g2 g2@2 g2@2 g2 a2 g2 a2", G: "a1@4 a1@3 a1 a1@2 a1@6", H: "g1!2 g1@2 g1!4", I: "d2!2 d2@2 d2!4",
  J: "a1",
})).s("gm_slap_bass_2").gain(0.64)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@19 A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C ~@32 A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C ~@4 A@2 B C
  A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C ~@2
>`.pickRestart({
  A: "[a3,c4,g4]@2 [a3,c4,g4]!2 [a3,c4,g4]@2 [a3,c4,g4]!2 ~ [a3,c4,g4] [a3,c4,g4]@2 [a3,c4,g4]!4", // Am7
  B: "[a3,c4,g4]@2 [a3,c4,g4]!2 [a3,c4,g4]@2 [a3,c4,g4]!2 ~ [a3,c4,g4] [a3,c4,g4]@2 [a3,c4,g4] [a3,c4,a4]!3", // Am7 Am
  C: "[a3,c4,g4]@2 [a3,c4,g4]!2 [a3,c4,a4]@2 [a3,c4]!2 ~ [a3,c4,g4] [a3,c4,g4]@2 [a3,c4,a4]!4", // Am7 Am Am7 Am
})).s("gm_overdriven_guitar").gain(0.1)

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

// drums · snare
const snare = s("sd").struct("<~@3 [~ x ~@2]!132 ~@2>").gain(0.64)

// drums · clap
const clap = s("cp").struct(`<
  ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3
>`.pickRestart({
  A: "~@14 x!2",
})).gain(0.64)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@10 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@3 A ~@2
>`.pickRestart({
  A: "~@11 x ~@2 x!2",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@3 A B A B A B A C A B A B A B A C A B A B A B A C A B A B A B A C A B A B A B A C A B A B A B A C A B A B A B A C A
  B A B A B A C A B A B A B A C A B A B A B A C A B A B A B A C A B A B A B A C A B A B A B A C A B A B A B A C A B A B
  A B A C A B A B A B A C A B A C ~@2
>`.pickRestart({
  A: "x ~ x!6", B: "x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~", C: "x!3 ~ x ~ x!2 ~ x!2 ~ x ~@3",
})).gain(0.64)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3
>`.pickRestart({
  A: "~ x ~@6",
})).gain(0.32)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@10 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@3 A ~@2
>`.pickRestart({
  A: "~ x",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@10 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@3 A ~@2
>`.pickRestart({
  A: "~@13 x ~@2",
})).gain(0.64)

// drums · china
const china = s("cr").struct(`<
  ~@3 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@11 A ~
>`.pickRestart({
  A: "x",
})).gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@4 A ~ B ~ A ~@3 A ~ B ~ A ~@3 A ~ B ~ A ~@3 A ~ B ~ A ~@3 A ~ B ~ A ~@3 A ~ B ~ A ~@3 A ~ B ~ A ~@3 A ~ B ~ A ~@3 A
  ~ B ~ A ~@3 A ~ B ~ A ~@3 A ~ B ~ A ~@3 A ~ B ~ A ~@3 A ~ B ~ A ~@3 A ~ B ~ A ~@3 A ~ B ~ A ~@3 A ~ B ~ A ~@3 A ~@4
>`.pickRestart({
  A: "~@8 x ~@2 x ~@2 x ~", B: "~@7 x",
})).gain(0.64)

stack(
  acoustic_guitar_nylon, acoustic_guitar_nylon_2, viola, vibraphone, bassoon, acoustic_guitar_steel, bass,
  overdriven_guitar, kick, snare, clap, low_tom, hihat, hihat_soft, mid_tom, open_hat, china, tambourine
)

More by The Cure