Strudelify
The Girl Is Mine cover art

1983 · Thriller

The Girl Is Mine

Michael Jackson

KeyA majorTempo164 bpm
0:00/0:00
// The Girl Is Mine — Jackson Michael
// 164 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 108 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(164/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 · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~ A B C D A B C E F G H I J@2 K@3 ~@3 A B C L ~@4 A B C E F G H I J@2 K@3 ~@3 A B C L ~@4 A B C E M@2 N@2 O@2 P@2 Q R
  S T U V U W X Y Z@2 F G H I J@2 K@3 ~@3 A B C L ~@4 A B C D A B C E A B AA
>`.pickRestart({
  A: "[g3,a#3]@4 [g#3,b3]@2 ~ [g#3,b3] ~@3 [a3,c#4]@2 ~@2 [g#3,b3]", B: "~@7 b3 a3@2 ~@2 b3@2 ~@2",
  C: "[g3,a#3]@4 [g#3,b3]@2 ~ [g#3,b3] ~@3 [a3,c#4] ~@3 [g#3,b3]", D: "~@4 f#3 ~@3 e3@2 ~@2 f#3@2 ~@2, ~@3 a3@2 ~@11",
  E: "~@4 f#3 ~@3 a3@2 ~@2 f#3@2 ~@2, ~@3 a3@2 ~@6 a3@2 ~@3", F: "e3@2 ~ e3 e3@2 ~ e3@2 ~@2 f#3@2 ~@2 e3",
  G: "~@8 [c3,c#3] ~@3 d3@2 ~@2, ~@7 e3@2 ~@7", H: "e3@2 ~ e3 e3@2 ~ e3 ~@3 f#3 ~@3 e3",
  I: "~@4 f#3 ~@3 c#3@2 ~@2 d3@2 ~@2, ~@3 a3@2 ~@11",
  J: "[e3@2 ~ e3 e3@2 ~ e3@2 ~@3 c#3@2 ~ e3@2 ~@6 e3 c#3@2 ~@2 d3@2 ~@2, ~@11 f#3@2 ~@19]/2",
  K: "[e3@2 ~ e3 e3@2 ~ e3 ~@3 f#3 ~@3 [b3,e4,f#4]@18 ~@15]/3", L: "~@4 f#3 ~@3 e3@2 ~@2 f#3@2 ~@2, ~@3 b3@2 ~@11",
  M: "[[e4,g#4]@5 ~@2 [e4,g#4] ~@2 [f#4,a4] ~@3 [e4,g#4]@13 ~@5]/2", // E F#m E
  N: "[[f#4,a4]@6 ~ [f#4,a4] ~@3 [g#4,b4] ~@3 [f#4,a4]@12 ~@5]/2", // F#m G#m F#m
  O: "[[g#4,b4]@6 ~ [g#4,b4] ~@3 [a4,c#5] ~@3 [g#4,b4]@13 ~@4]/2", // G#m A G#m
  P: "[[f#4,a4]@6 [f#4,a4] ~@3 g#4 b4 ~@3 [f#4,a4]@13 ~@4]/2", Q: "~@3 e4 ~@4 [e4,g4]@8",
  R: "~@3 [e4,g4] ~@4 [e4,g4]@8", S: "~@3 [f4,a4] ~@4 [f4,a4]@8", T: "~@3 [f4,a4] ~@4 [f4,a4]@3 ~ [f4,a4]@4",
  U: "~@3 [f#4,a4] ~@4 [f#4,a4]@8", V: "~@3 [g#4,b4] ~@4 [g#4,b4]@7 ~",
  W: "~@3 [g#4,b4] ~@3 [g#4,b4] [g#4,b4]@3 ~ [g#4,b4]@3 ~", X: "~@3 [f#4,a4] ~@4 [f#4,a4]@3 [f#4,a4] [f#4,a4]@4",
  Y: "[g#4,b4] ~@6 [g#4,b4]@2 ~@3 [g#4,b4]@4", Z: "[~@3 [f#4,a4] ~@4 [f#4,a4]@15 ~@9]/2", AA: "[e3,a3]@15 ~",
})).s("gm_electric_guitar_muted").gain(0.22).pan(0.6)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~ A@2 B@2 C@2 D@2 E F G@2 H@2 I@2 J K L M H@2 I@2 J K L M C@2 D@2 E F G@2 H@2 I@2 J K L M H@2 I@2 J K L M C@2 D@2 N@2
  O@2 N@2 P@2 Q R S@2 T@2 U@2 V W X Y E F G@2 H@2 I@2 J K L M H@2 I@2 J K L M A@2 B@2 C@2 D@4 Z
>`.pickRestart({
  A: "[a1@12 ~@3 e2@2 ~@3 f#2@2 ~@2 e2@2 ~@2 f#2@2 ~@2, ~@19 e2@2 ~@11]/2",
  B: "[a1@12 ~@3 e2@2 ~@3 f#2@3 ~ e2@2 ~@2 f#2@2 ~@2, ~@19 e2@2 ~@11]/2",
  C: "[a1@13 ~@2 e2@2 ~@3 f#2@2 ~@2 e2@2 ~@2 f#2@2 ~@2, ~@19 e2@2 ~@11]/2",
  D: "[a1@12 ~@3 e2@2 ~@3 f#2@2 ~@2 a2@2 ~@2 f#2@2 ~@2, ~@19 e2@2 ~@11]/2", E: "a1@11 ~@4 e2",
  F: "~@4 f#2@3 ~ e2@2 ~@2 f#2@2 ~@2, ~@3 e2@2 ~@11",
  G: "[a1@10 ~@5 e2@2 ~@3 f#2@3 ~ e2@2 ~@2 f#2@2 ~@2, ~@19 e2@2 ~@11]/2",
  H: "[a1@12 ~@3 e2@2 ~@2 e2 f#2@3 ~ e2@2 ~@2 f#2@2 ~@2]/2",
  I: "[a1@9 ~@3 g#1@3 f#1@10 ~@4 g#1@2 a1, ~@11 a1@2 ~@15 f#1@2 ~@2]/2", J: "b1@14 ~ b1", K: "b1@7 c#2@5 d2@4", L: "e2",
  M: "e1@15 ~", N: "[a1@12 e2@3 a2@4 ~ e2@2 ~@2 a1@5 c#2 ~ d2, ~@19 a1@2 ~@11]/2",
  O: "[e2@9 ~@2 b1 e2@3 e1@2 ~@2 e1 e1@2 ~ e2 f#2@2 ~@2 d2@3 ~, ~@27 e2@2 ~@3]/2",
  P: "[e2@9 ~@2 b1 e2@3 e1@2 ~@2 e1 e1@2 ~ e2 f#2@3 ~ e2@3 ~]/2", Q: "c2@9 ~@2 c2 g1@3 c2",
  R: "~@3 c2 g1@4 c2@4 g1 ~@2 [f#1,g1]", S: "[f1@9 ~@3 c2@3 f2@2 ~@3 c2@4 f1@4 c2@4, ~@11 f1@3 ~@5 f2@2 ~@11]/2",
  T: "[e1@3 ~ e1@10 ~ e1@2 ~@3 c#2@4 d2@4 d#2@4, ~@19 e1@2 ~@11]/2",
  U: "[e2@2 ~ e1@5 e1@6 ~ e1@2 ~@3 c#2@4 d2@4 d#2@4, ~@19 e1@2 ~@11]/2", V: "e2@2 ~ e1@5 e1@6 ~ e1",
  W: "~@3 e1 c#2@4 d2@4 d#2@4", X: "e2@2 ~@2 e1@3 ~ e1@3 ~ e1@3 ~", Y: "e1@2 ~@2 e1@3 ~ e1@3 ~ e1@3 ~", Z: "a1@3 ~",
})).s("gm_fretless_bass").gain(0.43)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~ A@8 B@4 C@2 D@2 E F G@2 C@2 D@2 E F G@2 H@4 B@4 C@2 D@2 E F G@2 C@2 D@2 E F G@2 H@4 I@2 J@2 K@2 L@2 M@2 N@2 O@2 P@2
  Q@2 R@2 B@4 C@2 D@2 E F G@2 C@2 D@2 E F G@2 A@8 S@2 T
>`.pickRestart({
  A: "[~@8 [g#3,b3,e4]@5 ~@2 [f#3,a3,d4]@19 ~@6 [g#3,b3,e4]@7 [f#3,a3,d4]@19 ~@6 [g#3,b3,e4]@6 ~ [f#3,a3,d4]@19 ~@6 [g#3,b3,e4]@7 [f#3,a3,d4]@14 ~@3]/8", // E D E D E D E D
  B: "[~@8 [g#3,b3,e4]@6 ~ d4@18 ~@7 [g#3,b3,e4]@7 [f#3,a3,d4]@17, ~@14 [f#3,a3]@19 ~@31]/4", // E D F#m
  C: "[~@8 [g#3,b3,e4]@6 ~ d4@15 ~@2, ~@14 [f#3,a3]@15 ~@3]/2", D: "[~@8 [g#3,b3,e4]@5 ~@2 [f#3,b3,c#4]@17]/2",
  E: "[f#3,a3,b3,e4]@15 ~", F: "[f#3,a3,b3,d4]@3 ~", G: "[[f#3,a3,b3,e4]@31 ~]/2",
  H: "[f#3@2 ~@6 [g#3,b3,e4]@6 ~ [f#3,a3,d4]@19 ~@6 [g#3,b3,e4]@7 [f#3,a3,d4]@14 ~@3]/4", // E D E D
  I: "[[a3,c#4,e4,g#4]@13 ~@2 [a3,c#4,e4,g#4]@13 [a3,e4,g#4] ~@3, ~@14 c#4 ~]/2", // Amaj7
  J: "[[b3,d4,f#4,a4]@13 ~@2 [b3,d4,f#4,a4]@13 [b3,d4,f#4,a4] ~@3]/2", // Bm7
  K: "[[a3,c#4,e4,g#4]@13 ~@2 [a3,c#4,e4,g#4]@12 ~ [a3,c#4,e4,g#4]@2 ~@2]/2", // Amaj7
  L: "[[b3,d4,f#4,a4]@13 ~@2 [b3,d4,f#4,a4]@13 [b3,d4,f#4,a4]@3 ~]/2", // Bm7
  M: "[[b3,c4,e4,g4]@13 ~ [b3,c4,e4,g4]@12 ~@2 [b3,c4,e4,g4]@2 ~@2]/2", // Cmaj7
  N: "[[c4,e4,f4,a4]@13 ~@2 [c4,e4,f4,a4]@15 ~@2]/2", O: "[[a3,d4,f#4]@13 ~@2 [c#4,e4,g#4]@15 ~@2, b3@15 ~]/2",
  P: "[[a3,b3,d4,f#4]@14 ~ [c#4,e4,g#4]@16 ~, ~@7 b3@8 ~]/2", Q: "[[a3,b3,d4,f#4]@14 ~ [b3,c#4,e4,g#4]@16 ~]/2",
  R: "[[a3,b3,d4,f#4]@31 ~]/2", S: "[[f#3,a3] ~@7 [g#3,b3,e4]@7 [f#3,a3,d4]@14 ~@3]/2", T: "[c#3,e3,a3]@13 ~@3",
})).s("gm_piano").gain(0.32)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted_2 = note(`<
  ~@2 A ~ B C A ~ D ~ E ~ E ~ E F ~@6 A ~ B ~@4 C A ~ D ~ E ~ E ~ E F ~@6 A ~ B ~@4 C A ~ D ~@21 E ~ E ~ E F ~@6 A ~ B
  ~@5 A ~ B C A ~ D ~ D G
>`.pickRestart({
  A: "~@2 f#3 ~ e3 ~ f#3 ~, ~@3 e3@2 ~@11", B: "~@4 f#3@2 ~@2 e3@3 ~@5, ~@3 e3@2 ~@11", C: "~@12 c#3@3 d3",
  D: "~@3 e3 f#3@2 ~@2 e3@2 ~@2 f#3@2 ~@2", E: "~@2 f#3 ~ e3 ~ d3 ~, ~@3 e3@2 ~@11", F: "~@6 f#3 ~, ~@11 e3@2 ~@3",
  G: "a2@7 ~",
})).s("gm_electric_guitar_muted").gain(0.19).pan(0.4)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note("<~@15 A@6 ~@2 A@6 ~@10 A@6 ~@2 A@6 ~@30 A@6 ~@2 A@6 ~@11>".pickRestart({
  A: "[~@5 f#4@6 ~@5 a3@11 ~@5, ~@12 e4@15 ~@5, ~@43 d4@38 ~@15]/6",
})).s("gm_electric_guitar_clean").gain(0.12).pan(0.6)

// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_2 = note("<~@15 A@3 ~@5 A@3 ~@13 A@3 ~@5 A@3 ~@33 A@3 ~@5 A@3 ~@14>".pickRestart({
  A: "[~@5 [b3,e4]@6 ~@5]/3", // E5
})).s("gm_electric_guitar_clean").gain(0.07).pan(0.6)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@21 A@4 B@2 C@2 ~@16 A@4 B@2 C@2 ~@4 D@2 E@2 D@2 F@5 G H@8 ~@12 A@4 B@2 C@2 ~@11
>`.pickRestart({
  A: "[~@8 [e4,g#4]@6 [d4,f#4]@17 e4@16 ~@9 b4@8, ~@47 f#4@17]/4", B: "[~@11 a4@5 b4@6 c#5@5 d5@5, e4@19 ~@13]/2",
  C: "[e5@7 ~]/2", D: "[e4,g#4]/2", E: "[f#4,a4]/2",
  F: "[~@17 b5@2 c#6 ~ c#6@2 d6 ~ d6@2 e6 d6 e6@2 ~ g6@40 b5@8, [f#4,a4]@2 ~@3, ~@16 a5@2 ~@2 b5@2 ~@2 c#6@2 ~@5 f#6@2 ~@47]/5", // F#m
  G: "c6 d6",
  H: "[e6@24 c#6@4 f#6@2 e6@25 ~ c#6@4 f#6@2 e6@25 c#6@4 f#6@3 ~@7 c#6@2 ~@2 e5 ~ c#5 ~ a4@2 f#4 e4@2 ~@14, ~@94 e6@25 ~@9, ~@103 a5@2 ~@23, ~@52 f#5 ~ b4 ~@9]/8",
})).s("gm_string_ensemble_2").gain(0.22).pan(0.4)

// chords · pad warm · "WARM PAD"
const pad_warm = note(`<
  ~ A@4 B@2 C@2 B@2 C@2 B@2 D@2 E@2 F@2 B@2 D@2 E@2 F@2 G@2 C@2 B@2 C@2 B@2 D@2 E@2 F@2 B@2 D@2 E@2 F@2 G@2 C@2 ~@20 B@2
  C@2 B@2 D@2 E@2 F@2 B@2 D@2 E@2 F@2 A@4 B@2 C@4 H
>`.pickRestart({
  A: "[~@8 [g#4,b4]@7 [f#4,a4]@17 [g#4,b4]@13 ~@2 [a4,c#5]@16 ~]/4", B: "[[g#4,b4]@15 a4@16 ~, ~@15 f#4@14 ~@3]/2",
  C: "[b4@15 [a4,c#5]@16 ~, g#4 ~@3]/2", D: "[b4@15 [b4,c#5]@17, g#4 ~@3]/2", E: "[[b4,d5]@15 [f#4,a4]@17]/2",
  F: "[a4,e5]/2", G: "[[g#4,b4]@15 [f#4,a4]@17]/2", H: "a4",
})).s("gm_pad_warm").gain(0.12)

// chords · pad warm · "WARM PAD" · soft notes
const pad_warm_soft = note(`<
  ~@7 A ~@3 A ~@3 A ~@7 A ~@7 A ~@3 A ~@3 A ~@7 A ~@7 A ~@23 A ~@3 A ~@7 A ~@11 A ~ A ~@2
>`.pickRestart({
  A: "~@8 g#4@7 ~",
})).s("gm_pad_warm").gain(0.02)

// chords · flute
const flute = note("<~@5 A@4 ~@14 B C ~@6 D@2 ~@58 B C ~@15>".pickRestart({
  A: "[~@3 [e4,g#4] ~@3 a4 [e4,g#4]@4 [f#4,a4]@3 g#4@2 ~@2 [d4,f#4]@5 [a3,c#4]@4 [b3,d4]@3 [c#4,e4]@28 ~@5, ~@7 f#4@2 ~@6 e4 ~@48]/4", // E F#m D A Bm C#m
  B: "~@3 [e3,g#3]@2 ~ [f#3,a3]@2 [e3,g#3]@3 ~ [f#3,a3]@2 [e3,g#3]@2", C: "~@3 b2, ~ [e3,f#3]@7, ~ c#3",
  D: "[~@3 [e4,g#4]@2 [f#4,a4]@3 [e4,g#4]@4 [c#4,e4]@3 [d4,f#4]@17]/2", // E F#m E C#m D
})).s("gm_flute").gain(0.19).pan(0.6)

// other · french horn · "FR.HORN"
const french_horn = note("<~@64 A B@2 C D E F G H I E J@2 ~@31>".pickRestart({
  A: "~@4 d5@2 c#5@2 b4@3 a4@5", B: "g4/2", C: "a4 b4", D: "c5 d5", E: "e5", F: "g#4", G: "a4", H: "b4", I: "c#5",
  J: "e5/2",
})).s("gm_french_horn").gain(0.22).pan(0.4)

// other · piccolo
const piccolo = note(`<
  ~@8
  [~@3 e6 c#6@2 ~ f#6 e6 ~@2 e6 c#6@2 ~@2]
  ~@23
  [~@3 e6 c#6@2 ~ f#6 e6 ~@2 e6 c#6@2 ~@2]
  ~@75
>`).s("gm_piccolo").gain(0.19)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B A C D ~ C E D F G H D H D I A F J@2 D F D F J G J@2 D H D H D F G H D H D F A F J@2 D F D F J G J@2 D H D H D E
  D F D F A F A F K F A B G@2 L F G M D F G H D H D I A F J@2 D F D F J G J@2 D H D H G H D H D F J
>`.pickRestart({
  A: "x ~@14 x", B: "~@3 x", C: "~@15 x", D: "x ~@11 x ~@2 x", E: "~ x", F: "~@7 x ~@4 x ~@3", G: "x ~@2 x",
  H: "~@3 x ~@4 x ~@7", I: "~@11 x ~@3 x", J: "x", K: "x ~@10 x ~@3 x", L: "x ~@2 x ~@7 x ~@3 x", M: "x!4",
})).gain(0.24)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@3 A ~@2 B C ~@9 A ~@23 A ~@21 A ~ A ~ A ~@5 A ~@11 A ~@22>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "x ~@10 x ~@4",
})).gain(0.12)

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

// drums · low tom
const low_tom = s("lt").struct("<[~@3 x] ~@107>").gain(0.3)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B C B C B C B D B C B E B C F C B E B E B C B E C ~ G D B D H D B C B E B C F C B E B E B C B E C ~ G D B D H ~@20
  D B C B E B C F C B E B E B C B E C ~ G D B D H C B E B D B ~
>`.pickRestart({
  A: "~ x!2 ~", B: "x!3 ~", C: "x!4", D: "~ x", E: "x ~ x!2", F: "x!2", G: "~@3 x", H: "x!2 ~@2",
})).gain(0.18)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~ A ~@7 B ~@3 C ~@2 C ~@2 C ~ C ~@3 C ~@3 B ~ B ~ B ~@3 C ~@2 C ~@2 C ~ C ~@3 C ~@3 B ~ B ~@21 B ~@3 C ~@2 C ~@2 C ~ C
  ~@3 C ~@3 B ~ B ~@3 C ~ B ~@2
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2",
})).gain(0.06)

// drums · mid tom
const mid_tom = s("mt").struct("<[~@11 x ~@4] ~@107>").gain(0.3)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 B ~ A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 B ~ A ~@20 C D ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 B ~ A ~@3 A ~ A ~ A ~
>`.pickRestart({
  A: "~@3 x", B: "~@11 x ~@4", C: "x", D: "~@15 x",
})).gain(0.24)

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

// … 11 more lines

More by Michael Jackson