Strudelify
All I Want for Christmas Is You cover art

1994 · Merry Christmas

All I Want for Christmas Is You

Mariah Carey

KeyG majorTempo140 bpm
0:00/0:00
// All I Want for Christmas Is You — Mariah Carey
// 140 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 144 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(140/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.

// bass · fretless bass · "Bass"
const bass = note(`<
  ~@4 A@2 B@8 C@8 ~@3 D E@3 F G H I@2 E@3 F G H I@2 E J K L M N O M E K O D E@3 F G H I@2 E@3 F G H I@2 E J K L M N O M
  E K O D P@2 K Q P@2 K Q I@2 M K O@2 M D E@3 F G H I@2 E J K L M N O R@2 D E K O D E K O D E K O D E K O D E S ~@10
>`.pickRestart({
  A: "[~@3 g2@13]/2", B: "[~@11 b2@51 c3@50 d#2@51 d2@29]/8", C: "[~@5 b2@6 e2@19 d#2@7 d2@14 e2@14 a2@14 d2@17]/8",
  D: "~@3 d2@2 d2@4 d2@2 d2@4 d2@2 d2@4 d2@3", E: "g2!4", F: "g2 a2 a#2 b2", G: "c3!4", H: "c3@2 c3@2 c3@2 c3 d2",
  I: "d#2!4", J: "g2!2 b2!2", K: "e2!4", L: "e2!2 d#2!2", M: "d2!4", N: "e2!3 g2", O: "a2!4", P: "b2!4", Q: "e2!3 a2",
  R: "[d2 d2@7]/2", S: "e2!3 ~",
})).s("gm_fretless_bass").gain(0.52)

// bass · fretless bass · "Bass" · soft notes
const bass_soft = note("<~@133 A B C D E B C D E B C>".pickRestart({
  A: "~@3 e2", B: "a2!4", C: "~@3 d2@2 d2@4 d2@2 d2@4 d2@2 d2@4 d2@3", D: "g2!4", E: "e2!4",
})).s("gm_fretless_bass").gain(0.13)

// chords · piano
const piano = note(`<
  ~@4 A@2 B@8 C@8 D E F G D@4 F@2 H@2 D@4 F@2 H@2 D I E J D K L H M N O G D@4 F@2 H@2 D@4 F@2 H@2 D I E J D K L H M N P
  G Q@2 N@2 Q@2 N@2 R@2 S T U@2 V G D@4 F@2 H@2 D I E J D K W R X G M N O G M N O G M N O G M N O G M Y ~@10
>`.pickRestart({
  A: "[~@3 [g2,b3,d4,g4]@13]/2", B: "[~@11 [b2,b3,d4,g4]@51 [c3,c4,e4,g4]@50 [d#2,c4,d#4,g4,a4]@51 [d2,b3,d4,g4]@29]/8",
  C: "[~@5 [b2,a3,d#4,g4]@6 [e2,b3,e4,g4]@19 [d#2,c4,g4,a4]@7 [d2,d4,g4,b4]@14 [e2,d4,e4,g#4,b4]@14 [a2,a3,c4,e4,g4]@14 [d2,a3,c4,d#4,g4]@17]/8", // Baug Em Am7b5 G E7 Am7 Am7b5
  D: "[b4,d5,g5]!12", E: "[b4,e5,g5]!12", F: "[c5,e5,g5]!12",
  G: "~@3 [d4,d5]@2 [d4,d5]@4 [d4,d5]@2 [d4,d5]@4 [d4,d5]@2 [d4,d5]@4 [d4,d5]@3", H: "[a4,c5,d#5,g5]!12",
  I: "[b4,d5,g5]!6 [a4,b4,d#5,f#5]!6", J: "[b4,e5,g5]!6 [a4,c5,d#5,g5]!6", K: "[b4,d5,e5,g#5]!12",
  L: "[a4,b4,c5,e5]!12", M: "[g4,b4,d5]!12", N: "[e4,g4,b4]!12", O: "[e4,a4,b4,c5]!12", P: "[c4,e4,g4,b4]!12",
  Q: "[d4,f#4,a4,b4]!12", R: "[d#4,g4,a4,c5]!12", S: "[d4,g4,b4]!12", T: "[e4,g#4,b4,d5]!12", U: "[e4,a4,c5]!12",
  V: "[d4,f#4,a4,c5]!12", W: "[g4,a4,c5,e5]!12", X: "[d#4,g4,a4,c5]", Y: "[e4,g4,b4]!8 ~@4",
})).s("gm_piano").gain(0.32)

// chords · piano · soft notes
const piano_soft = note("<~@133 A B C D E B C D E B C>".pickRestart({
  A: "~@8 [e4,g4,b4]!4", B: "[e4,a4,b4,c5]!12",
  C: "~@3 [d4,d5]@2 [d4,d5]@4 [d4,d5]@2 [d4,d5]@4 [d4,d5]@2 [d4,d5]@4 [d4,d5]@3", D: "[g4,b4,d5]!12",
  E: "[e4,g4,b4]!12", // Em
})).s("gm_piano").gain(0.12)

// chords · synth strings 1 · "Sinth"
const synth_strings_1 = note(`<
  ~@4 A@2 B@8 C@8 ~@20 D@2 E@2 F G H I F J K ~@17 D@2 E@2 F G H I F J K ~ L@2 M@2 L@2 M@2 N@2 O P Q@2 R ~@9 D@2 E@2 F G
  S T@2 ~ F J K ~ F J K ~ F J K ~ F J K ~ F J ~@10
>`.pickRestart({
  A: "[~@3 [g4,b4,d5]@13]/2", B: "[~@11 [g4,b4,d5]@51 [e4,g4,c5]@50 [d#4,g4,a4,c5]@51 [g4,b4,d5]@29]/8",
  C: "[~@5 [g4,a4,d#5]@6 [g4,b4,e5]@19 [d#4,g4,a4,c5]@7 [g4,b4,d5]@14 [e4,g#4,b4,d5]@14 [e4,g4,a4,c5]@14 [d#4,g4,a4,c5]@17]/8", // Am7b5 Em Am7b5 G E7 Am7 Am7b5
  D: "[[d4,g4,b4,g5]@3 [d#4,f#4,a4,b4,b5]]/2", E: "[~@2 e6 [d#4,g4,a4,c5,c6], [e4,g4,b4,e5]@3 ~]/2", F: "[g4,b4,d5,g5]",
  G: "[g#4,b4,d5,e5,e6]", H: "[a4,c5,e5,a5]", I: "[a4,c5,d#5,a5]", J: "[g4,b4,e5]", K: "[a4,c5,e5]",
  L: "[d4,f#4,b4,a5]", M: "[e4,g4,b4]", N: "[d#4,g4,c5]", O: "[d4,g4,b4]", P: "[e4,g#4,b4]", Q: "[e4,g4,b4,c5]",
  R: "[d4,f#4,a4]", S: "[c4,e4,g4,a4]", T: "[d#4,g4,a4,c5]/2",
})).s("gm_synth_strings_1").gain(0.25)

// chords · synth strings 1 · "Sinth" · soft notes
const synth_strings_1_soft = note("<~@134 A ~ B C A ~ B C A ~>".pickRestart({
  A: "[a4,c5,e5]", B: "[g4,b4,d5,g5]", C: "[g4,b4,e5]",
})).s("gm_synth_strings_1").gain(0.1)

// other · tubular bells · "Bells"
const tubular_bells = note(`<
  ~@4 A@2 B@8 C@8 ~@21 D E F G ~@35 H ~ I ~ H ~ I ~ J@2 K I L@2 M ~@10 D E F G ~ L N@2 ~@29
>`.pickRestart({
  A: "[~@3 g4@13]/2", B: "[~@11 b4@51 c5@50 d#5@51 d5@29]/8", C: "[~@5 b4@6 e5@19 d#5@7 d5@14 e5@14 a4@14 d5@17]/8",
  D: "~@2 d#5 a4", E: "b4 ~@3", F: "~@2 c5 b4", G: "d5 ~@3", H: "b4", I: "e5", J: "c5", K: "g4", L: "a4", M: "d5",
  N: "[d#5 g5@7]/2",
})).s("gm_tubular_bells").gain(0.32).pan(0.3)

// other · glockenspiel · "Keyboards"
const glockenspiel = note("<A@5 ~@37 B C B C ~@38 D@2 ~@2 D@2 ~@16 B C B C ~@34>".pickRestart({
  A: "[~@3 g5@2 b5@2 d6@2 f#6@2 g6@2 f#6@2 d6@2 b5@2 g5@2 c6@2 d6@2 g6@2 [d4,d6]@8 ~@5, ~@3 g4@8 e4@8 c4@8 ~@13]/5", // D
  B: "g5 ~ a5 ~ f#5 ~ g5 e5", C: "~ f#5 ~ d#5 ~@4", D: "[e5@2 f#5 g5@2 a5@2 g5@3 ~@6]/2",
})).s("gm_glockenspiel").gain(0.36)

// other · string ensemble 1 · "Strings"
const string_ensemble_1 = note("<~@25 A ~@27 A ~@27 A ~@15 A ~@17 A ~@3 A ~@3 A ~@3 A ~@3 A ~@12>".pickRestart({
  A: "~@3 [d4,d5]@2 [d4,d5]@4 [d4,d5]@2 [d4,d5]@4 [d4,d5]@2 [d4,d5]@4 [d4,d5]@2 ~", // D
})).s("gm_string_ensemble_1").gain(0.32)

// other · string ensemble 1 · "Strings" · soft notes · D
const string_ensemble_1_soft = note(`<
  ~@135
  [~@3 [d4,d5]@2 [d4,d5]@4 [d4,d5]@2 [d4,d5]@4 [d4,d5]@2 [d4,d5]@4 [d4,d5]@2 ~]
  ~@3
  [~@3 [d4,d5]@2 [d4,d5]@4 [d4,d5]@2 [d4,d5]@4 [d4,d5]@2 [d4,d5]@4 [d4,d5]@2 ~]
  ~@3
  [~@3 [d4,d5]@2 [d4,d5]@4 [d4,d5]@2 [d4,d5]@4 [d4,d5]@2 [d4,d5]@4 [d4,d5]@2 ~]
>`).s("gm_string_ensemble_1").gain(0.08)

// chords · brass section · "Brass"
const brass_section = note(`<
  ~@26 A@4 B@2 C@2 A@4 B@2 C@2 D@2 E@2 F G ~@6 A@4 B@2 C@2 A@4 B@2 C@2 D@2 E@2 F G ~@22 A@4 B@2 C@2 D@2 E@2 F G H ~@7 I
  J K L I J K L I J K L I J ~@10
>`.pickRestart({
  A: "[d4,g4,b4]/4", B: "[c4,e4,g4]/2", C: "[c4,d#4,g4,a4]/2", D: "[[d4,g4,b4]@3 [d#4,f#4,a4,b4]]/2",
  E: "[[e4,g4,b4]@3 [c4,d#4,g4,a4]]/2", F: "[d4,g4,b4]", G: "[d4,e4,g#4,b4]", H: "[e4,a4,c5]", I: "g4", J: "e4",
  K: "a4", L: "d4",
})).s("gm_brass_section").gain(0.19)

// chords · brass section · "Brass" · soft notes
const brass_section_soft = note("<~@134 A B C D A B C D A B>".pickRestart({
  A: "a4", B: "d4", C: "g4", D: "e4",
})).s("gm_brass_section").gain(0.07)

// drums · kick
const kick = s("bd").struct(`<
  ~@26 A@7 B A@7 B A@11 ~ A@7 B A@7 B A@11 ~ A@15 ~ A@7 B A@7 ~@3 A@3 ~ A@3 ~ A@3 ~ A@3 ~ A C ~@10
>`.pickRestart({
  A: "x!4", B: "x!2 ~@2", C: "x!3 ~",
})).gain(0.44)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@133 [~@3 x] [x!4] ~ [x!4]!3 ~ [x!4]!3 ~>").gain(0.16)

// drums · snare
const snare = s("sd").struct(`<
  ~@25 A B@7 ~ B@7 ~ B@11 A B@7 ~ B@7 ~ B@11 A B@15 A B@7 ~ B@7 ~@2 A B@3 A B@3 A B@3 A B@3 A B ~@11
>`.pickRestart({
  A: "~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x ~@2", B: "~@3 x",
})).gain(0.44)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@133
  [~@3 x]!2
  [~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x ~@2]
  [~@3 x]!3
  [~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x ~@2]
  [~@3 x]!3
  [~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x ~@2]
>`).gain(0.11)

// drums · low tom
const low_tom = s("lt").struct("<~@24 A ~@8 B ~@7 B ~@19 B ~@7 B ~@35 B ~@38>".pickRestart({
  A: "~@23 x", B: "~@10 x!2",
})).gain(0.44)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@26 A@7 B A@7 B A@11 ~ A@7 B A@7 B A@11 ~ A@15 ~ A@7 B A@7 ~@3 A@3 ~ A@3 ~ A@3 ~ A@3 ~ A B ~@10
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.44)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@133 [~@3 x] [~ x ~ x] ~ [~ x ~ x]!3 ~ [~ x ~ x]!3 ~>").gain(0.16)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@24 A B ~@7 C ~@7 C ~@11 B ~@7 C ~@7 C ~@11 B ~@15 B ~@7 C ~@9 B ~@3 B ~@3 B ~@3 B ~@3 B ~@12
>`.pickRestart({
  A: "~@6 x!6", B: "~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x ~@2", C: "~@8 x!2 ~@2",
})).gain(0.44)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct(`<
  ~@135
  [~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x ~@2]
  ~@3
  [~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x ~@2]
  ~@3
  [~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~@3 x ~@2]
>`).gain(0.11)

// drums · high tom
const high_tom = s("ht").struct("<~@24 A ~@8 B ~@7 B ~@19 B ~@7 B ~@35 B ~@38>".pickRestart({
  A: "x!6 ~@6", B: "~@6 x!2 ~@4",
})).gain(0.44)

// drums · crash
const crash = s("cr").struct("<~@4 A ~ B ~ C ~ D ~ E ~ F ~@2 G ~ H C ~@92 I ~@30>".pickRestart({
  A: "~@3 x ~@4", B: "~@11 x ~@12", C: "~@7 x ~@4", D: "~@2 x", E: "~@19 x ~@4", F: "~@11 x", G: "~ x ~@10",
  H: "~@5 x ~@6", I: "x",
})).gain(0.44)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@22 A@2 ~@2 A@7 B A@7 B A@11 ~ A@7 B A@7 B A@11 ~ A@15 ~ A@7 B A@7 ~@3 A@3 ~ A@3 ~ A@3 ~ A@3 ~ A C ~@10
>`.pickRestart({
  A: "x!4", B: "x!2 ~@2", C: "x!3 ~",
})).gain(0.44)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@133 [~@3 x] [x!4] ~ [x!4]!3 ~ [x!4]!3 ~>").gain(0.16)

stack(
  bass, bass_soft, piano, piano_soft, synth_strings_1, synth_strings_1_soft, tubular_bells, glockenspiel,
  string_ensemble_1, string_ensemble_1_soft, brass_section, brass_section_soft, kick, kick_soft, snare, snare_soft,
  low_tom, hihat, hihat_soft, mid_tom, mid_tom_soft, high_tom, crash, tambourine, tambourine_soft
)

More by Mariah Carey