Strudelify

Emotions

Mariah Carey

KeyA minorTempo110 bpm
0:00/0:00
// Emotions — Mariah Carey
// 110 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 118 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(110/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 · piano
const piano = note(`<
  ~ A B A C D E D F D G D H I J D E D G D E D G D E K@3 ~ L M N O D G D H I J D E D G D H I J D E D G D E D G D E K@3 ~
  L M N O D G D H I J D E D G D H I J D E P Q R S T U V W X B A C Y B A C Z@2 AA AB D G D H I J D E D G D H I J D AC ~
>`.pickRestart({
  A: "~@2 g3 ~ a3@3 ~ a3@2 ~ g3@2 ~ a3 ~", B: "~@2 g3 ~ a3@3 ~ c4 ~ c4 ~ d4 ~ e4 ~", C: "~@8 c4 ~ c4 ~ d4 ~ e4 ~",
  D: "[a3,c4,e4]@3 ~@3 [a3,c4,e4] ~ [g3,b3,d4]@2 ~ [g3,b3,d4]@2 ~ [a3,c4,e4] ~", // Am G Am
  E: "~@6 a3!2 [e4,a4] ~ [e4,a4] ~ [d4,g4]@3 ~", F: "~@6 a3!2 [g3,c4] ~ [g3,c4] ~ [g3,c4] d4 e4 ~",
  G: "~@8 [g3,c4] ~ [g3,c4] ~ [g3,d4] ~ e4 ~", H: "~@8 g4 a4 c5 ~ c5 d5 e5 ~",
  I: "[a3,c4,e4]@3 ~@3 [a3,c4,e4] ~ [g#3,b3,d4]@2 ~ [g#3,b3,d4]@2 ~ [a3,c4,e4] ~", // Am G#dim Am
  J: "~@2 [g3,e4] ~ [f3,d4] ~ [f3,d4] ~ [f3,a#3,c4]@3 ~ [e3,a#3,d4]@3 ~", // C Dm Fsus4 Em7b5
  K: "[[c4,e4,a4]@4 ~@4 [c4,e4]@4 ~@2 [d4,e4]@5 ~@11 [e4,g4,d5]@4 ~@12 [c4,e4,a4]@2]/3", // Am C Dsus2 Em7 Am
  L: "~@2 [a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5]@4 c4 ~ e4 ~ a4 ~", M: "~@2 a4 ~, [c4,e4]@11 ~@5",
  N: "[d4,f4,a4]@2 ~ [d4,f4,a4]@2 ~ [d4,f4,a4]@2 [e4,g4,b4]@2 ~ [e4,g4,b4]@2 ~ [e4,g4,b4]@2", // Dm Em
  O: "[a4,c5,f5]@3 ~@3 a4 ~ g4@5 ~@3", P: "[d4,f4,a#4]@4 ~@3 [d4,f4,a#4]",
  Q: "~@2 [c4,f4,a4]@2 [c4,g4]@3 ~ [a3,c4]@3 ~@3 [c4,e4,a4]@2", // F C5 Am
  R: "~@2 [c4,e4,g4]@3 ~ [c4,e4,g4]@4 ~@2 c4 ~ [c4,e4,a4]@2", S: "~@2 [c4,e4,g4]@3 ~ [c4,d#4]@3 ~@7",
  T: "[d4,f4,a#4]@3 ~ [f4,a#4,d5] ~ a4 ~ [f4,a#4,d5] ~ c5 ~ [f4,a#4,d5] ~ [a4,c5,e5]@2", // A# Am
  U: "~@2 [a4,c5,f5]@3 ~@3 [f4,a4,c5]@3 ~@5", // F
  V: "[a4,b4,e5] ~ [a4,b4,f5] ~ [a4,b4,e5] ~ [a4,b4,e5] ~ [a4,b4,e5] ~ [a4,b4,e5] ~ [e4,a4,c5] ~ [e4,a4] ~", // Asus2 Bm7b5 Asus2 Am A5
  W: "[d4,g4] a4 c5 ~ [g#4,c5] d5 e5 ~ [g#4,d5,e5] f5 g5 ~ [g#4,d5,g#5] a5 c6 ~", // G5 G# E7 G#dim
  X: "[e5,a5,c6]@3 ~@5 a3@2 ~ g3@2 ~ a3 ~", Y: "~@8 a3@2 ~ g3@2 ~ a3 ~",
  Z: "[[c4,e4,a4]@3 ~ [c4,e4,a4]@3 ~ [c4,e4,a4]@3 ~ [c4,e4,a4] ~ [d4,e4,b4]@4 ~@2 [d4,e4,b4]@3 ~ [d4,e4,b4]@3 ~ [d4,e4,b4]@3 ~]/2", // Am E7
  AA: "[c4,f4,a4]@3 [c4,f4,g4]@3 [d4,f4,a4]@2 [d4,g4,b4]@3 [d4,g4,a4]@3 [g4,b4]@2, ~@14 d4 ~", // F Csus4 Dm G Dsus4 G
  AB: "[f4,a4,c5]@3 ~@7 [e5,a5] ~ [d5,g5] ~ [e5,a5] ~", AC: "[a3,c4,e4]",
})).s("gm_piano").gain(0.3)

// bass · electric bass finger · "bass"
const bass = note(`<
  ~ A B A C A D A E A D A E F G A H A D A H A D A I J@4 K@2 L M A D A E F G A H A D A E F G A H A D A H A D A I J@4 K@2
  L M A D A E F G A H A D A E F G A H N O@2 P Q@2 R S A B A C A B A C T@2 L M A D A E F G A H A D A E F G A D U
>`.pickRestart({
  A: "f2@3 ~@3 f2 ~ e2@2 ~ c2@2 ~ a1 ~", B: "~@6 a1 ~ c2 ~ c2 ~ d2 ~ e2 ~", C: "~@6 a1 ~ c2!3 ~ d2 ~ e2 ~",
  D: "~@6 a1!2 c2 ~ c2 ~ d2 ~ e2 ~", E: "~@6 a1!2 c2!3 ~ d2 ~ e2 ~", F: "f2@3 ~@3 f2 ~ e2@2 ~ g#2@2 ~ a2 ~",
  G: "~@6 a2 ~ g2 ~ g2 ~ c2!3 ~", H: "~@6 a1!2 c2 ~ c2 ~ d2@3 ~", I: "~@6 a1!2 c2!3 ~ d2@2 e2 ~",
  J: "[a2@3 ~ a2@2 ~ e2 a2@2 e2 ~ a2 ~ g#2@4 ~@2 g#2@2 ~ e2 g#2 ~ e2 ~ g#2 ~ a2@4 ~@2 a2@2 ~ e2 a2 ~ e2 ~ d#2 ~ d2@5 ~@3 d2!3 ~ d2 ~ g2 ~ g#2 ~]/4",
  K: "[a2@3 ~ a2@2 ~ e2 a2 ~ e2 ~ a2 ~ g2@4 ~@2 g2@2 ~ e2 g2 ~ g2 ~ g2 ~ g2 ~]/2",
  L: "d2@2 ~ d2@2 ~ d2@2 e2@2 ~ e2@2 ~ e2@2", M: "g2@3 ~@3 a2 ~ g2@5 ~@3",
  N: "[c2,c3]@3 ~ [c2,c3]@3 ~ [c2,c3]@3 ~ [c2,c3]@3 ~", // C
  O: "[[c2,c3]@3 ~ [c2,c3]@2 ~ g2 [c2,c3] ~ g2 ~ a2 ~ [c2,c3]@4 ~@2 [c2,c3]@3 ~ [c2,c3]@3 ~ [c2,c3]@2 ~ g2]/2", // C
  P: "[c2,c3]@3 ~ [c2,c3]@2 ~ g2 c3 ~ g2 ~ a2 ~ [a#1,a#2] ~", // C A#
  Q: "[[a#1,a#2]@3 ~ [a#1,a#2]@2 ~ f2 [a#1,a#2] ~ f2 ~ [a#1,a#2] ~ f2@4 ~@2 f2@2 ~ f2 d2 ~ d#2 ~ e2 ~ e2@2]/2", // A#
  R: "~@2 e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", S: "e2@3 ~ e2@3 ~ e2@3 ~ e2@3 ~",
  T: "[a2@3 ~ a2@2 ~ e2 a2 ~ e2 ~ a2 ~ g#2@4 ~@2 g#2@2 ~ e2 g#2 ~ e2 ~ g#2 ~ a2 ~]/2", U: "f2@3 ~@13",
})).s("gm_electric_bass_finger").gain(0.8)

// chords · synth strings 1 · "sinth"
const synth_strings_1 = note(`<
  ~@5 A@18 B C D@4 E F G ~ A@8 B C A@12 B C D@4 E F G ~ A@16 H I@3 J@3 K L ~@7 M@2 G ~ A@16 ~
>`.pickRestart({
  A: "[[e4,a4,c5]@5 ~@3 [g4,b4]@5 ~ [e4,a4,c5]@11 ~@7, ~@8 d4@3 ~@21]/2", // Am G Am
  B: "[e4,a4,c5]@5 ~@3 [g4,b4]@5 ~ [e4,a4,c5]@2, ~@8 d4@3 ~@5", C: "[e4,a4,c5]@9 ~@7",
  D: "[[e4,a4,c5]@11 ~@3 [e4,g#4,b4]@11 ~@5 [e4,g4,d5]@11 ~@5 [e4,a4,c5]@11 ~@7]/4", E: "[a4,c5,e5]@11 ~@5",
  F: "[g4,c5,e5]@11 ~@5", G: "[d4,f4,a4]@5 ~@3 [e4,g4,b4]@5 ~@3", H: "[f4,a#4,d5]",
  I: "[c5@7 [e4,g4,c5]@17, [f4,a4] ~@2]/3", J: "[f4@7 [f4,a4,c5]@8 [g#4,b4,e5]@8 ~, [a#4,d5] ~@2]/3", K: "[g#4,b4,e5]",
  L: "[f4,a4,c5]", M: "[e4@7 [e4,g#4,b4]@8 ~, [a4,c5] ~]/2",
})).s("gm_synth_strings_1").gain(0.12)

// chords · brass section · "brass"
const brass_section = note(`<
  ~@12 A ~@18 B C ~@3 A ~@7 A ~@18 B C ~@3 A ~@7 A ~@11 D ~@10 B ~@4 A ~@7 A ~@5
>`.pickRestart({
  A: "~@8 g4 a4 c5 ~ c5 d5 e5 ~",
  B: "[d4,f4,a4]@2 ~ [d4,f4,a4]@2 ~ [d4,f4,a4]@2 [e4,g4,b4]@2 ~ [e4,g4,b4]@2 ~ [e4,g4,b4]@2", C: "[a4,c5,f5]@3 ~@13",
  D: "[e5,g#5,b5]!4", // E
})).s("gm_brass_section").gain(0.48)

// chords · string ensemble 1 · "strings 1"
const string_ensemble_1 = note("<~@25 A@4 B C D ~@25 A@4 B C D ~@17 E F@3 G@3 H ~@29>".pickRestart({
  A: "[[e4,a4,c5]@11 ~@3 [e4,g#4,b4]@11 ~@5 [e4,g4,d5]@11 ~@5 [e4,a4,c5]@12 ~@6]/4", B: "[a4,c5,e5]@11 ~@5",
  C: "[g4,c5,e5]@11 ~@5", D: "[d4,f4,a4]@3 ~ [e4,g4,b4]@3 ~", E: "[f3,a#3,d4]",
  F: "[c4@7 [e3,g3,c4]@17, [f3,a3] ~@2]/3", G: "[f3@7 [f3,a3,c4]@8 [g#3,b3,e4]@8 ~, [a#3,d4] ~@2]/3", H: "[g#3,b3,e4]",
})).s("gm_string_ensemble_1").gain(0.32).pan(0.3)

// chords · string ensemble 2 · "strings 2"
const string_ensemble_2 = note("<~@25 A@4 B C D ~@25 A@4 B C D ~@17 E F@3 G@3 H ~@29>".pickRestart({
  A: "[[e4,a4,c5]@6 ~ [e4,g#4,b4]@8 [e4,g4,d5]@8 [e4,a4,c5]@8 ~]/4", B: "[a4,c5,e5]", C: "[g4,c5,e5]",
  D: "[d4,f4,a4] [e4,g4,b4]", E: "[f5,a#5,d6]", F: "[c6@7 [e5,g5,c6]@17, [f5,a5] ~@2]/3",
  G: "[f5@7 [f5,a5,c6]@8 [g#5,b5,e6]@8 ~, [a#5,d6] ~@2]/3", H: "[g#5,b5,e6]",
})).s("gm_string_ensemble_2").gain(0.29).pan(0.7)

// other · drawbar organ · "hammond"
const drawbar_organ = note("<~@28 A ~@7 B ~@7 B ~@15 A C ~@56>".pickRestart({
  A: "~@7 g5 [a5,c6] ~ g5 d#5 [e5,g5] c5 d#5 ~", B: "~@8 g4 a4 c5 ~ c5 d5 e5 ~",
  C: "[a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5]@5 ~@7", // Am
})).s("gm_drawbar_organ").gain(0.48)

// chords · electric guitar muted · "guitar"
const electric_guitar_muted = note("<~@90 A B A C D B A E@2 F G ~@17>".pickRestart({
  A: "~@8 c4 ~ c4 ~ d4 ~ e4 ~", B: "~@2 g3 ~ a3@3 ~ a3@2 ~ g3@2 ~ a3 ~", C: "~@8 a3@2 ~ g3@2 ~ a3 ~",
  D: "~@2 g3 ~ a3@3 ~ c4 ~ c4 ~ d4 ~ e4 ~",
  E: "[[c4,e4,a4]@3 ~ [c4,e4,a4]@3 ~ [c4,e4,a4]@3 ~ [c4,e4,a4] ~ [d4,e4,b4]@4 ~@2 [d4,e4,b4]@3 ~ [d4,e4,b4]@3 ~ [d4,e4,b4]@3 ~]/2", // Am E7
  F: "[c4,f4,a4]@3 [c4,f4,g4]@3 [d4,f4,a4]@2 [d4,g4,b4]@3 [d4,g4,a4]@3 [d4,g4,b4]@2", G: "[f4,a4,c5]@3 ~@13",
})).s("gm_electric_guitar_muted").gain(0.36)

// drums · kick
const kick = s("bd").struct("<~ A@31 B A@31 B A@35 ~ A@15 C ~>".pickRestart({
  A: "x ~ x ~@4 x!2 ~ x ~@5", B: "x", C: "x!2 ~@3 x!2 ~",
})).gain(0.6)

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

// drums · hihat
const hihat = s("hh").struct("<~ A@31 ~ A@31 ~ A@35 ~ A@15 ~@2>".pickRestart({
  A: "x!3 ~ x!3 ~",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~@32 x ~@31 x ~@53>").gain(0.48)

// drums · ride
const ride = s("rd").struct("<~ A@31 ~ A@31 ~ A@35 ~ A@15 B ~>".pickRestart({
  A: "~@7 x", B: "~ x",
})).gain(0.48)

// drums · china
const china = s("cr").struct("<~@32 x ~@31 x ~@51 [~ x] x>").gain(0.48)

// drums · bongos
const bongos = s("bongo:4").struct("<~ A@31 ~ A@31 ~ A@35 ~ A@15 ~@2>".pickRestart({
  A: "~@2 x ~@2 x ~@2",
})).gain(1.26)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<~ A@31 ~ A@31 ~ A@35 ~ A@15 ~@2>".pickRestart({
  A: "~ x ~ x!2 ~ x ~",
})).gain(1.26)

stack(
  piano, bass, synth_strings_1, brass_section, string_ensemble_1, string_ensemble_2, drawbar_organ,
  electric_guitar_muted, kick, snare, hihat, high_tom, ride, china, bongos, bongos_2
)

More by Mariah Carey