Strudelify

Six Different Ways

The Cure

KeyC majorTempo101 bpm
0:00/0:00
// Six Different Ways — The Cure
// 100.8 bpm, 3/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 96 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100.8/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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
const piano = note(`<
  ~@4 A B A B A B A B A B A B C D C D C D C D E F E G C D C D C D C D E F E H C D C D C D C D E F E F E F E I C D C D C
  D C D E F E F E F E I C D C D C D C D E F E F E F E I C D C D C D C D
>`.pickRestart({
  A: "c2@3 ~ c3@3 ~ [g3,c4,e4]@3 ~@5 c2 ~ c3 ~ [g3,c4,e4]@3 ~", B: "c2@3 ~ c3@3 ~ [g3,c4,e4]@3 ~@13",
  C: "c2@3 ~ c3@3 ~ [c4,e4,g4]@3 ~@5 b1 ~ b2 ~ [b3,d4,f4]@3 ~", D: "a1@3 ~ a2@3 ~ [a3,c4,e4]@3 ~@13",
  E: "e1@3 ~ e2@3 ~ [e3,g3,b3]@3 ~@5 e1 ~ e2 ~ [e3,g3,b3]@3 ~", F: "f1@3 ~ f2@3 ~ [f3,a3,c4]@3 ~@13",
  G: "f1@3 ~ f2@3 ~ [f3,a3,c4]@3 ~@5 d4 ~ e4 ~ d4@3 ~", H: "f1@3 ~ f2@3 ~ [f3,a3,c4]@3 ~@5 d4@2 e4@2 d4@3 ~",
  I: "e1@3 ~ e2@3 ~ [e3,g3,b3]@3 ~@13", // Em
})).s("gm_piano").gain(0.4)

// bass · electric bass finger
const bass = note(`<
  ~@16 A B A B A B A B C D C E A B A B A B A B C D C F A B A B A B A B C D C D C D C G A B A B A B A B C D C D C D C G A
  B A B A B A B C D C D C D C G A B A B A B A B
>`.pickRestart({
  A: "c2@11 ~@5 b1@5 ~@3", B: "a1@11 ~@13", C: "e1@11 ~@5 e1@5 ~@3", D: "f1@11 ~@13", E: "f1@11 ~@5 d2 ~ e2 ~ d2@3 ~",
  F: "f1@11 ~@5 d2@2 e2@2 d2@3 ~", G: "e1@11 ~@13",
})).s("gm_electric_bass_finger").gain(0.4)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@8 A B C D E F E F ~@24 G H G H G H I J ~@16 G H G H G H I J ~@16 G H G H G H I J
>`.pickRestart({
  A: "a#3 ~ a#3 ~@5 a#3 ~ a#3 ~@5 a3 ~ a#3@3 ~@3", B: "a3@6 ~@2 a#3@3 ~@13",
  C: "d4 ~ d#4 ~ f4 ~@3 a#3@3 ~ a3@3 ~ g3@3 ~ a#3@3 ~", D: "g3@6 ~@2 a#3@3 ~ f3@3 ~@9",
  E: "[f2,f3] ~ [f2,f3] ~@5 [f2,f3] ~@7 [f2,f3] ~ [f2,f3] ~@5", F: "[f2,f3] ~@7",
  G: "~@4 c5 ~@3 b4@3 ~ c5@3 ~ g4@3 ~ g4@3 ~", H: "f4@3 ~ g4 ~@3 c4@3 ~@13",
  I: "~@4 c5 ~@3 b4@3 ~ c5@3 ~ e5@3 ~ c5@3 ~", J: "b4@3 ~ c5 ~@3 c5@3 ~@13",
})).s("gm_string_ensemble_1").gain(0.54)

// other · marimba
const marimba = note(`<
  ~@2
  [c4 ~ a#4 ~@3 c4 ~ a#4 ~@3 c4 ~ d#4 ~@3 c4 ~@3 c4 ~]
  [c4@3 ~ g3 ~ a#3 ~ g3 ~ a#3 ~ c4@3 ~ c4 ~ c4 ~@3 c4 ~]
  ~@92
>`).s("gm_marimba").gain(0.08)

// other · pad bowed
const pad_bowed = note("<A@2 ~@15 B ~ C ~ D E ~@34 C ~ B ~ C ~@27 C ~ B ~ C ~@2>".pickRestart({
  A: "[c4,f4,c5]/2", B: "~@12 c5@3 ~ d5@3 ~ c5@4", C: "~@12 c5@3 ~ d5@3 ~ e5@4", D: "~@16 c5@5 ~@3", E: "c6@5 ~@19",
})).s("gm_pad_bowed").gain(0.4)

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

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

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

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

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~ A ~ A ~@3 A ~@7 A ~@7 A ~@3 A ~@7 A ~@3 A ~@7 A ~@3 B ~@3 A ~@7 A ~@3 B ~@3 A ~@7 A ~@3 B ~@3 A ~@7 C
>`.pickRestart({
  A: "~@5 x", B: "~@11 x", C: "~ x ~",
})).gain(0.4)

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

stack(piano, bass, string_ensemble_1, marimba, pad_bowed, kick, snare, hihat, low_tom, mid_tom, crash)

More by The Cure