Strudelify
One Sweet Day cover art

1995 · Daydream

One Sweet Day

Mariah Carey

KeyF majorTempo65 bpm
0:00/0:00
// One Sweet Day — Mariah Carey
// 65 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 71 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(65/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 · piano · "A.PIANO 1"
const piano = note("<~@4 A B C@2 D@2 E F G@4 H I J K ~@7 L@3 M@2 N@2 O@2 ~@8 P Q R@2 S@8 ~@15>".pickRestart({
  A: "e4@3 f4@9 e4@4 f4@4 g4@2 e4@2", B: "f4", C: "[e4@3 f4@9 e4@3 f4@4 g4@3 d4@9 e4 d4 c4@12 c4@3]/2",
  D: "[e4@3 f4@9 e4@4 f4@3 g4@2 e4@2 f4@13 d4@6 f4@6]/2", E: "g4@15 f4@4 a4@3 a4@2", F: "g4@18 ~@2 f4@3 e4",
  G: "[e4@3 f4@9 e4@4 f4@4 ~ e4@5 ~ [f4,g4] f4@10 a4@3 ~@2 g4 ~ f4@2 e4@3 f4@10 e4@3 f4@4 g4@2 ~ d4@8 e4 d4 c4@11 ~ c4@2 e4@2, f4 ~@19 g4@2 ~@20 a4@2 ~@52]/4", // Fsus2
  H: "f4@6 e4@2 f4@2 g4 e4", I: "f4@2 d4 f4", J: "g4@15 f4@4 a4@2 ~@2 bb4, ~@11 a4", K: "a4 g4@5 ~@6",
  L: "[~@21 e4@6 f4@9 e4@3 f4@5 ~ e4@2 f4@25, ~@22 g4 ~@13]/3",
  M: "[e4@4 f4@8 e4@3 f4@4 g4@2 d4@10 e4 c4@12 c4@4, ~@32 d4 ~@15]/2",
  N: "[e4@2 f4@10 e4@4 f4@4 ~ e4@2 f4@13 d4@6 f4@6, ~@10 g4 ~@13]/2", O: "[g4@15 f4@4 a4@2 a4 ~ g4@11 ~@14]/2",
  P: "d5@9 db5@11 db5@3 d5", Q: "~@2 f5@5 d5@2 c5@2 a4@2 g4 f4@10",
  R: "[~@3 d5@3 d5@2 ~ d5@3 c5@3 ~ a4@2 ~ d5@2 a4@23 a4@2 d5@2, ~@15 c5@2 ~ c5@2 ~@28]/2",
  S: "[~@7 e5 d5 db5@9 ~@6 f5@2 d5@6 c5@2 a4 g4 f4@14 d4@3 f4@3 g4@3 a4@3 ~@2 g4@2 a4@3 bb4 a4@2 g4@12 c5@9 ~@99, ~@5 e5@43, ~@63 a4@2 ~@127]/8",
})).s("gm_piano").gain(0.56)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C D A B A B A B E D A B A B A B E D A B A B A B E D A B A B A B E D A B A B A B E F G H I A G B C D J A J A J A K
  L J A J A J A K L J M N
>`.pickRestart({
  A: "f2@11 ~ f2@10 c2@2", B: "d2@11 ~ d2@10 a2@2", C: "g2@11 ~ g2@10 d2@2", D: "c2@11 ~ c2@10 g2@2",
  E: "eb2@11 ~ eb2@10 bb1@2", F: "c2@11 ~ c2@10 g1@2", G: "bb1@11 ~ a1@11 ~", H: "d2@11 ~ d2@10 a1@2",
  I: "bb1@11 ~ c2@11 ~", J: "ab2@11 ~ ab2@10 eb2@2", K: "gb2@11 ~ gb2@10 db2@2", L: "eb2@11 ~ eb2@10 bb2@2",
  M: "ab2@3 eb2", N: "ab2@13 ~@11",
})).s("gm_acoustic_bass").gain(0.25)

// chords · piano · "A.PIANO 1"
const piano_2 = note(`<
  A B C D E F E B G B H D A I A B E I J K A F G I G B L M G F G F E I L M A B A I E B L M N I O E P Q@3 R S R S T U V L
  T U R S R W V J X Y@2
>`.pickRestart({
  A: "~@5 a3 ~@2 c4 ~@2 a3, f2!2, ~ a3@4 ~@2 a3@3 ~@2, ~ c4!2 ~@2 c4, ~ a4 ~ a4",
  B: "~@11 f3, f4, d2@11 ~, ~ f3@2 d4@2 f3@2 a3@2 d4@3, ~ a3!2 d4 f3 a3",
  C: "~@11 d4, g2!2, g4!2 bb4!2, ~ d4@3 d4@3 g4@2 ~ g4@2, ~@2 bb3@3 bb3@2 ~ d4@3 ~",
  D: "~@5 e3 ~@2 g3 ~@2 e3, c2@3 ~@2 g3, ~ e3@2 bb3@3 ~ e3@2 bb3@3, ~ g3!2 c3@3",
  E: "~@11 c4, f2 f3, f4!2 a4!2, ~ c4@3 c4@3 f4@2 ~ f4@2, ~@2 a3@3 a3@2 ~ c4@3 ~",
  F: "~@5 f3 ~@2 a3 ~@2 f3, d2@3 ~@2 a3, ~ f3@2 d4@3 ~ f3@2 d4@3, ~ a3!2 d3@3",
  G: "~@11 a3, a4, f2@11 ~, ~ a3@2 f4@2 a3@2 c4@2 f4@3, ~ c4!2 f4 a3 c4",
  H: "~@5 g3 ~@2 bb3 ~@2 g3, eb2!2, ~ g3@4 ~@2 g3@3 ~@2, ~ bb3!2 ~@2 bb3, ~ g4 ~ g4",
  I: "~@11 a3, d2 d3, d4!2 f4!2, ~ a3@3 a3@3 d4@2 ~ d4@2, ~@2 f3@3 f3@2 ~ a3@3 ~",
  J: "~@11 bb3, eb2 eb3, eb4!2 g4!2, ~ bb3@3 bb3@3 eb4@2 ~ eb4@2, ~@2 g3@3 g3@2 ~ bb3@3 ~",
  K: "~@11 g3, c2 c3, c4!2 e4!2, ~ g3@3 g3@3 c4@2 ~ c4@2, ~@2 e3@3 e3@2 ~ g3@3 ~",
  L: "~@11 g3, g4, eb2@11 ~, ~ g3@2 eb4@2 g3@2 bb3@2 eb4@3, ~ bb3!2 eb4 g3 bb3",
  M: "~@11 e3, e4, c2@11 ~, ~ e3@2 bb3@2 e3@2 g3@2 bb3@3, ~ g3!2 bb3 e3 g3",
  N: "~@5 d3 ~@5 db3, bb1@6 ~ e3@3 e3@2, ~ d3@2 bb3@3 a3@3 a3@3, ~ f3!2 a2@3, ~@8 db3@3 ~",
  O: "~@5 d3 ~@5 e3, [bb1,d4] c2, ~ d3@3 ~@4 e3@3 ~, ~@2 f3@2 f3@2 ~ g3@3 g3@2, ~@3 bb3@2 ~ c4@3 c4@3", // Bb
  P: "~@5 d3 ~@5 db3, bb1@3 ~ e3!2, ~ d3@2 bb3@3 ~ db3@2 g3@3, ~ f3!2 a2@3",
  Q: "[~@5 f3 ~@2 a3 ~@20 e3 ~@2 g3 ~@2 e3, d2@6 ~@4 a3@14 c2 e3 g3 bb3 g3@2 ~@3 bb3@3, ~ f3@2 d4@3 ~ f3@2 d4@21 ~@6, ~ a3!2 d3@12 c3@3, ~@11 f3@19 ~ e3@2 ~ g3@2]/3",
  R: "~@11 c4, c5, ab2@11 ~, ~ c4@2 ab4@2 c4@2 eb4@2 ab4@3, ~ eb4!2 ab4 c4 eb4",
  S: "~@5 ab3 ~@2 c4 ~@2 ab3, f2!2, ~ ab3@4 ~@2 ab3@3 ~@2, ~ c4!2 ~@2 c4, ~ ab4 ~ ab4",
  T: "~@5 c4 ~@2 eb4 ~@2 c4, ab2!2, ~ c4@4 ~@2 c4@3 ~@2, ~ eb4!2 ~@2 eb4, ~ c5 ~ c5",
  U: "~@11 c4, f2 f3, f4!2 ab4!2, ~ c4@3 c4@3 f4@2 ~ f4@2, ~@2 ab3@3 ab3@2 ~ c4@3 ~",
  V: "~@11 db4, gb2 gb3, gb4!2 bb4!2, ~ db4@3 db4@3 gb4@2 ~ gb4@2, ~@2 bb3@3 bb3@2 ~ db4@3 ~",
  W: "~@11 ab3, ab4, f2@11 ~, ~ ab3@2 f4@2 ab3@2 c4@2 f4@3, ~ c4!2 f4 ab3 c4",
  X: "~@11 eb4, ab2!2, ab4!2 c5!2, ~ eb4@3 eb4@3 ab4@2 ~ ab4@2, ~@2 c4@3 c4@2 ~ eb4@3 ~",
  Y: "[~@22 ab3@2 [c4,eb4,ab4]@17 ~@7, ab2@5 ~, ~ c3@4 c3@5 c4@2 ~@12, ~@2 eb3@2 eb3@3 ab3@2 eb4@3 ~@12, ~@3 ab3@3 c4@2 eb3@4 ~@12]/2", // Ab
})).s("gm_piano").gain(0.19)

// chords · tremolo strings · "TREMOLOSTR"
const tremolo_strings = note(`<
  A@2 B@2 ~@15 C D E@3 F@2 G H ~@7 I@2 J@4 K L M ~@7 N O P Q@2 R@2 S@2 T@2 U@2 V@2 W@2 X ~@2
>`.pickRestart({
  A: "[[ab3,c4]@8 a3@2 [bb3,d4]@2 [c4,f4]@9 [bb3,d4]@2 a3@2 [f3,a3]@7 [a3,d4]@2 [a3,d4]@2 [d4,f4]@8 [a3,d4]@4, ~@8 c4@4 ~@9 [c4,f4] ~ c4 ~@24]/2", // Ab Bb F5 Bb F D5 Dm D5 …
  B: "[[bb3,d4]@3 [c4,f4]@4 [d4,g4]@2 [c4,f4] [d4,g4] [bb3,d4]@8 ~@5 e4@2 ~ [bb3,e4]!2 ~@19, ~@19 [bb3,d4]@9 ~@20, ~@13 [c4,f4] ~@10]/2", // Bb F5 G5 F5 G5 Bb Bbdim Bb …
  C: "~@12 [bb3,e4]@5 ~ [bb3,e4]@6", // Bbdim
  D: "[bb3,d4]@3 [a3,c4]@3 [a3,c4]@3 [a3,c4]@3 [a3,c4]@3 [a3,c4]@3 [a3,c4]@3 ~ [a3,c4]@2, ~@21 [bb3,d4]@2 ~", // Bb Am Bb
  E: "[[a3,d4]@12 [d4,f4]@5 ~ [d4,f4]@4 [a3,d4] [bb3,d4]@4 [a3,c4]@2 ~ [a3,c4]@3 [a3,c4]@3 [a3,c4]@3 [a3,c4]@3 [a3,c4]@2 [bb3,d4]@3 [f3,a3]@8 [g3,c4] [f3,a3]!2 ~@8 [d4,f4]@2 ~ [d4,f4]@2 ~, ~@23 [c4,f4] ~@48]/3", // D5 Dm D5 Bb Am Bb F C5 …
  F: "[[a3,c4,f4] ~@2 [a3,c4]@2 ~ [a3,c4]@3 [a3,c4]@3 [a3,c4]@3 [a3,c4]@3 [a3,c4]@3 ~ [g3,c4]@4 [a3,d4]@10 [f3,a3]@6 [a3,d4]@6, [bb3,d4]@3 ~@18 [bb3,d4]@2 ~@25]/2", // F Am C5 D5 F D5 Bb
  G: "[bb3,eb4]@15 [ab3,c4]@4 [eb4,g4]@2 ~ [c4,eb4]@2", H: "[eb4,g4] [bb3,e4]@14 ~@9, [c4,f4] ~@11",
  I: "[~@12 [bb3,e4]@6 [c4,f4]@5 [c4,e4,f4] ~@3 [a3,c4]@3 [a3,c4]@3 [a3,c4]@3 [a3,c4]@3 [a3,c4]@3 [a3,c4]@3 ~ a3@2, ~@23 [bb3,d4]@4 ~@18 [bb3,d4]@2 ~, ~@46 c4 ~]/2", // Bbdim F5 Fmaj7 Am Bb
  J: "[[a3,d4]@12 [d4,f4]@6 [d4,f4]@4 [a3,d4] [bb3,d4]@4 [a3,c4]@2 ~ [a3,c4]@3 [a3,c4]@3 [a3,c4]@3 [a3,c4]@3 [a3,c4]@2 ~ [f3,a3]@5 [g3,c4] [f3,a3]!2 ~@7 [d4,f4]@5 ~ [d4,f4]@4 [a3,d4] [bb3,d4]@4 [a3,c4]@2 ~ [a3,c4]@3 [a3,c4]@3 [a3,c4]@3 [a3,c4]@3 [a3,c4]@3 ~ [a3,c4]@2, ~@23 [c4,f4] ~@20 [bb3,d4]@2 ~@25 [c4,f4] ~@21 [bb3,d4]@2 ~]/4", // D5 Dm D5 Bb Am F C5 F …
  K: "[a3,d4]@2 [f3,a3] [a3,d4]", L: "[bb3,eb4]@15 [ab3,c4]@5 [eb4,g4]@2 [c4,eb4] [eb4,g4]",
  M: "[c4,eb4,e4] ~@23, bb3@5 ~@3", N: "~@12 [e4,g4]@5 ~ [e4,g4]@6",
  O: "[c4,eb4]@3 [c4,eb4]@3 [c4,eb4]@3 [c4,eb4]@3 [c4,eb4]@3 [c4,eb4]@3 [c4,eb4]@3 ~ [c4,eb4]@2, ab4 ~@20 [db4,f4]@2 ~", // Cm Db
  P: "[c4,f4]@12 [f4,ab4]@5 ~ [f4,ab4]@6", // F5 Fm
  Q: "[[db4,f4]@3 [c4,eb4]@2 ~ [c4,eb4]@3 [c4,eb4]@3 [c4,eb4]@3 [c4,eb4]@3 [c4,eb4]@2 [db4,f4]@2 [ab3,c4]@5 [ab3,bb3,c4,eb4] [ab3,c4] ~@7 [f4,ab4]@5 ~ [f4,ab4]@6]/2", // Db Cm Db Ab Fm
  R: "[[db4,f4]@3 [c4,eb4]@2 ~ [c4,eb4]@3 [c4,eb4]@3 [c4,eb4]@3 [c4,eb4]@3 [c4,eb4]@2 [db4,f4] [c4,eb4]@2 [c4,f4]@13 [ab3,c4]@6 [c4,f4]@6]/2", // Db Cm Db Cm F5 Ab F5
  S: "[[db4,gb4]@15 [b3,eb4]@5 [eb4,gb4]@3 [eb4,g4]@12 ~ [eb4,g4]@5 ~ [eb4,g4] ~@5]/2", // Gb5 B Ebm Eb
  T: "[[db4,f4]@3 [c4,eb4]@2 ~ [c4,eb4]@3 [c4,eb4]@3 [c4,eb4]@3 [c4,eb4]@3 [c4,eb4]@2 [db4,f4] [c4,eb4]@2 [c4,f4]@13 [f4,ab4]@6 [f4,ab4]@6]/2", // Db Cm Db Cm F5 Fm
  U: "[[db4,f4]@3 [c4,eb4]@3 [c4,eb4]@3 [c4,eb4]@3 [c4,eb4]@3 [c4,eb4]@3 ~ [db4,f4]@2 [ab3,c4]@5 [bb3,eb4] [ab3,c4]!2 ~@7 [f4,ab4]@5 ~ [f4,ab4]@6, eb4 ~@17 [c4,eb4]@2 ~@28]/2", // Db Cm Db Ab Eb5 Ab Fm Cm
  V: "[[db4,f4]@3 [c4,eb4]@2 ~ [c4,eb4]@3 [c4,eb4]@3 [c4,eb4]@3 [c4,eb4]@3 [c4,eb4]@2 ~ [c4,eb4]@2 [c4,f4]@13 [ab3,c4]@6 [c4,f4]@6, ~@10 [db4,f4] ~@13]/2", // Db Cm F5 Ab F5 Db
  W: "[[db4,gb4]@15 [b3,eb4]@4 [gb4,bb4]@2 ~ [f4,ab4]@4 [eb4,g4]@10 [eb4,g4]@6 [eb4,g4]@5 ~]/2", // Gb5 B Gb Fm Eb
  X: "[eb4,f4,ab4] [db4,f4] [c4,eb4]@20 ~@2", // Fm7 Db Cm
})).s("gm_tremolo_strings").gain(0.24)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@20 A B A B A B C D ~@8 A B A B A B C D ~@8 E F E F E F G C E F E F E F G C E H@2
>`.pickRestart({
  A: "[f5,a5]", B: "[f5,d6]", C: "[eb5,g5]", D: "[e5,bb5]", E: "[ab5,c6]", F: "[f5,ab5]", G: "[gb5,bb5]",
  H: "[[ab5,eb6]@3 ~]/2", // Ab5
})).s("gm_string_ensemble_1").gain(0.08)

// chords · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note(`<
  ~@20 A B A B A B C A ~@8 A B A B A B C A ~@8 D A D A D A E C D A D A D A E C D ~@2
>`.pickRestart({
  A: "c5", B: "d5", C: "bb4", D: "eb5", E: "db5",
})).s("gm_string_ensemble_1").gain(0.04)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  A B C D E F G F A B H I G J K L G B M I A J G B A F N O E L G J E L H P G B K J K L N D Q L R K S J T O U V W V W V X
  N W V U V U Y Z M AA AB AC
>`.pickRestart({
  A: "a4@9 ~@2 a3, [a3,c4]@11 ~, f4@5 f4, ~@3 a4", B: "~ [d4,f4]@5, a4, ~ a3@11", C: "[bb3,d4,g4,bb4]@7 ~",
  D: "[g3,bb3,c4,e4]@7 ~", E: "[a3,c4,f4,a4]@7 ~", F: "a4@9 ~@2 a3, [a3,d4]@11 ~, f4@5 f4, ~@3 a4",
  G: "a4@3 ~@2 a3@7, f4, a3@5 ~@7, c4 c4@2, ~ a4@3", H: "g4@3 ~@2 g3@7, eb4, g3@5 ~@7, bb3 bb3@2, ~ g4@3",
  I: "e4@3 ~@2 g3@7, c4, g3@5 ~@7, bb3 bb3@2, ~ e4@3", J: "[a3,d4,f4,a4]@7 ~", K: "~ [c4,f4]@5, a4, ~ a3@11",
  L: "a4@3 ~@2 a3@7, f4, a3@5 ~@7, d4 d4@2, ~ a4@3", M: "~ [bb3,eb4]@5, g4, ~ g3@11", N: "[g3,bb3,eb4,g4]@7 ~",
  O: "e4@9 ~@2 g3, [g3,bb3]@11 ~, c4@5 c4, ~@3 e4", P: "~ [bb3,c4]@5, e4, ~ g3@11",
  Q: "~ f3@2 ~ e3@2, [d4,f4]@6 ~ g3@5, ~ bb3@5 [a3,db4]@6", R: "~ f3@2 [g3,bb3,c4,e4]@3, [d4,f4] ~, ~ bb3@5 ~@6",
  S: "~ f3@2 [e3,g3,a3,db4]@3, [d4,f4] ~, ~ bb3@5 ~@6", T: "bb4@9 ~@2 bb3, [bb3,d4]@11 ~, g4@5 g4, ~@3 bb4",
  U: "[c4,eb4,ab4,c5]@7 ~", V: "[ab3,c4,f4,ab4]@7 ~", W: "~ [eb4,ab4]@5, c5, ~ c4@11",
  X: "~ [db4,gb4]@5, bb4, ~ bb3@11", Y: "~ [c4,f4]@5, ab4, ~ ab3@11",
  Z: "bb4@9 ~@2 bb3, [bb3,db4]@11 ~, gb4@5 gb4, ~@3 bb4", AA: "c5@9 ~@2 c4, [c4,eb4]@11 ~, ab4@5 ab4, ~@3 c5",
  AB: "[c5,ab5] [ab4,c5,ab5]", AC: "[c5,ab5]@5 ~@3",
})).s("gm_acoustic_guitar_nylon").gain(0.15)

// drums · kick
const kick = s("bd").struct("<A@3 B A@7 B A@7 B C@8 A@7 B C@8 A@7 B C@18 D>".pickRestart({
  A: "x!2", B: "x ~@2 x ~ x", C: "x ~@4 x!2 ~@5", D: "x",
})).gain(0.3)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<[~@5 x ~@6]!20 ~@8 [~@5 x ~@6]!8 ~@8 [~@5 x ~@6]!8 ~@19>").gain(0.12)

// drums · rim
const rim = s("rim").struct("<[~ x ~ x]!27 ~ [~ x ~ x]!15 ~ [~ x ~ x]!25 ~@2>").gain(0.24)

// drums · snare
const snare = s("sd").struct("<~@20 [~ x ~ x]!8 ~@8 [~ x ~ x]!8 ~@8 [~ x ~ x]!18 ~>").gain(0.24)

// drums · hihat
const hihat = s("hh").struct("<A@3 B A@3 B A B A B@2 A@4 B@3 C A@8 B A B@3 A B A@8 B A B@2 A@3 B A@18 ~>".pickRestart({
  A: "x!12", B: "x!11 ~", C: "~ x!11",
})).gain(0.18)

// drums · open hat
const open_hat = s("oh").struct("<~@3 A ~@3 A ~ A ~ A@2 ~@4 A@3 ~@9 A ~ A@3 ~ A ~@8 A ~ A@2 ~@3 A ~@18 B>".pickRestart({
  A: "~@11 x", B: "x",
})).gain(0.18)

// drums · crash
const crash = s("cr").struct("<~@20 x ~@50>").gain(0.18)

stack(
  piano, bass, piano_2, tremolo_strings, string_ensemble_1, string_ensemble_1_soft, acoustic_guitar_nylon, kick,
  kick_soft, rim, snare, hihat, open_hat, crash
)

More by Mariah Carey