Strudelify
I'll Be There cover art

I'll Be There

Mariah Carey

KeyF majorTempo84 bpm
0:00/0:00
// I'll Be There — Mariah Carey
// 84 bpm, 4/4, key F major. 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: ch 2 "Synth Bass" named as a bass, played on synth bass 1 (its synth brass 2 patch is not one)
// note: duplicate parts dropped: ch 6 "Acoustic Bass" acoustic bass (copy of ch 3 "Bass" electric bass finger)
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(84/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 · synth bass 1 · "Synth Bass"
const synth_bass_1 = note(`<
  ~@12 A B C D E F G@2 ~@15 H A I C J K L@3 M N@2 O M P@2 Q ~@8 R S@2 T@2 K U@3 S@2 T@2 K V@2 W X Y Z AA AB AC@3
>`.pickRestart({
  A: "[g4,c5] c4 f4 ~ f4 c4 f4 c4", B: "g4 c4 e4 [c4,g4] e4 c4 e4 c4", C: "d4 a3 d4 ~ d4 a3 d4 a3",
  D: "c4@2 ~@2 c4@2 c4 d4 c4@2 a3@2 c4@2 a3@2", E: "[f3,d4]@2 c4@2 bb3@2 [f3,d4]@2 [f3,bb3]@3 ~@5",
  F: "[bb3,d4]@5 ~@3 c4@2 f3@2 bb3 c4 ~@2", // Bb
  G: "[[a3,c4]@4 [a3,c4,d4]@2 ~ [bb3,c4,d4,f4]@2 f3 [bb3,c4]@2 [a3,c4] f3 [a3,c4] ~]/2", // Am D7 Bb Bbsus2 Am
  H: "~@2 [bb3,c4] f3 [bb3,d4] f3 [a3,c4,d4,f4]@2", I: "g4 c4 e4 c4 e4 c4 e4 c4",
  J: "c4@2 e4@2 [c4,e4]@2 c4 d4 c4@2 a3@2 c4@2 a3@2, ~ e4", // C
  K: "[f3,d4]@2 c4@2 bb3@2 [f3,c4,d4]@2 [f3,bb3,d4]@3 f4@3 bb4@2", // Dm Dm7 Bb
  L: "[[bb3,d4,a4]@5 g4 f4 d4 c4@2 f3@2 bb3 c4 ~@4 f4 g4@4 ~ [a3,c4,d4]@4 f4@2 [bb3,c4,d4,f4]@4 f3@2 [bb3,c4]@4 [a3,c4]@2 f3@2 [a3,c4]@2 f4@2, ~@14 d4@4 ~@5 f4@5 ~@20, ~@2 [a3,c4] ~@3]/3", // Bbmaj7 D7 Bb Bbsus2 Am
  M: "[eb4,ab4,c5]@4 [eb4,ab4,c5]@3 ~", // Ab
  N: "[~@4 [eb4,g4,bb4]@4 [eb4,g4,bb4]@3 bb4 ~@3 [bb4,d5,f5]@4 ~ [bb4,f5]@2 [bb4,d5,f5]@4 d5 c5 bb4@4, ~@4 eb5@6 ~@10 d5 ~@11]/2", // Eb Bb Bb5 Bb
  O: "~ c5@2 ~ [f4,a4]@4 [f4,a4] ~@3 [a3,c4,f4]@4, [f4,a4] ~@3", // F
  P: "[[g4,bb4]@2 ~@2 [g4,bb4]@4 [eb4,g4,bb4]@3 ~@4 [bb4,d5,f5]@2 d5 c5 bb4@5 [d4,f4]@3 c5 [f4,bb4,d5] c5 d5@2]/2", // Gm Eb Bb Dm Bb
  Q: "[d4,f4,bb4] ~@7", R: "~@2 [bb4,d5,f5] [f4,bb4,d5] [f4,bb4,c5]@2 [f4,bb4,c5] d5",
  S: "[[a3,c4,g4] f4@3 [c4,f4,a4]@3 g4 [c4,f4,a4]@4 [f4,a4,c5]@2 [e4,g4,d5]@6 ~ e5 d5 c5 d5 ~@5 d5@2, ~@5 [e4,g4]!3, ~@25 c5@5 ~@2]/2", // Am7 F Em7 Em
  T: "[[a3,c4,f4]@4 [a3,c4,f4]@4 [f4,a4,e5]@2 c5@2 [f4,a4,c5]@2 [e4,g4,a4,d5]@6 [e4,g4,a4,c5]@4 [c4,e4,a4]@2 bb4 c5 [a3,c4,g4]@2 f4@2]/2", // F Fmaj7 F Em7 Am7 Am Am7
  U: "[[bb3,d4,a4]@5 g4 f4 d4 c4@2 f3@2 bb3 c4 ~@4 f4 g4@4 ~ [a3,c4,d4]@4 f4@2 [a3,c4,d4,f4]@5 c5 [bb4,d5,f5] ~@2 c5 [bb4,c5,d5,f5] ~@2 c5 [bb4,c5,d5,f5]@4, ~@14 d4@4 ~@5 f4@5 ~@20, ~@2 [a3,c4] ~@3]/3", // Bbmaj7 D7 Dm7 Bb Am
  V: "[[bb3,d4,a4]@5 g4 f4 d4 c4@2 f3@2 bb3 c4 ~@4 f4 g4@4 f4@5 [c4,f4,g4]@2 c5@2, ~@7 d4@2 ~@7, ~@4 [a3,c4]@3 ~]/2", // Bbmaj7 Csus4 Am
  W: "[a4,f5] f5 d5 [bb4,f5]@3 [a4,d5] c5 a4 g4 f4@3 g4 a4@2", X: "~@8 c5@2 bb4@2 a4@2 a4 g4, [c4,d4,f4]",
  Y: "f4 d4 f4@2 d4 c4 a3 g3 f3@2 c4 ~ d4@2 f4 g4",
  Z: "f4 [c4,f4,a4]@4 [c4,f4,a4]@3 c4 [c4,f4,bb4] [c4,f4,a4]@3 [c4,f4,a4]@3", // F Fsus4 F
  AA: "~ [bb3,eb4,ab4]@2 [bb3,eb4,g4]@4 [bb3,d4,f4]@9", // Ebsus4 Eb Bb
  AB: "~ [c4,f4,a4]@4 [c4,f4,a4]@3 c4 [c4,f4,bb4] [c4,f4,a4]@3 [c4,f4,a4]@3", // F Fsus4 F
  AC: "[~ [bb3,eb4,ab4]@2 [bb3,eb4,g4]@5 [bb3,d4,f4]@14 ~@2 f6@4 ~@20, ~@11 bb5@11 ~@2, ~@23 [c6,d6]@4 ~@21]/3", // Ebsus4 Eb Bb Csus2
})).s("gm_synth_bass_1").gain(0.22).pan(0.9)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y V Q Z M N O P AA AB AC AD M N O P Q R S T U V W X Y V Q AE AF@2 N O
  P AA AB AC AG AH AI AJ AK AL AM AN AO AH AI AJ AK AL AM AN AP AQ AR AS AT AU AV@3
>`.pickRestart({
  A: "f3", B: "eb3@6 bb2@4 bb2 c3 d3@2 f3@2", C: "f2@7 c2", D: "~ f2@3", E: "f3@7 f3", F: "e3@14 [e3,f3] e3",
  G: "d3@7 d3", H: "c3", I: "bb2@14 c3 d3", J: "~@2 f3@2 bb3@2 f3@2 bb3@2 f3@2 ~ f3@2 g3, c3@5 ~ bb3 ~",
  K: "f3@3 f3@4 c3", L: "f3 e3 f3 e3@2 c3 a2 c3", M: "f2@3 f2 f2@4", N: "e2@3 e2 e2@4", O: "d2@4 c2@3 c2",
  P: "a1@3 a1 a1@4", Q: "bb1@3 bb1 bb1@4", R: "c2@3 c2 c2@4", S: "f2@6 f2@2 f2@6 c2 d2", T: "f2@3 f2 f2@2 f1 g1",
  U: "ab1@3 a1 c2@2 db2 d2", V: "eb2@3 eb2 g1@2 ab1 a1", W: "b1@3 b1 d2@2 eb2 e2", X: "f2@7 c2 f1 c2 f2@2 a1@2 c2@2",
  Y: "ab1@3 ab1 bb1@2 db2 d2", Z: "c2", AA: "bb1@3 a1 g1@4", AB: "c2@6 c2@8 c2 d2", AC: "f2@6 f2@2 f2@6 a2 c3",
  AD: "f3 f3@2 d3@2 c3 a2 c3", AE: "c2@3 c2@4 g2", AF: "[~@8 f2@3 f2 f2@4, c3 ~, ~ [f3,bb3]@16 ~@15, ~ d4@8 ~@7]/2",
  AG: "f3@2 c3@2 c3@2 c3@2 c3@2 c3@2 c3 d3 f3@2", AH: "a2@6 a2@2 a2@6 g2 f2", AI: "e2@6 e2@2 e2@6 f2 e2",
  AJ: "d2@3 d2 c2@3 c2", AK: "a1@6 a1@2 a1@6 g1 a1", AL: "bb1@3 a1 g1@3 g1", AM: "c2@6 c2@2 c2@2 c2@4 c2 d2",
  AN: "f2@6 f2@2 f2@2 f2@4 c2 d2", AO: "f2@2 c2@2 c2@2 c2@2 c2@2 c2@2 c2 d2 f2 d2", AP: "f2@3 f2 f2@3 c3", AQ: "bb2",
  AR: "[c3,f3,bb3]", AS: "~ [f2,f3]@15", AT: "~ [eb2,eb3]@6 [bb1,bb2]@4 bb1 c2 d2@2 g2", AU: "d2 [f1,f2]@15",
  AV: "[~ [eb1,eb2]@2 [eb1,eb2]@5 [bb0,bb1]@35 ~@5]/3", // Eb Bb
})).s("gm_electric_bass_finger").gain(0.25)

// chords · piano
const piano = note(`<
  A B A C D E F G H I@3 J K L M N O@3 P@3 Q R S@2 T U V W X Y Z@3 J K L M N O@3 P@3 Q R S@2 AA AB U V W X Y AC@3 AD@2
  AE@2 N AF@3 AD@2 AE@2 N AG@2 AH AI AJ AK AL AM AN@3
>`.pickRestart({
  A: "[c4,f4,a4]@4 [c4,f4,a4]@3 c4 [c4,f4,bb4] [c4,f4,a4]@3 [c4,f4,a4]@4", // F Fsus4 F
  B: "[bb3,eb4,ab4] [bb3,eb4,g4]@2 [bb3,d4,f4]@5", C: "[c4,f4,bb4]@3 f4 f5 f4 c5@2",
  D: "[f4,a4]@2 c4@2 [f4,a4]@2 [c4,bb4] a4 f4@2 c4@2 ~@2 bb4@2, ~@4 a4@3 ~, ~@3 f4", // F C7
  E: "g4 c4 e4 [c4,g4] e4 c4 e4 c4, c5@3 ~ g4@4", // C5
  F: "[d4,f4]@2 a3@2 [d4,f4]@2 [e4,g4]@2 d4@2 a3@2 d4@2 g4 f4, ~@4 f4@3 a3", // Dm Em
  G: "e4 a3 c4 [a3,e4] c4 a3 c4 a3, a4@3 ~ e4@4", H: "c4@2 f3@2 c4@2 f3@2 [bb3,d4]@3 f4@3 bb4@2, [d4,f4] ~",
  I: "[[bb3,d4,a4]@5 g4 f4 d4 c4@6 ~@4 f4@2 ~@4 [a3,c4,d4]@4 f4@2 [bb3,d4,f4]@12 f4@2 c5@2 [g4,c5] [a4,d5], ~@7 d4@2 ~ f4@4 ~@10, ~@8 [a3,c4]@4 ~@3 c4 ~@8]/3", // Bbmaj7 D7 Bb C5 D5 Am
  J: "[g4,c5] c4 [f4,a4] bb4 f4 c4 f4 [c4,bb4], ~@4 a4@3 ~", // C5 F C7
  K: "g4@2 c4@2 e4@2 [c4,g4]@2 g4 a4 c4@2 e4@2 c4@2, c5@3 ~ e4 g4@3", // C5
  L: "[d4,f4]@2 a3@2 f4!2 ~ g4 d4@2 a3@2 d4@2 [a3,g4]@2, ~@2 d4 ~ f4@3 ~", // Dm A7
  M: "[c4,a4]@2 e4@2 [c4,e4]@2 [c4,e4] [d4,f4] c4@2 a3@2 c4@2 a3@2, ~ e4", // F C Dm
  N: "[f3,d4]@2 c4@2 bb3@2 [f3,c4,d4]@2 [f3,bb3,d4]@3 f4@3 bb4@2", // Dm Dm7 Bb
  O: "[[bb3,d4,a4]@5 g4 f4 d4 c4@2 f3@2 bb3 c4 ~@4 f4 g4@4 ~ [a3,c4,d4]@4 f4@2 [bb3,c4,d4,f4]@4 f3@2 [bb3,c4]@4 [a3,c4]@2 f3@2 [a3,c4]@2 f4@2, ~@14 d4@4 ~@5 f4@5 ~@20, ~@2 [a3,c4] ~@3]/3", // Bbmaj7 D7 Bb Bbsus2 Am
  P: "[~@4 eb5@2 eb5@2 [eb4,ab4,c5]@6 c5 eb5@2 c5 ~@2 [eb4,g4,bb4]@4 [eb4,g4,bb4]@3 bb4 d5@2 eb5 [bb4,d5,f5]@4 d5!3 [bb4,d5,f5]@4 d5 c5 bb4@4, [eb4,ab4,c5]@4 eb5 ~@4 eb5@3 ~@6 [bb4,f5] ~@5]/3", // Ab Eb Bb Ab Bb5
  Q: "~ c5@2 ~ eb5 d5 c5!2 [f4,a4,c5] d5@3 [a3,c4,f4]@4, [f4,a4]@3 d5@2 ~@11, ~ [f4,a4] ~@2", // F
  R: "~@4 eb5@2 eb5@2 [eb4,ab4,c5,eb5]@6 bb4 c5, [eb4,ab4,c5] ~", // Ab
  S: "[[g4,bb4,eb5]@2 f5@2 [g4,bb4,eb5]@4 [eb4,g4,bb4]@3 bb4 d5 eb5@2 [bb4,d5,f5]@2 d5 c5 bb4@5 [d4,f4]@3 c5 [f4,bb4,d5] c5 d5@2]/2", // Eb Bb Dm Bb
  T: "[d4,f4,bb4]@2 f5@4 d5 [f4,bb4,d5]@2 c5 a4 g4 f4 g4 f4@2", // Bb
  U: "[f4,a4]@2 c4@2 ~ f5 d5 ~ c5 a4 ~@2 c4@2 [f4,a4]@2, ~@2 [f4,a4] ~ f4@2 c5@2", // F
  V: "g4@2 c4@2 e4@2 ~ d5 [g4,c5]@2 c4@2 e4@2 c4@2, c5@3 c4 ~ g4@3", // C5
  W: "[d4,f4]@2 a3 f4!2 g4 ~@2 d4@2 a3@2 f4@2 [g3,d4]@2, ~@3 f4@2 ~@3", // Dm G5
  X: "[c4,e4]@2 f4 g4 [c4,a4]@3 e4 [c4,f4] e4@2 d4 [a3,c4]@2 e4@2", // C F F5 Am
  Y: "[f3,d4]@2 c4@2 bb3@2 [f3,c4]@2 [f3,bb3,d4]@3 f4@3 bb4@2", // Dm F5 Bb
  Z: "[[bb3,d4,a4]@5 g4 f4 d4 c4@2 f3@2 bb3 c4 ~@4 f4 g4@4 ~ [a3,c4,d4]@4 f4@2 [a3,c4,d4,f4]@6 [bb3,c4]@2 f3@2 [bb3,d4]@2 f3@2 [a3,c4,d4,f4]@4, ~@14 d4@4 ~@5 f4@5 ~@20, ~@2 [a3,c4] ~@3]/3", // Bbmaj7 D7 Dm7 Bbsus2 Bb Dm7 Am
  AA: "[d4,f4,bb4]@2 f5@4 d5 a5@3 g5 a5 c6@3 a5", AB: "~@2 c6@3 b5!2 a5!2 g5!2 f5 g5 a5 g5 f5",
  AC: "[[bb3,d4,a4]@5 g4 f4 d4 c4@2 f3@2 bb3 c4 ~@4 f4 g4@4 ~ [bb3,c4,d4]@4 f4@2 [bb3,c4,d4,f4]@6 [bb4,d5,f5]@2 [f4,bb4,d5]@2 [f4,bb4,c5]@4 [f4,bb4,c5]@2 d5@2, ~@14 d4@4 ~@5 f4@5 ~@20, ~@2 [a3,c4] ~@3]/3", // Bbmaj7 Bb Fsus4 Am
  AD: "[[a3,c4,g4] f4@3 [c4,f4,a4]@3 g4 [c4,f4,a4]@4 [f4,a4,c5]@2 [e4,g4,d5]@6 ~ e5 d5 c5 d5 ~@5 d5@2, ~@5 [e4,g4]!3, ~@25 c5@5 ~@2]/2", // Am7 F Em7 Em
  AE: "[[a3,c4,f4]@4 [a3,c4,f4]@4 [f4,a4,e5]@2 c5@2 [f4,a4,c5]@2 [e4,g4,a4,d5]@6 [e4,g4,a4,c5]@4 [c4,e4,a4]@2 bb4 c5 [a3,c4,g4]@2 f4@2]/2", // F Fmaj7 F Em7 Am7 Am Am7
  AF: "[[bb3,d4,a4]@5 g4 f4 d4 c4@2 f3@2 bb3 c4 ~@4 f4 g4@4 ~ [a3,c4,d4]@4 f4@2 [a3,c4,d4,f4]@5 c5 [bb4,d5,f5] ~@2 c5 [bb4,c5,d5,f5] ~@2 c5 [bb4,c5,d5,f5]@4, ~@14 d4@4 ~@5 f4@5 ~@20, ~@2 [a3,c4] ~@3]/3", // Bbmaj7 D7 Dm7 Bb Am
  AG: "[[bb3,d4,a4]@5 g4 f4 d4 c4@2 f3@2 bb3 c4 ~@4 f4 g4@4 f4@5 [c4,f4,g4]@2 c5@2, ~@7 d4@2 ~@7, ~@4 [a3,c4]@3 ~]/2", // Bbmaj7 Csus4 Am
  AH: "[a4,f5] f5 d5 [bb4,f5]@3 [a4,d5] c5 a4 g4 f4@3 g4 a4@2", AI: "~@8 c5@2 bb4@2 a4@2 a4 g4, [c4,d4,f4]",
  AJ: "f4 d4 f4@2 d4 c4 a3 g3 f3@2 c4 ~ d4@2 f4 g4",
  AK: "f4 [c4,f4,a4]@4 [c4,f4,a4]@3 c4 [c4,f4,bb4] [c4,f4,a4]@3 [c4,f4,a4]@3", // F Fsus4 F
  AL: "~ [bb3,eb4,ab4]@2 [bb3,eb4,g4]@4 [bb3,d4,f4]@9", // Ebsus4 Eb Bb
  AM: "~ [c4,f4,a4]@4 [c4,f4,a4]@3 c4 [c4,f4,bb4] [c4,f4,a4]@3 [c4,f4,a4]@3", // F Fsus4 F
  AN: "[~ [bb3,eb4,ab4]@2 [bb3,eb4,g4]@5 [bb3,d4,f4]@14 ~@2 f6@22 ~@2, ~@11 bb5@11 ~@2, ~@23 [c6,d6]@22 ~@3]/3", // Ebsus4 Eb Bb Csus2
})).s("gm_piano").gain(0.25)

// drums · kick
const kick = s("bd").struct("<~@12 [x ~@3 x!2 ~@2]!67 [~ x ~@7 x ~ x ~@4]!3 ~@3>").gain(0.24)

// drums · clap
const clap = s("cp").struct("<~@12 [~ x ~ x]!66 [~@4 x ~@8 x ~@2] [~@5 x ~@7 x ~@2]!3 ~@3>").gain(0.24)

// drums · snare
const snare = s("sd").struct("<~@12 [~ x ~ x]!66 [~@4 x ~@8 x ~@2] [~@5 x ~@7 x ~@2]!3 ~@3>").gain(0.24)

// drums · low tom
const low_tom = s("lt").struct("<~@11 [~@14 x!2] ~@23 [~@14 x!2] ~@49>").gain(0.32)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4
  [~ x ~ x]!7
  ~
  [x!8]!66
  [x ~ x ~ x ~ x ~ x ~ x ~@2 x ~ x]
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!3
  ~@3
>`).gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<~@11 A ~@11 B ~@11 A ~@11 B ~@37>".pickRestart({
  A: "~@3 x", B: "~@6 x!2",
})).gain(0.32)

// drums · high tom
const high_tom = s("ht").struct("<~@11 A ~@11 B ~@11 C ~@11 B ~@37>".pickRestart({
  A: "~@5 x ~@2", B: "~@6 x!2", C: "~@9 x ~@6",
})).gain(0.32)

// drums · crash
const crash = s("cr").struct("<A ~ A ~@9 B ~@11 B ~@3 B ~@7 B ~@11 B ~@36>".pickRestart({
  A: "x ~@3 x ~@2 x!3 ~@2 x ~@3", B: "x",
})).gain(0.12)

stack(synth_bass_1, bass, piano, kick, clap, snare, low_tom, hihat, mid_tom, high_tom, crash)

More by Mariah Carey