Strudelify
Always Be My Baby cover art

1995 · Daydream

Always Be My Baby

Mariah Carey

KeyE majorTempo80 bpm
0:00/0:00
// Always Be My Baby — Mariah Carey
// 80 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 11 "ORGAN 2" percussive organ (copy of ch 12 "OBOE" oboe)
// note: Full arrangement: all 77 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/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.

// other · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note("<A B A C A B A C A B A C A B A C ~@61>".pickRestart({
  A: "g#4 b3 e4 f#4 e4@2 b3 ~ e4 f#4 e4 b3@2 ~ b3 ~", B: "c#4@2 e4 f#4 e4@2 c#4 ~ e4 f#4 e4 f#4@4 ~",
  C: "c#4@2 e4 f#4 e4@2 c#4 ~ e4 f#4 e4 f#4@3 ~@2",
})).s("gm_acoustic_guitar_nylon").gain(0.71).pan(1)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A B C B A B C B D E F B D E F B G H@2 I J K@2 L D E F B D E F B M N O P G H@2 I J K@2 L D E F B D E F B ~@8 Q R S T U
  V W V X Y Z V U AA Z V ~
>`.pickRestart({
  A: "e2@3 g#1", B: "a1 b1", C: "c#2@3 g#1", D: "~ e2@11 g#1@3 ~", E: "a1@8 b1@7 ~",
  F: "c#2@2 d#2@2 c#2@2 g#1@5 ~ g#1@3 ~", G: "e2@7 ~@5 d#2@3 ~", H: "[c#2@12 g#1@3 a1@15 ~@2]/2",
  I: "f#1@7 ~ b1@4 b1@3 ~", J: "e2@10 ~@2 d#2@3 ~", K: "[c#2@12 b1@3 a1@16 ~]/2", L: "f#1@2 b1!2", M: "e2@11 ~ g#1@3 ~",
  N: "a1@4 b1@3 ~", O: "e2@12 g#1@3 ~", P: "a1@7 ~ b1@8", Q: "f2@12 a1@3 ~", R: "a#1@4 c2@3 ~",
  S: "d2@2 e2@2 d2@2 a1@5 ~ [c#2,d#2] ~@3, d#2 ~@5 g#1 ~@5 a1@3 ~", T: "a#1@7 ~ c2@7 ~", U: "f2@11 ~ a1@4",
  V: "a#1@7 ~ c2@8", W: "d2@2 e2@2 d2@2 a1@3 ~@3 a1@4", X: "f2@5 ~ a1@2", Y: "a#1 c2", Z: "d2 e2 d2 a1 ~@2 a1@2",
  AA: "a#1@8 c2@7 ~",
})).s("gm_electric_bass_finger").gain(0.8)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~@8 A B C D E F G H I J K L I J M L N B O H E B P H A Q R D I J K L I J S T A B O D A B O H U V W X Y Z AA AB AC AD AE
  AF AG AH AE AI AC AD AE AF AG AH AE AI ~
>`.pickRestart({
  A: "b3@10 ~@2 b3 ~ b3@2, [e4,g#4], ~@5 e2@3", B: "[e4,a4,c#5]@2 [a3,c#4,e4] [a3,c4,d#4,f#4]",
  C: "d#4@11 ~ d#4@3 ~, [b3,e4,g#4,b4]@15 ~", D: "[e4,a4,c#5]@4 ~ b2 [a3,c#4,e4]@2", E: "b3@3 b3, [e2,e4,g#4,b4]",
  F: "~@4 a4@2 c#5 ~ [a3,c#4,e4]@4 [a3,c4,d#4,f#4]@4, e4@7 ~@9", // A Adim
  G: "~@13 g#5 b5 c#6, [c#3,b3,c#4,e4,g#4]@7 ~, ~@6 e5 ~", H: "[e4,a4,c#5]@2 ~ [a3,c#4,e4]",
  I: "[b3,e4,g#4]@2 [g#3,b3,e4] [f#3,b3,d#4]", J: "[b3,c#4,e4,g#4]@2 [b3,c#4,e4,g#4] [b3,d#4,f#4,g#4]",
  K: "[c#4,e4,g#4,b4]@5 a2 [c#4,e4,g#4,b4] ~", L: "[a3,c#4,e4,f#4]@2 [c#4,e4,f#4,a4] [f#3,b3,d#4]",
  M: "c#4@5 ~@2 e4, [g#4,b4], e4@3 c#4, ~@5 a2@3", N: "~@13 g#5 b5 ~, [e2,b3,e4,g#4]@7 ~, ~@6 e5 ~",
  O: "[b3,c#4,e4,g#4]@4 ~ g#2 [b3,d#4,f#4,g#4]@2", P: "[b3,c#4,e4,g#4]@2 ~ [b3,d#4,f#4,g#4]",
  Q: "~@4 a4@2 c#5 ~@3 b2@2 [a3,c#4,e4]@4, e4@7 ~@9", R: "b3@11 ~ b3@3 ~, [e4,g#4,b4]@15 ~",
  S: "c#4@3 c#4, [a2,g#4,b4,e5]", T: "[a3,c#4,e4,f#4]@2 [c#4,e4,f#4,a4] [b3,d#4,f#4]",
  U: "[b3,c#4,e4,g#4]@2 ~ [e4,f#4,a#4,c#5]", V: "[a#3,c#4,e4,f#4]@4 ~ g#2 [c4,d#4,f#4,g#4]@2",
  W: "[e4,a4,c#5]@2 [a3,c#4,e4] [b3,d#4,f#4,g#4]", X: "d#4@11 ~ d#4@3 ~, [b3,f#4]@15 ~",
  Y: "[b3,c#4]@8 ~@4 e4@2 g#4 ~, g#4@13 ~@3, e4@10 c#4@5 ~, ~@8 b3@7 ~", // Bsus2
  Z: "[a#3,c#4,e4,f#4]@2 [a#3,c#4,e4,f#4] [c4,d#4,f#4,g#4]", AA: "~@13 c#6 e6 ~, [a2,e4,a4,c#5]@7 ~, ~@6 a5 ~",
  AB: "[f#4,b4,d#5]@4 ~ c3 [g3,c4,e4]@2", AC: "c4@3 c4, [f2,f4,a4,c5]", AD: "[f4,a#4,d5]@2 [a#3,d4,f4] [a#3,c#4,e4,g4]",
  AE: "[c4,d4,f4,a4]@2 [c4,d4,f4,a4] [c4,e4,g4,a4]", AF: "[f4,a#4,d5]@4 ~ c3 [a#3,d4,f4]@2", AG: "[a3,c4,f4]@15 ~",
  AH: "~@4 a#4@2 d5 ~ [f3,a#3,d4]@4 [a#3,c#4,e4,g4]@4, f4@7 ~@9", AI: "[f4,a#4,d5]@2 ~ [a#3,d4,f4]",
})).s("gm_piano").gain(0.6)

// other · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon_2 = note(`<
  ~@8 A B A@3 B A@2 ~@8 A B A@3 B A@2 ~@12 A B A@3 B A@2 ~@8 C D C@3 D C@3 D C@3 D C@2 ~
>`.pickRestart({
  A: "e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~", B: "e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ e5 ~ d#5 ~ d#5 ~",
  C: "f5 ~ f5 ~ f5 ~ f5 ~ f5 ~ f5 ~ f5 ~ f5 ~", D: "f5 ~ f5 ~ f5 ~ f5 ~ f5 ~ f5 ~ e5 ~ e5 ~",
})).s("gm_acoustic_guitar_nylon").gain(0.5).pan(0)

// other · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon_3 = note(`<
  ~@8 A B A C A B A D ~@8 A B A C A B A D ~@12 A B A C A B A D ~@8 E F E G E F E H E F E G E F E H ~
>`.pickRestart({
  A: "b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~", B: "c#5 ~ c#5 ~ c#5 ~ c#5 ~ c#5 ~ c#5 ~ c5 ~ c5 ~",
  C: "c#5 ~ c#5 ~ c#5 ~ c#5 ~ c#5 ~ c#5 ~ c#5 ~ c#5 ~", D: "c#5 ~ c#5 ~ c#5 ~ c#5 ~ c#5 ~ c#5 ~ c#5 ~ b4 ~",
  E: "c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~", F: "d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ c#5 ~ c#5 ~",
  G: "d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~", H: "d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ d5 ~ c5 ~",
})).s("gm_acoustic_guitar_nylon").gain(0.5).pan(0.3)

// other · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon_4 = note(`<
  ~@8 A B A C A B A D ~@8 A B A C A B A D ~@12 A B A C A B A D ~@8 C E C F C E C G C E C F C E C G ~
>`.pickRestart({
  A: "g#4 ~ g#4 ~ g#4 ~ g#4 ~ g#4 ~ g#4 ~ g#4 ~ g#4 ~", B: "a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ f#4 ~ f#4 ~",
  C: "a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 ~", D: "a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ g#4 ~",
  E: "a#4 ~ a#4 ~ a#4 ~ a#4 ~ a#4 ~ a#4 ~ g4 ~ g4 ~", F: "a#4 ~ a#4 ~ a#4 ~ a#4 ~ a#4 ~ a#4 ~ a#4 ~ a#4 ~",
  G: "a#4 ~ a#4 ~ a#4 ~ a#4 ~ a#4 ~ a#4 ~ a#4 ~ a4 ~",
})).s("gm_acoustic_guitar_nylon").gain(0.5).pan(0.8)

// other · oboe
const oboe = note(`<
  ~@2 A@2 B@2 C D E@3 F@6 G H I J@2 K L@2 M N@3 O@4 ~@3 P G H I J@2 K L@2 M N@3 Q@4 R S T U V@3 W X Y Z@2 AA@4 X Y Z@2
  AB@3 ~
>`.pickRestart({
  A: "[g#4@7 f#4 f#4@2 e4@3 d#4@2 c#4@2 b3@4 f#4@2 [e4,f#4] e4@8, ~@8 g#4 ~@23]/2", // Esus2
  B: "[~ e4@6 [d#4,e4] d#4@2 c#4@3 b3@2 a3@2 g#3@10 ~@5]/2", C: "~@15 f#4, ~@7 e4",
  D: "g#4 a4 b4 g#4@2 ~ e4@6 ~@4, ~@5 f#4@2 ~@9",
  E: "[~@6 e4 f#4 g#4@2 ~ e4@10 ~ e4 f#4 g#4 ~ a4 g#4 ~ f#4 e4@7 ~ e4 f#4 g#4 ~@2 e4@2 f#4 e4@2]/3",
  F: "[~ f#4 e4@3 ~ e4 f#4 g#4 ~ a4 g#4 ~ f#4 e4@7 ~@2 f#4 g#4 ~@2 b4 ~@2 e4@6 ~@2 e4 f#4 g#4 ~ a4 g#4 ~ f#4 e4@6 ~@2 [e4,f4] f#4 g#4 ~ e4@3 f#4 e4@6 ~@2 e4 f#4 g#4 ~ a4 g#4 ~ f#4 e4@5 ~ e4 f#4 g#4 f#4@2 ~ e4@6, ~@11 e4 ~@36]/6", // Fmaj7
  G: "~@2 e4 c#4 e4@2 ~@2 f#4@2 ~ c#4@5, ~@3 c#4 ~@4, ~@7 e4@2 ~@7",
  H: "~@2 b3 ~ b3 ~ f#4 g#4 f#4@2 e4@6, ~@5 e4@2 ~@9", I: "e4 d#4 ~ c#4@2 ~ c#4 e4@2 f#4 g#4 f#4@5",
  J: "[~@3 a4 b4@2 a4 g#4 b4@10 ~ a4 b4@2 c#5 g#4@2 f#4 e4 g#4@5, ~ g#4 ~@7 g#4 ~@6]/2",
  K: "~@2 e4 ~ e4 f#4 g#4 f#4@2 e4@6 b4",
  L: "[b4@2 ~@2 g#4@2 f#4 e4@2 f#4 g#4 f#4@3 e4@4 f#4 ~ e4!2 b3!2 f#4 ~ e4 b3@5]/2",
  M: "~@2 f#4 ~ e4 ~ b3@2 e4 f#4 g#4 f#4@2 ~ e4@2",
  N: "[~@2 c#5 ~ g#4!5 ~ b4 g#4 ~ f#4 e4@4 ~ f#4@2 e4!2 ~ g#4@2 b4 f#4@3 e4 f#4@3 e4@4 b3!2 f#4@2 e4 b3@5, ~@9 g#4 ~@14]/3",
  O: "[~@2 f#4@2 e4@2 b3 ~ f#4 g#4@2 f#4@3 e4@4 c#5 ~ g#4!4 g#4@2 b4 g#4@2 f#4 e4@4 g#4 f#4@2 e4!3 g#4@2 b4 f#4@3 e4 f#4@3 e4@3 ~@11, ~@14 f4 ~@49]/4",
  P: "~@4 e4 f#4 g#4 f#4@2 ~ e4@6",
  Q: "[~@2 f#4@2 e4@2 b3 ~ f#4 g#4@2 f#4@3 e4@4 c#5 ~ g#4!4 g#4@2 b4 g#4@2 f#4 e4@4 g#4@2 ~ e4!2 ~ g#4@2 b4 f#4@3 e4 f#4@3 ~@2 c#5@4 g#4@4 e5@4, ~@14 f4 ~@21 f#4@2 ~@2 e4 ~@9 e4@4 ~@10]/4",
  R: "c#5 b4 g#4 f#4", S: "~@2 c#4!2 e4@2 c#4 e4@3 c#4!2 [c#4,e4] f#4 ~@2", T: "g#4 ~ f#4@10 ~@4",
  U: "~@4 c#5@4 b4@4 g#4@3 ~",
  V: "[g#4@3 ~ f#4@4 f#4@2 e4@2 c#4@2 ~@3 b4 g#4 ~ g#4 f#4!2 ~@2 c#4 ~@2 f#4 g#4 ~ g#4@3 a4@5 ~ c5@7 ~, ~@14 e4@6 ~@4 e4@2 ~ e4@2 ~@19, ~@8 c#5 ~@15]/3",
  W: "~@2 g4@2 f4!2 c4!2 g4 ~ f4 c4@5", X: "~@2 g4 ~ f4 ~ c4 ~ f4 g4 a4 g4@3 f4@2",
  Y: "~@2 d5@2 a4!4 a4@2 c5 g4@2 ~ f4@2", Z: "[~@2 a4 g4@2 f4!3 a4@2 c5 ~ g4 ~ f4 g4@3 f4@4 c4!2 g4@2 f4 c4@5]/2",
  AA: "[~@2 g4@2 f4@2 c4 f4 ~ g4 a4 g4@3 f4@4 d5 a4 ~ a4!4 ~ c5 g4@3 f4@4 a4 g4@2 f4!3 a4@2 c5 g4@3 f4 g4@2 ~ g4@2 f4!2 c4!2 g4 ~ f4 c4@5]/4",
  AB: "[~@2 g4@2 f4@2 c4 f4 ~ g4 a4 g4@3 f4@4 d5 a4 ~ a4!4 ~ c5 g4@3 f4@4 a4 g4@2 f4!3 a4@2 c5 g4@3 f4 ~]/3",
})).s("gm_oboe").gain(0.8)

// drums · kick
const kick = s("bd").struct("<~@4 x!4 [x!4]!44 [x!2]!8 [x!4]!16 ~>").gain(0.8)

// drums · rim
const rim = s("rim").struct("<~@8 [x!4]!44 [x!2]!8 [x!4]!16 ~>").gain(0.8)

// drums · clap
const clap = s("cp").struct("<~@8 [~ x ~ x]!44 ~@8 [~ x ~ x]!16 ~>").gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<~@8 [x!2]!44 ~@8 [x!2]!16 ~>").gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@8 A ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~@8 A ~ A@2 ~ A@2 ~ A@2 ~
  A@2 ~ A@2 ~@2
>`.pickRestart({
  A: "~@5 x ~@2",
})).gain(0.8)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@8 A ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~ A@2 ~@8 A ~ A@2 ~ A@2 ~ A@2 ~
  A@2 ~ A@2 ~@2
>`.pickRestart({
  A: "~@11 x ~@4",
})).gain(0.8)

// drums · ride
const ride = s("rd").struct("<~@8 x!44 ~@8 x!16 ~>").gain(0.8)

stack(
  acoustic_guitar_nylon, bass, piano, acoustic_guitar_nylon_2, acoustic_guitar_nylon_3, acoustic_guitar_nylon_4, oboe,
  kick, rim, clap, hihat, mid_tom, high_tom, ride
)

More by Mariah Carey