Strudelify
Move This cover art

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: 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 C D C E C D C E C D C E A D C E C D A B C D C E C D C E C D C E A D C E C D A B C D C E C D C E C D C E A D C E C
  D A B C D C E C D C E C D C E A D C E C D A B C D C E C D C E C D C E A D C E C D A B C D C E C D C E C D C E A D C E
  C D A B C D C E C D C E C D C E A D C E C D A B C D C E C D C E C D C E A D C E C D ~
>`.pickRestart({
  A: "[bb2,f3]@2 ~ [bb2,f3]@3 [bb2,f3]@2 [g2,d3]@2 ~ [g2,d3]@3 [eb2,bb2]@2", // Bb5 G5 Eb5
  B: "[f2,c3]@2 ~ [f2,c3]@2 ~ [f2,c3]@2 [f2,c3]@2 [g2,d3]@2 [bb2,f3]@2 [c3,g3]@2", // F5 G5 Bb5 C5
  C: "[bb2,f3]@2 ~ [bb2,f3]@2 ~ [bb2,f3]@2 [g2,d3]@2 ~ [g2,d3]@3 [eb2,bb2]@2", // Bb5 G5 Eb5
  D: "[f2,c3]@2 ~ [f2,c3]@2 ~ [f2,c3] ~ [f2,c3]@2 [g2,d3]@2 [bb2,f3]@2 [g2,d3]@2", // F5 G5 Bb5 G5
  E: "[f2,c3]@2 ~ [f2,c3]@2 ~ [f2,c3] ~ [f2,c3]@2 [g2,d3]@2 [bb2,f3]@2 [c3,g3]@2", // F5 G5 Bb5 C5
})).s("gm_synth_bass_1").gain(0.13)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~@32 A B A C D C A E ~@8 F G F G F H F I F I F J ~@8 A B A C D C A E ~@7 K A B A C A B A C A B A C A B A C F I F J F I
  F J A B A C A B A C F I F J F I F J A B A C A B A C A B A C F I F J F I F J F I F J F I F J ~@9
>`.pickRestart({
  A: "[f4,bb4]@3 [f4,bb4]@2 ~ [f4,bb4]@2 ~@8", B: "[f4,c5]@3 [f4,c5]@2 ~ [f4,c5]@2 ~@2 [f4,d5] ~ [f4,d5] ~ [f4,c5] ~",
  C: "[f4,c5]@2 ~ [f4,c5]@2 ~ [f4,c5]@2 ~@2 [f4,d5] ~ [f4,d5] ~ [f4,c5] ~", // F5 Dm F5
  D: "[f4,bb4]@3 [f4,bb4]@2 ~ [f4,bb4]@2 ~@6 [f4,bb4] ~", // Bb5
  E: "[f4,c5]@2 ~ [f4,c5]@2 ~ [f4,c5]@2 ~@2 [f4,d5] ~ f4@2 ~@2, ~@12 d5 ~@3", // F5 Dm
  F: "~@2 [f4,bb4] ~ [f4,bb4]!2 ~@2 [f4,bb4] ~ [f4,bb4]!2 ~ [f4,bb4]!3", // Bb5
  G: "[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
  H: "[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
  I: "[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
  J: "[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
  K: "~@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 G@2 F ~@12 H B A B H B H I J K@2 F L@2 M@2 ~@8 N O N O N O N O
  N O N O ~@4 E F E F E F E F ~@16 A B A B A B P B ~@4 E F E F E F E Q R@2 S T U@2 V W X@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: "[~@16 f5@7 ~ eb6@8, [c6,f6]@9 ~@7, ~ bb5]/2", H: "[f4,bb4] [bb4,eb5]", I: "[c5,f5]@15 ~", J: "[f5,bb5] [bb5,eb6]",
  K: "[[c6,f6]@15 ~ bb5@8 [bb5,eb6]@8, ~@15 f5@8 ~@9]/2", L: "[[f5,bb5] ~ [c6,f6]@2, ~@8 [bb5,eb6]@11 ~@13]/2",
  M: "[[f5,bb5] ~ [c6,f6]@2, ~@4 [bb5,eb6]@5 ~@7]/2", N: "bb4 f4", O: "c5", P: "f4@8 eb5@7 ~, bb4", Q: "[c6,f6]@15 ~",
  R: "[bb4@31 ~]/2", S: "bb4@3 g4", T: "f4@3 f4 g4 bb4 g4 f4", U: "[bb4@24 c5@3 d5@3 c5@2]/2", V: "bb4 g4, ~@8 f4 ~@7",
  W: "f4@15 ~", X: "[~ bb5@3, [f4,bb4]@35 ~@93]/8",
})).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