Strudelify
Blue Monday cover art

The Rest of New Order

Blue Monday

New Order

KeyD minorTempo133 bpm
0:00/0:00
// Blue Monday — New Order
// 133 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Electric Guitar 2" named as a guitar, played on electric guitar clean (its lead 1 square patch is not one); ch 2 "Electric Guitar 1" named as a guitar, played on electric guitar clean (its lead 2 sawtooth patch is not one)
// note: Full arrangement: all 252 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(133/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.

// other · electric guitar clean · "Electric Guitar 2"
const electric_guitar_clean = note(`<
  ~@8 A B C D A B C D A B C D A B C D A B C D A B C D ~@180 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 E F G F
>`.pickRestart({
  A: "~@2 f5 ~ f5 ~@3 c5 ~ c5 ~@3 d5 ~", B: "d5 ~@3 d5 ~ d5 ~@3 d5 ~ d5 ~@3", C: "f5 ~ f5 ~@3 g5 ~ c5 ~@3 d5 ~ d5 ~",
  D: "~@2 d5 ~ d5 ~@3 d5 ~ d5 ~@3 d5 ~", E: "f5 ~ f5!3 ~ g5 ~ c5 ~ c5!3 ~ d5 ~", F: "d5 ~@3 d5!3 ~ d5 ~ d5!3 ~ d5 ~",
  G: "f5 ~ f5!3 ~ g5 ~ c5!5 ~ d5 ~",
})).s("gm_electric_guitar_clean").gain(0.45)

// other · electric guitar clean · "Electric Guitar 1"
const electric_guitar_clean_2 = note(`<
  ~@8 A B C D A B C D A B C D A B C D A B C D A B C D ~@180 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 E F E F
>`.pickRestart({
  A: "f5!3 ~@3 g5!2 c5 ~@3 d5!3 ~", B: "~@2 d5!3 ~@3 d5!3 ~@3 d5!2", C: "f5 ~@3 f5 g5!2 ~@3 c5!3 ~@3",
  D: "d5!3 ~@3 d5!3 ~@3 d5!2 ~@2", E: "~ f5 ~ f5 ~@3 g5 c5!2 ~ c5 ~@2 d5!2", F: "d5 ~@3 d5 ~ d5 ~@2 d5 ~@2 d5!3 ~",
})).s("gm_electric_guitar_clean").gain(0.47)

// bass · synth bass 2
const bass = note(`<
  ~@16 A B C B A B C B A B C B A B C B ~@84 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 ~@2 A B ~@4 A B ~@62
>`.pickRestart({
  A: "f2 ~ f2!3 ~ f2!2 c2 ~ c2!3 ~ c2!2", B: "d2 ~ d2!3 ~ d2!3 ~ d2!3 ~ d2!2", C: "g2 ~ g2!3 ~ g2!2 c2 ~ c2!3 ~ c2!2",
})).s("gm_synth_bass_2").gain(0.48)

// bass · synth bass 1
const bass_2 = note(`<
  ~@34 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 ~@83 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
>`.pickRestart({
  A: "f1 f2 f1 f2 c1 c2 c1 c2", B: "d1 d2 d1 d2 d1 d2 d1 d2", C: "g1 g2 g1 g2 c1 c2 c1 c2",
})).s("gm_synth_bass_1").gain(0.48)

// other · acoustic guitar nylon · "Nylon Guitar"
const acoustic_guitar_nylon = note(`<
  ~@42 A B C D A B C D ~@21 E ~ F ~ G ~ H ~ I ~ H ~ J ~@17 K L M N O P M N Q ~@7 E ~ F ~ G ~ H ~ I ~ H ~ J ~@4 R@2 S@2
  T@2 L M N O P M N Q ~@11 K L M N O P M N Q ~@20 U V ~@14 A B C D A B W X ~@4 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
>`.pickRestart({
  A: "d3!8", B: "d3 c3 d3@2", C: "f3!8", D: "f3 g3 d3@2", E: "~ c3!3 d3@4", F: "~ c3!3 a2@4", G: "~ c3 d3 ~ c3@4",
  H: "~ c3 a2@6", I: "~ c3 d3 c3 c3@4", J: "~ d3 c3 ~ c3@4", K: "~@8 d3@4 c3@3 d3", L: "f2@5 ~ f2@2 g2@5 ~ g2@2",
  M: "d3@7 ~ d3@4 c3@3 d3", N: "g2@5 ~ g2@2 c3@5 ~ c3@2", O: "d2@6 d2 ~ d3@4 c3@3 d3", P: "f2@5 ~ f2 ~ g2@5 ~ g2@2",
  Q: "d2", R: "[d3@3 ~ d3@3 ~ c3 ~ c3@3 ~ a2@16 c3@2]/2", S: "[d3@4 a3@3 f3@8 c3]/2",
  T: "[d3@8 a3@3 f3@3 d3@10 d3@4 c3@3 d3]/2", U: "d3@6 g3 ~ [f3,a3]@6 g3@2", V: "[d3,f3,a3]", W: "g3!8",
  X: "g3 f3 d3@2",
})).s("gm_acoustic_guitar_nylon").gain(0.64)

// other · acoustic guitar nylon · "Nylon Guitar" · soft notes
const acoustic_guitar_nylon_2 = note("<~@87 A@2 B ~ C@2 D E@2 F G H@4 ~@150>".pickRestart({
  A: "[~@6 c3@2 d3@19 ~@5]/2", B: "~ c3 a2@5 ~", C: "[~@2 c3@2 d3@4 c3@21 ~@3]/2", D: "~ c3 a2@3 ~@3",
  E: "[a3@3 ~@5 a3@2 ~@2 a3 ~ a3@4 a3@3 ~ a3@3 ~ f3@2 d3@4]/2", F: "c3@2 ~@2 a3@2 ~@2 a3@2 ~ a3!2 ~ a3@2",
  G: "~@2 a3@3 ~ a3@4 g3@2 f3@4", H: "[d3@8 c3@6 a2@8 c3@2 d3@11 ~ d3@2 c3@3 ~ a2@2 f3@2 ~ d3@5 ~@12]/4",
})).s("gm_acoustic_guitar_nylon").gain(0.24)

// other · string ensemble 1 · "Strings"
const string_ensemble_1 = note("<~@61 A@7 B@2 C ~@140 D@7 E@24 F@4 G@6>".pickRestart({
  A: "[~@12 c6@8 b5@3 a5@20 c6@8 b5@4 a5@7 e6@12 a5@4 c6@5 b5@5 a5@21 c6@3]/7", B: "[~@3 b5@4 ~ a5@5 e6@16 ~ c6 b5]/2",
  C: "a5 ~@7", D: "[~@12 c6@8 b5@3 a5@20 c6@8 b5@4 a5@7 e6@13 ~ c6@8 b5@3 a5@20 c6@5]/7",
  E: "[~@3 b5@4 a5@7 e6@13 ~ c6@8 b5@3 a5@20 c6@8 b5@4 a5@7 e6@13 ~ c6@8 b5@3 a5@20 c6@5]/8",
  F: "[~@3 b5@4 a5@7 e6@13 ~ c6@8 b5@3 a5@20 c6@5]/4",
  G: "[~@3 b5@4 a5@7 ~@5 b5@4 a5@7 e6@12 a5@4 c6@5 b5@5 a5@21 c6@6 b5@4 ~ a5@6 ~@2, ~@14 e6@13 ~@69]/6",
})).s("gm_string_ensemble_1").gain(0.36)

// other · orchestra hit
const orchestra_hit = note("<~@73 A@2 ~@27 B@2 C D B@2 C D ~@9 A@2 ~@39 B@2 C D B@2 C D ~@84>".pickRestart({
  A: "[~@2 d5!2 c5!2 d5!2 c5!2 d5!2 c5!2 d5 d5@5 ~@12]/2", B: "[~@2 c5!4 d5!2 c5!2 d5!2 c5!2 d5@6 ~@12]/2",
  C: "~@6 d5!3 ~ c5!3 ~ a4!2", D: "a4 ~@3",
})).s("gm_orchestra_hit").gain(0.48)

// 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 A B A B A B A B C@2 B@80 A C B D B D B D B D B D B D B D B D B D B D B
  D B D B D B D B D B D B D B D B D B D B D B D B D B D B D B D B D B D B D B D B D B D A B@3 A B A B@3 A B@60 ~
>`.pickRestart({
  A: "x ~@3 x ~@3 x!8", B: "x!4", C: "x ~@2 x ~@2 x ~@2 x ~@6", D: "x ~@3 x ~@2 x!2 ~@3 x ~@3",
})).gain(0.64)

// drums · clap
const clap = s("cp").struct(`<
  ~@46 A ~@4 B ~@25 C ~@5 C ~@39 C ~@39 D ~@3 C ~ C ~@3 C ~ C ~ C ~ C ~@2 E F ~@4 E F ~@14 G ~@2 C ~@2 C ~@4 C ~@4 H ~@6
  C ~@3 C ~@4 I J ~@2 I J ~@10
>`.pickRestart({
  A: "~ x ~@2", B: "~@5 x ~@2", C: "~@4 x!2 ~ x!2 ~ x ~ x!4", D: "~@7 x", E: "x!5 ~ x ~ x!5 ~ x!2",
  F: "x!3 ~ x!5 ~ x ~ x ~@3", G: "~@4 x!7 ~@5", H: "~@2 x!3 ~ x!2 ~@2 x!3 ~ x ~", I: "~@4 x ~ x!2 ~ x!4 ~ x!2",
  J: "x!7 ~@9",
})).gain(0.64)

// drums · clap · soft notes
const clap_soft = s("cp").struct(`<
  ~@46 A ~@31 B ~@5 B ~@39 B ~@43 B ~ B ~@3 B ~ B ~ B ~ B ~@23 C ~@3 B ~@2 B ~@4 B ~@11 B ~@3 B ~@4 D ~@3 D ~@10
>`.pickRestart({
  A: "~@5 x!11", B: "x!4 ~@12", C: "~@11 x!5", D: "~@7 x!5 ~@4",
})).gain(0.24)

// drums · snare
const snare = s("sd").struct("<~@16 A@16 ~@2 A@16 B C A@60 ~ D E ~ A@66 B C A@4 B C A@61 ~>".pickRestart({
  A: "~ x ~ x", B: "x!5 ~ x ~ x!5 ~ x!2", C: "x!3 ~ x!5 ~@7", D: "x ~@2 x ~@2 x ~", E: "x!4 ~@4",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@16 A B A B A B A B A B A B A B A B ~@2 C@17 D C@60 E@2 ~@2 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 C D A B A B C D A B C@59 ~
>`.pickRestart({
  A: "x ~ x!3 ~ x!2 ~@2 x!3 ~ x!2", B: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", C: "~ x ~ x ~ x ~ x", D: "~ x ~ x ~ x!3",
  E: "~@2 x!3 ~ x!2 ~@2 x!3 ~ x!2",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@85 [~@8 x ~ x ~ x!4] ~@45 [~@14 x!2] ~@120>").gain(0.64)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@38 A B ~@2 A C D C ~@2 E F ~@7 G ~@3 H ~@3 I ~ J ~ K A C A C ~ L ~ M ~ N ~ O ~@2 P Q ~@3 R ~ S ~ T ~@3 U V W ~ H ~ X
  ~ Y ~@10 A C A C ~@3 T ~@3 Z ~ AA ~ O ~@3 AB ~@3 AC ~@3 AD ~@5 AE ~ AF ~ R ~ AG ~ AH V AI ~@11 AJ ~@7 O ~@16 D C ~@2 A
  C A C ~@2 AK F ~@4 AL C ~@2 A V A C ~@2 AK F ~@4 D C ~@2 A C A C ~@2 AM F ~@4 A C ~@2 D C D C
>`.pickRestart({
  A: "~@4 x!4 ~@4 x!4", B: "x!2 ~@14", C: "x!3 ~@13", D: "~@4 x!5 ~@3 x!4", E: "~@4 x!5 ~@7", F: "x!4 ~@12",
  G: "~@4 x!3 ~ x ~@7", H: "~@2 x!3 ~ x ~ x!3 ~ x!3 ~", I: "~@2 x!2 ~@2 x ~ x!3 ~ x!3 ~", J: "~@8 x ~ x ~ x!3 ~",
  K: "~@2 x!3 ~ x ~ x ~@3 x ~ x ~", L: "~@2 x!7 ~ x ~ x!3 ~", M: "~@2 x!3 ~ x ~ x ~ x ~ x!3 ~",
  N: "~@7 x!2 ~ x ~ x!3 ~", O: "~@10 x!3 ~@3", P: "x!5 ~ x!2 ~@8", Q: "x ~ x!5 ~ x ~@7", R: "~@2 x!3 ~ x ~ x!3 ~ x!4",
  S: "~@2 x!3 ~ x ~ x!3 ~ x ~@3", T: "~@4 x!12", U: "~@2 x ~@3 x ~ x ~ x ~ x!3 ~", V: "x", W: "~@2 x!7 ~ x ~@5",
  X: "~@2 x!3 ~ x ~ x!3 ~ x ~ x ~", Y: "~@2 x ~ x!3 ~ x ~ x ~ x!3 ~", Z: "~@4 x!5 ~ x ~ x!4", AA: "~@4 x!5 ~@5 x!2",
  AB: "~@2 x!2 ~@2 x ~ x!7 ~", AC: "~@8 x!8", AD: "~@2 x!3 ~ x ~ x!6 ~@2", AE: "~@2 x!5 ~ x ~ x ~ x!3 ~",
  AF: "~@10 x!3 ~ x ~", AG: "~@10 x!2 ~@2 x ~", AH: "~@10 x!2 ~ x ~ x", AI: "~@10 x ~ x!4", AJ: "~@2 x!3 ~ x ~ x!2 ~@6",
  AK: "~@4 x!7 ~@5", AL: "~@4 x!6 ~@2 x!4", AM: "~@4 x!6 ~@6",
})).gain(0.48)

// drums · high tom · soft notes
const high_tom_soft = s("ht").struct(`<
  ~@38 A B ~@2 A C D C ~@2 E F ~@17 G ~ H A C A C ~@42 A C A C ~@23 I ~@27 J ~@24 D C ~@2 A C A C ~@2 K F ~@4 L C ~@2 A
  M A C ~@2 K F ~@4 D C ~@2 A C A C ~@2 N F ~@4 A C ~@2 D C D C
>`.pickRestart({
  A: "~@8 x!4 ~@4", B: "~@2 x!6 ~@8", C: "~@3 x!5 ~@8", D: "~@9 x!3 ~@4", E: "~@9 x!7", F: "~@4 x!4 ~@8",
  G: "~@6 x!2 ~@8", H: "~@9 x!2 ~@4 x", I: "~@7 x", J: "~@10 x ~ x ~ x!2", K: "~@11 x!5", L: "~@10 x!2 ~@4",
  M: "~ x!7 ~@8", N: "~@10 x!6",
})).gain(0.16)

// drums · crash
const crash = s("cr").struct(`<
  ~@32 A@2 ~@17 B ~@18 C ~@14 D C ~@15 C ~@3 C ~@5 E@2 ~ A C ~@7 C ~@7 C ~@7 C ~@19 C ~@10 B ~@11 B ~@5 B ~@62
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~@2 x ~@6", B: "~@3 x", C: "x", D: "~ x", E: "~ x ~ x",
})).gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct("<~@51 [~@7 x] ~@131 [~@7 x] ~@5 [~@7 x] ~@62>").gain(0.64)

stack(
  electric_guitar_clean, electric_guitar_clean_2, bass, bass_2, acoustic_guitar_nylon, acoustic_guitar_nylon_2,
  string_ensemble_1, orchestra_hit, kick, clap, clap_soft, snare, hihat, mid_tom, high_tom, high_tom_soft, crash,
  tambourine
)

More by New Order