Strudelify

No More (I Can't Stand It)

Maxx

KeyD minorTempo139 bpm
0:00/0:00
// No More (I Can't Stand It) — Maxx
// 139 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 7 "CALLIOPE" lead 3 calliope (copy of ch 6 "CALLIOPE" lead 3 calliope, 0.5 beats late)
// note: Full arrangement: all 115 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(139/4)

// 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.

// bass · synth bass 2 · "SYN BASS 2"
const bass = note(`<
  A B C D A B C D A B C D A B C E A B C D A B C ~ A B C D A B C D A B C D A B C D A B C D A B C E A B C D A B C ~ A B C
  D A B C D A B C D A B C D A B C D A B C E ~@8 A B C D A B C ~ A B C D A B C E A B C D A B C D F B G
>`.pickRestart({
  A: "d2@2 d2!3 ~ d2!3 ~ d2!3 ~ d2@2", B: "f2@2 f2!3 ~ f2!3 ~ f2!2 f2@2 f2@2", C: "bb1@2 bb1!3 ~ bb1!3 ~ bb1!3 ~ bb1@2",
  D: "c2@2 c2!3 ~ c2!3 ~ c2!2 bb1@2 c2@2", E: "c2@2 c2!3 ~ c2!3 ~@7", F: "d2 ~ d2!3 ~ d2!3 ~ d2!3 ~ d2@2",
  G: "bb1@2 bb1!3 ~ bb1!2 ~@8",
})).s("gm_synth_bass_2").gain(0.45)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note(`<
  A B C D A B C D A B C D A B C E ~@16 A B C D A B C D A B C D A B C E ~@16 A B C D A B C D A B C D A B C E ~@8 A B C D
  A B C ~ A B C D A B C E A B C D A B C D A B F
>`.pickRestart({
  A: "d2!2 d3!2 d2!2 d3!2 d2!2 d3!2 d2!2 d3!2", B: "f2!2 f3!2 f2!2 f3!2 f2!2 f3!2 f2!2 f3!2",
  C: "bb1!2 bb2!2 bb1!2 bb2!2 bb1!2 bb2!2 bb1!2 bb2!2", D: "c2!2 c3!2 c2!2 c3!2 c2!2 c3!2 bb1!2 c3!2",
  E: "c2!2 c3!2 c2!2 c3!2 c2 ~@7", F: "bb1!2 bb2!2 bb1!2 bb2!2 ~@8",
})).s("gm_lead_2_sawtooth").gain(0.35).pan(0.4)

// other · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~@24 A B C ~ A B C D E F G H F@2 G I J K L K L K L ~@9 A B C ~ A B C D E F G H F@2 G I J K L K L K L ~@5 K M@2 L N O@2
  P Q R@2 S ~@7 T E F G H F@2 G I U ~@2
>`.pickRestart({
  A: "d4@2 ~@2 d4@3 ~ d4@3 ~ d4@3 ~", B: "f4@3 ~ f4@2 ~@2 g4@3 ~ g4@3 ~", C: "d4 ~ d4 ~ d4 ~ d4 ~", D: "~@5 f4 d4 ~",
  E: "a4@3 ~@3 d4!2 f4@2 g4@3 ~ a4@2", F: "~@6 d4!2 f4@2 g4@3 ~ a4@2", G: "~@6 d4@2 f4@2 g4@3 ~ bb4@2",
  H: "~ a4 ~ g4 ~ c5 ~ a4", I: "~ a4 ~ g4 ~ g4 ~ f4", J: "d4 ~@3", K: "~@5 g4 ~ g4", L: "f4 d4@2 ~@5",
  M: "f4 d4@2 ~@2 g4 ~ g4", N: "a4@2 bb4 ~ a4 ~ bb4 ~ a4@3 ~ a4@2 bb4 ~",
  O: "[a4@3 ~ a4 ~ bb4 ~ a4@3 ~ g4 ~ g4@9 ~@7 f4@2]/2", P: "g4@2 g4@3 ~ e4@2 c4@4 ~@4",
  Q: "a4@2 a4 ~ a4@2 bb4 ~ a4@3 ~ a4@2 bb4 ~", R: "[a4@3 ~ a4 ~ bb4 ~ a4@3 ~ g4 ~ g4@9 ~@9]/2",
  S: "g4@2 ~ g4@2 ~ g4@3 e4@2 ~ c4@4", T: "~@10 f4 ~ d4@2 ~@2", U: "d4 ~@15",
})).s("gm_epiano2").gain(0.5)

// chords · synth strings 2 · "SYN STR 2"
const synth_strings_2 = note(`<
  ~@16 A B C D A B C ~ A B C D A B C D ~@16 A B C D A B C ~ A B C D A B C D ~@51
>`.pickRestart({
  A: "[d4,f4,a4]", B: "[f4,a4,c5]", C: "[bb3,d4,f4]", D: "[c4,e4,g4]",
})).s("gm_synth_strings_2").gain(0.25)

// other · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~@20 A@3 ~@9 B C D E F G@2 H ~@12 A@3 ~@9 B C D E F G@2 H ~@16 I@3 J I@3 K ~@8 B C D E F G@2 H ~@3
>`.pickRestart({
  A: "f4 e4 f4 d4 f4 e4 f4 d4", B: "a4@2 d4@3 ~ d4@2 a4@2 bb4@2 a4@2 d4@2", C: "~ d4 ~ d4 a4 bb4 a4 d4",
  D: "~@2 d4@2 ~@2 d4 ~ a4@2 bb4@2 a4@2 d4@2", E: "~ a4 ~ g4 ~ c5 ~ a4", F: "~@2 d4@2 ~@2 d4 ~ a4 ~ bb4@2 a4@2 d4 ~",
  G: "~@2 d4@2 ~@2 d4@2 a4 ~ bb4@2 a4@2 d4@2", H: "~ a4 ~ g4 ~ c5 ~ d5", I: "d6!5 a6 d6 g6", J: "d6!4 g6 f6 e6 f6",
  K: "g6 f6 e6 f6 d6 c6 a5 c6",
})).s("gm_synth_strings_1").gain(0.35).pan(0.6)

// other · agogo
const agogo = note(`<
  ~@23
  [ab1 g2 ~ f3 gb2 g2 ~ a1 db2 bb1 ~ ab1 f2 bb1 ~ g1]
  ~@31
  [ab1 g2 ~ f3 gb2 g2 ~ a1 db2 bb1 ~ ab1 f2 bb1 ~ g1]
  ~@59
>`).s("gm_agogo").gain(0.3)

// chords · piano · "A.PIANO 2"
const piano = note("<~@24 A B C D A B C D ~@24 A B C D A B C D ~@16 E F G H E F G H ~@27>".pickRestart({
  A: "~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4]", B: "~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5]",
  C: "~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4]", // Bb
  D: "~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4]", E: "[f3,a3,d4]", F: "[a3,c4,f4]", G: "[d3,f3,bb3]",
  H: "[f3,a3,d4]@3 [e3,g3,c4]@5", // Dm C
})).s("gm_piano").gain(0.17).pan(0.7)

// other · harpsichord · "HARPSICHRD"
const harpsichord = note("<~@80 A B C D A B C D ~@27>".pickRestart({
  A: "d5 f5 a5 d5 f5 a5 d5 f5", B: "f5 a5 c6 f5 a5 c6 f5 a5", C: "bb4 d5 f5 bb4 d5 f5 bb4 f5",
  D: "a5 d5 f5 a5 g5 c5 e5 g5",
})).s("gm_harpsichord").gain(0.35).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~@8 A@7 B A@7 C A@23 B A@7 C A@23 B ~@4 A@3 ~ A@7 ~ A@7 B A@10 D>".pickRestart({
  A: "x!4", B: "x ~@3 x ~@3 x!2 ~ x!2 ~ x!2", C: "x", D: "x!3 ~",
})).gain(0.8)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@17 A ~ A ~ A ~@5 A ~@7 B ~@7 B ~@5 A ~ A ~ A ~@5 A ~@7 B ~@7 B ~@4 C@7 ~@4 B ~@7 B ~@7 B ~@7
>`.pickRestart({
  A: "~@9 x ~@6", B: "~@5 x ~@2", C: "~@9 x!3 ~@2 x ~",
})).gain(0.24)

// drums · clap
const clap = s("cp").struct("<~@23 [~@3 x] ~@31 [~@3 x] ~@59>").gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@87 [~@6 x ~@2 x ~@2 x ~@3] ~@7 [~@6 x ~@2 x ~@2 x ~@3] ~@19>").gain(0.72)

// drums · hihat
const hihat = s("hh").struct("<~@8 A B@14 C B@31 C B@24 D E D E D E D ~ B@7 ~ B@18 F>".pickRestart({
  A: "~ x!3", B: "x!4", C: "x", D: "x!2 ~ x ~@3 x ~@3 x ~@3 x", E: "~ x ~ x ~@3 x ~@3 x ~@3 x", F: "x!3 ~",
})).gain(0.32)

// drums · mid tom
const mid_tom = s("mt").struct("<~@87 [x ~@2 x ~@12] ~@7 [x ~@2 x ~@12] ~@19>").gain(0.72)

// drums · open hat
const open_hat = s("oh").struct("<~@8 A@15 ~ A@31 ~ A@31 ~ A@7 ~ A@18 B>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~@4",
})).gain(0.4)

// drums · tambourine
const tambourine = s("tb").struct("<~@4 A@11 B A@7 ~ A@23 B A@7 ~ A@23 B ~@8 A@7 ~ A@7 B A@10 C>".pickRestart({
  A: "x ~ x ~ x!3 ~ x ~ x!6", B: "x ~ x ~ x!3 ~@9", C: "x ~ x ~ x!3 ~ x ~@7",
})).gain(0.32)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@4 A@11 B A@7 ~ A@23 B A@7 ~ A@23 B ~@8 A@7 ~ A@7 B A@10 B>".pickRestart({
  A: "~ x ~ x ~@3 x ~ x ~@6", B: "~ x ~ x ~@3 x ~@8",
})).gain(0.16)

// drums · shaker
const shaker = s("sh").struct("<~@4 A@11 B ~@4 A@3 ~ A@23 B A@7 ~ A@23 B ~@4 A@3 ~ A@7 ~ A@7 B A@10 C>".pickRestart({
  A: "x!16", B: "x!8 ~@8", C: "x!9 ~@7",
})).gain(0.32)

stack(
  bass, lead_2_sawtooth, epiano2, synth_strings_2, synth_strings_1, agogo, piano, harpsichord, kick, snare, snare_soft,
  clap, low_tom, hihat, mid_tom, open_hat, tambourine, tambourine_soft, shaker
)

More by Maxx