Strudelify
Dream Lover cover art

2006 · #1's

Dream Lover

Mariah Carey

KeyF majorTempo102 bpm
0:00/0:00
// Dream Lover — Mariah Carey
// 102 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 97 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(102/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 strings 1 · "Syn String"
const synth_strings_1 = note(`<
  A B A C D E F@2 ~@51 G H I J I H I H K L M N M O M O P Q R S R T U V W A B A B X Y Z Y AA AB ~@3
>`.pickRestart({
  A: "[a4,c5,f5]", B: "[bb4,d5,g5]", C: "[bb4,d5,g5] [bb4,d5,g5,c6]", D: "[f2,f3,f4,g4,c5,e5,e6]",
  E: "[f5,f6] [a5,a6], [g2,g3,g4,bb4,d5]", F: "[[f2,f3,a4,c5,f5,g5] [g2,g3,bb4,f5,bb5], [c6,c7]]/2", G: "~@5 c5 d5 f5",
  H: "[a5,f6]", I: "[bb5,g6]", J: "[c6,a6]", K: "[g5,d6]", L: "[a5,c6]", M: "[g2,g3,bb3]", N: "[f2,f3,a3]",
  O: "[f2,f3,a3,c4]", P: "[g2,g3,bb3,d4]", Q: "[c5,f5,a5]", R: "[d5,g5,bb5]", S: "[f5,a5,c6]", T: "[f3,f4,c5,f5,a5]",
  U: "[g3,g4,bb4,d5,g5]", V: "[f3,a4,c5,f5]", W: "[g2,g3,g4,bb4,d5]", X: "[f2,f3,a4,c5,d5,f5]", Y: "[g2,g3,bb4,d5,g5]",
  Z: "[f2,f3,c5,f5,a5]", AA: "[f2,f3,f4,a4,c5,f5]", AB: "[g2,g3,g4,bb4,d5,g5]",
})).s("gm_synth_strings_1").gain(0.24).pan(0.4)

// chords · acoustic guitar steel · "Guitar"
const acoustic_guitar_steel = note(`<
  A B A C D C E F ~@8 G H I J G H I J G H I J G H I J ~@11 K G H I J G H I J G H I J G H L M ~@37
>`.pickRestart({
  A: "[c4,f4,g4]@5 ~ a3 f3", B: "[g3,bb3,d4]@7 ~ bb3 ~ [a3,bb3] ~ [g3,a3,bb3] ~ [f3,bb3] ~",
  C: "[f3,bb3]@5 ~ bb3@2, d4@3 ~", D: "[c4,f4,g4,a4]@5 ~ a3 f3", E: "[c4,f4,g4]@5 ~ a3@2", F: "[f3,bb3]@5 ~@3, d4@3 ~",
  G: "[f4,g4]@11 ~ f4@2 c4 ~, [f2,f3]@7 ~", H: "[g2,g3,bb3,g4]@7 d4, d4@11 ~@5",
  I: "[f2,f3,c4]@12 ~@2 [f2,f3,c4] ~, f4@7 ~, g2 ~@15", J: "[g2,g3,bb3,d4]@7 c4", K: "~@5 c4 bb4 a4",
  L: "[c4,f4,g4]@4 c4@2 f4@4 c4@2 f4@2 c4 ~, [f2,f3]@7 ~", // Csus4 F
  M: "[d4,f4,g4]@2 bb3@2 ~@2 f4@2 bb3@2 d4 ~ [g2,bb3,d4,g4] ~ [g2,g3,bb3,d4,f4]@2, [g2,g3]@11 ~@5, ~ d4 ~@2", // G7 Gm Gm7 G
})).s("gm_acoustic_guitar_steel").gain(0.24).pan(0.7)

// other · glockenspiel · "Bells"
const glockenspiel = note(`<
  A B A B A B A B A B A B A B A B ~@8 A B ~@6 A B A B A B A B ~@12 A B ~@6 A B A B A B A B ~@8 A B A B A B A B ~@4 A B A
  B A B ~@3
>`.pickRestart({
  A: "f6@2 c7@2 bb6 a6 g6 f6", B: "g6@15 ~",
})).s("gm_glockenspiel").gain(0.44)

// chords · whistle
const whistle = note("<~@6 A B ~@34 C D ~@40 E D E D ~@9>".pickRestart({
  A: "c7", B: "f6", C: "~@4 [c6,f6,a6]@2 ~@2 [a5,c6,f6] ~ [e6,g6] ~ [c6,f6,a6]@2 ~@2",
  D: "[bb5,d6,f6,g6] ~ [bb5,d6,f6]@2 ~@2 [f5,bb5,d6]@6 ~@4", // Gm7 Bb
  E: "~@4 [c6,f6,a6]@4 [a5,c6,f6] ~ [e6,g6] ~ [c6,f6,a6]@2 ~@2", // F Em F
})).s("gm_whistle").gain(0.38)

// other · epiano2 · "El Piano"
const epiano2 = note(`<
  A B C B C B D B E F E F E F E F ~@8 E F ~@6 E F E F E F E F ~@12 E F ~@6 E F E F E F E F ~@8 E F E F E F E F ~@4 E F E
  F E F ~@3
>`.pickRestart({
  A: "a4@2 ~@5 f4, [f2,f3,c4]@3 g4, f4@5 a4@3, g4 a4 bb4@2, ~ c5@3", B: "[g2,g3,bb3,d4,f4,g4]",
  C: "~@7 f4, [f2,f3,c4]@3 g4, f4@5 a4@3, g4 bb4, ~ c5@3", // F5
  D: "~@2 c5 ~@4 f4, [f2,f3,c4]@3 g4, f4@5 a4@3, g4 bb4, ~@3 c5@5", E: "~@2 c5@2 bb4 a4 g4 f4", F: "g4@15 ~",
})).s("gm_epiano2").gain(0.35).pan(0.3)

// other · percussive organ · "Organ"
const percussive_organ = note(`<
  ~@6 A@2 B ~@6 C D ~@14 E F ~@10 G H ~@10 I J ~@11 K L M N O P Q R S ~@15 T U ~@3
>`.pickRestart({
  A: "[f6@26 ~@4 [c3,d3,e3,f3,g3,a3] [b3,c4,d4,e4,f4,g4,a4,b4,c5]]/2", B: "[d5,e5,g5,a5] ~@15, [f3,f4]",
  C: "~@3 d5 f5 d5 g5 f5", D: "a5@3 ~@13", E: "~@3 a5 c6 d6 f6 a6", F: "c7",
  G: "~@13 a3 [b3,c4,d4,e4,f4] [g4,a4,b4,c5,d5,e5,f5,g5,a5]", H: "[b5,c6,d6,e6] ~@15, a5@15 ~",
  I: "~@6 c6 ~ d5@2 f5 ~ g5@2 f5 ~", J: "a5 ~@7", K: "~@2 a6@3 ~ [f6,g6]@3 ~@3 [e6,f6] ~ d6 ~",
  L: "[e6,f6] ~ f6@3 ~ d6@4 ~@4 f5 ~, ~@6 e6 ~@9", M: "a5@2 c6 ~ a5 ~ a6@4 f6@4 [d6,e6] ~, ~@6 g6 ~@3 e6 ~@5",
  N: "[f6,g6] ~ f6@3 ~ d6@5 ~@3 c7@2, ~@2 e6 ~@13", // Fsus2
  O: "~@2 bb6 c7 a6 [g6,a6] [f6,g6]!2 g6 [f6,g6] f6 [d6,e6] c6 d6 c6 [d6,e6]", // Gsus2 Fsus2 Dsus2
  P: "f6@2 ~ d6@3 d6@5 ~@3 f5 ~, e6 ~@5 c6 ~@6 d6@2 ~", Q: "a5@2 c6@2 a5@2 f5@2 g5@2 f5@2 f5@2 d5 ~",
  R: "[f5,g5] ~ f5@3 ~ d5@2 ~@5 f3 [g3,a3] [bb3,c4,d4,e4,f4,g4]", S: "[a4,b4,c5,d5,e5] f5 ~@14",
  T: "~@4 a5@3 ~ f5 ~ g5 ~ a5@3 ~", U: "f5 ~ f5@3 ~ d5@4 ~@6",
})).s("gm_percussive_organ").gain(0.5)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@8 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 C A B A B A B A B A B A B A B D E 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 ~@3
>`.pickRestart({
  A: "f1@7 f1!2 ~ f1@4 ~@2", B: "g1@7 g1!2 ~ g1@4 ~@2", C: "g1 ~ g1 ~@13", D: "f1", E: "g1",
})).s("gm_electric_bass_finger").gain(0.45).pan(0.8)

// other · alto sax · "Saxophone"
const alto_sax = note("<~@67 A@2 ~@14 B C ~@12>".pickRestart({
  A: "[~@3 c4 f4 ~ a4 c5@9, ~@5 g4@2 ~@9]/2", B: "~@3 c4 d4 f4 a4 c5", C: "f5 ~",
})).s("gm_alto_sax").gain(0.3).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~@8 A@7 B A@15 B A@11 C A@14 C D A@15 B A@11 B A@6 ~@3>".pickRestart({
  A: "x ~@6 x!2 ~ x ~@5", B: "x ~@5 x!3 ~@7", C: "x", D: "x!2",
})).gain(0.64).pan(0.7)

// drums · snare
const snare = s("sd").struct("<~@8 A@7 B A@15 B A@11 C A@14 ~ D A@15 B A@11 B A@6 ~@3>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!3", C: "~@5 x!2 ~", D: "~@10 x!2 ~@2 x ~",
})).gain(0.72).pan(0.7)

// drums · low tom
const low_tom = s("lt").struct("<~@59 [~@7 x] ~@37>").gain(0.48).pan(0.7)

// drums · hihat
const hihat = s("hh").struct("<~@8 A@7 B A@15 B A@11 ~ A@14 ~@2 A@15 B A@11 B A@6 ~@3>".pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~",
})).gain(0.56).pan(0.7)

// drums · mid tom
const mid_tom = s("mt").struct("<~@59 [~@3 x] ~@37>").gain(0.64).pan(0.7)

stack(
  synth_strings_1, acoustic_guitar_steel, glockenspiel, whistle, epiano2, percussive_organ, bass, alto_sax, kick, snare,
  low_tom, hihat, mid_tom
)

More by Mariah Carey