Strudelify

I Don't Wanna Dance

Eddy Grant

KeyF♯ majorTempo124 bpm
0:00/0:00
// I Don't Wanna Dance — Eddy Grant
// 124 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 108 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(124/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 · piano · "Gesang"
const piano = note(`<
  ~ A B C@2 D E F@3 G@2 H ~ I J K A B C@2 D E L@3 B C@2 D E M@3 ~@7 A B C@2 D E F@3 G@2 H ~ I J K N G@2 H ~ I J K A B
  C@2 D E L@3 B C@2 D E M@3 O@2 P Q R S T U O@2 P Q R S T V B C@2 D E M@3 ~@2
>`.pickRestart({
  A: "~@4 d#5 ~ d#5 ~", B: "d#5@3 ~ b4@2 ~ b4@5 ~@4, ~@3 c#5@2 ~@11",
  C: "[b4@2 ~@2 b4@2 ~@2 c#5@2 d#5@4 f#5@4 e5 d#5 c#5@8 ~@3 a#4, ~@7 b4@2 ~@23]/2",
  D: "a#4 ~ c#5 d#5 ~ c#5@2 d#5, ~@3 b4@2 ~@11", E: "~ g#4 ~ g#4@3 ~@2",
  F: "[~@6 b4 b4@3 c#5 b4@2 ~ d#5@6 ~@2 b4 b4@3 ~ b4@2 ~ f#4@6 ~@11 f#4, ~@13 c#5 ~@10]/3",
  G: "[f#4@2 ~ f#4 f#4@3 ~ f#4@4 g#4@2 b4@4 ~@10 b4@2 ~ b4]/2", H: "a#4 ~ a#4 ~ a#4@2 g#4 f#4",
  I: "~@3 g#4 g#4@3 ~ g#4@4 a#4@2 b4@2", J: "~@11 b4 b4@2 ~ b4",
  K: "a#4@2 ~@2 a#4@2 ~@2 a#4@3 ~ f#4@3 ~, ~@11 g#4@2 ~@3",
  L: "[~@6 b4 b4@3 c#5 b4@2 ~ d#5@6 ~@2 b4 b4@3 ~ b4@2 ~ f#4@6 ~@4 d#5@2 ~@2 d#5@2 ~@2, ~@13 c#5 ~@10]/3",
  M: "[~@6 b4 b4@3 c#5 b4@2 ~ d#5@6 ~@2 b4 b4@3 ~ b4@2 ~ f#4@6 ~@12, ~@13 c#5 ~@10]/3", N: "~@15 f#4",
  O: "[d#5,f#5,b5]@2 ~@2 [d#5,f#5,b5]@2 ~@2 [d#5,f#5,b5]@2 ~ [d#5,f#5,b5] [d#5,f#5,b5]@3 ~", // B
  P: "[c#5,f#5,a#5]@2 ~@2 [c#5,f#5,a#5]@2 ~@2 [c#5,f#5,a#5]@2 ~ [c#5,f#5,a#5] [c#5,f#5,a#5]@2 ~@2", // F#
  Q: "[c#5,f#5,a#5]@2 ~@2 [f#5,a#5]@2 ~@2 [c#5,f#5,a#5]@2 ~ [c#5,f#5,a#5] [c#5,f#5,a#5]@3 ~, ~@4 c#5 ~@11", // F#
  R: "[d#5,b5]@2 ~@2 [d#5,g#5,b5]@2 ~@2 [d#5,g#5,b5]@2 ~ [d#5,g#5,b5] [d#5,g#5,b5]@2 ~@2, g#5 ~@15", // G#m
  S: "[d#5,g#5,b5]@2 ~@2 [d#5,g#5,b5]@2 ~@2 [d#5,g#5,b5]@2 ~ [d#5,g#5,b5] [d#5,g#5,b5]@3 ~", // G#m
  T: "[d#5,f#5]@2 ~@2 [d#5,f#5,b5]@2 ~@2 [d#5,f#5,b5]@2 ~ [d#5,f#5,b5] [d#5,f#5,b5]@4, b5 ~@15", // D#m B
  U: "[c#5,f#5,a#5]@11 ~@5", V: "~@4 d#5 ~ d#5 ~, [c#5,f#5,a#5]@11 ~@5",
})).s("gm_piano").gain(0.56)

// chords · acoustic guitar steel · "Nachschl"
const acoustic_guitar_steel = note(`<
  ~ A B@2 C D E F G H B@2 I D E@2 J K B@2 C D E F G H B@2 C D E F G H B@2 I D E@2 J K B@2 C D E F G H B@2 I D E@2 J K
  B@2 I D E@2 J K B@2 C D E F G H B@2 C D E F G H B@2 C D E F G H B@2 C D E F G H B@2 C D E F G H@2 L
>`.pickRestart({
  A: "~@4 [d#4,f#4,b4] ~@7 [d#4,f#4,b4]@2 ~@2", B: "~@2 [d#4,f#4,b4] ~@3 [d#4,f#4,b4] ~",
  C: "~@4 [c#4,f#4,a#4]@2 ~@6 [c#4,f#4,a#4] ~@3", D: "~@2 [c#4,f#4,a#4] ~@3 [c#4,g4,a#4] ~",
  E: "~@2 [d#4,g#4,b4] ~@3 [d#4,g#4,b4] ~", F: "~@4 [d#4,g#4,b4]@2 ~@6 [d#4,g#4,b4] ~@3",
  G: "~@4 [d#4,f#4,b4]@2 ~@6 [d#4,f#4,b4] ~@3", // B
  H: "[c#4,f#4,a#4] ~@3 [c#4,f#4,a#4]@2 ~@2 [c#4,f#4,a#4] ~@3 [c#4,f#4,a#4]@2 ~@2", // F#
  I: "~@2 [c#4,f#4,a#4] ~@3 [c#4,f#4,a#4] ~", // F#
  J: "[c#4,f#4,a#4] ~@3 [c#4,f#4,a#4]@2 ~@2 [c#4,f#4,a#4]@2 ~@2 [c#4,f#4,a#4]@2 ~@2", // F#
  K: "[e4,f#4,a#4] ~ [e4,f#4,a#4] ~ [e4,f#4,a#4] ~ [e4,f#4,a#4] ~", L: "[c#4,f#4,a#4]@3 ~@13",
})).s("gm_acoustic_guitar_steel").gain(0.29).pan(0.6)

// bass · acoustic bass · "Bass"
const bass = note(`<
  ~@2 A ~ B ~ C ~ D E F G H I J K L@2 M N O P Q R S T M S O P Q R S T F G H I J K L@2 M N O P Q R S T F G H I J K L@2 F
  G H I J K L@2 M N O P Q R S T M N O P Q R S T M N O P Q R S T M N O P Q R S T M N O P Q R S T@2 U
>`.pickRestart({
  A: "~@4 b1@3 ~ f#1@3 ~ b1@3 ~", B: "~@4 f#2@2 ~ f#2 c#2@3 ~ f#2@3 ~", C: "~@4 g#2@2 ~@2 d#2@2 ~@2 g#2@3 ~",
  D: "~@4 b1@2 ~ b1 f#1@2 ~@2 b1@2 ~@2", E: "f#1 ~ f#1 ~ f#1 ~ f#1 ~",
  F: "~@4 b1@2 ~@2 f#1@2 ~ f#1 f#1@2 ~ g#1, ~@7 b1@2 ~@7", G: "b1@2 ~@2 b1@2 ~ b1 f#1@4 b1@3 ~",
  H: "~@2 f#2 ~ c#2@2 f#2 ~, ~@7 f#2@2 ~@7", I: "~@4 f#2@2 ~ f#2 f#2@2 ~ f#2 g2@3 ~",
  J: "g#2@2 ~@2 g#2 ~@2 g#2 d#2@4 g#2@2 ~@2", K: "~@4 g#2 ~@2 g#2 d#2@4 g#2@2 ~@2",
  L: "f#1@3 ~ f#1@3 ~ f#1@3 ~ f#1@3 ~", M: "~@4 b1@2 ~ b1 f#1@4 b1@2 ~@2", N: "~@4 b1 ~@3 f#1@6 ~@2, ~@7 b1@2 ~@7",
  O: "~@4 f#2@2 ~ f#2 c#2@4 f#2@2 ~@2", P: "~@4 f#2@2 ~ f#2 c#2@4 f#2@3 ~", Q: "~@2 g#2 ~ d#2@2 g#2 ~, ~@7 g#2@2 ~@7",
  R: "~@4 g#2@2 ~ g#2 d#2@4 g#2@2 ~@2", S: "~@4 b1 ~@3 f#1@4 b1@2 ~@2, ~@7 b1@2 ~@7", T: "f#2@3 ~ f#2@3 ~ f#2@4 f#2@4",
  U: "f#1@3 ~@13",
})).s("gm_acoustic_bass").gain(0.56)

// other · distortion guitar · "Heavy Gi"
const distortion_guitar = note("<~@33 A B@4 C D E F@2 ~@65>".pickRestart({
  A: "~@4 d#4 ~ f#4 ~",
  B: "[g#4@2 ~@2 f#4@3 b4@15 ~@2 g#4@2 ~ a#4 b4@2 ~@2 d#5@2 ~@2 d#5@3 c#5@3 ~@2 d#5@3 c#5@9 ~@8, ~@31 c#5@2 ~@10 c#5@2 ~@19]/4",
  C: "d#5@3 ~ e5@3 ~ e5@3 d#5@2 e5@3, ~@7 d#5@2 ~@7", D: "d#5@10 ~@2 b4@3 ~", E: "c#5@3 b4 ~ a#4 ~@2 g#4@3 a#4@3 g#4@2",
  F: "[f#4@3 ~ f#4@2 ~@2 a#4@2 ~@2 c#5@2 ~ d#5@9 ~@8, ~@7 g#4@2 ~@2 b4@2 ~@19]/2",
})).s("gm_distortion_guitar").gain(0.56).pan(0.7)

// other · string ensemble 1 · "Strings"
const string_ensemble_1 = note("<[~@12 b4 ~ f#4 e4, ~@13 g#4@2 ~] [d#4@3 ~@5] ~@106>")
  .s("gm_string_ensemble_1").gain(0.22)

// chords · synth strings 2 · "Fl„che"
const synth_strings_2 = note(`<
  ~@2 A@4 B@4 C@4 D@2 E@2 A@4 B@4 A@4 B@4 C@4 D@2 E@2 A@4 B@4 F@4 G@2 H@2 F@4 G@2 H@2 A@4 B@4 A@4 B@4 A@4 B@4 A@4 B@4
  A@4 I@3 J@3
>`.pickRestart({
  A: "[[d#4,b4]@4 ~@3 g4, f#4@7 ~, ~ [c#4,a#4]]/4", B: "[g#4@2 ~ [c#4,a#4], [d#4,b4]@3 ~, ~ f#4]/4",
  C: "[[b3,d#4]@4 ~@3 g4, f#4@7 ~, ~ [a#3,c#4]]/4", D: "[b3,d#4,g#4]/2", E: "[a#3,c#4,f#4]/2",
  F: "[d#4 e4 d#4@2 c#4 d#4 ~ g3, f#3@7 ~, b3@31 ~ a#3@32, ~@3 c#4]/4", G: "[g#3,b3,d#4]/2",
  H: "[[f#3,a#3] [a#3,e4], c#4@31 ~]/2", I: "[g#4@2 f#4, [d#4,b4]]/3", J: "[[c#3,f#3,a#3]@17 ~@7]/3",
})).s("gm_synth_strings_2").gain(0.18)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@8 B A@6 B@2 A@7 B A@7 B A@7 B A@7 B A@6 B@2 A@6 B@2 A@7 B A@7 B A@7 B A@7 B A@7 B@2 C
>`.pickRestart({
  A: "x!2", B: "x!4", C: "x",
})).gain(0.39)

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

// drums · clap
const clap = s("cp").struct("<~ [~ x ~ x]!106 x>").gain(0.39)

// drums · low tom
const low_tom = s("lt").struct("<~ x ~@106>").gain(0.39)

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

// drums · mid tom
const mid_tom = s("mt").struct("<[~@14 x!2] ~@107>").gain(0.39)

// drums · high tom
const high_tom = s("ht").struct("<[~@12 x!2 ~@2] ~@107>").gain(0.39)

// drums · crash
const crash = s("cr").struct("<~@10 A ~@23 A ~@5 A ~@9 A ~@7 A ~@31 A ~@17>".pickRestart({
  A: "x",
})).gain(0.45)

stack(
  piano, acoustic_guitar_steel, bass, distortion_guitar, string_ensemble_1, synth_strings_2, kick, snare, clap, low_tom,
  hihat, mid_tom, high_tom, crash
)

More by Eddy Grant