Strudelify

Stop!

Erasure

KeyD majorTempo120 bpm
0:00/0:00
// Stop! — Erasure
// 120 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 89 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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.

// bass · synth bass 1
const bass = note(`<
  ~@4 A B A B C D A B E D C D A F C D A F C D G H G I A B A B C D A B E D C D A F C D A F C D A B A B A B A J G H G I E
  D C D A F C D A F C D A F C D A F C D A F C D A F C D K
>`.pickRestart({
  A: "a1 ~ a1!4 a2 ~ a1 ~ a1!4 a2 ~", B: "a1 ~ a1!4 c#2 ~ a1 ~ a1!4 g1 ~", C: "d2 ~ d2!4 d3 ~ d2 ~ d2!4 d3 ~",
  D: "d2 ~ d2!4 f#2 ~ d2 ~ d2!4 b1 ~", E: "e2 ~ e2!4 e3 ~ e2 ~ e2!4 e3 ~", F: "g1 ~ g1!4 g2 ~ g1 ~ g1!4 g2 ~",
  G: "a1@2 a1!4 a2 ~ a1@2 a1!4 a2 ~", H: "a1@2 a1!4 c#2 ~ a1@2 a1!4 g1 ~", I: "a1 ~@7",
  J: "a1 ~ a1!4 c#2 ~ a1 ~ e1!2 a1 e2!2 ~", K: "a1 ~",
})).s("gm_synth_bass_1").gain(0.71)

// other · lead 2 sawtooth · "Lead 2 (sawtooth)" · A E A E A E A E …
const lead_2_sawtooth = note(`<
  [a4 d5 a5 d5 d4 a4 d5 a4 a3 d4 a4 d4 d3 a3 d4 a3]
  [d3 a3 d4 a3 d3 a3 d4 a3 d3 a3 d4 a3 d3 a3 e4!2]
  [a2 e3 a3 e3 a2 e3 [a3,a5] [e3,e5] [a2,a4] [e3,e5] [a3,a5] [e3,e5] [a2,a4] [e3,e5] [a3,a5] [e3,e5]]
  [[a2,a4] ~@15]
  ~@4
  [a4 d5 a5 d5 d4 a4 d5 a4 a3 d4 a4 d4 d3 a3 d4 a3]
  [d3 a3 d4 a3 d3 a3 d4 a3 d3 a3 d4 a3 d3 a3 e4!2]
  ~@79
>`).s("gm_lead_2_sawtooth").gain(0.4)

// other · lead 2 sawtooth · "Lead 2 (sawtooth)" · soft notes
const lead_2_sawtooth_soft = note("<~@2 [a4 e5 a5 e5 a4 e5 ~@10] ~@86>").s("gm_lead_2_sawtooth").gain(0.2)

// other · electric guitar jazz · "Electric Guitar (jazz)"
const electric_guitar_jazz = note(`<
  [a4 d5 a5 d5 d4 a4 d5 a4 a3 d4 a4 d4 d3 a3 d4 a3]
  [d3 a3 d4 a3 d3 a3 d4 a3 d3 a3 d4 a3 d3 a3 e4!2]
  [a2 e3 a3 e3 a2 e3 a3 e3 a2 e3 a3 e3 a2 e3 a3 e3]
  [a2 ~@15]
  ~@4
  [a4 d5 a5 d5 d4 a4 d5 a4 a3 d4 a4 d4 d3 a3 d4 a3]
  [d3 a3 d4 a3 d3 a3 d4 a3 d3 a3 d4 a3 d3 a3 e4!2]
  ~@79
>`).s("gm_electric_guitar_jazz").gain(0.4)

// other · orchestral harp
const orchestral_harp = note(`<
  ~@4 A@2 B A C D A@2 E C D@2 A F C G A F C G A@2 B ~ A@2 B A C D A@2 E C D@2 A F C G A F C G A@2 B A@3 B A@3 B@2 E C
  D@2 A F C G A F C G A F C G A F C G A F C G A F C G H
>`.pickRestart({
  A: "a5 e6 a6 e6 a5 e6 a6 e6 a5 e6 a6 e6 a5 e6 a6 e6", B: "~ e6 a6 e6 a5 e6 a6 e6 a5 e6 a6 e6 ~ e6 a6 e6, a5 ~@5 a5 ~",
  C: "d6 a6 d7 a6 d6 a6 d7 a6 d6 a6 d7 a6 d6 a6 d7 a6",
  D: "~ a6 d7 a6 d6 a6 d7 a6 ~ a6 d7 a6 d6 a6 d7 a6, d6 ~@3 d6 ~@3",
  E: "e6 b6 e7 b6 e6 b6 e7 b6 ~ b6 e7 b6 e6 b6 e7 b6, ~@4 e6 ~@3", F: "g5 d6 g6 d6 g5 d6 g6 d6 g5 d6 g6 d6 g5 d6 g6 d6",
  G: "d6 a6 d7 a6 d6 a6 d7 a6 d6 a6 d7 a6 e6 b6 e7 b6", H: "~ [a7,c#8,a8] ~@2",
})).s("gm_orchestral_harp").gain(0.16)

// other · lead 5 charang · "Lead 5 (charang)"
const lead_5_charang = note(`<
  ~@4 A@4 B@2 A@2 C B@3 A D B@2 A D B@2 E@3 F A@4 B@2 A@2 C B@3 A D B@2 A D B@2 A@7 G E@3 F C B@3 A D B@2 A D B@2 A D
  B@2 A D B@2 A D B@2 A D B@2 H
>`.pickRestart({
  A: "a2!6 a3!2 a2!6 a3!2", B: "d3!6 d4!2 d3!6 d4!2", C: "e3!6 e4!2 e3!6 e4!2", D: "g2!6 g3!2 g2!6 g3!2",
  E: "a2!6 a3!2 a2!6 a3!2, a1 ~ a1 ~", F: "a2!6 a3!2 a2!6 a3!2, a1 ~@3", G: "a2!6 a3!2 a2!2 e2!2 e3!2 e4!2",
  H: "a2 ~@3",
})).s("gm_lead_5_charang").gain(0.5)

// chords · pad poly · "Pad 3 (polysynth)"
const pad_poly = note("<~@16 A B C@3 B D@3 ~@15 A B C@3 B D@3 ~@15 A B C@3 B C@3 B C@3 B C@3 B C@3 B D@3>".pickRestart({
  A: "~@2 [a3,a4] ~ [a3,a4] ~ [a3,a4] ~ [a3,a4] ~ [a3,b4] [a3,c#5] ~ [a3,b4] [a3,a4]@2", // A Asus2 A Asus2 A
  B: "~@2 [g4,b4] ~ [g4,b4] ~ [g4,b4] ~ [g4,b4] ~ [g4,c#5] [g4,d5] ~ [g4,c#5] b4@2, ~@14 g4 ~", // G Gdim G5 Gdim
  C: "[[f#4,d5] ~ [f#4,d5] ~ [f#4,d5] ~ [f#4,d5] ~ [f#4,d5] ~ [f#4,e5] [f#4,f#5] ~ [f#4,e5] [f#4,d5]@4 [f#4,d5] ~ [f#4,d5] ~ [f#4,d5] ~ [f#4,d5] ~ [f#4,e5] [f#4,f#5] ~ [e4,e5] [e4,b4]@4 [a3,a4] ~ [a3,a4] ~ [a3,a4] ~ [a3,a4] ~ [a3,b4] [a3,c#5] ~ [a3,b4] [a3,a4]@2]/3", // D F#7 F# F#7 D F#7 F# E …
  D: "[[f#4,d5] ~ [f#4,d5] ~ [f#4,d5] ~ [f#4,d5] ~ [f#4,d5] ~ [f#4,e5] [f#4,f#5] ~ [f#4,e5] [f#4,d5]@4 [f#4,d5] ~ [f#4,d5] ~ [f#4,d5] ~ [f#4,d5] ~ [f#4,e5] [f#4,f#5] ~ [e4,e5] [e4,b4]@4 ~@14]/3", // D F#7 F# F#7 D F#7 F# E …
})).s("gm_pad_poly").gain(0.54)

// other · electric guitar clean · "Electric Guitar (clean)"
const electric_guitar_clean = note("<~@28 A B C D E F B A G F@2 H ~@20 G I@2 J ~@24 K>".pickRestart({
  A: "a3@5 ~ c#4 ~ d4@4 c#4@3 ~", B: "a3@4 ~@2 c#4 ~ d4@4 c#4@4", C: "a3@5 ~ c#4 ~ d4@4 c#4@4",
  D: "a3@5 ~ c#4 ~ d4@3 ~ c#4@3 ~", E: "d3@5 ~ f#3 ~ g3@4 f#3@3 ~", F: "d3@5 ~ f#3 ~ g3@4 f#3@4",
  G: "e3@5 ~ g#3 ~ a3@4 g#3@3 ~", H: "d3@5 ~ f#3@2 g3@4 f#3@4", I: "d3@4 ~@2 f#3 ~ g3@4 f#3@4",
  J: "d3@2 ~ f#3 g3@2 f#3@2", K: "~ [a1,a3,c#4,a4] ~@2",
})).s("gm_electric_guitar_clean").gain(0.45).pan(0.8)

// drums · kick
const kick = s("bd").struct("<~@2 A B A@23 B A@31 B A@28 B>".pickRestart({
  A: "x!4", B: "x",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct("<~@2 A B C@23 D C@20 E F E G E H E I C@3 D C@28 J>".pickRestart({
  A: "~@8 x!8", B: "x ~@11 x!4", C: "~ x ~ x", D: "~@12 x!4", E: "~@4 x ~@2 x ~@4 x ~@2 x",
  F: "~@4 x ~@2 x!2 ~ x ~ x!4", G: "~@4 x!2 ~@4 x!3 ~ x!2", H: "~@4 x ~ x!2 ~@3 x!2 ~ x!2",
  I: "~@4 x ~ x!2 ~@2 x ~ x!4", J: "~ x ~@2",
})).gain(0.5)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@4 [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!84 [x!3 ~@5]>").gain(0.35)

// drums · ride
const ride = s("rd").struct("<~@16 [x!4]!12 ~@12 [x!4]!16 ~@8 [x!4]!24 [~ x ~@2]>").gain(0.45)

stack(
  bass, lead_2_sawtooth, lead_2_sawtooth_soft, electric_guitar_jazz, orchestral_harp, lead_5_charang, pad_poly,
  electric_guitar_clean, kick, snare, crash, tambourine, ride
)

More by Erasure