Strudelify

We Like to Party

Vengaboys

KeyA♭ majorTempo136 bpm
0:00/0:00
// We Like to Party — Vengaboys
// 136 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 14 lead 1 square (copy of ch 13 pizzicato strings)
// note: Full arrangement: all 126 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(136/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 · percussive organ
const percussive_organ = note(`<
  ~@17 A B C D A E C F A E C F A E C G A E C F A E C ~ A B C D A E C F A B C D A E C F A H A E A E C F A E C ~ A B C D A
  E C F A B C D A E C F ~@16 A B C D A E C F A B C D A E C F A B C D A E C ~@2
>`.pickRestart({
  A: "~ ab2 ~ ab2 ~ ab2 ~ ab2", B: "~ ab2 ~ ab2 ~ ab2 ~ db3", C: "~ eb3 ~ eb3 ~ eb3 ~ eb3",
  D: "~ eb3 ~ eb3 ~ eb3 ~ db3", E: "~ ab2 ~ ab2 ~ db3 ~ db3", F: "~ eb3 ~ eb3 ~ db3 ~ db3", G: "~ eb3 ~ eb3 ~ db3 ~@2",
  H: "~@2 ab2@2 ~@2 ab2@2 ~@2 db3@3 ~ db3@2",
})).s("gm_percussive_organ").gain(0.8)

// other · timpani
const timpani = note("<~@100 A B ~@14 A B ~@6 A B>".pickRestart({
  A: "~@8 ab2!8", B: "ab2 ~@15",
})).s("gm_timpani").gain(0.23)

// other · timpani · soft notes
const timpani_soft = note("<~@100 [~@5 ab2!3 ~@8] ~@15 [~@5 ab2!3 ~@8] ~@7 [~@5 ab2!3 ~@8] ~>")
  .s("gm_timpani").gain(0.12)

// other · string ensemble 1
const string_ensemble_1 = note("<~@117 A@2 B@2 A@2 C ~@2>".pickRestart({
  A: "ab6/2", B: "eb6/2", C: "eb6",
})).s("gm_string_ensemble_1").gain(0.15)

// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@117 A@2 B@2 A@2 C ~@2>".pickRestart({
  A: "ab5/2", B: "eb5/2", C: "eb5",
})).s("gm_string_ensemble_1").gain(0.1)

// chords · shanai
const shanai = note("<~ A ~@3 B@2 ~@2 A ~@4 C@2 ~@69 A ~ D@2 ~@6 E@2 ~ F@2 ~@26>".pickRestart({
  A: "[ab3,c4]@3 ~", B: "[[ab3,c4]@12 ~@3 [ab3,c4]@12 ~@5]/2", C: "[~@5 [ab3,c4]@2 [ab3,c4]@2 ~@7]/2",
  D: "[~@16 c4@3 ~ c4@10 ~@2, ~@15 ab3@3 ~ ab3@11 ~@2]/2", E: "[~@15 [ab3,c4]@9 ~@8]/2",
  F: "[~@12 c4@9 ~@11, ~@11 ab3@9 ~@12]/2",
})).s("gm_shanai").gain(0.72)

// chords · synth bass 2 · Ab Ab5 Bb5 G Ab Ab5 Bb5 G …
const synth_bass_2 = note(`<
  ~
  [[ab2,c4] ~ [ab2,c4] ~ [eb2,ab3]@2 [f2,bb3] [g2,b3] [ab2,c4] ~ [ab2,c4] ~ [eb2,ab3]@2 [f2,bb3] [g2,b3]]!15
  [[ab2,c4] ~@15]
  ~@68
  [[ab2,c4] ~ [ab2,c4] ~ [eb2,ab3]@2 [f2,bb3] [g2,b3] [ab2,c4] ~ [ab2,c4] ~ [eb2,ab3]@2 [f2,bb3] [g2,b3]]!15
  [[ab2,c4] ~@15]
  ~@25
>`).s("gm_synth_bass_2").gain(0.48)

// other · woodblock
const woodblock = note("<~@9 A@7 B ~@40 A@4 C@7 D ~@16 A@15 B ~@25>".pickRestart({
  A: "ab5!5 ~ bb4!5 ~ bb4 ~@3", B: "ab5 ~@15", C: "b3 ~@3 b3 ~@3 b3 ~@3 b3 ~@3", D: "b3 ~@15",
})).s("gm_woodblock").gain(0.25)

// chords · lead 2 sawtooth
const lead_2_sawtooth = note(`<
  ~@16 A B C D E B C D F ~@15 A B C D E B C D E B C D E B C D F ~@11 A B C D E B C D E B C D E B C D F ~@15 A B C D E B
  C D E B C D E B C D E B C D E B C D E G
>`.pickRestart({
  A: "~@6 [eb3,g4] ~ [db3,f4] ~ [eb3,g4] ~ [db3,f4] ~ [eb3,g4] ~", // Eb Db Eb Db Eb
  B: "[ab2,c4]@3 [ab2,c4] ~@2 [eb3,g4] ~ [db3,f4] ~ [eb3,g4] ~ [db3,f4] ~ [eb3,g4] ~", // Ab Eb Db Eb Db Eb
  C: "[ab2,c4]@3 [ab2,c4] ~@2 [c3,eb4] ~ [db3,f4] ~ [c3,eb4] ~ [db3,f4] ~ [c3,eb4] ~", // Ab Cm Db Cm Db Cm
  D: "[eb3,g4]@2 ~ [eb3,g4] ~@2 [c3,eb4] ~ [db3,f4] ~ [db3,f4] ~ [db3,f4] ~ [c3,eb4] ~", // Eb Cm Db Cm
  E: "[eb3,g4]@3 [eb3,g4] ~@2 [eb3,g4] ~ [db3,f4] ~ [eb3,g4] ~ [db3,f4] ~ [eb3,g4] ~", F: "[eb3,g4]@3 [eb3,g4] ~@12",
  G: "[ab2,c4]@3 [ab2,c4] ~@12", // Ab
})).s("gm_lead_2_sawtooth").gain(0.72)

// other · pizzicato strings
const pizzicato_strings = note(`<
  ~@48 A B C D E B C D F ~@19 A B C D E B C D F ~@15 A B C D E B C D E B C D E B C D E B C D E B C D E G
>`.pickRestart({
  A: "~@6 eb5 ~ db5 ~ eb5 ~ db5 ~ eb5 ~", B: "ab4@3 ab4 ~@2 eb5 ~ db5 ~ eb5 ~ db5 ~ eb5 ~",
  C: "ab4@2 ~ ab4 ~@2 c5 ~ db5 ~ c5 ~ db5 ~ c5 ~", D: "eb5@2 ~ eb5 ~@2 c5 ~ db5 ~ db5 ~ db5 ~ c5 ~",
  E: "eb5@3 eb5 ~@2 eb5 ~ db5 ~ eb5 ~ db5 ~ eb5 ~", F: "eb5@3 eb5 ~@12", G: "ab4@3 ab4 ~@12",
})).s("gm_pizzicato_strings").gain(0.41)

// drums · rim
const rim = s("rim").struct(`<
  ~ A B A B A B A B A B A B A B A ~ C@8 D@7 E D@7 ~ C@16 F@4 G@4 C@3 H C@16 A B A B A B A B A B A B A B I ~ D@7 E D@7 E
  D@7 ~@2
>`.pickRestart({
  A: "~@2 x ~@3 x ~@2 x!2 ~@3 x ~", B: "~ x!2 ~@3 x!2 ~ x!2 ~@3 x ~", C: "x ~ x ~ x ~ x!5 ~ x ~@3",
  D: "~@2 x ~@3 x!2 ~ x!2 ~@4 x", E: "~@2 x ~@3 x!2 ~ x!2 ~@5", F: "~@2 x ~@3 x ~@3 x ~@4 x", G: "x!4", H: "x",
  I: "~ x ~ x ~@4",
})).gain(0.48)

// drums · clap
const clap = s("cp").struct(`<
  ~@13 A@3 ~ A@7 ~ A@15 ~ A@3 B A@3 B A@3 B A@3 B A B A B ~@8 A@3 B A@3 B A@3 B A@4 ~@8 A@3 B A@3 ~ A@3 B A@3 B A@3 B
  A@3 B A@3 B A@3 ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!2 ~",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  A B C B C B C B C B@5 C B ~ B@7 ~ B@7 D B@7 ~ B@7 ~ B@7 ~ B@3 D ~@4 A@3 ~ B@15 ~ B C B C B C B C B C B C B C B ~ B@7 ~
  B@7 ~ B@7 ~@2
>`.pickRestart({
  A: "x!4", B: "~ x ~ x ~ x ~ x", C: "~ x!2 ~@3 x ~@2 x!2 ~@3 x ~", D: "~ x ~ x ~ x ~@2",
})).gain(0.72)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~ A B A B A B A B A C A C A B A ~@69 A B A B A B A B A B A B A B A ~@26
>`.pickRestart({
  A: "~@9 x ~@6", B: "~@7 x ~@8", C: "~ x ~@5 x ~ x ~@6",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@97 [x ~ x ~ x!5 ~ x ~ x!4]!3 x ~@25>").gain(0.56)

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

// drums · ride
const ride = s("rd").struct(`<
  ~ A ~@7 A ~@6 A B@7 A B@15 A B@7 A B@7 C B@3 A B@3 D B@3 A B@15 C A ~@7 A ~@6 A B@7 C B@7 C B@7 A@2
>`.pickRestart({
  A: "x", B: "x!4", C: "x ~ x ~ x!2 ~@2", D: "x!2 ~@2",
})).gain(0.8)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@77 [x!4]!7 x ~@32 [x!4]!7 x ~>").gain(0.48)

// drums · triangle
const triangle = s("triangles:35").struct("<~@89 A B@3 A B@3 A B@2 C ~@25>".pickRestart({
  A: "~@4 x!5 ~@3 x!4", B: "x ~@3 x!5 ~@3 x!4", C: "x",
})).gain(3.48)

stack(
  percussive_organ, timpani, timpani_soft, string_ensemble_1, string_ensemble_1_soft, shanai, synth_bass_2, woodblock,
  lead_2_sawtooth, pizzicato_strings, rim, clap, hihat, hihat_soft, open_hat, crash, ride, ride_soft, triangle
)

More by Vengaboys