Strudelify
Honey cover art

1997 · Butterfly

Honey

Mariah Carey

KeyG minorTempo97 bpm
0:00/0:00
// Honey — Mariah Carey
// 97 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 120 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(97/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, A@4 for four bars: edit a riff to change every repeat.

// chords · epiano2 · "ELECPIANO"
const epiano2 = note("<A B A B A B A B ~@85 A B A B A B A B ~@16 A C@2>".pickRestart({
  A: "[ab3,c4,eb4,g4,bb4]@15 ~", B: "[bb3,d4,f4,bb4]@15 ~",
  C: "[[bb3,d4,f4,bb4]@14 ~@3 c5@15, ~@14 g3@15 ~@3, ~@15 [b3,c4]@15 ~@2, ~@16 [e4,g4]@15 ~]/2", // Bb Cmaj7 Em
})).s("gm_epiano2").gain(0.5)

// bass · electric bass finger · "FINGERBAS"
const bass = note(`<
  ~@7 A B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C
  B C B C B C B C B C B C B C B C B C B C B C B C B C B C B ~@7 D C B C B C B C B C B C B C B C B E ~@2
>`.pickRestart({
  A: "bb2 ~@3 bb2 ~@3 bb2 ~@3 bb2 ~@3", B: "bb2 bb1 ~@3 eb2 eb3 eb2 ~ eb2 eb3 eb2 d3 d2 db3 db2",
  C: "c3 c2 ~@3 c2 f3 f2 ~@5 f2 f3 f2", D: "~@15 db2", E: "c3 c2 ~@14",
})).s("gm_electric_bass_finger").gain(0.56)

// other · epiano2 · "ELECPIANO2"
const epiano2_2 = note(`<
  ~@24 A ~@3 B ~@7 A ~@7 A ~@3 A ~@11 A ~@3 C ~@11 A ~@3 C ~@11 A ~@7 A ~@3 C ~@3 A ~@7 A ~@3
>`.pickRestart({
  A: "~@8 [eb3,f3] [g3,ab3,bb3] [c4,d4,eb4] [f4,g4] [ab3,bb3,ab4,bb4] [c4,d4,eb4,f4] [g4,ab4] [bb4,c5]", // Ebsus2 Gm Cm Fsus2 Absus2 Dm7 Abmaj7 Bbsus2
  B: "~@12 [ab3,bb3,c4] [d4,eb4,f4,g4] [ab4,bb4] c5", C: "~@12 [ab3,bb3] [c4,d4,eb4,f4] [g4,ab4] [bb4,c5]",
})).s("gm_epiano2").gain(0.5)

// other · synth strings 2 · "SYNSTR2"
const synth_strings_2 = note(`<
  ~@28 A B@2 C@2 B@2 D@2 B@2 C@2 B@2 E F G@2 H@2 G@2 H@2 ~@7 A B@2 C@2 B@2 D@2 B@2 C@2 B@2 E F G@2 H@2 G@2 H@2 ~@15 A
  B@2 C@2 B@2 D@2 B@2 C@2 B@2 E F D@2 ~
>`.pickRestart({
  A: "c5 bb4 d5 c5 eb5 d5 f5 eb5 g5 f5 ab5 g5!2 ab5 bb5 c6", B: "[bb5@27 ~ c6@4]/2", C: "[g5@7 c6]/2", D: "[g5@31 ~]/2",
  E: "g5@15 ~", F: "c5@3 ~ d5@3 ~ eb5@3 ~ eb5@2 f5@2", G: "[g5@27 ~ c6@3 ~]/2", H: "[bb5@27 ~@5]/2",
})).s("gm_synth_strings_2").gain(0.66)

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

// drums · clap
const clap = s("cp").struct("<~@20 A ~@7 A ~@3 A ~@19 A ~@67>".pickRestart({
  A: "~@5 x!2 ~",
})).gain(0.72)

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

// drums · hihat
const hihat = s("hh").struct("<A B A B ~@3 C D@85 A B A B ~@3 C D@16 E ~@2>".pickRestart({
  A: "x!2 ~@2 x!2 ~@2 x!2 ~ x!3 ~@2", B: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~ x", C: "x ~@3 x ~@3 x!2 ~@2 x!2 ~@2",
  D: "~ x!7", E: "x",
})).gain(0.72)

// drums · open hat
const open_hat = s("oh").struct("<~@8 x!85 ~@8 x!16 ~@3>").gain(0.64)

// drums · ride bell
const ride_bell = s("rd").struct("<~@117 x ~@2>").gain(0.56)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~ A ~ B ~ C D ~ E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E
  F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E ~ A ~ B ~ C D ~ F E F E F E F E F E F E F E F E
  ~@3
>`.pickRestart({
  A: "~@6 x ~ x!2 ~@6", B: "~@6 x ~ x!2 ~@2 x ~@3", C: "~@7 x", D: "x", E: "~@10 x ~ x!2 ~@2", F: "~@8 x!2 ~@4 x ~",
})).gain(3.24)

// drums · triangle
const triangle = s("triangles:30").struct(`<
  A B C B A B C B D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D
  E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D E D A B C B A B C B E D E D E D E D E D E D E D E D
  ~@3
>`.pickRestart({
  A: "x ~ x!2 ~@2 x!2 ~@2 x!2 ~@2 x ~", B: "x ~@5 x!2 ~@2 x!2 ~@2 x ~", C: "~@4 x ~@2 x ~@2 x!2 ~@2 x ~",
  D: "~@3 x ~@3 x", E: "x ~@2 x ~@4",
})).gain(4.88)

// drums · triangle
const triangle_2 = s("triangles:35").struct("<A B C B A B C B D@85 A B C B A B C B D@16 E ~@2>".pickRestart({
  A: "~ x ~ x", B: "~ x!2 ~@3 x ~", C: "x ~@2 x ~@2 x ~@5 x ~@3", D: "~ x ~@3 x ~@2", E: "x",
})).gain(4.88)

// drums · bell tree
const bell_tree = s("marktrees:0").struct("<~@4 A ~@7 B ~@7 B A ~@94 C ~@3>".pickRestart({
  A: "x", B: "~@3 x", C: "~@7 x",
})).gain(3.34)

stack(
  epiano2, bass, epiano2_2, synth_strings_2, kick, clap, snare, hihat, open_hat, ride_bell, cabasa, triangle,
  triangle_2, bell_tree
)

More by Mariah Carey