Strudelify
Let the Beat Control Your Body cover art

No Limits

Let the Beat Control Your Body

2 Unlimited

KeyG♯ minorTempo142 bpm
0:00/0:00
// Let the Beat Control Your Body — 2 Unlimited
// 142 bpm, 4/4, key G# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 129 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(142/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.

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~@14 A B C D A B C D ~@10 A B C D A B C D ~@16 A B C D A B C D ~@27 A B C D A B C D ~@24 A B C D ~@2
>`.pickRestart({
  A: "[g#3,g#4,d#5,g#5]@2 ~@2 [g#3,g#4,d#5,g#5]@2 ~@2 [g#3,g#4,d#5,g#5] ~ [g#3,g#4,d#5,g#5]@2 ~@2 [c#3,c#4,g#4,c#5]@2", // G#5 C#5
  B: "~ [c#3,c#4,g#4,c#5] ~ [f#3,f#4,c#5,f#5] ~ [f#3,f#4,c#5,f#5] [d#3,d#4,a#4,d#5] [f#3,f#4,c#5,f#5]", // C#5 F#5 D#5 F#5
  C: "[g#3,g#4,d#5,g#5]@2 ~@2 [g#3,g#4,d#5,g#5]@2 ~@2 [g#3,g#4,d#5,g#5] ~ [g#3,g#4,d#5,g#5]@2 ~@2 [c#4,c#5,g#5,c#6]@2", // G#5 C#5
  D: "~ [c#4,c#5,g#5,c#6] ~ [d#4,d#5,a#5,d#6] ~ [d#4,d#5,a#5,d#6] [c#4,c#5,g#5,c#6] [d#4,d#5,a#5,d#6]", // C#5 D#5 C#5 D#5
})).s("gm_rock_organ").gain(0.48)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@14 A B A C A B A C ~@2 A B A C A B A C A B A C A B A C A@3 D A@3 D A@3 D A@3 D ~@4 A B A C ~@2 A B A C A B A C A@3 D
  A@3 D ~@13 A B A C A@3 D A@3 D ~@8 A B A C A B A C A B A C ~ E
>`.pickRestart({
  A: "g#1 g#2 g#1 g#2 g#1 g#2 g#1 g#2", B: "c#1 c#2 c#1 c#2 f#1 f#2 f#1 f#2", C: "c#2 c#3 c#2 c#3 d#2 d#3 d#2 d#3",
  D: "b1 b2 b1 b2 c#2 c#3 c#2 c#3", E: "g#1@3 ~@13",
})).s("gm_electric_bass_finger").gain(0.3)

// other · clavinet
const clavinet = note(`<
  ~@2 A B C D A B C D A B C D ~@34 A B C D A B C D ~@18 A B C D A B C D ~@25 A B C D A B C D ~@14
>`.pickRestart({
  A: "g#2@2 ~@2 g#2@2 ~@2 g#2 ~ g#2@3 ~ g#2@2", B: "~@2 g#2@2 ~@2 g#2@2 ~@2 g#2 ~ g#2@2 f#2 ~",
  C: "g#2@2 ~@2 g#2@2 ~@2 g#2 ~ g#2@3 ~ b2@2", D: "~ b2 ~ c#3 ~ c#3 b2 c#3",
})).s("gm_clavinet").gain(0.37).pan(0.3)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note("<~@24 A B A C A B A C ~@34 A B A C A B A C ~@41 A B A C A B A C ~@6>".pickRestart({
  A: "[b3,d#4,g#4]", B: "[g#3,f4] [a#3,f#4], c#4", C: "[g#3,c#4,f4] [a#3,d#4,f#4]",
})).s("gm_synth_strings_1").gain(0.4)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@82 A B C D A B C E@2 ~@38>".pickRestart({
  A: "[g#4,c#5,e5] ~ [g#4,c#5,e5] ~ [g#4,c#5,e5] ~ [g#4,c#5,e5] ~, [e3,e4] [c#3,c#4]@3", // C#m E C#
  B: "[g#4,b4,d#5] ~ [g#4,b4,d#5] ~ [g#4,b4,d#5] ~ [g#4,b4,d#5] ~, [d#3,d#4] [b2,b3]@3", // G#m D# B
  C: "[f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~, [c#3,c#4] [a#2,a#3]@3", // F# C# A#
  D: "[g#4,b4,d#5] ~ [g#4,b4,d#5] ~ [g#4,b4,d#5] ~ [g#4,b4,d#5] ~, [g#2,g#3]@15 ~", // G#m G#
  E: "[[g#2,g#3,g#4,c5,d#5,g#5]@29 ~@3]/2", // G#
})).s("gm_string_ensemble_1").gain(0.48)

// bass · synth bass 1 · "SYN BASS 1"
const bass_2 = note("<~@24 A B A C A B A C ~@34 A B A C A B A C ~@41 A B A C A B A C ~@6>".pickRestart({
  A: "g#2@2 g#2!4 g#2@2 g#2@2 g#2!4 g#2@2", B: "c#2@2 c#2!4 c#2@2 f#2@2 f#2!4 f#2@2",
  C: "c#3@2 c#3!4 c#3@2 d#3@2 d#3!4 d#3@2",
})).s("gm_synth_bass_1").gain(0.56).pan(0.8)

// other · orchestra hit · "ORCH.HIT"
const orchestra_hit = note("<~@128 [g#4 ~@3]>").s("gm_orchestra_hit").gain(0.72)

// bass · synth brass 1 · "SYNBRASS 1"
const bass_3 = note("<~@6 A ~ A ~ B@3 ~@9 C D ~@40 C D ~@63>".pickRestart({
  A: "g#1 ~@7", B: "~ g#1 ~ g#1 ~ g#1 ~ g#1", C: "g#1@2 ~@2 g#1@2 ~@2 g#1 ~ g#1@2 ~@2 g#1@2",
  D: "~@2 g#1@2 ~@2 g#1@2 ~@2 g#1@2 g#1 ~ g#1@2",
})).s("gm_electric_bass_finger").gain(0.48)

// bass · synth brass 1 · "SYNBRASS 1" · soft notes
const bass_soft = note("<~@10 [g#0 ~ g#0 ~ g#0 ~ g#0 ~]!3 ~@116>").s("gm_electric_bass_finger").gain(0.24)

// drums · kick
const kick = s("bd").struct("<~@6 A B A C D@3 ~ D@45 ~ D@22 ~@9 D@36 ~ A>".pickRestart({
  A: "x", B: "~@7 x", C: "~@10 x ~ x ~ x!2", D: "x!4",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct(`<
  ~@22 A B ~@27 A ~@3 A ~@8 A B ~@11 A ~@2 C A ~@11 C A ~@2 A D ~@14 A D ~@10 A D ~@2
>`.pickRestart({
  A: "x ~ x ~ x!2 ~ x", B: "~ x ~ x ~ x!3", C: "~@7 x", D: "~ x ~ x ~ x ~ x",
})).gain(0.56)

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@6 A@7 ~ A@8 ~@2 B@8 A@24 B@4 A@4 ~@2 B@8 A@8 B@4 A@3 ~@6 A@12 ~@4 A@2 ~@2 B@8 A@4 ~@2
>`.pickRestart({
  A: "x!16", B: "x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~",
})).gain(0.48)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@6 A@7 B A@8 C@2 A@40 C@2 A@23 B ~ A@22 C@2 A@12 B ~>".pickRestart({
  A: "x!4", B: "x", C: "~ x ~ x ~ x ~ x",
})).gain(0.08)

// drums · open hat
const open_hat = s("oh").struct("<~@6 A@7 ~ A@8 B@2 A@40 B@2 A@23 ~@2 A@22 B@2 A@12 ~@2>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "x!4",
})).gain(0.48)

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

stack(
  rock_organ, bass, clavinet, synth_strings_1, string_ensemble_1, bass_2, orchestra_hit, bass_3, bass_soft, kick, snare,
  clap, hihat, hihat_soft, open_hat, crash
)

More by 2 Unlimited