Strudelify

I Feel the Earth Move

Carole King

KeyC♯ minorTempo122 bpm
0:00/0:00
// I Feel the Earth Move — Carole King
// 122 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 87 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(122/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 · piano · "Piano 1"
const piano = note(`<
  A B A B A B A@2 C@2 D E ~@8 A B A@2 C@2 D@3 ~ D C D C D C D C D C D C D C D F ~@8 A B A B A B A B A B A B A B A B A B
  A B A B A B A B A G H@2 I J@2
>`.pickRestart({
  A: "c#3!2 c#4!2 c#3!2 c#4!2, ~ [e4,g#4,b4] ~ [e4,g#4,b4]", // E
  B: "c#3!2 [c#4,e4,g#4,b4] c#4 c#3 [c#3,e4,g#4] c#4!2, ~@3 [e4,f#4,a#4]@2 ~ [e4,f#4,a#4]@2", // C#m7 C#m F#7
  C: "~ [e4,f#4,a#4,c#5] ~ [e4,f#4,a#4,c#5]", D: "~ [e4,g#4,c#5] ~ [e4,g#4,c#5]", E: "~@4 [e4,g#4,c#5]@5 ~@7",
  F: "~@4 [e4,f#4,a#4,c#5]@5 ~@7", // F#7
  G: "~ c#3@2 c#3@2 c#4@2 c#4@2 c#3@2 c#3@2 [c#4,e4,f#4,a#4]@3, ~@5 [e4,f#4,a#4]@4 ~@7", // F#7
  H: "[c#4@2 c#3@2 c#3@2 c#4@2 c#4@2 ~ c#3@2 c#3@2 c#4@2 c#4@2 ~ c#3@2 c#3@2 ~ c#4@2 c#4@2 ~ c#3@2, ~@6 [e4,g#4,b4]@4 ~@5 [e4,g#4,b4]@4 ~@6 [e4,f#4,a#4]@5 ~@2]/2", // E F#7
  I: "~ c#3@5 c#4@5 c#4@5, ~@3 [e4,f#4,a#4]@5", J: "[[c#4,e4,g#4,c#5]@9 ~@7]/2",
})).s("gm_piano").gain(0.24)

// chords · piano · "Piano 2"
const piano_2 = note("<~@7 A@2 ~@2 B@4 C@4 D ~@6 E F G H I J K@2 I J K@2 L@2 ~ M N O P Q@4 C@4 D ~@33>".pickRestart({
  A: "[g#5 f#5 e5 c#5 e5 f#5 e5 c#5@3 ~@6]/2",
  B: "[~@5 [b3,d#4,f#4,b4]@2 [b4,d#5]@2 [b4,d#5] [b4,d#5]@2 [b4,d#5]!3 [a4,c#5]@5 [c#5,e5]!2 c#5 [a4,c#5]@5 ~@4, ~@7 g#4@3 ~@22]/4", // B A C#m A
  C: "[~ [f#4,e5] e5 [f#4,e5]!4 [g#4,d#5]@4 ~@2 [f#4,a4] [g#4,b4] [a4,c#5]@4 ~@2 c#5 b4 a4@3 ~@6]/4", // F#7 G#5 F#m G#m A
  D: "~@6 [f#4,b4]@2 [g#4,c5]@3 ~ [g#4,c5]@4", // B5 G#
  E: "~@2 [g#4,e5] ~ [g#4,e5] ~ [g#4,e5] ~ [g#4,e5] ~ [g#4,e5] ~ [g#4,e5] ~@3", // C#m
  F: "~@2 [g#4,d#5] ~ [g#4,d#5] ~ [g#4,d#5] ~ [g#4,d#5] ~ [g#4,d#5] ~ [g#4,d#5] ~@3", // G#5
  G: "~@2 [g#4,c#5] ~ [g#4,c#5] ~ [g#4,c#5] ~ [g#4,c#5] ~ [g#4,c#5] ~ [g#4,c#5] ~@3", H: "d#5@2 ~@5 c#5",
  I: "[c#5,e5] ~ [c#5,e5] ~", J: "[b4,e5] ~ [b4,e5]@4 [c#5,f#5]@4 ~@6",
  K: "[g5@2 f#5@2 e5@2 c#5@2 e5@2 f#5@2 e5@2 [g#4,c#5]@4 [c#5,e5] ~ [c#5,e5]@3 ~ g#4@2 b4@2 [g#4,b4] ~ [g#4,b4] ~]/2", // C#5 C#m G#m
  L: "[c#5@2 [b4,e5,g#5] ~ [b4,e5,g#5] ~ [b4,e5,g#5] ~ [b4,e5,g#5] ~ [b4,e5,g#5] ~ [b4,e5,g#5] ~ [a#4,c#5,f#5]@6 ~@12]/2", // E F#
  M: "~@15 g#5", N: "[g#5,b5]@2 [f#5,a#5]@2 [e5,g#5]@3 [g#5,b5]@3 [f#5,a#5]@2 [e5,g#5]@3 g#5",
  O: "[g#5,b5]@2 [f#5,a#5]@2 [e5,g#5]@3 [g#5,b5]@3 [f#5,a#5]@2 [e5,g#5]@3 ~", // G#m F# E G#m F# E
  P: "b5 a#5 g#5 f#5 g#5 f#5 e5 c#5 f#5 e5 c#5 b4 e5 c#5 b4 g#4",
  Q: "[c#5 b4 a#4 g#4 b4 a#4 g#4 f#4@2 ~ [b3,d#4,f#4,b4]@4 [g#4,b4,d#5]@6 [b4,d#5]@4 [b4,d#5]@2 [b4,d#5]@2 [b4,d#5]@2 [a4,c#5]@10 [c#5,e5]@2 [c#5,e5]@2 c#5@2 [a4,c#5]@10 ~@8]/4", // B G#m B A C#m A
})).s("gm_piano").gain(0.42).pan(0.6)

// chords · electric guitar jazz · "Guitar"
const electric_guitar_jazz = note("<~@11 A@8 B ~@3 C@2 ~@21 D@8 ~@33>".pickRestart({
  A: "[~@10 [b3,d#4,f#4,b4]@4 [e4,g#4,b4,d#5]@10 [g#4,b4,d#5]@6 [e4,a4,c#5]@9 ~ [e4,a4,c#5]@5 ~ [f#4,a4,c#5,e5]@10 [f#4,a4,c#5,e5]@6 [f#4,b4,d#5,e5]@10 [f#4,a4,b4,d#5]@6 [e4,g#4,b4,d#5]@9 ~ [e4,g#4,b4,d#5]@6 [e4,a4,c#5]@9 ~ [e4,a4,c#5]@5 ~ [f#4,a4,c#5,e5]@9 ~ [f#4,a4,c#5,e5]@6 [f#4,b4,d#5]@2, ~@6 e4 ~@25]/8", // B Emaj7 G#m A F#m7 B B7 Emaj7 …
  B: "~@4 [f#4,g#4,c5,d#5] ~ [f#4,g#4,c5,d#5] ~", C: "[g#5 f#5 e5 c#5 e5 f#5 e5 c#5@5 ~@4]/2",
  D: "[~@8 [g#4,b4,d#5]@6 [e4,a4,c#5]@9 ~ [e4,a4,c#5]@5 ~ [f#4,a4,c#5,e5]@10 [f#4,a4,c#5,e5]@6 [f#4,b4,d#5,e5]@10 [f#4,a4,b4,d#5]@6 [e4,g#4,b4,d#5]@9 ~ [e4,g#4,b4,d#5]@6 [e4,a4,c#5]@9 ~ [e4,a4,c#5]@5 ~ [f#4,a4,c#5,e5]@9 ~ [f#4,a4,c#5,e5]@6 [f#4,b4,d#5]@9 ~ [f#4,g#4,c5,d#5]@2 ~@2 [f#4,g#4,c5,d#5]@2 ~@2, ~@2 e4 ~@29]/8", // G#m A F#m7 B B7 Emaj7 A F#m7 …
})).s("gm_electric_guitar_jazz").gain(0.22).pan(0.4)

// other · electric guitar clean · "Guitar Solo"
const electric_guitar_clean = note(`<
  ~@39
  [~@12 c#4 ~ e4 ~]
  [g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ f#4 ~]
  [e4@2 ~@2 e4 ~ b4@2 e4@2 f#4@2 e4@3 ~]
  ~@45
>`).s("gm_electric_guitar_clean").gain(0.46).pan(0.7)

// other · electric guitar clean · "Guitar Solo" · soft notes
const electric_guitar_clean_2 = note("<~@45 A@2 ~@40>".pickRestart({
  A: "[~@5 [b2,d#3,f#3,b3]@2 [e3,g#3,b3,d#4]@5 ~@4]/2", // B Emaj7
})).s("gm_electric_guitar_clean").gain(0.26).pan(0.7)

// bass · slap bass 1 · "Bass"
const bass = note(`<
  ~@4 A@4 B C A D@8 E A@4 B C A@3 F A@3 G A@3 G A H A I A J A K@8 E A@13 H A H ~@2 A@9 L M@2 N O@2
>`.pickRestart({
  A: "c#2!2 c#3@2 c#2!2 c#3@2", B: "f#2@2 f#2@2 a#2 b2 c3 c#3", C: "f#2@4 f#2@3 f#3 f#3@2 e3@2 c#3@2 e3@2",
  D: "[c#2@2 c#2@2 c#3@2 c#2@4 b1@2 ~@2 e2@8 ~@4 f#2@2 g#2@2 a2@9 ~ b2@2 a2@2 g#2@2 f#2@9 ~@3 f#2 ~ f#2@2 b2@9 ~@3 c#2@2 d#2@2 e2@11 ~ f#2@2 g#2@2 a2@11 ~ a2@2 g#2@2 f#2@11 ~ f#2@2 a2@2 b2@2]/8",
  E: "~@6 b2@2 g#2@3 ~ g#2@3 ~", F: "d#2@2 f2@3 ~ f#2@3 ~ g2@3 ~ g#2@2", G: "f#2@2 f#2@2 f#2@3 ~ f#2@2 f#2@2 f#2@3 ~",
  H: "f#2!4 a#2 b2 c3 c#3", I: "f#2!4 e3 c#3 a#2 f#2", J: "f#2!4 f#3 e3 c#3 a#2",
  K: "[f#2@2 f#2@2 f#2@2 f#2@3 ~ b1@2 ~@2 e2@8 ~@4 f#2@2 g#2@2 a2@9 ~ b2@2 a2@2 g#2@2 f#2@9 ~@3 f#2 ~ f#2@2 b2@9 ~@3 c#2@2 d#2@2 e2@11 ~ f#2@2 g#2@2 a2@11 ~ a2@2 g#2@2 f#2@11 ~ f#2@2 a2@2 b2@2]/8",
  L: "~ c#2@2 c#2@2 c#3@4 c#2@2 c#2@2 c#3@3",
  M: "[~@2 c#2@2 c#2@2 c#3@4 ~ c#2@2 c#2@2 c#3@4 ~ c#2@2 c#2@2 ~ c#3@5 c#2@2]/2", N: "~ c#2@5 c#3@10",
  O: "[c#2@9 ~@7]/2",
})).s("gm_slap_bass_1").gain(0.33).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@4 [x!2]!25 x [x!2]!40 ~@2 [x!2]!8 ~@7>").gain(0.23)

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

// drums · hihat
const hihat = s("hh").struct("<~@4 A@8 ~@8 A@9 ~ A@16 ~@8 A@16 ~@2 A@8 ~@7>".pickRestart({
  A: "~ x ~ x",
})).gain(0.27)

// drums · open hat
const open_hat = s("oh").struct("<~@4 A@8 B@8 A@9 C A@16 B@8 A@16 C ~ A@8 C ~@6>".pickRestart({
  A: "x!4", B: "x!2 ~ x", C: "x",
})).gain(0.15)

// drums · crash
const crash = s("cr").struct("<~@11 A ~@4 B ~@28 A ~@4 B ~@36>".pickRestart({
  A: "~@5 x ~ x", B: "~@5 x!3",
})).gain(0.19)

// drums · congas
const congas = s("conga:13").struct("<~@3 A ~@15 A ~@33 A ~@3 A ~@13 A ~@15>".pickRestart({
  A: "~@4 x ~ x ~@5 x ~ x!2",
})).gain(0.99)

// drums · congas
const congas_2 = s("conga:33").struct("<~@3 A ~@15 A ~@33 A ~@3 A ~@13 A ~@15>".pickRestart({
  A: "~@4 x!2 ~@2",
})).gain(0.99)

stack(
  piano, piano_2, electric_guitar_jazz, electric_guitar_clean, electric_guitar_clean_2, bass, kick, snare, hihat,
  open_hat, crash, congas, congas_2
)

More by Carole King