Strudelify

Underneath the Stars

Mariah Carey

KeyG majorTempo75 bpm
0:00/0:00
// Underneath the Stars — Mariah Carey
// 75 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 68 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(75/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 · epiano1 · "Rhodes piano"
const epiano1 = note(`<
  A B C D E F C D G H I H I H J K L M N B C D E F C D G H I H I H J K O P Q R S T U R S V W@2 X Y X Y X Z K L K L K L K
  L K L K L K L AA ~
>`.pickRestart({
  A: "~@7 g4, ~ b5, ~@9 a5@6 ~, ~@5 g5 c5 ~, ~@11 d5@2 b4@2 ~", B: "[c3,b3,d4,e4,g4]", C: "[b2,a3,c4,d#4,g4]",
  D: "~ c#4, [e2,g3,b3,d4,f#4]", E: "[d3,a3,c4,f4,g4]@4 [g3,e4] [f3,d4] [e3,b3] [f3,d4], ~ g2",
  F: "[b3,d4,e4]@3 ~@3 b4@2, g3, ~@11 [e4,g4]@4 ~", G: "[d3,a3,c4,f4,g4]@4 [f3,d4] [g3,e4] [a3,f4] [b3,g4], ~ g2",
  H: "[c4,d4,e4,g4] [b3,d4,f#4,a4]", I: "[e4,g4]@6 ~@2 c5 ~ c5 g5@4 ~, c4, ~@3 e4@5, ~@7 g4@2 g4@7",
  J: "[c4,e4,g4] [c4,e4]", K: "[f#3,a3,b3]", L: "[g3,a3,c4,e4] [c4,e4], e3", M: "[f#3,b3,d4]",
  N: "[c4,e4] ~ [c4,e4]@2, [g3,a3]", O: "[e4,g4] [c4,e4], e3", P: "[f#3,a3,b3,d4,f#4]",
  Q: "[a3,c4,f4,g4] [b3,d4,f4,g4]", R: "[c4,e4]@3 ~, g3", S: "[d4,f#4]@5 ~@3, a3", T: "[b3,d4,f#4] [b3,d4,e4]",
  U: "[c4,d4], g#3 ~", V: "[b3,d4,e4]", W: "[c4,e4]",
  X: "~ [g4,b4,e5] [d4,e4,g4,b4]@2 [f#4,a4,d5] [d4,f#4,a4]@2 [d4,f#4,b4]", // Em Em7 D Bm
  Y: "[c4,e4,g4]@4 [c4,e4,a4]@2 ~@3 e4 g4 c5@4 ~, ~@3 [a3,c4,d4]@5", Z: "[c4,e4,g4]@2 [c4,e4,a4] [a3,c4,d4]@5",
  AA: "[g3,b3,d4,g4]", // G
})).s("gm_epiano1").gain(0.4)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@9 A B A B A C D@3 E F G H I F G H I A B A B A C D@3 J K G D L K G F M N O K O K O P D@14 E ~
>`.pickRestart({
  A: "c3 b2", B: "a2@8 a2 ~ a2@4 a2@2", C: "a2 d3", D: "g2@4 g2 g2@2 g2", E: "g2", F: "c3@4 c3 c3@2 c3",
  G: "b2@4 b2 b2@2 b2", H: "e2@4 a2 a2@2 a2", I: "d3@4 g2 a2 b2@2", J: "g2@4 g2 g2@2 b2", K: "a2@4 a2 a2@2 a2",
  L: "e3@4 e2 e2@2 e2", M: "d3@4 d3 d3@2 d3", N: "d3!2", O: "c3@4 b2 b2@2 b2", P: "a2@4 d2 d2@2 d2",
})).s("gm_electric_bass_finger").gain(0.57)

// chords · synth strings 1 · "Sinth"
const synth_strings_1 = note(`<
  ~@18 A ~@17 B A C D E A C F A@2 G A G A G A H A H A H A H A H A H A H A I@2
>`.pickRestart({
  A: "[c4,e4,g4,a4]", B: "[c4,d4,f4,a4] [b3,d4,f4,g4]", C: "[d4,f#4,a4,b4]", D: "[d4,f#4,a4,b4] [d4,e4,g4,b4]",
  E: "[d4,e4,g#4,c5]", F: "[c4,d4,e4,g4]", G: "[c4,d4,e4,g4] [b3,d4,f#4,a4]", H: "[d4,g4,a4,b4]",
  I: "[[d4,g4,a4,b4]@5 ~@3]/2", // G
})).s("gm_synth_strings_1").gain(0.1)

// other · electric guitar jazz · "Guitar"
const electric_guitar_jazz = note("<~@6 [~ b4 a4 g4] ~@17 [~ b4 a4 g4] ~@43>")
  .s("gm_electric_guitar_jazz").gain(0.19).pan(0.9)

// drums · kick
const kick = s("bd").struct("<~ A B A B A B A B C@57 ~@2>".pickRestart({
  A: "x ~@14 x", B: "x", C: "x ~@3 x!2 ~@2",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct("<~@8 [~@3 x] [~ x ~ x]!57 ~@2>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~ [~ x ~ x]!8 [x!8]!9 [x!7 ~] [x!8]!47 ~@2>").gain(0.4)

stack(epiano1, bass, synth_strings_1, electric_guitar_jazz, kick, snare, hihat)

More by Mariah Carey