Strudelify

Party Up

DMX

KeyE♭ minorTempo100 bpm
0:00/0:00
// Party Up — DMX
// 100 bpm, 4/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · pad poly
const pad_poly = note(`<
  A B A C D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E
  F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F
>`.pickRestart({
  A: "[gb3,gb4]@2 ~ [gb3,gb4]@2 ~ [gb3,gb4] ~ [gb3,gb4]@2 ~ [gb3,gb4] ~@3 [gb3,gb4]", // Gb
  B: "[gb3,gb4]@2 ~ [gb3,gb4] [gb3,gb4]@2 ~ [gb3,gb4] [gb3,gb4]@2 ~ [gb3,gb4]!2 ~@2 [gb3,gb4]", // Gb
  C: "[gb3,gb4]@2 ~ [gb3,gb4] [gb3,gb4]@2 ~ [gb3,gb4] [gb3,gb4]@2 ~ [gb3,gb4]!2 ~@3", // Gb
  D: "[gb3,gb4]@2 ~ [gb3,gb4]@2 ~ [gb3,gb4]@2 ~@2 [gb3,gb4] ~ [gb3,gb4]@2 ~@2", // Gb
  E: "[eb3,eb4]@2 ~ [eb3,eb4]@2 ~ [eb3,eb4]@2 ~@2 [eb3,eb4] ~ eb3@2 ~@2, ~@12 eb4 ~@3", // Eb
  F: "[eb3,eb4] ~@2 [eb3,eb4]@2 ~ eb4@2 [db3,db4]@2 [eb3,eb4]@2 [db3,db4]@2 [eb3,eb4]@2, ~@6 eb3 ~@9", // Eb Db Eb Db Eb
})).s("gm_pad_poly").gain(0.38).pan(0.6)

// bass · clavinet
const bass = note(`<
  A B A C D@2 E F D@2 E F G@2 H I D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E
  F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F
>`.pickRestart({
  A: "gb2@2 ~ gb2@2 ~ gb2 ~ gb2@2 ~ gb2 ~@3 gb2", B: "gb2@2 ~ gb2 gb2@2 ~ gb2 gb2@2 ~ gb2!2 ~@2 gb2",
  C: "gb2@2 ~ gb2 gb2@2 ~ gb2 gb2@2 ~ gb2!2 ~@3", D: "gb2@2 ~ gb2@2 ~ gb2@2 ~@2 gb2 ~ gb2@2 ~@2",
  E: "eb2@2 ~ eb2@2 ~ eb2@2 ~@2 eb2 ~ eb2@2 ~@2", F: "eb2 ~@2 eb2@2 ~ eb2 ~ db2@2 eb2@2 db2@2 eb2@2",
  G: "gb1@2 ~@4 gb1@3 ~@7", H: "eb1@3 ~@3 eb1@3 ~@7", I: "eb1@2 ~@4 eb1 ~ db1@2 eb1 ~ db1@2 eb1 ~",
})).s("gm_clavinet").gain(0.41)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@98 [~@3 x ~ x ~@2] [x ~@2 x ~ x ~@2]!5>").gain(0.2)

// drums · snare
const snare = s("sd").struct("<~@4 [~ x ~ x]!8 ~ [~ x ~@2] [~ x ~ x] [~ x ~@2] [~ x ~ x]!83 ~@5>").gain(0.41)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@99 [~ x ~ x]!5>").gain(0.15)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~ [~@3 x ~ x ~@2] ~ [~@3 x ~ x ~@2] ~@95 [~@2 x!6] [x!8]!4>").gain(0.15)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@4 A B A@3 B A@2 ~ C A D A B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3
  B A@3 B A@3 B A@3 B A@3 B A@6 E ~@3
>`.pickRestart({
  A: "x!8", B: "~ x ~ x!5", C: "~ x ~ x!3 ~@2", D: "~ x ~ x!2 ~@3", E: "x!4 ~@4",
})).gain(1.56)

// drums · cabasa · soft notes
const cabasa_soft = s("cabasa:4").struct(`<
  ~@5 A ~@3 A ~@3 A ~ A ~ A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A
  ~@3 A ~@3 A ~@3 A ~@3 A ~@6 B C@3
>`.pickRestart({
  A: "x!2 ~@2", B: "~@4 x!4", C: "x!8",
})).gain(0.78)

// drums · whistle
const whistle = s("ballwhistle:0").struct(`<
  A B A C D@2 ~ E D@2 ~ E D@2 ~ E D@2 ~ E D@2 ~ E D@2 ~ E D@2 ~ E D@2 ~ E D@2 ~ E D@2 ~ E D@2 ~ E D@2 ~ E D@2 ~ E D@2 ~
  E D@2 ~ E D@2 ~ E D@2 ~ E D@2 ~ E D@2 ~ E D@2 ~ E D@2 ~ E D@2 ~ E D@2 ~ E D@2 ~ E D@2 ~ E
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x!6", C: "~@2 x!5 ~", D: "x", E: "~ x",
})).gain(0.6)

stack(pad_poly, bass, kick, kick_soft, snare, snare_soft, hihat, hihat_soft, cabasa, cabasa_soft, whistle)

More by DMX