Strudelify

Fascination Street

The Cure

KeyC minorTempo100 bpm
0:00/0:00
// Fascination Street — The Cure
// 100 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 123 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · electric bass pick · "Electric Bass -- Picked"
const bass = note(`<
  A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C
  D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B
  C D ~@3
>`.pickRestart({
  A: "c3 c3@2 c3 c3@2 c3 c3@2 c3 c3@2 eb3!2 eb3@2", B: "c3 c3@2 c3 c3@2 c3 c3@2 c3 c3@2 eb3 d3 eb3@2",
  C: "ab2!2 ab2@2 ab2@2 ab2 ab2@2 ab2 ab2@2 eb3!2 eb3@2", D: "g2!2 g2@2 g2@2 g2 g2@2 g2 g2@2 bb2!2 bb2@2",
})).s("gm_electric_bass_pick").gain(0.3)

// other · electric guitar jazz · "Electric Jazz Guitar"
const electric_guitar_jazz = note(`<
  ~@32 A B C D A B C D ~@40 A B C D A B C D A B C D A B C D A B C D A B C D ~@19
>`.pickRestart({
  A: "c5@3 eb5", B: "d5@3 f4@5", C: "eb4 ab4@2 c5@5", D: "eb4 bb4@2 f5@3 g4@2",
})).s("gm_electric_guitar_jazz").gain(0.35)

// other · pad poly · "Polysynth"
const pad_poly = note("<~@40 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 A B C D A B C D ~@19>".pickRestart({
  A: "eb4@3 f4@3 g4@2 eb4@2 d4@3 eb4@3", B: "eb4@3 c4@3 c4@2 c4@3 d4@3 eb4@2", C: "eb4@3 f4@3 g4@2 eb4@3 f4@3 g4@2",
  D: "bb4@3 bb4@3 bb4@2 bb4@3 ab4@3 g4@2",
})).s("gm_pad_poly").gain(0.35)

// other · cello
const cello = note(`<
  ~@96
  [d5@2 c5@2 d5@2 c5 d5@2 d5 c5@4 c5@2]!3
  [d5@2 c5@2 d5@2 c5 d5@2 d5 c5@4 g5@2]
  [g5 f5!2 f5@2 eb5!2 eb5@2 d5!2 d5@3 g5!2]!2
  [g5 f5!2 f5@2 eb5!2 eb5@2 d5!2 d5@3 c5!2]
  [c5 bb4!2 bb4@2 ab4!2 ab4@2 g4!3 g4@4]
  ~@19
>`).s("gm_cello").gain(0.25)

// drums · kick
const kick = s("bd").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 ~@8 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 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 ~@3
>`.pickRestart({
  A: "x!2 ~@4 x!2 ~ x ~@6", B: "x!2 ~@4 x!2 ~ x!2 ~@5",
})).gain(0.45)

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

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

// drums · crash
const crash = s("cr").struct("<~@8 A ~@23 A ~@7 A ~@23 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@18>".pickRestart({
  A: "x",
})).gain(0.4)

stack(bass, electric_guitar_jazz, pad_poly, cello, kick, snare, hihat, crash)

More by The Cure