Strudelify
Move This cover art

1989 · Pump Up the Jam

Move This

Technotronic

KeyB♭ majorTempo121 bpm
0:00/0:00
// Move This — Technotronic
// 121 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 161 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(121/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, A@4 for four bars: edit a riff to change every repeat.

// other · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note(`<
  ~@24 A B A C A B A C ~@8 A B A C A B A C A B A C ~@8 A B A C A B A C A B A C A B A C ~@8 A B A C A B A C A B A C A B A
  C A B A C A B A C ~@16 A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C ~
>`.pickRestart({
  A: "~@2 f4 ~ g4 bb4 ~@4 f4 ~ g4 bb4 ~@2", B: "~@2 f4 ~ g4 bb4 ~@2 [f4,c5]@2 ~ [f4,d5]@2 ~ [f4,c5] ~",
  C: "~@2 f4 ~ g4 bb4 ~ [f4,c5]@2 ~ [f4,d5] ~ [f4,c5] ~@3", // F5 Dm F5
})).s("gm_synth_brass_1").gain(0.17).pan(0.6)

// bass · synth bass 1 · "SYNBASS 1"
const bass = note(`<
  A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A
  C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B
  A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C ~
>`.pickRestart({
  A: "[bb2,f3]@2 ~ [bb2,f3]@2 ~ [bb2,f3]@2 [g2,d3]@2 ~ [g2,d3]@3 [eb2,bb2]@2", // Bb5 G5 Eb5
  B: "[f2,c3]@2 ~ [f2,c3]@2 ~ [f2,c3] ~ [f2,c3]@2 [g2,d3]@2 [bb2,f3]@2 [c3,g3]@2", // F5 G5 Bb5 C5
  C: "[f2,c3]@2 ~ [f2,c3]@2 ~ [f2,c3] ~ [f2,c3]@2 [g2,d3]@2 [bb2,f3]@2 [g2,d3]@2", // F5 G5 Bb5 G5
})).s("gm_synth_bass_1").gain(0.13)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~@32 A B A B C B A D ~@8 E F E F E G E H E H E I ~@8 A B A B C B A D ~@7 J A B A B A B A B A B A B A B A B E H E I E H
  E I A B A B A B A B E H E I E H E I A B A B A B A B A B A B E H E I E H E I E H E I E H E I ~@9
>`.pickRestart({
  A: "[f4,bb4]@3 [f4,bb4]@2 ~ [f4,bb4]@2 ~@8", B: "[f4,c5]@2 ~ [f4,c5]@2 ~ [f4,c5]@2 ~@2 [f4,d5] ~ [f4,d5] ~ [f4,c5] ~",
  C: "[f4,bb4]@3 [f4,bb4]@2 ~ [f4,bb4]@2 ~@6 [f4,bb4] ~", // Bb5
  D: "[f4,c5]@2 ~ [f4,c5]@2 ~ [f4,c5]@2 ~@2 [f4,d5] ~ f4@2 ~@2, ~@12 d5 ~@3", // F5 Dm
  E: "~@2 [f4,bb4] ~ [f4,bb4]!2 ~@2 [f4,bb4] ~ [f4,bb4]!2 ~ [f4,bb4]!3", // Bb5
  F: "[f4,bb4,c5] ~ [f4,bb4,c5] ~ [f4,bb4,c5]!2 ~ [f4,bb4,c5] [f4,bb4,d5]@2 ~ [f4,bb4,d5]@2 ~ [f4,bb4,c5] ~", // Fsus4 Bb Fsus4
  G: "[f4,bb4,c5] ~ [f4,bb4,c5] ~ [f4,bb4,c5]!2 ~ [f4,bb4,c5] [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,c5]@2 ~@2", // Fsus4 Bb Fsus4
  H: "[f4,bb4,c5] ~ [f4,bb4,c5] ~ [f4,bb4,c5]!2 ~@2 [f4,bb4,d5]@2 ~ [f4,bb4,d5]@2 ~ [f4,bb4,c5] ~", // Fsus4 Bb Fsus4
  I: "[f4,bb4,c5] ~ [f4,bb4,c5] ~ [f4,bb4,c5]!2 ~@2 [f4,bb4,d5]@2 ~ [f4,bb4,d5]@2 ~ [f4,bb4,c5]@2", // Fsus4 Bb Fsus4
  J: "~@10 [f4,g4,bb4,d5]!2 ~ [f4,g4,bb4,d5]!2 ~", // Gm7
})).s("gm_piano").gain(0.33).pan(0.6)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~@8 A B A B A B A C ~@8 A B A B A B A C D ~@7 E F E F E F E F ~@12 G B A B G B G B H I@2 F J@4 ~@8 K L K L K L K L K L
  K L ~@4 E F E F E F E F ~@16 A B A B A B A B ~@4 E F E F E F E F M@2 N O P@2 Q R S@8 ~
>`.pickRestart({
  A: "f4 eb5, bb4", B: "[c5,f5]", C: "~ bb5, [c5,f5]", D: "bb5@3 ~@13", E: "f5 eb6, bb5", F: "[c6,f6]",
  G: "[f4,bb4] [bb4,eb5]", H: "[f5,bb5] [bb5,eb6]", I: "[[c6,f6]@15 ~ bb5@8 [bb5,eb6]@8, ~@15 f5@8 ~@9]/2",
  J: "[[f5,bb5] ~ [c6,f6]@2, ~@8 [bb5,eb6]@11 ~@13]/2", K: "bb4 f4", L: "c5", M: "[bb4@31 ~]/2", N: "bb4@3 g4",
  O: "f4@3 f4 g4 bb4 g4 f4", P: "[bb4@24 c5@3 d5@3 c5@2]/2", Q: "bb4 g4, ~@8 f4 ~@7", R: "f4@15 ~",
  S: "[~ bb5@3, [f4,bb4]@35 ~@93]/8", // Bb5
})).s("gm_synth_strings_1").gain(0.1).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~@3 A@36 B A@20 C@4 A@12 ~@6 A@30 ~@4 A@16 ~@4 A@12 ~@13>".pickRestart({
  A: "x!4", B: "x!3 ~", C: "x!2",
})).gain(0.42)

// drums · snare
const snare = s("sd").struct(`<
  ~@5 A B C B@3 D B E B F B@3 G B@3 H B@3 I B J B K B@3 G B@3 H B L B@5 M B@2 N O P I B I B Q F R B D B S B G B T B@3 U
  B@3 V W ~@6 X B@3 Y Z D B V B AA B G B I B AB B AC U AD B AE AF AG B U B@2 ~@2 B G B AC B AH B I B K B@3 I B J B K ~@4
  B AC U AD B AE AC AG B AI B@2 ~@2 B G ~@9
>`.pickRestart({
  A: "~@12 x!3 ~", B: "~ x ~ x", C: "~@4 x ~@2 x!3 ~ x!2 ~ x!2", D: "~@4 x ~@2 x!3 ~ x!2 ~ x ~", E: "~@4 x ~@7 x!4",
  F: "~@4 x ~@7 x ~ x!2", G: "~@4 x ~@3 x!2 ~ x!2 ~ x!2", H: "~@4 x ~@3 x!2 ~ x!2 ~@3", I: "~@4 x ~@3 x!2 ~ x!2 ~ x ~",
  J: "~@4 x ~@7 x!2 ~@2", K: "~@4 x ~@3 x!8", L: "~@4 x ~@3 x!2 ~@2 x ~ x!2", M: "~@6 x!10", N: "~@2 x!3 ~@3 x ~@5 x!2",
  O: "x!2 ~ x", P: "~@2 x!6 ~@4 x ~@3", Q: "~@7 x!3 ~ x!5", R: "x ~ x ~@3 x ~ x!2 ~ x!2 ~ x!2",
  S: "x!2 ~ x!2 ~ x ~ x!5 ~ x ~", T: "x!5 ~ x!2 ~ x!2 ~ x ~ x!2", U: "~@4 x ~@5 x!5 ~", V: "x!2 ~ x!3 ~ x!3 ~ x!5",
  W: "x", X: "x!2 ~ x!2 ~ x!10", Y: "~@3 x!3 ~@6 x ~@3", Z: "~@4 x ~@6 x!3 ~@2", AA: "~@4 x ~@6 x!2 ~ x!2",
  AB: "~@4 x!2 ~ x!2 ~ x ~ x ~ x!2", AC: "~@4 x ~@6 x!2 ~ x ~", AD: "~@4 x ~@2 x!2 ~ x ~ x ~ x ~",
  AE: "~@3 x!2 ~@7 x ~ x ~", AF: "~@4 x ~@6 x!2 ~@3", AG: "~@3 x!2 ~ x ~ x!2 ~ x!2 ~ x ~",
  AH: "~@3 x!2 ~@3 x!2 ~ x!2 ~ x ~", AI: "~@4 x ~@5 x!2 ~ x!2 ~",
})).gain(0.38)

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

// drums · hihat
const hihat = s("hh").struct("<A@15 B A@23 B A@36 ~@4 A@52 ~@4 A@16 ~@9>".pickRestart({
  A: "x!2 ~ x!3 ~ x!3 ~ x!3 ~ x", B: "x!2 ~ x!3 ~ x!2 ~@7",
})).gain(0.25)

// drums · open hat
const open_hat = s("oh").struct("<A@15 B A@23 B A@36 ~@4 A@52 ~@4 A@16 ~@9>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~@4",
})).gain(0.25)

// drums · ride bell
const ride_bell = s("rd").struct("<~@4 A@2 B@9 C B@23 C B@36 ~@8 B@76 D>".pickRestart({
  A: "x ~ x ~ x!4 ~ x!2 ~ x!4", B: "x ~ x ~ x ~@2 x ~ x!2 ~ x ~ x!2", C: "x ~ x ~ x ~@2 x ~@8", D: "x!13 ~@3",
})).gain(0.29)

stack(synth_brass_1, bass, piano, synth_strings_1, kick, snare, clap, hihat, open_hat, ride_bell)

More by Technotronic