Strudelify

Do You Know Where You're Going To (Theme From Mahogany)

Mariah Carey

KeyE♭ majorTempo80 bpm
0:00/0:00
// Do You Know Where You're Going To (Theme From Mahogany) — Mariah Carey
// 80 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 3 "Bass Chords" named as a bass, played on electric bass finger (its epiano2 patch is not one)
// note: Full arrangement: all 50 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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.

// other · epiano1 · "Treble fill in"
const epiano1 = note("<A ~@7 B C@2 D E ~@3 F ~@2 G@2 ~@4 H ~@12 B C@2 D E ~@5 I@2>".pickRestart({
  A: "~@6 gb4 eb4 ~@8", B: "~ b4 ~@2 bb4 f5 db5 ab5, ~ g4 ~@2, ~@3 d5@4 ~", C: "[eb5@6 eb5 d5 c5@16 b4@8]/2",
  D: "eb5 c5 g4 eb4 g4@4", E: "d5 b4 f4 d4 f4@4", F: "~@2 f4 ~@5", G: "[e5@4 c5@7 b4@5]/2",
  H: "~ bb4 a4 ab4 g4 gb4 f4@2", I: "e3/2",
})).s("gm_epiano1").gain(0.5)

// bass · electric bass finger · "Bass Chords"
const bass = note(`<
  A@2 B C D@2 E@2 ~ F G H I J K L M N O P Q R@2 S T U V W X Y Z@2 AA AB AC@2 E@2 ~ F G H I AD AE AF AG AH AI AJ
>`.pickRestart({
  A: "[db4@5 db4@3 eb4@16 ~@8]/2", B: "bb3 bb3@3", C: "b3 ab3@3", D: "[bb3@6 eb4 d4 c4@16 b3@8]/2", E: "c4 ~@3",
  F: "[bb3,eb4,g4] [ab3,c4,eb4]", G: "[ab3,c4,d4] [g3,b3,f4]", H: "[g3,c4,eb4]", I: "[f3,ab3,c4,d4] [f3,g3,b3,d4]",
  J: "[g3,c4,e4] [gb3,a3,d4]", K: "[g3,b3,d4]@2 [g3,b3,d4] [a3,db4,e4]",
  L: "[f3,a3,d4]@4 [f3,a3,c4] [f3,g3,b3,d4] [f3,a3,c4,e4] [f3,g3,b3,d4]", M: "[e3,g3,c4]@4 [f3,a3,c4]@3 [e3,g3,c4]@9",
  N: "~ g3 [g3,c4] [g3,c4,e4]@5 ~ a3 [a3,d4] [a3,f4]@5, ~@11 d4 ~@4", // C5 C D5 Dm
  O: "gb3 [gb3,b3] [gb3,b3,d4]@6 ~ g3 [g3,b3] [g3,b3,e4]@5", // B5 Bm G Em
  P: "[g3,c4,e4]@4 [g3,c4,e4] [gb3,c4,d4] [g3,c4,e4] [gb3,c4,d4]", Q: "[f3,a3,c4]@3 [g3,b3]@5, ~@6 f3 ~@9",
  R: "[bb3@4 ~@2 eb4 d4 [ab3,c4]@16 [f3,g3,bb3]@8]/2", // Ab Gm7
  S: "[eb3,g3,c4] ~@2 [c3,g3], ~@3 eb3@2 eb3@2 ~, ~@7 f3@4 ~@5, ~@2 g3 ~", // Cm C5
  T: "[d3,ab3,c4]@2 [f3,g3,b3] ab3 g3 f3 eb3 d3", U: "~ gb3 g3 ab3 a3@2 ab3 g3", V: "g3 [c3,gb3,a3]",
  W: "[g3,b3]@12 [a3,db4] f4 db4 a3", X: "~ [f3,a3,c4]@3 [f3,a3] [g3,b3] [a3,c4] [g3,b3]",
  Y: "[c3,e3,g3]@2 [c3,f3,a3] [e3,g3]@5", Z: "[[g3,c4,e4] [a3,gb4]@2 [b3,d4,g4], ~ d4 ~@2]/2",
  AA: "[g3,c4,e4]@7 [gb3,c4,d4]", AB: "[a3,c4,f4]@3 [g3,b3,f4]@5", AC: "[~@6 eb4 d4 c4@16 b3@8]/2",
  AD: "[g3,c4,e4] [f3,a3,c4]", AE: "[f3,a3,d4] [e3,ab3]", AF: "[e3,a3,c4]", AG: "[e3,ab3,d4]", AH: "[f3,a3,c4]",
  AI: "~@2 ab3 a3 b3@6 a3 g3 db4 b3 a3 g3", AJ: "[ab3,b3,e4]",
})).s("gm_electric_bass_finger").gain(0.5)

// bass · fretless bass · "Bass fill in"
const bass_2 = note("<A B C D E ~@16 E ~@3 F G ~ H ~@21>".pickRestart({
  A: "gb3", B: "ab3 ~", C: "eb3 ~@3", D: "f3 ~@3", E: "eb3 g3 ~@2", F: "c3@3 b2", G: "c3 e3 c3@2", H: "~ f3",
})).s("gm_fretless_bass").gain(0.5)

// bass · electric bass finger · "Pedal"
const bass_3 = note(`<
  A B C D E F G H I J K L M N O P Q R S T U E V G H W X Y Z AA AB AC AD AE E F G H I J K L M AF AG AH AI AJ AK@2
>`.pickRestart({
  A: "gb2 b2", B: "ab2 bb2", C: "eb2 gb2", D: "b2 bb2", E: "eb2 g2 ab2@2", F: "f2 g2", G: "c2 eb2", H: "ab2 g2",
  I: "c2@2 eb2@2 gb2@2 a2 bb2", J: "eb2 g2 ab2!2", K: "f2!2 g2!2", L: "c2 g2 eb2!2", M: "ab2!2 g2!2",
  N: "c3@3 c3 c3@4 c3@3 c3 c3@3 c3", O: "b2@3 b2 b2@4 g2@2 g2!2 a2@2 a2@2", P: "d3@3 d3 d3@4 g2@3 g2 g2@2 g2@2",
  Q: "c3@3 c3 c3@3 c3@4 c3 c3@4", R: "c3!4", S: "b2!2 e2 b2", T: "a2!2 d2!2", U: "g2@4 g2@4 g2 g2@7", V: "f2!2",
  W: "c2@2 f2 g2", X: "c2 e2 c3@2", Y: "b2@2 g2 a2", Z: "d2 g2", AA: "c3@4 c3@2 c3@6 c3@2 g2!2", AB: "c3@7 c3",
  AC: "b2@4 e2@3 e2", AD: "a2@3 a2 d2@2 d2@2", AE: "g2@2 g2 g2@5", AF: "c3@3 c3 c3@2 c3@2 f2@4 f2@4",
  AG: "d2@3 d2 d2@2 d2@2 e2@4 e2@4", AH: "a2@2 e2!2 a2@2 e2@2", AI: "b2@2 e2!2 b2@2 e2@2", AJ: "f2@2 c2!2 f2@2 f2@2",
  AK: "e2/2",
})).s("gm_electric_bass_finger").gain(0.5)

// drums · kick
const kick = s("bd").struct(`<
  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 ~
>`.pickRestart({
  A: "x ~@6 x!2 ~@5 x ~", B: "x ~@6 x!2 ~ x ~@3 x ~",
})).gain(0.25)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!49 ~>").gain(0.3)

// drums · hihat
const hihat = s("hh").struct(`<
  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 ~
>`.pickRestart({
  A: "x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~", B: "x ~ x!3 ~ x ~ x ~ x!3 ~ x ~",
})).gain(0.3)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  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 ~
>`.pickRestart({
  A: "~@7 x ~@3 x ~@4", B: "~@7 x ~@8",
})).gain(0.1)

// drums · open hat
const open_hat = s("oh").struct("<[~@15 x]!49 ~>").gain(0.25)

stack(epiano1, bass, bass_2, bass_3, kick, snare, hihat, hihat_soft, open_hat)

More by Mariah Carey