Strudelify

China Girl

John Mellencamp

KeyA majorTempo121 bpm
0:00/0:00
// China Girl — John Mellencamp
// 121 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 96 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 · [...]/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 · electric bass pick · "Bass"
const bass = note(`<
  ~ A@7 ~ A@2 B@2 C@2 A@4 B@2 C@2 A@2 D E F@2 G H@2 A@7 ~ A@2 B@2 C@2 A@4 B@2 C@2 A@2 D E F@2 G H@2 A@8 D E F@2 G H@2 E
  F@2 G H@2 A@11 I
>`.pickRestart({
  A: "a1!8", B: "f#1!8", C: "d2!8", D: "d2@3 ~ d2@2 ~@8 a1@2", E: "a1@3 ~ a1@2 ~@10",
  F: "[d2@3 ~ d2@2 ~@8 a1@5 ~ a1@2 ~@10]/2", G: "d2@5 ~ d2@2 d2@7 ~", H: "[d2@2 ~@2 d2@19 ~@9]/2", I: "a1 ~@7",
})).s("gm_electric_bass_pick").gain(0.49)

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

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

// drums · high tom
const high_tom = s("ht").struct("<~@63 [x!4]!7 ~@26>").gain(0.72)

// drums · cowbell
const cowbell = s("cb").struct("<~@63 [x!4]!3 [x!7 ~] [x!4] [x!7 ~] [x!4] ~@26>").gain(0.72)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@3 B ~ C ~ B ~@7 B ~@7 B ~@6 B ~@3 B ~ C ~ B ~@7 B ~@7 B ~@6 B ~@3 B ~ C ~ B ~@6 B ~@5 B ~@3 B ~@3 B ~@3
>`.pickRestart({
  A: "~ x ~@14", B: "x", C: "~@3 x",
})).gain(0.72)

stack(bass, kick, snare, high_tom, cowbell, crash)

More by John Mellencamp