Strudelify

Dance Mix 1

Michael Jackson

KeyC majorTempo110 bpm
0:00/0:00
// Dance Mix 1 — Jackson Michael
// 110 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 62 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 24, guitar program 25.
setcpm(110/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 · acoustic guitar nylon
const acoustic_guitar_nylon = note("<~@17 [g5 ~@15] ~@17 [g5 ~@15] ~@26>").s("gm_acoustic_guitar_nylon").gain(0.03)

// bass · acoustic bass
const bass = note(`<
  ~ A B C D E D F G H D I J K D E J L D E D I D E D F G H D M J N D E J L D E D I O G E D I G P D Q R E D K S E@2 T U V
  W@2 ~
>`.pickRestart({
  A: "c2@15 ~", B: "c2@7 ~ c2@7 ~", C: "c2@3 ~ c2@3 ~ c2@2 g1@2 a1@2 b1@2", D: "c2@3 ~ g1@3 ~ c2@3 ~ g1@3 ~",
  E: "c2@3 ~ g1@4 c2@3 ~ c2 ~ g1 ~", F: "c2@4 g1@4 c2@3 ~ c2@2 g1@2", G: "c2@4 g1@3 ~ c2@3 ~ g1@3 ~",
  H: "c2@3 ~ g1@4 c2@3 ~ g1 ~ g1 ~", I: "c2@4 g1@3 ~ c2@3 ~ c2@2 g1@2", J: "f2@3 ~ c2@3 ~ f2@3 ~ c2@3 ~",
  K: "f2@4 c2@4 f2@3 ~ a2@2 c2@2", L: "g2@3 ~ d2@4 g2@3 ~ g2@2 d2@2", M: "c2@4 g1@3 ~ c2@2 a#1@2 g1@2 e1@2",
  N: "f2@4 c2@4 f2@3 ~ a2@2 c2 ~", O: "c2@3 ~ g1@4 c2@3 ~ g1@4", P: "c2@3 ~ g1@4 c2@3 ~ a#1 ~ c2 ~",
  Q: "f2@3 ~ c2@4 f2@3 ~ a2@2 c2@2", R: "f2@4 c2@3 ~ f2@3 ~ c2@3 ~", S: "g2@4 d2@3 ~ g2@3 ~ d2@3 ~",
  T: "f1@2 a1 c2 c2@2 e1 f1", U: "g1@4 d2@4 c2 ~ c2@2 d2@2 e2@2", V: "f2@2 f1@2 c2@2 e1 f1",
  W: "[g1@4 d2@3 ~ c2@2 g1@2 c2@20]/2",
})).s("gm_acoustic_bass").gain(0.25)

// chords · electric guitar clean
const electric_guitar_clean = note("<A B@3 C@4 D E F G@8 C@7 D E F G@8 C@9 F@2 H@8 I J@2 K@2 ~>".pickRestart({
  A: "e4 [g3,c4] [c3,g3,c4,e4] [c3,g3,c4] [c3,g3,c4,e4]!12", // C5 C C5 C
  B: "[c3,g3,c4,e4] [g3,c4] [c3,g3,c4,e4] [c3,g3,c4] [c3,g3,c4,e4]!12", // C C5 C C5 C
  C: "[g3,c4,e4] [g3,c4] [g3,c4,e4] [g3,c4] [g3,c4,e4]!12", // C C5 C C5 C
  D: "[g3,c4,e4] [g3,c4] [g3,c4,e4] [g3,c4] [g3,c4,e4]!3 [g3,g4,c5] [g3,c4,e4,g4,c5] [g3,c4,e4]!6 [g3,g4,c5]", // C C5 C C5 C C5 C C5
  E: "[g3,c4,e4,g4,c5] [g3,c4] [g3,c4,e4] [g3,c4] [g3,c4,e4]!4 [g3,c4,e4,g4,c5] [g3,c4,e4]!3 [g3,c4,e4,g4,c5] [g3,c4,e4]!3", // C C5 C C5 C
  F: "[g3,a#3,c4,e4] [g3,a#3,c4] [g3,a#3,c4,e4] [g3,a#3,c4] [g3,a#3,c4,e4]!12", // C7
  G: "[[g3,a#3,c4,e4] [g3,a#3,c4] [g3,a#3,c4,e4] [g3,a#3,c4] [g3,a#3,c4,e4]!11 [c4,e4] [f3,c4,f4,a4] [c4,f4] [f3,c4,f4,a4] [f3,c4,f4] [f3,c4,f4,a4]!12 [f3,c4,f4,a4] [c4,f4] [f3,c4,f4,a4] [f3,c4,f4] [f3,c4,f4,a4]!11 [c3,c4] [c3,g3,c4] [g3,c4] [g3,c4,e4] [g3,c4] [g3,c4,e4]!12 [g3,c4,e4] [g3,c4] [g3,c4,e4] [g3,c4] [g3,c4,e4]!11 [c4,e4] [f3,c4,f4,a4] [c4,f4] [f3,c4,f4,a4] [f3,c4,f4] [f3,c4,f4,a4]!12 [f3,d4,f4,b4] [d4,f4] [f3,d4,f4,b4] [f3,d4,f4] [f3,d4,f4,b4]!12 [f3,g3,c4,d4,e4,f4,b4] [g3,c4] [g3,c4,e4] [g3,c4] [g3,c4,e4]!12, ~@15 a#3@113, ~@15 g3@33 ~@31 g3@33 ~@16]/8", // C7 C F F5 F F5 F F5 …
  H: "[[f3,c4,e4,f4,a4] [c4,f4] [f3,c4,f4,a4] [f3,c4,f4] [f3,c4,f4,a4]!12 [f3,c4,f4,a4] [c4,f4] [f3,c4,f4,a4] [f3,c4,f4] [f3,c4,f4,a4]!9 [c3,f3,c4,f4,a4] [c3,c4]!2 [g3,c4,e4] [g3,c4] [g3,c4,e4] [g3,c4] [g3,c4,e4]!12 [g3,c4,e4] [g3,c4] [g3,c4,e4] [g3,c4] [g3,c4,e4]!11 [c4,e4] [c3,f3,c4,f4,a4] [c4,f4] [f3,c4,f4,a4] [f3,c4,f4] [f3,c4,f4,a4]!12 [f3,d4,f4,b4] [d4,f4] [f3,d4,f4,b4] [f3,d4,f4] [f3,d4,f4,b4]!11 [d3,d4] [g3,c4,e4] [g3,c4] [g3,c4,e4] [g3,c4] [g3,c4,e4]!12 [g3,c4,e4] [g3,c4] [g3,c4,e4] [g3,c4] [g3,c4,e4]!12, a#3, g3@32 ~@31 g3@33 ~@32]/8", // Fmaj7 F5 F F5 F F5 F F5 …
  I: "[f2,a3,c4,f4] [a3,c4] [f3,a3,c4,f4] [f3,a3,c4] [f2,a3,c4,f4] [f3,a3,c4,f4]!3 [c3,g3,c4,e4]!8", // F Am F C
  J: "[[g2,d3,g3,b3] [d3,g3] [g2,d3,g3,b3] [g2,d3,g3] [g2,d3,g3,b3]!4 [c3,g3,c4,e4]!7 [c3,c4,e4] [f2,a3,c4,f4] [a3,c4] [f3,a3,c4,f4] [f3,a3,c4] [f2,a3,c4,f4] [f3,a3,c4,f4]!3 [c3,g3,c4,e4]!8, ~@15 g3@9 ~@8]/2", // G G5 G G5 G C F Am …
  K: "[[g2,d3,g3,b3] [d3,g3] [g2,d3,g3,b3] [g2,d3,g3] [g2,d3,g3,b3]!4 [c3,g3,c4,e4] [c3,c4,e4] [c3,a3,c4,f4] ~ [c3,g3,c4,e4]@20, ~@9 g3@3 ~@20]/2", // G G5 G G5 G C F C
})).s("gm_electric_guitar_clean").gain(0.13).pan(0.1)

// chords · fiddle
const fiddle = note("<A@2 B@2 C ~@16 D C ~@16 D E C F D E C F D G H F I J K F@2 L M L N@2 ~>".pickRestart({
  A: "[g4 ~ g4!3 ~ g4!3 ~ g4!3 ~ g4!2 g4 ~ g4!3 ~ g4!2 d5@3 c5 a4 g4 e4 d4, c5@23 ~@9]/2",
  B: "[g4 ~ g4!2 g4@2 g4!3 ~ g4!3 ~ g4!2 g4 ~ g4!3 ~ g4!2 d5@3 c5 a4 g4 e4 d4, c5@23 ~@9]/2",
  C: "[e4,g4]@2 [e4,g4]!3 ~ [e4,g4]!3 ~ [e4,g4]!2 g4@2 [e4,g4]!2, ~@12 e4 ~@3", // Em
  D: "[e4,g4]@2 [e4,g4]!3 ~ [e4,g4]!3 ~ [e4,g4]!3 ~ [e4,g4]!2", // Em
  E: "[e4,g4] ~ [e4,g4]!3 ~ [e4,g4]!3 ~ [e4,g4]!3 ~ [e4,g4]!2", // Em
  F: "g4@2 [e4,g4]!2 g4@2 [e4,g4]!2 g4@2 [e4,g4]!2 [e4,g4]@2 [e4,g4]!2, e4 ~@3 e4 ~@3 e4 ~@7", // Em
  G: "[e4,g4,a4,c5] ~ [a4,c5]!3 ~ [a4,c5]!2 c5@2 [a4,c5]!3 ~ [a4,c5]!2, ~@8 a4 ~@7", // Am7 Am
  H: "[a4,c5]@2 [a4,c5]!3 ~ [a4,c5]!3 ~ [a4,c5]!3 ~@3", // Am
  I: "[e4,g4]@2 [e4,g4]!3 ~ [e4,g4]!3 ~ [e4,g4]!2 [e4,g4]@2 [e4,g4]!2", // Em
  J: "[a4,c5]@2 [a4,c5]!3 ~ [a4,c5]!3 ~ [a4,c5]!3 ~ [a4,c5]!2", // Am
  K: "[b4,d5]@2 [b4,d5]!3 ~ [b4,d5]!3 ~ [b4,d5]!2 d5@2 [b4,d5] ~, ~@12 b4 ~@3", // Bm
  L: "a4@2 a4 b4 c5 b4 c5 a4 g4@2 c5 d5 e5 d5 c5 e5", M: "d5 c5 b4 a4 g4 f4 e4 d4 e4 d4 e4 f4 g4 c4 f4 g4",
  N: "[d5 c5 b4 a4 g4 f4 e4 d4 e4 c4 [f4,a4]@2 [e4,g4]@20]/2", // F Em
})).s("gm_fiddle").gain(0.12).pan(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B C D E ~@16 F E ~@16 F@2 E G E F E H I J K G E L M G@2 N O P Q@2 ~
>`.pickRestart({
  A: "e4 ~@2 c4 ~@3 c4, ~@2 c5@5 ~@3 c5@5 ~, ~@3 g4@4 ~@4 g4@4 ~, ~@5 e4@2 ~ e4@4 ~ e4@2 ~",
  B: "e4@2 ~ g4@2 e4 c4@2 d4@2 ~ d4@2 [c4,e4] g3@2, ~@2 c5@4 ~@4 f4@3 ~@3", // C
  C: "e4@2 ~@4 c4@2 e4@2 ~ g4@2 e4 c4@2, ~@2 c5@5 ~@3 c5@4 ~@2, ~@3 g4@4 ~@9, ~@5 e4@2 ~@9",
  D: "d5@2 ~ d5@2 c5 a4 g4 c5 ~@3 c5@4, ~@2 f5@2 ~@5 e4@7", E: "[g4,c5,e5]@15 ~",
  F: "[g4,c5,e5]@6 ~@2 [a#4,d5,f5]@4 [g4,c5,e5]@3 ~", G: "[g4,c5,e5]@4 d5 f5 d5 c5", H: "[g4,a#4,e5]@4 d5 f5 d5 c5",
  I: "[g4,a#4,e5]@15 ~", J: "[c5,f5,a5]@6 ~@2 [a#4,d#5,g5]@4 [c5,f5,a5]@3 ~, [g4,a#4,e5] ~@15",
  K: "[f5,a5]@13 ~@3, c5@15 ~", L: "[c5,f5,a5]@6 ~@2 [a#4,d#5,g5]@4 [c5,f5,a5]@3 ~", M: "[b4,d5,f5]@15 ~",
  N: "g4@3 a#4 g4@2 f4@2 ~@2 c5@6, ~ e4",
  O: "b4 ~@3 g4 f4 e4 d4@2 ~ d4@2 [c4,e4]@4, ~ c5@4 ~@11, ~@2 b4@3 ~@11, ~@3 a4@2 ~@4 f4@3 ~@4", // C
  P: "g4@3 ~ g4@2 f4@2 ~@2 c5@6, ~@3 a#4@2 ~@3 e4@8",
  Q: "[b4 ~@2 a4 g4@2 ~ e4@2 ~ [f4,a4]@2 [e4,g4]@19 ~, ~ c5@3 ~@5 c5@22 ~, ~ b4 ~@14]/2", // F Em
})).s("gm_acoustic_guitar_steel").gain(0.19).pan(0.7)

// chords · violin
const violin = note(`<
  ~@19 A B C D E F@2 G@2 F@2 H@2 I@2 J K L@2 B C ~ I@2 F@2 M N O P Q E B R S E@2 T U V W@2 ~
>`.pickRestart({
  A: "~@3 [g4,d5]", B: "[c5,e5]", C: "[c5,e5]@15 ~", D: "[e4,c5]@15 ~", E: "[e4,c5]@3 [g4,d5]", F: "[[c5,e5]@31 ~]/2",
  G: "[[e4,c5]@7 [c5,g5] [e4,c5]@6 ~ c5 [e4,c5]@8 [e4,c5]@4 [g4,d5]@4, ~@15 g5@2 ~@7 g5 ~@3 [c5,g5] ~@3]/2", // C C5 C G5 C5
  H: "[[f5,a5]@31 ~, [c5,g5] ~@31]/2", I: "[[e4,c5]@7 [g4,d5]]/2", J: "[f5,a5], [c5,g5] ~@15",
  K: "[f5,b5]@15 ~, g6 ~@15", L: "[[e4,c5]@7 [g4,d5], [b4,f5] ~@31]/2", M: "[e4,c5]", N: "[e4,a#4]@3 [g4,d5]",
  O: "[a#4,e5]", P: "[f5,a5]@15 ~", Q: "[a4,f5]@13 c5@2 ~", R: "[f5,a5]@15 ~, c5 ~@15", S: "[b4,f5]@15 d5",
  T: "[a4,c5]@2 g4 f4 [g4,c5]@4, ~@4 c5 ~ c5 ~@9", U: "[g4,b4]@8 e4@4 f4@2 g4 ~, ~ c5", V: "a4@2 g4 f4 [g4,c5]@4, c5 ~",
  W: "[[g4,b4]@4 c5 [a4,c5] [c4,c5]@10, ~@8 g4 ~@23]/2", // G Am C
})).s("gm_violin").gain(0.17).pan(0.6)

// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note("<~ A@7 B A@3 C@2 A@2 C D A@8 B A@3 C@2 A@2 C D A@4 ~@22>".pickRestart({
  A: "~@3 e5 ~@12", B: "~@3 e5 ~@3 e5 ~@7 e5", C: "~@3 a4 ~@12", D: "~@2 g4 [g4,b4] ~@2 g4 ~@3 g4!2 ~@2 g4 ~",
})).s("gm_acoustic_guitar_steel").gain(0.18).pan(0.7)

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

// drums · snare
const snare = s("sd").struct("<~@19 A@2 B@4 ~@12 A@2 C B@19 D ~@2>".pickRestart({
  A: "~@2 x ~@3 x!2", B: "~ x ~ x", C: "~@4 x ~@5 x ~ x ~ x!2", D: "~@4 x ~ x!3 ~@7",
})).gain(0.25)

// drums · low tom
const low_tom = s("lt").struct("<~ [~@7 x] ~ [~@5 x!3] ~@55 [~@9 x ~@6] [~@15 x] x>").gain(0.18)

// drums · hihat
const hihat = s("hh").struct(`<
  [~ x ~ x ~ x ~ x]
  [~ x ~ x ~ x ~@2]
  [~ x ~ x ~ x ~ x]
  [~ x ~ x ~@4]
  [x!4]!55
  [x!3 ~]
  ~@2
>`).gain(0.15)

// drums · mid tom
const mid_tom = s("mt").struct("<~@60 [~@7 x] ~>").gain(0.15)

// drums · open hat
const open_hat = s("oh").struct("<~@4 [~ x ~ x ~ x ~ x]!55 [~ x ~@6] ~@2>").gain(0.12)

// drums · high tom
const high_tom = s("ht").struct("<~ [~@13 x ~@2] ~@60>").gain(0.22)

// drums · crash
const crash = s("cr").struct("<~@2 A ~@15 A ~@21 A ~@18 B ~@2>".pickRestart({
  A: "x", B: "~@5 x!2 ~",
})).gain(0.18)

// drums · tambourine
const tambourine = s("tb").struct("<~@40 A B@4 C B A B C B A B C B@2 D E F G ~@2>".pickRestart({
  A: "~ x!2 ~@2 x!2 ~ x!3 ~ x!3 ~", B: "x!3 ~@2 x!2 ~ x!3 ~ x!3 ~", C: "x ~ x ~@2 x!2 ~ x!3 ~ x!3 ~",
  D: "x ~ x ~ x!3 ~ x!3 ~ x!3 ~", E: "x!3 ~@2 x!2 ~ x!3 ~@2 x!2 ~", F: "x!3 ~ x!3 ~ x!3 ~ x!3 ~",
  G: "x!3 ~ x!3 ~ x!2 ~@6",
})).gain(0.12)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@40 [~@3 x ~@3 x ~@3 x ~@3 x]!19 [~@3 x ~@7 x ~@4] ~@2>").gain(0.06)

// drums · cowbell
const cowbell = s("cb").struct("<~@40 [x!4]!19 [x!3 ~] ~@2>").gain(0.15)

stack(
  acoustic_guitar_nylon, bass, electric_guitar_clean, fiddle, acoustic_guitar_steel, violin, acoustic_guitar_steel_2,
  kick, snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash, tambourine, tambourine_soft, cowbell
)

More by Michael Jackson