Strudelify

Blue Monday

Orgy

KeyD minorTempo133 bpm
0:00/0:00
// Blue Monday — Orgy
// 133 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 253 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 muted
const electric_guitar_muted = 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_muted").gain(0.45).pan(0)

// other · electric guitar muted
const electric_guitar_muted_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_muted").gain(0.47).pan(1)

// bass · synth bass 1
const bass = note(`<
  ~@16 A B C B A B C B A B C B A B C B ~@2 D E F E D E F E D E F E D E F E D E F E D E F E D E F E D E F E D E F E D E F
  E D E F E D E F E D E F E D E F E D E F E D E F E D E F E D E F E D E F ~@83 D E F E D E F E D E F E D E F E D E F E D
  E F E D E F E D E F E D E F E D E F E D E F E D E F E D E F E D E F E D E F E ~
>`.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",
  D: "f1 f2 f1 f2 c1 c2 c1 c2", E: "d1 d2 d1 d2 d1 d2 d1 d2", F: "g1 g2 g1 g2 c1 c2 c1 c2",
})).s("gm_synth_bass_1").gain(0.58).pan(0.2)

// bass · synth bass 2
const bass_2 = note(`<
  ~@116 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 ~@63
>`.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.58).pan(0.2)

// other · electric guitar clean
const electric_guitar_clean = 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_electric_guitar_clean").gain(0.58).pan(0.8)

// other · electric guitar clean · soft notes
const electric_guitar_clean_2 = note("<~@87 A@2 B ~ C@2 D E@2 F G H@4 ~@151>".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@4 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_electric_guitar_clean").gain(0.22).pan(0.8)

// other · synth strings 1
const synth_strings_1 = note(`<
  ~@53 A@2 B@2 C@2 B@2 C@2 B@2 C@2 B@2 D ~@31 E F G H I J G H K ~@29 E F G H I J G H K ~@11 E F G H I J G H K ~@85
>`.pickRestart({
  A: "[~@3 a5@2 e5@3]/2", B: "[f5@3 a5@2 e5@3]/2", C: "[d5@3 a5@2 e5@3]/2", D: "d5@3 ~", E: "~@8 d4@4 c4@3 d4",
  F: "f3@5 ~ f3@2 g3@5 ~ g3@2", G: "d4@7 ~ d4@4 c4@3 d4", H: "g3@5 ~ g3@2 c4@5 ~ c4@2", I: "d3@6 d3 ~ d4@4 c4@3 d4",
  J: "f3@5 ~ f3 ~ g3@5 ~ g3@2", K: "d3",
})).s("gm_synth_strings_1").gain(0.58).pan(0.7)

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

// other · string ensemble 1
const string_ensemble_1_2 = 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 ~@85>".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_string_ensemble_1").gain(0.63)

// 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 ~@2
>`.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 ~@11
>`.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 ~@11
>`.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 ~@2>".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 ~@2
>`.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 · low tom
const low_tom = s("lt").struct(`<
  ~@42 A B C B ~@2 D E ~@7 F ~@3 G ~@3 H ~ I ~ J K B K B ~ L ~ M ~ N ~ O ~@2 P Q ~@3 R ~ S ~ T ~@3 U V W ~ X ~@151
>`.pickRestart({
  A: "~@12 x!4", B: "x!3 ~@13", C: "~@4 x!5 ~@3 x!4", D: "~@4 x!5 ~@7", E: "x!4 ~@12", F: "~@4 x!3 ~ x ~@7",
  G: "~@2 x!3 ~ x ~ x!3 ~ x!3 ~", H: "~@2 x!2 ~@2 x ~ x!3 ~ x!3 ~", I: "~@8 x ~ x ~ x!3 ~",
  J: "~@2 x!3 ~ x ~ x ~@3 x ~ x ~", K: "~@4 x!4 ~@4 x!4", 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: "~ x ~@6",
})).gain(0.48)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@42 A B A B ~@2 C D ~@17 E ~ F G B G B ~@179>".pickRestart({
  A: "~@9 x!3 ~@4", B: "~@3 x!5 ~@8", C: "~@9 x!7", D: "~@4 x!4 ~@8", E: "~@6 x!2 ~@8", F: "~@9 x!2 ~@4 x",
  G: "~@8 x!4 ~@4",
})).gain(0.16)

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

// 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 ~@63
>`.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] ~@63>").gain(0.64)

// drums · bongos
const bongos = s("bongo:4").struct(`<
  ~@38 A B ~@2 C ~@58 D ~ E ~ F ~@10 A G A G ~@3 H ~@3 I ~ J ~ K ~@3 L ~@3 M ~@3 N ~@5 O ~ P ~ Q ~ R ~ S T U ~@11 V ~@7
  K ~@16 W G ~@2 A G A G ~@2 X Y ~@4 Z G ~@2 A T A G ~@2 X Y ~@4 W G ~@2 A G A G ~@2 AA Y ~@4 A G ~@2 W G W G ~
>`.pickRestart({
  A: "~@4 x!4 ~@4 x!4", B: "x!2 ~@14", C: "~@4 x!4 ~@8", D: "~@3 x!2 ~ x ~ x!3 ~ x!3 ~",
  E: "~@2 x!3 ~ x ~ x!3 ~ x ~ x ~", F: "~@2 x ~ x!3 ~ x ~ x ~ x!3 ~", G: "x!3 ~@13", H: "~@4 x!12",
  I: "~@4 x!5 ~ x ~ x!4", J: "~@4 x!5 ~@5 x!2", K: "~@10 x!3 ~@3", L: "~@2 x!2 ~@2 x ~ x!7 ~", M: "~@8 x!8",
  N: "~@2 x!3 ~ x ~ x!6 ~@2", O: "~@2 x!5 ~ x ~ x ~ x!3 ~", P: "~@10 x!3 ~ x ~", Q: "~@2 x!3 ~ x ~ x!3 ~ x!4",
  R: "~@10 x!2 ~@2 x ~", S: "~@10 x!2 ~ x ~ x", T: "x", U: "~@10 x ~ x!4", V: "~@2 x!3 ~ x ~ x!2 ~@6",
  W: "~@4 x!5 ~@3 x!4", X: "~@4 x!7 ~@5", Y: "x!4 ~@12", Z: "~@4 x!6 ~@2 x!4", AA: "~@4 x!6 ~@6",
})).gain(1.26)

// drums · bongos · soft notes
const bongos_soft = s("bongo:4").struct(`<
  ~@38 A B ~@2 C ~@73 A D A D ~@23 E ~@27 F ~@24 G D ~@2 A D A D ~@2 H I ~@4 J D ~@2 A K A D ~@2 H I ~@4 G D ~@2 A D A D
  ~@2 L I ~@4 A D ~@2 G D G D ~
>`.pickRestart({
  A: "~@8 x!4 ~@4", B: "~@2 x!6 ~@8", C: "~ x", D: "~@3 x!5 ~@8", E: "~@7 x", F: "~@10 x ~ x ~ x!2", G: "~@9 x!3 ~@4",
  H: "~@11 x!5", I: "~@4 x!4 ~@8", J: "~@10 x!2 ~@4", K: "~ x!7 ~@8", L: "~@10 x!6",
})).gain(0.42)

stack(
  electric_guitar_muted, electric_guitar_muted_2, bass, bass_2, electric_guitar_clean, electric_guitar_clean_2,
  synth_strings_1, string_ensemble_1, string_ensemble_1_2, kick, clap, clap_soft, snare, hihat, low_tom, low_tom_soft,
  mid_tom, crash, tambourine, bongos, bongos_soft
)