Strudelify

Jesus Born on This Day

Mariah Carey

KeyF majorTempo80 bpm
0:00/0:00
// Jesus Born on This Day — Mariah Carey
// 80 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 5/4 at bar 68, 4/4 at bar 70) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 72 bars on a 16-step grid, each part at one level. 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.

// chords · pad new age
const pad_new_age = note(`<
  A B C D E F G H I J K L M N O@2 M N P@2 Q R S T U J K L M N O@2 M N P@2 Q R S V U J K L M N O@2 M N P@2 W X W X Y Z Y
  Z Y Z Y Z AA@8
>`.pickRestart({
  A: "~ [c4,c5] [f4,f5] [e4,d5,f5,a5]", B: "[d5,f5,a5]@6 g5 f5 [c5,g5]@6 f5@2, [d4,bb4] e4",
  C: "c5@4 ~@11 bb4, [f4,bb4], f5!2, ~@2 c5@5 c5", D: "[a3,c4,f4,a4]", E: "~ c4 f4 [e4,a4]",
  F: "[bb3,d4,f4,a4] [e3,c4,d4,g4]", G: "~ c5 f5 [e5,a5], [f3,a3,c4,f4]", H: "[bb4,d5,f5,a5] [e4,c5,f5,g5]",
  I: "~ c4 ~ c5, [a4,f5], c5@3 ~, f4!2", J: "~@2 f4 c5 ~@2 f4 bb4, d3 db3, ~ bb3@3 ~ bb3@3",
  K: "~@2 e4 a4 ~@2 f4 a4, db3 d3, ~ a3@3 ~ a3@3", L: "~@2 d4 g4 ~@2 e4 g4, b2@2 c3 bb2, ~ g3@3 ~ g3@3",
  M: "[c4,g4,c5] c4 g4 [c4,f4,a4]@2 c4 f4 a4, [e2,e3]@3 [f2,f3]@5", // C5 F E F
  N: "[a3,e4,g4] a3 e4 [a3,d4,f4]@2 a3 d4 f4, [db2,db3]@3 [d2,d3]@5", // A7 Dm Db D
  O: "[[g3,d4,g4] g3 d4 [c2,c3,g3,c4,e4]@2 [b2,d4] [a2,c4] g2@3 f2@2 c2@2 bb2@2, [b1,b2]@3 ~@4 [b3,d4]@5 [e3,g3,c4]@4]/2", // G5 C Bm Am B Bm C
  P: "[[g3,d4,g4] g3 d4 [c2,c3,g3,c4,e4]@2 [b2,d4] [a2,c4] g2@3 f2@2 [g3,c4,e4] e4 g4 c5, [b1,b2]@3 ~@4 [b3,d4]@5 c2@2 bb2@2]/2", // G5 C Bm Am C B Bm
  Q: "~ c4 f4 a4, a2, ~ f3@7", R: "f4 c4 bb3 f3 g4 d4 c4 g3, d2 e2", S: "~@3 a4, [f2,a3], f4!2, c4 c4@3, ~ c3@7",
  T: "f5 c5 bb4 f4 g5 d5 c5 bb4, d3 e3", U: "[a4,c5,f5] c4 f4 [e3,c5], f3@3 ~", V: "f5 c5 bb4 f4 g5 d5 c5 g4, d3 e3",
  W: "[ab4,bb4,eb5] eb4 [ab4,bb4,eb5] eb4 [ab4,bb4,eb5] eb4 [ab4,bb4,eb5] eb4, [ab2,ab3]@3 [g2,g3]", // Absus2 Ab G
  X: "[ab4,db5,eb5] f4 [ab4,db5,eb5] f4 [bb4,eb5] g4 [bb4,eb5] g4, [f2,f3] [g2,g3]", // Absus4 Eb5 F G
  Y: "[ab4,c5] eb4 [ab4,c5] eb4 [ab4,c5] eb4 [ab4,c5] eb4, [ab2,ab3]@3 [g2,g3]", // Ab G
  Z: "[ab4,c5] db4 [ab4,c5] db4 [ab4,c5] db4 [g4,bb4] eb4, [f2,f3]@2 [db2,db3] [eb2,eb3]", // Ab Gm F Db Eb
  AA: "[[ab4,c5]@2 eb4@2 [ab4,c5]@2 eb4@2 [ab4,c5]@2 ~ eb4@2 [ab4,c5]@2 eb4@2 ~ [ab4,c5]@2 db4@3 [ab4,c5]@3 db4@3 [ab4,c5]@3 db4@3 [g4,bb4]@4 eb4@3 [ab1,ab2,c4,eb4,ab4]@23 ~@6 [ab4,c5]@8 bb4 ab4 ~ [g3,eb4]@6 ~@3 ab4@3 [ab3,c4,eb4,ab4]@26 ~@8, [ab2,ab3]@13 [g2,g3]@5 [f2,f3]@11 [db2,db3]@6 [eb2,eb3]@7 ~@29 [f3,db4,eb4]@11 bb4@9 ~@37, ~@44 [g3,db4]@3 ~@17]/8", // Ab Gm Ab Cm Ab G F Db …
})).s("gm_pad_new_age").gain(0.23)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@6 A B C ~@3 D E F@2 D E G@2 ~@2 A B C ~@3 D E F@2 D E G@2 ~@2 A B C ~@3 H E F@2 H E G@2 ~@2 I J K ~ L M N M N M O P
  Q@3 ~@3
>`.pickRestart({
  A: "~ c5 f5 [e5,a5]", B: "[d5,a5]@6 g5 f5 [c5,g5]@6 [bb4,f5]@2, ~@3 d5 ~@4", C: "[a4,f5] ~",
  D: "[g5,c6]@3 [f5,a5]@3 ~@2", E: "[e5,g5] [e5,a5] [e5,bb5] [f5,a5]@3 ~@2",
  F: "[[d5,f5] [d5,g5] [d5,f5] [c5,e5]@2 d5 c5 [b4,d5]@5 c5 ~ [d5,d6]@2]/2", // Dm G5 Dm C Bm D
  G: "[[d5,f5] [d5,g5] [d5,f5] [c5,e5]@2 d5 c5 [b4,d5]@5 c5@4]/2", H: "[g5,c6,e6]@3 [f5,a5,c6]@3 ~@2",
  I: "~ eb5 [ab5,c6] [ab5,eb6]", J: "[ab5,c6,eb6]@6 [bb5,db6] [ab5,c6] [bb5,db6]@6 [ab5,c6]@2", K: "[ab5,c6]@3 ~",
  L: "~@6 [ab5,c6] [bb5,db6] [c6,eb6]@4 ~@2 [ab5,c6] [bb5,db6]", // Ab Bbm Cm Ab Bbm
  M: "[c6,eb6]@4 ~@4 [ab5,f6]@2 [ab5,eb6]@2 [bb5,db6]@3 [ab5,c6]", // Cm Db Ab5 Bbm Ab
  N: "[ab5,c6]@4 ~@2 [ab5,c6] [bb5,db6] [c6,eb6]@4 ~@2 [ab5,c6] [bb5,db6]", // Ab Bbm Cm Ab Bbm
  O: "[ab5,c6]@4 ~@2 [ab5,c6] [bb5,db6] [c6,eb6]@5 ~@2 [ab5,c6]", P: "~ [bb5,db6] [c6,eb6]@5 ~@6 [ab5,f6]@3",
  Q: "[[ab5,eb6]@3 [bb5,db6]@5 ~ [ab5,c6] [ab5,c6,eb6]@23 ~@15]/3", // Ab5 Bbm Ab
})).s("gm_string_ensemble_1").gain(0.18)

// bass · fretless bass
const bass = note(`<
  ~@9 A B C D E F@2 D E G@2 H I J K L A B C D E F@2 D E F@2 H I J K L A B C D E F@2 D E G@2 M N M N M O M O M O M O P@5
  ~@3
>`.pickRestart({
  A: "d3 db3", B: "db3 d3", C: "b2@2 c3 bb2", D: "e2@3 f2@5", E: "db2@3 d2@5",
  F: "[b1@3 c2@2 b2 a2 g2@3 f2@2 c2@2 bb2@2]/2", G: "[b1@3 [c2,c3]@2 b2 a2 g2@3 f2@2 c2@2 bb2@2]/2", H: "a2",
  I: "d2 e2", J: "f2", K: "d3 e3", L: "f3@3 e3", M: "ab2@3 g2", N: "f2 g2", O: "f2@2 db2 eb2",
  P: "[ab2@13 g2@5 f2@11 db2@6 eb2@7 ab1@23 ~@15]/5",
})).s("gm_fretless_bass").gain(0.24)

stack(pad_new_age, string_ensemble_1, bass)

More by Mariah Carey