Strudelify
Fantasy cover art

1995 · Daydream

Fantasy

Mariah Carey

KeyG majorTempo104 bpm
0:00/0:00
// Fantasy — Mariah Carey
// 104 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 102 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(104/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.

// bass · synth bass 2
const bass = note(`<
  ~@9 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 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 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 B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "g2 g2@3 g2 ~ e2 ~ g2@2 ~ b2@4 ~", B: "e2 e2@3 e2 ~ d2 ~ e2@2 ~@6",
})).s("gm_synth_bass_2").gain(0.48)

// chords · electric guitar clean · "E.GUITAR"
const electric_guitar_clean = note(`<
  ~@9 A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A
  B A C A B A C ~@8 A B A C A B A C A B A C A B A C A B A C ~
>`.pickRestart({
  A: "[d4,g4,b4] ~@2 [d4,g4,b4] ~@2 [d4,f#4,a4] ~ [d4,g4,b4]@3 ~@5", // G D G
  B: "[b3,e4,g4] ~@2 [b3,e4,g4] ~@2 [b3,d4,f#4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~@5", // Em Bm Em
  C: "~@2 [b3,e4,g4]!2 ~@2 [b3,d4,f#4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~@5", // Em Bm Em
})).s("gm_electric_guitar_clean").gain(0.17).pan(0.6)

// chords · epiano1 · "E.PIANO"
const epiano1 = note(`<
  ~@25 A B A B A B A B ~@16 A B A B A B A B ~@8 A B A B A B A B ~@8 A B A B A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "[b3,d4,g4]!2 [b3,d4,f#4]@2", B: "[b3,d4,f#4] [b3,e4,g4]",
})).s("gm_epiano1").gain(0.25).pan(0.6)

// other · lead 5 charang · "SYNTH 1"
const lead_5_charang = note(`<
  ~@9 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 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 B A B A
  B A B A B A B ~@8 A B A B A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "d5!2 ~@9 c5 ~@2 d5 ~", B: "b4!2 ~@14",
})).s("gm_lead_5_charang").gain(0.22).pan(0.3)

// other · lead 5 charang · "SYNTH 2"
const lead_5_charang_2 = note(`<
  ~@28 A B ~@2 A B ~@10 A B ~@2 A B ~@2 A B ~@2 A B ~@10 A B ~@2 A B A B A B A B A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@4
>`.pickRestart({
  A: "~@13 g5 f#5 g5", B: "f#5 ~@15",
})).s("gm_lead_5_charang").gain(0.25).pan(0.7)

// other · lead 2 sawtooth · "SYNTH 3"
const lead_2_sawtooth = note(`<
  ~@14 A ~ A ~@9 A ~ A ~ A ~ A B@6 C@3 ~@8 A ~ A ~ A ~ A B@6 C@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ D ~
>`.pickRestart({
  A: "e6 b5 d6 a5@5", B: "[d6@7 b5@7 d6 a5@5 b5@10 e6@9 b5@7 d6 a5]/6", C: "[~@4 b5@10 e6@9 ~]/3",
  D: "e6 b5 d6 a5@3 g6@2",
})).s("gm_lead_2_sawtooth").gain(0.22).pan(0.6)

// chords · synth strings 1 · "PAD"
const synth_strings_1 = note("<~@25 A@8 ~@16 A@8 ~@8 A@8 ~@8 A@20 ~>".pickRestart({
  A: "[[d4,d6] [e4,b5] [d4,d6] [e4,b5], [g3,b3,g4]]/4", // D E5 D E5 G
})).s("gm_synth_strings_1").gain(0.12)

// chords · string ensemble 2 · "STRINGS 1"
const string_ensemble_2 = note("<A@4 B@3 C@2 ~@93>".pickRestart({
  A: "[[e3,e4]@7 [b2,a3]@8 [c3,b3]@8 e3@7 f#3 g3, ~@23 c3@9]/4", B: "[a2@8 b2@8 c3@7 b2, a3]/3", C: "[[e2,d4]@9 ~@7]/2",
})).s("gm_string_ensemble_2").gain(0.28).pan(0.2)

// chords · string ensemble 2 · "STRINGS 2"
const string_ensemble_2_2 = note("<A@4 B@3 C@2 ~@93>".pickRestart({
  A: "[~@7 a4@8 b4@8 e4@7 f#4 g4, e5]/4", B: "[e5@7 f#5@8 g5@9, a4]/3", C: "[a5@4 b5@5 ~@7, d5@17 ~@15]/2",
})).s("gm_string_ensemble_2").gain(0.28).pan(0.7)

// other · glockenspiel · "GLOCKEN 1"
const glockenspiel = note(`<
  [~@2 e6 b6 ~@2 a6 ~]
  ~
  [~@2 e6 b6 ~@2 a6 ~]
  [~@7 d7]
  [~@2 b6 e6 b6 ~@2 a6]
  [~@7 d7]
  [~@2 b6 e6 b6 ~@2 a6]
  ~@95
>`).s("gm_glockenspiel").gain(0.24).pan(0.1)

// other · glockenspiel · "GLOCKEN 2"
const glockenspiel_2 = note("<A B A B C B C B ~@94>".pickRestart({
  A: "~@6 e6 b6", B: "~@2 a6 ~@5", C: "~@2 d7 ~@2 b6 e6 b6",
})).s("gm_glockenspiel").gain(0.24).pan(0.9)

// drums · kick
const kick = s("bd").struct("<~@9 [x!2 ~@4 x ~ x ~@7]!92 ~>").gain(0.53)

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

// drums · clap
const clap = s("cp").struct("<~@9 [~ x ~ x]!91 [~ x ~@2] ~>").gain(0.53)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@9 A B@3 A B@3 A B@7 A B@7 A B@7 A B@7 A B@7 A B@7 A B@7 A B@7 A B@7 A B@7 A B@2 C ~
>`.pickRestart({
  A: "~ x!6 ~", B: "x!7 ~", C: "x!6 ~@2",
})).gain(0.47)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2
>`.pickRestart({
  A: "~@7 x",
})).gain(0.33)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@28 A ~@3 A ~@11 A ~@3 A ~@3 A ~@3 A ~@11 A ~@3 A ~@11 A ~@3 A ~@3 A ~@3 A ~@5
>`.pickRestart({
  A: "~@7 x",
})).gain(0.6)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@10 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3
>`.pickRestart({
  A: "~@7 x",
})).gain(0.6)

// drums · splash
const splash = s("cr").struct(`<
  ~@9 A ~@3 A ~@3 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@4
>`.pickRestart({
  A: "x",
})).gain(0.53)

// drums · cowbell
const cowbell = s("cb").struct("<~@73 A B A B A B A B ~@21>".pickRestart({
  A: "~@2 x!3 ~ x!3 ~ x!3 ~ x!2", B: "x ~ x!3 ~ x!3 ~@7",
})).gain(0.27)

// drums · bongos
const bongos = s("bongo:18").struct("<~@74 A ~ A ~ A ~ A ~@21>".pickRestart({
  A: "~@5 x ~@2",
})).gain(1.05)

// drums · congas
const congas = s("conga:18").struct("<~@74 A ~ A ~ A ~ A ~@21>".pickRestart({
  A: "~@7 x",
})).gain(1.5)

stack(
  bass, electric_guitar_clean, epiano1, lead_5_charang, lead_5_charang_2, lead_2_sawtooth, synth_strings_1,
  string_ensemble_2, string_ensemble_2_2, glockenspiel, glockenspiel_2, kick, snare, clap, hihat, hihat_soft, mid_tom,
  open_hat, splash, cowbell, bongos, congas
)

More by Mariah Carey