Strudelify

Wanna Be Startin' Somethin'

Michael Jackson

KeyE majorTempo120 bpm
0:00/0:00
// Wanna Be Startin' Somethin' — Jackson Michael
// 120 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 6 "Horns" named as a brass, played on brass section (its synth bass 1 patch is not one)
// note: duplicate parts dropped: ch 9 "Synth" pad poly (copy of ch 3 "Keyboard" epiano2)
// note: Full arrangement: all 181 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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.

// bass · synth bass 2 · "Bass"
const bass = note(`<
  [~@14 d2!2]
  [~ d2 e2 ~ e2 ~ b1 ~ d2@3 e2 ~@2 d2!2]!111
  [~ d2 e2 ~ e2 ~ b1 ~@7 d2!2]
  [~ d2 e2 ~ e2 ~ b1 ~ d2@3 e2 ~@2 d2!2]!44
  ~@15
  [~@14 d2!2]
  [~ d2 e2 ~ e2 ~ b1 ~ d2@3 e2 ~@2 d2!2]!7
  ~
>`).s("gm_synth_bass_2").gain(0.33)

// chords · epiano2 · "Keyboard"
const epiano2 = note(`<
  ~@5 A B A B A B A C ~@4 D E F G D B F B ~@4 A B A ~@5 D E F G D B F B ~@4 A B A ~@5 D E F G D B F B D E F G D B F B
  ~@8 A B A ~@5 D E F G D B F B D E F G D B F B ~@8 A B A C ~@4 A B A ~@5 D E F G D B F B D E F G D B F B D E F G D B F
  B D E F G ~@16 A B A C A B A ~
>`.pickRestart({
  A: "[a3,d4,f#4]@15 ~", B: "[b3,e4,g#4]@7 ~", C: "[b3,e4,g#4]@15 ~", D: "[a3,d4,f#4]@13 ~@3", E: "[b3,e4,g#4]@13 ~@3",
  F: "[a3,d4,f#4]@9 ~@3 [d4,f#4,a4]@4", G: "[b3,e4,g#4]@11 ~@5",
})).s("gm_epiano2").gain(0.26)

// other · electric guitar clean · "Guitar 1"
const electric_guitar_clean = note(`<
  ~@4 A B C B C B C B D ~@3 A B C B C B C B D ~@11 A B C B C B C B D ~@7 A E B E B E B E B E B E B E B E B E B E B F G
  ~@13 A E B E B E B E B E B E B E B E H I J I@2 K L K M B C B D ~@11 A B C B C B C B C B C B C B C B C B C B C B C B C
  B C B D ~@15 A B C B C B C B ~
>`.pickRestart({
  A: "~@14 d3!2", B: "~ d3 e3 ~@11 d3!2", C: "~ d3!2 ~@11 d3!2", D: "~ d3!2 ~@13", E: "d3!2 e3 ~@11 d3!2",
  F: "d3!3 ~@10 b2 d3!2", G: "~ d3!2 ~ d3 ~@8 b2 d3!2", H: "~ d3 e3 ~@11 [d3,g4] [d3,g#4]",
  I: "~ g#4 e5 d#5 d5 e4 f#4 g4 g#4 e5 d#5 d5 ~@2 g4 g#4", J: "~ g#4 e5 d#5 d5 e4 f#4 g4 g#4 e5 d#5 d5 ~@3 g#4, ~@7 g4",
  K: "~ [g#4,b4] [e5,g#5] [d#5,g5] [d5,f#5] e4 f#4 g4 [g#4,b4] [e5,g#5] [d#5,g5] [d5,f#5] ~@2 g4 g#4", // G#m E D# D G#m E D# D
  L: "~ [g#4,b4] [e5,g#5] ~ [d5,f#5] e4 f#4 g4 [g#4,b4] [e5,g#5] [d#5,g5] [d5,f#5] ~@2 g4 g#4, ~@3 [d#5,g5]@2 ~@11", // G#m E D G#m E D# D D#
  M: "~ [g#4,b4] [e5,g#5] ~ [d5,f#5] e4 f#4 g4 ~@6 d3!2, ~@3 [d#5,g5]@2 ~@11", // G#m E D D#
})).s("gm_electric_guitar_clean").gain(0.22)

// other · electric guitar muted · "Guitar 2"
const electric_guitar_muted = note(`<
  ~@5 A@8 ~@4 A@8 ~@4 A@3 ~@5 A@8 ~@4 A@3 ~@5 A@16 ~@8 A@3 ~@5 A@15 B C D C@5 E A@4 ~@4 A@3 ~@5 A@8 F@8 A@12 ~@16 A@7 ~
>`.pickRestart({
  A: "~@6 g#3 e3 f#3!2 ~ g#3 ~@4", B: "~@6 g#3 e3 f#3!2 ~ g#3 ~@2 g3 g#3",
  C: "~ g#3 e4 d#4 d4 e3 f#3 g3 g#3 e4 d#4 d4 ~@2 g3 g#3", D: "~ g#3 e4 d#4 d4 e3 f#3 g3 g#3 e4 d#4 d4 ~@3 g#3, ~@7 g3",
  E: "~ g#3 e4 d#4 d4 e3 f#3 g3 ~@8", F: "~@6 [g#3,b3] [e3,g#3] [f#3,a3]!2 ~ [g#3,b3] ~@4",
})).s("gm_electric_guitar_muted").gain(0.26)

// other · brass section · "Horns"
const brass_section = note(`<
  ~@8 A ~@11 A ~@3 A ~@15 A ~@3 A ~@15 A ~@3 A ~@3 B@2 C@2 ~@20 A ~@3 A ~@3 B@2 C@2 ~@10 A ~@33 D@8 E ~@8 F G F H F G F
  H ~@3 I@3 ~@2
>`.pickRestart({
  A: "~@5 [b3,b4] [c#4,c#5] [d4,d5]@2 [d4,d5] [c#4,c#5] [b3,b4] [d4,d5] ~@3", // B C# D C# B D
  B: "[~@6 [b3,b4] [c#4,c#5] [d4,d5]@2 [e4,e5] ~ [b3,b4]@8 ~@12]/2", // B C# D E B
  C: "[~@6 [b3,b4] [c#4,c#5] [d4,d5]@2 [c#4,c#5] ~ [b3,b4]@10 ~@10]/2", // B C# D C# B
  D: "[~@13 [b3,b4] [c#4,c#5] [d4,d5]@3 [e4,e5] ~ [b3,b4] ~ [c#4,c#5] ~ [d4,d5]@2 [e4,e5] [b3,b4] ~ [b3,b4] [c#4,c#5] [d4,d5]@3 [e4,e5] ~ [b3,b4] ~ [c#4,c#5] [d4,d5] ~ [e4,e5] ~ [b3,b4] ~ [b3,b4] [c#4,c#5] [d4,d5]@3 [e4,e5] ~ [b3,b4] ~ [c#4,c#5] ~ [d4,d5]@2 [e4,e5] [b3,b4] ~ [b3,b4] [c#4,c#5] [d4,d5]@3 [e4,e5] ~ [b3,b4] ~ [c#4,c#5] [d4,d5] ~ [e4,e5] ~ [b3,b4] ~ [b3,b4] [c#4,c#5] [d4,d5]@3 [e4,e5] ~ [b3,b4] ~ [c#4,c#5] ~ [d4,d5]@2 [e4,e5] [b3,b4] ~ [b3,b4] [c#4,c#5] [d4,d5]@3 [e4,e5] ~ [b3,b4] ~ [c#4,c#5] [d4,d5] ~ [e4,e5] ~ [b3,b4] ~ [b3,b4] [c#4,c#5] [d4,d5]@3 [e4,e5] ~ [b3,b4] ~ [c#4,c#5] ~ [d4,d5]@2 [e4,e5] [b3,b4] ~ [b3,b4] [c#4,c#5] [d4,d5]]/8", // B C# D E B C# D E …
  E: "~@2 [e4,e5] ~ [b3,b4] ~ [c#4,c#5] [d4,d5] ~ [e4,e5] ~ [b3,b4] ~@4", F: "~@12 [d4,d5] [e4,e5] ~@2",
  G: "~@12 [d4,d5] [b3,b4] ~@2", H: "~@6 [b3,b4] [c#4,c#5] [d4,d5] [e4,e5] [f#4,f#5] [a4,a5] [g#4,g#5] [e4,e5] ~@2",
  I: "[~@13 [b3,b4] [c#4,c#5] [d4,d5]@3 [e4,e5] ~ [b3,b4] ~ [c#4,c#5] ~ [d4,d5]@2 [e4,e5] [b3,b4] ~ [b3,b4] [c#4,c#5] [d4,d5]@3 [e4,e5] ~ [b3,b4] ~ [c#4,c#5] [d4,d5] ~ [e4,e5] ~ [b3,b4] ~@4]/3", // B C# D E B C# D E …
})).s("gm_brass_section").gain(0.3)

// chords · string ensemble 2 · "Strings"
const string_ensemble_2 = note("<~@65 A B A B A B A C ~@24 A B A B A B A C ~@8 A B A B ~@64>".pickRestart({
  A: "[f#5,d6]", B: "[g#5,e6]", C: "[g#5,e6]@15 ~",
})).s("gm_string_ensemble_2").gain(0.15)

// chords · marimba
const marimba = note("<~@145 A B C B C B C B C B C B ~@16 C B C B C B ~@2>".pickRestart({
  A: "~@6 [e5,g#5] ~ f#5!2 ~ [d5,f#5] ~@4, ~@4 d5 ~@3", B: "~@6 [d5,f#5] ~ [e5,g#5]!2 ~ [e5,g#5] ~@4",
  C: "~@6 [e5,g#5] ~ [d5,f#5]!2 ~ [d5,f#5] ~@4", // E D
})).s("gm_marimba").gain(0.3).pan(0.6)

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

// drums · rim
const rim = s("rim").struct("<~@8 A ~@67 B ~@80 C@3 D C@3 D C@3 D C@3 D ~@8>".pickRestart({
  A: "~ x ~@3 x ~@2 x ~@3 x ~@3", B: "~@3 x ~ x ~@2 x ~@7", C: "~@3 x", D: "~@9 x!2 ~ x ~@3",
})).gain(0.33)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!111 [~ x ~@2] [~ x ~ x]!44 ~@16 [~ x ~ x]!7 ~>").gain(0.33)

// drums · clap
const clap = s("cp").struct(`<
  ~@49 A@2 ~@17 A ~@12 A ~@18 A ~@9 A ~@11 A ~@5 A ~@19 A ~@3 A ~@4 B C B C B C B C B C B C B C B C ~@8
>`.pickRestart({
  A: "~@9 x ~@2 x ~@3", B: "x!4", C: "x ~ x ~ x!3 ~",
})).gain(0.33)

// drums · low tom
const low_tom = s("lt").struct("<A ~@107 A ~@32 A ~@14 A B@16 ~@8>".pickRestart({
  A: "~@4 x!3 ~", B: "~@3 x",
})).gain(0.33)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~ A B@11 A B@11 A B@11 A B@11 A B@11 A B@11 A B@11 A B@11 A B@11 A B@11 A B@11 A B@11 A B@11 ~@16 A B@6 ~
>`.pickRestart({
  A: "x!4 ~@12", B: "x!5 ~@11",
})).gain(0.33)

// drums · high tom
const high_tom = s("ht").struct("<[~@4 x!3 ~] ~@107 [~@4 x!3 ~] ~@32 [~@4 x!3 ~] ~@14 [~@4 x!3 ~] ~@24>").gain(0.33)

// drums · splash
const splash = s("cr").struct("<~@4 [~@2 x!2] ~@176>").gain(0.33)

// drums · bongos
const bongos = s("bongo:18").struct("<~@161 [~@3 x ~@4]!12 ~@8>").gain(0.69)

// drums · congas
const congas = s("conga:13").struct("<~@161 A B@2 C A B@2 C A B@2 C ~@8>".pickRestart({
  A: "x ~@3 x ~@10 x", B: "~@4 x ~@10 x", C: "~ x ~@2",
})).gain(0.83)

// drums · congas
const congas_2 = s("conga:18").struct("<~@161 [~@7 x]!3 [~@15 x] [~@7 x]!3 [~@15 x] [~@7 x]!3 [~@15 x] ~@8>").gain(0.83)

// drums · congas
const congas_3 = s("conga:33").struct("<~@161 [~@7 x ~@8]!12 ~@8>").gain(0.83)

// drums · guiro
const guiro = s("guiro:0").struct("<~@17 [~ x ~ x]!8 ~@12 [~ x ~ x]!8 ~@136>").gain(7.08)

// drums · guiro
const guiro_2 = s("guiro:4").struct("<~@17 [~@3 x ~@7 x ~@4]!8 ~@12 [~@3 x ~@7 x ~@4]!8 ~@136>").gain(7.08)

// drums · shaker
const shaker = s("sh").struct(`<
  ~ A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A
  B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C
  A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C ~@16 A B C A B C A ~
>`.pickRestart({
  A: "~ x!3 ~ x!3 ~ x!5 ~ x", B: "x!2 ~ x ~ x ~ x ~ x!3 ~ x ~ x", C: "~ x!5 ~ x!7 ~ x",
})).gain(0.19)

// drums · shaker · soft notes
const shaker_soft = s("sh").struct(`<
  ~ A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A
  B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C
  A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C ~@16 A B C A B C A ~
>`.pickRestart({
  A: "x ~ x ~ x ~@2 x", B: "~ x!4 ~ x!2", C: "x ~@2 x ~@3 x",
})).gain(0.11)

stack(
  bass, epiano2, electric_guitar_clean, electric_guitar_muted, brass_section, string_ensemble_2, marimba, kick, rim,
  snare, clap, low_tom, pedal_hat, high_tom, splash, bongos, congas, congas_2, congas_3, guiro, guiro_2, shaker,
  shaker_soft
)

More by Michael Jackson