Strudelify

Prisoner

Mariah Carey

KeyA♭ majorTempo120 bpm
0:00/0:00
// Prisoner — Mariah Carey
// 120 bpm, 4/4, key Ab major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 2 "Bass" named as a bass, played on electric bass finger (its piano patch is not one)
// note: Full arrangement: all 121 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · "Main"
const piano = note(`<
  A@2 B C D@2 E F G H I J K@4 L@3 M N@4 O P@3 Q@2 R S@4 T U@2 V W X@2 E F Y@4 N@4 O P@3 Q@2 R S@4 T U@2 V W X@2 E F Z@2
  AA AB D@2 E AC AD AE AF@2 AG AH AF@2 E AI AJ AK AL AM AJ AN AO@3 AP D@2 E F AO@3 AP D@2 E F AO@3 AP D@2 E F ~
>`.pickRestart({
  A: "[[ab3,f4]@4 [bb3,g4]@4 [c4,ab4]@4 [db4,bb4]@2 [eb4,c5]@4 [db4,bb4]@2 [db4,bb4]@2 [c4,ab4]@2 [c4,ab4]@2 [bb3,g4]@2 [bb3,g4]@2 [c4,ab4] [bb3,g4]]/2", // Db Eb Fm Gb Cm Gb Fm Eb …
  B: "[ab3,f4]@2 ~@4 [eb4,c5] [f4,db5]", C: "[eb4,c5]@4 ~@2 [bb3,gb4]@4 [ab3,f4]@2 [ab3,f4] eb4 c4@2",
  D: "[[ab3,f4]@4 [bb3,g4]@4 [c4,ab4]@4 bb4@2 c5@4 bb4@4 eb5@4 db5@4 c5 db5, ~@7 [f4,ab4]@9]/2", E: "[db4,f4,ab4,c5]",
  F: "[g4,bb4] ab4 g4 ab4, eb4", G: "bb4 ab4 g4 ab4, [c4,f4]", H: "f4@2 g4 ab4, [ab3,c4]", I: "eb4@3 f4, [ab3,db4]",
  J: "c5@2 bb4 c5, [eb4,g4]", // Eb
  K: "[[c4,f4]@4 f4@4 c4@4 eb4 c4@2 ~@13 f4 g4@2 ~@2 g4@2 ab4@2 g4@2 ab4@2 g4@2 f4@2 eb4@2 ~@2 c4@15, g3@15 f4@13 ~@3 ab4@2 ~@14 db4@2 ~@15, ~ [ab3,c4] [ab3,db4] [g3,bb3]]/4", // F5 Ab Db5 Gm
  L: "[f4@4 f4@4 c4@4 eb4 c4@2 ~@2 eb4 c4@9 ~ f4 g4@2 ~@3 g4@2 ab4@2 g4 ab4@2 g4@2 f4@3 f4@2, g3@15 f4@2 ~@14 ab4@3 ~@14, ~ ab3 [ab3,db4], ~@16 c4@2 ~@9 c4@5 ~@16]/3", // Db5
  M: "db4@2 c4@2 db4@2 c4 db4@3 c4@6, [g3,bb3]", // Gm
  N: "[[c4,f4]@4 f4@4 c4@4 eb4 c4@2 ~@2 eb4 ~@10 f4@2 g4 ~@2 g4@2 ab4@2 g4@2 ab4@2 g4@2 f4@2 f4@2 ~@3 c4@2 db4@2 c4 db4@2 c4@7, g3@15 f4@2 ~@14 ab4@2 ~@31, ~ ab3 [ab3,db4] [g3,bb3], ~@16 c4@2 c4@14 ~@15 db4@3 ~@14]/4", // F5 Db5 Gm
  O: "f4@2 f4@2 c5 bb4!2 ab4, [g3,c4] [f4,g4]", // C5 Fsus2
  P: "[[f4,ab4]@3 g4 f4@8 f4 g4@2 ~@3 g4@2 ab4@2 g4 bb4@3 bb4@2 bb4 bb4@2 ~@2 f4@2 g4@3 ab4@2 bb4@3 c5@2 bb4 ab4@2, c4@15 ab4@3 ~@13 g4@2 ~@7 [eb4,g4]@8, ~@2 [db4,f4]@2 [bb3,eb4] ~]/3", // Fm Eb Db Eb5
  Q: "[ab4@12 g4@3 ~@2 g4 f4@10 f4@2 g4@2, [c4,f4]@15 ab4@2 ~@15, ~ db4]/2", // F5
  R: "[c4,ab4]@2 [c4,ab4] [bb3,g4] [bb3,g4]@2 [c4,ab4] [ab3,f4]", // Fm Eb Fm Db
  S: "[[ab3,f4]@2 ~@2 [c4,f4,ab4]@4 ab4@4 g4@3 ~@5 ab4@10 eb4 ~@2 eb4 c4@6 ~@2 c4@2 f4 g4@2 ~@3 g4@2 ab4@2 g4@2 ab4@2 g4 ab4@2 g4@3, ~@8 [bb3,eb4]@7 bb4@5 ~@12 ab3@8 ~@8 [bb3,db4]@16, ~@16 [c4,f4]@12 ~@3 [db4,f4]@2 ~@14 ab4@3 ~@14]/4", // Db Fm Eb5 Bbm F5 Db
  T: "~ f5 eb5 c5 b4@2 bb4@2, [g4,bb4] [c4,f4,g4], c5@3 ~@5", // Gm Csus4
  U: "[[ab3,f4]@4 [bb3,g4]@4 [c4,ab4]@4 bb4@2 [ab4,c5]@4 bb4@2 bb4@2 ab4@2 ab4@2 g4@2 g4@2 ab4 g4, ~@7 f4@9]/2", // Db Eb Fm Ab
  V: "[ab3,db4,f4]@6 c5 db5", W: "[eb4,g4,c5]@4 ~@2 g4@4 f4@2 f4 eb4 c4@2",
  X: "[[ab3,f4]@4 [ab3,g4]@4 [c4,ab4]@4 bb4@2 c5@4 bb4@4 eb5@4 db5@4 c5 db5, ~@7 [f4,ab4]@9]/2", // Db Abmaj7 Fm
  Y: "[[c4,f4]@2 c4@2 f4@2 c4@2 c4@4 eb4@2 c4 ~@13 f4 g4@2 ~@2 g4@2 ab4@2 g4@2 ab4@2 g4@2 f4@2 f4@2 ~@2 c4@2 db4@2 c4@2 db4@2 c4@7, g3@15 f4@13 ~@3 ab4@2 ~@14 db4@2 ~@15, ~ [ab3,c4] [ab3,db4] [g3,bb3]]/4", // F5 Ab Db5 Gm
  Z: "[[ab3,f4]@4 [bb3,g4]@4 [c4,ab4]@4 bb4@2 [ab4,c5]@4 bb4@2 bb4@4 ab4@2 g4@4 ab4 g4, ~@7 f4@9]/2", // Db Eb Fm Ab
  AA: "[db4,f4]@6 f4 eb4 c4@8, ab3", AB: "~ [ab3,f4] [bb3,f4]@2 [ab3,f4]!4 [ab3,f4]@2 [bb3,g4] [c4,ab4]@3 [bb3,g4]@2",
  AC: "[eb4,g4,c5] ~ [g4,bb4,eb5] ~", AD: "[ab4,c5,f5]@15 eb5", AE: "f5 eb5 f5@6 ~@6 [eb4,f4,ab4,c5]!2",
  AF: "[[eb4,f4,ab4,c5] f4 [ab3,f4]@2 [ab3,f4]!4 [ab3,f4]@2 [bb3,g4] [c4,ab4]@2 [bb3,g4]@2 [ab3,f4]@2 [ab3,f4]@2 [ab3,f4]@2 [ab3,f4]!3 [ab3,f4]@2 [bb3,g4] [c4,ab4]@2 [bb3,g4]@3]/2", // Fm7 Db Eb Fm Eb Db Eb Fm …
  AG: "[eb4,f4,ab4,c5]@4 ~@10 b4 bb4", AH: "bb4 [bb4,b4] ab4 f4 ~@10 [eb4,f4,ab4,c5]!2", AI: "[f4,ab4] f4 ab4 eb5, db4",
  AJ: "[eb4,g4,c5]", AK: "bb4 ab4 g4 ab4, [c4,f4] [bb3,eb4]", AL: "[ab3,c4,f4]", AM: "f4!2 ab4 eb5, db4",
  AN: "[f3,bb3,c4] [f4,bb4,c5]", // Fsus4
  AO: "[[ab3,f4]@2 [bb3,g4]@2 [c4,ab4]@2 bb4 c5@2 bb4@2 ab4@2 g4@2 ~ [ab3,db4]@6 c5 db5, ~@7 f4@8 f4@7 ~@2]/3", // Db Eb Fm Db5
  AP: "[eb4,g4,c5]@4 ~@2 gb4@4 f4@2 f4 eb4 c4@2", // Cm
})).s("gm_piano").gain(0.4).pan(0.2)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A B C D E F G H I J K L M J N O M J N P M J N P M J N P Q R S T U V W X E Y Z AA E Y Z AB M J N AC M J N P M J N P Q R
  S T U V W X E Y Z AA E Y Z AB E Y Z AA E Y AD AB ~@8 Q R AE T U V W X AF Y Z AA E Y Z AB AF Y Z AA E Y Z AB AF Y Z AA
  E Y Z AB ~
>`.pickRestart({
  A: "f3@4 ~@2 f3@4 f3@3 f3@3", B: "db3@4 ~@2 db3@4 db3@3 db3@3", C: "bb2@4 ~@2 bb2@4 bb2@3 bb2@3",
  D: "eb3@4 ~@2 eb3@4 eb3@3 eb3@2 c3", E: "f3@3 f3@3 f3@6 ~@2 bb2 c3", F: "db3@3 db3@2 c3 db3@3 db3@2 c3 db3@2 c3 db3",
  G: "bb2@3 bb2@2 bb2 bb2@6 ~@2 bb2 c3", H: "eb3@3 eb3@2 eb3!2 eb3@2 eb3@2 eb3 g3 ab3 g3@2",
  I: "f3@4 ~@2 f2@4 f3@3 eb3@3", J: "db3@4 ~@3 ab2 db3@2 db3@3 c3@3", K: "bb2@4 ~@2 ab2 bb2@3 ab2@3 bb2@3",
  L: "eb3 eb3@2 eb2 eb3@2 ~ eb3", M: "f3@4 ~@3 f2@3 f3@3 eb3@3", N: "bb2@4 ~@2 bb2@4 ab2@3 bb2@3",
  O: "eb3@4 ~@2 g3 eb2@5 eb3@4", P: "eb3@4 ~@2 eb3 eb2@5 eb3@4", Q: "db3@4 ~@2 db3 db2@3 db3@3 c3@3",
  R: "bb2@4 ~@2 bb2!2 ab2@2 ab2@3 f2@3", S: "[eb2,c3]@2 [eb2,c3] [db2,bb2] [db2,bb2]@2 [eb2,bb2] [c2,ab2]",
  T: "f3@2 f3@2 f3@2 f3@2 eb3@2 eb3@2 eb3 eb3@3", U: "db3@6 db3@2 ~@2 db3@3 c3@3", V: "bb2@4 ~@3 bb2 ab2@4 bb2@4",
  W: "eb3@4 ~@3 eb3 eb2@2 eb3@2 eb3@2 db3 eb3", X: "c3!4", Y: "db3@3 db3@3 db3@3 db3@2 c3 db3@2 c3 db3",
  Z: "bb2@3 bb2@2 ab2 bb2@6 ~@2 bb2!2", AA: "eb3@3 eb3@3 eb3 eb3@2 eb3@2 eb3 f3 g3 eb3 c3",
  AB: "eb3@3 eb3@3 eb3 eb3@2 eb3@2 eb3 f3 g3@3", AC: "eb3@4 ~@2 db3 eb2@5 eb3@4",
  AD: "bb2@3 bb2@2 ab2 ab2@6 ~@2 bb2 c3", AE: "eb2@4 ~@3 eb3 eb2@2 eb3@2 ~@2 eb3@2",
  AF: "f3@3 f3@3 f3@2 f3@4 ~@2 bb2 c3",
})).s("gm_electric_bass_finger").gain(0.4).pan(0.2)

stack(piano, bass)

More by Mariah Carey