Strudelify

I Don't Wanna Cry

Mariah Carey

KeyF♯ minorTempo64 bpm
0:00/0:00
// I Don't Wanna Cry — Mariah Carey
// 64 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 78 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(64/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 · acoustic bass · "untitled"
const bass = note(`<
  A B C D E F G B G H I J G K L M N O P Q R S T U V W G J X Y G B G H I J G K L M N O P Q R S T U V W G J X Y L Z AA AB
  AC AD AE AF AG AH AI AJ AK AL AM AN AO AN AP AN AQ AR@3
>`.pickRestart({
  A: "f#2@13 ~ c#2@2 f#2@2 g#2@2 a2@7 ~ c#3@3 ~", B: "b2@13 ~ b2@2 a2@6 ~@2 g#2@5 ~ c#2@2",
  C: "f#2@13 ~ c#2@2 f#2@2 g#2@2 a2@7 ~ c#3@2 a2@2", D: "b2@10 ~@2 a2@2 b2@2 c#3@5 ~ c#3@2 d3@3 ~ c#3@2 b2@2",
  E: "f#2@5 ~ f#2!2 f#2@3 ~@2 c#2!3", F: "f#2@5 ~ f#2!2 f#2@3 ~@5", G: "f#2@13 ~ c#2@2 f#2@2 g#2@2 a2@7 ~ c#3@2 f#2@2",
  H: "b2@13 ~ b2@2 a2@5 ~ a2@2 g#2@2 c#2@2 c#2@3 ~", I: "f#3@2 c#3@2 f#2@9 ~ c#2@2 f#2@2 g#2@2 a2@7 ~ c#3@2 f#2@2",
  J: "b2@13 ~ b2@2 a2@5 ~ a2@2 g#2@5 ~ c#2@2", K: "b2@13 ~ b2@2 a2@5 ~ c#2@2 c#2@5 ~ c#2@2",
  L: "e2@13 ~ e2@2 e2@10 e2@2 g#2@2 a2@2", M: "b2@13 ~ b2@2 b2@5 ~ c#3@2 d3@3 ~ c#3@2 b2@2",
  N: "e2@13 ~ e2@2 e2@6 ~@2 g#2@2 f#2@2 e2@2 a2@2", O: "e2@13 ~ e2@2 e2@6 ~@2 e2@6 ~@2",
  P: "a2@13 ~ a2@2 a2@10 e2@2 e2@3 ~", Q: "g#2@13 ~ g#2@2 g#2@10 e2@2 f#2@3 ~", R: "g2@13 ~ g2@2 g2@10 a2@2 g2@3 ~",
  S: "f#2@10 ~@2 f#2@2 f#2@2 a#2@10 b2@2 c#3@3 ~", T: "b2@13 ~ b2@2 b2@6 ~@2 c#3@6 ~@2",
  U: "d3@5 ~ d3 d2 e2@5 f#2 a2 f#2", V: "b2@13 ~ b2@2 b2@6 ~@2 c#2@6 ~@2", W: "d2@3 ~ d2@3 ~@25",
  X: "f#2@13 ~ c#2@2 f#2@2 g#2@2 a2@6 c#3@2 f#2@2 a2@2", Y: "b2@5 ~ a2 b2 c#3@3 ~ c#3 d3 c#3 b2",
  Z: "b2@13 ~ b2@2 b2@6 ~@2 c#3@2 a2@2 e2@2 c#2@2", AA: "e2@10 ~@2 e2@2 e2@2 e2@5 ~ f#2@2 a2@2 f#2@2 e2@3 ~",
  AB: "e2@10 ~@2 e2@2 e2@2 e2@10 e2@5 ~", AC: "f2@10 ~@2 f2@2 f2@2 f2@5 ~ f2@2 a2@2 a2@2 ~ a2@2 ~",
  AD: "a#2@3 ~ a#2@3 ~@17 d2@2 d2@2 ~ d2@2 ~", AE: "a2@5 ~ a2!2 a2@5 g2 f2 d#2", AF: "g#2@5 ~ g#2!2 g#2@5 a#2 a2!2",
  AG: "g2@10 ~@2 g2@2 g2@2 b2@5 ~ c3@2 d3@2 b2@2 g2@2 d2@2", AH: "c2@6 ~@2 c2@5 ~ c2@2 c2@8 d2@6 ~@2",
  AI: "d#2@5 ~ d#2!2 d#2@3 ~ g2 a#2 c3 g2", AJ: "c3@5 ~ c2!2 c2@4 d2@3 ~",
  AK: "d#2@10 ~@2 d#2@2 d#2@2 f2@5 ~ f2@2 g2@3 ~ c3@2 g2@2", AL: "c3@10 ~@2 c3@2 c3@2 c3@5 ~ g2@2 d3@2 d3@2 c3@2 g2@2",
  AM: "d#2@5 ~ d#2!2 d#2@3 ~ f2@3 ~", AN: "g2@13 ~ d2@2 g2@2 a2@2 a#2@7 ~ g2@2 d2@2",
  AO: "c2@10 ~@2 c3@3 ~ a#2@6 ~@2 a2@5 ~ d2@2", AP: "c2@12 a#2@2 c2@2 d2@6 ~@2 d2@3 ~ d2@2 c2@2",
  AQ: "a#2@9 ~@3 a2@10 ~@10", AR: "[~@15 g2@65 ~@16]/3",
})).s("gm_acoustic_bass").gain(0.24)

// other · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A B C D E F G H I H J K I L M N O ~@9 P@2 Q R ~@2 S@2 T ~ U ~ M V O ~@9 W X Y Z AA AB AC AD AE ~@10 AF AG AH AI AJ AK
  AL@2 ~
>`.pickRestart({
  A: "~@14 c#4@2 a4@2 g#4@2 a4@7 ~@3 c#4@2", B: "d4@11 ~@3 d4 c#4 b3@16", C: "~@14 c#4@2 a4@2 g#4@2 a4@6 b4@3 c#5@2 ~",
  D: "d5@7 ~ c#5@4 b4@3 ~", E: "f#4@3 ~", F: "~@8 f#4@2 g#4@2 a4@2 c#5 ~ f#5@14 ~@2", G: "~ f#3@20 ~@7 f#3@2 g#3@2",
  H: "a3@11 ~@5 c#4@4 f#4@4 b3@4 f#4@2 ~@2", I: "f#3@10 ~@4 f#3 g#3", J: "f#3@11 ~@3 f#3 g#3",
  K: "a3@6 ~@2 c#4@2 f#4@2 b3@2 f#4 ~", L: "a3@13 ~@3 c#4@4 f#4@4 b3@4 f#4@3 ~",
  M: "e4@2 g#4@2 a4@2 b4@11 ~@7 a4@2 b4@2 c#5@2 ~@2", N: "d4 f#4 g#4 a4@5 ~@3 e5 c#5 b4 a4 ~",
  O: "e4 g#4 a4 b4@5 ~@4 a4 b4 c#5@2",
  P: "[~@16 a4@2 b4 c#5@8 ~@3 b4 ~ d5@9 ~ b4@2 c#5@2 b4@2 ~@2 a4@2 b4@8 a4@3 ~, ~@31 c#5@2 ~@31]/2",
  Q: "~@14 c#4@2 a4@2 g#4@2 a4@4 ~@2 b4@2 ~ c#5@2 ~", R: "d5@9 ~@7 c#5@4 f#5@4 b4@3 ~ f#5@4",
  S: "[~@6 f#4@29 ~@29, f#3@35 ~@29, ~@2 a3@33 ~@29, ~@4 c#4@31 ~@29]/2",
  T: "~@6 f#4@23 ~@3, f#3@29 ~@3, ~ a3@13 ~@2, ~ c#4@6 ~", U: "~@3 f#4@9 ~@4, f#3@3 ~, ~ a3@11 ~@4, ~ c#4@5 ~@2",
  V: "d4@2 f#4@2 g#4@2 a4@10 ~@7 c#5@2 ~ b4@2 a4@2 ~@2, ~@11 e5 ~@4", W: "~@18 a4@2 ~ a4 ~@2 a4@3 g#4@2 f#4@3",
  X: "d4@9 ~@5 d4 c#4 b3@10 ~@6", Y: "~@20 c#4@3 ~ f#4@2 a4@2 ~@2 c#5 ~", Z: "c#5 ~",
  AA: "~ b4@6 ~, e4@29 ~@3, ~@2 g#4@27 ~@3", AB: "~@2 f#4@9 ~@5, b3@21 ~@11, ~ d4@10 ~@5",
  AC: "~@4 b4@17 ~@11, e4@5 ~@3, ~@2 g#4@19 ~@11", AD: "~@4 d5@15 ~@13, f#4@19 ~@13, ~@2 a4@17 ~@13",
  AE: "~@4 d#5@19 ~@9, g4@23 ~@9, ~@2 a#4@21 ~@9", AF: "~@14 d4@2 a#4@2 a4@2 a#4@5 ~ c5@2 ~ d5@2 ~",
  AG: "d#5@15 d5@4 g5@4 ~ c5@3 g5@5", AH: "g4@13 ~ d4@2 a#4@2 a4@2 a#4@5 ~ c5@2 ~ d5@2 ~", AI: "d#5@4 d5 g5 c5 g5",
  AJ: "g4@13 d4@2 a#4@2 ~ a4@2 a#4@5 ~ c5@2 d5@2 ~@2", AK: "d#5", AL: "[~@18 a#4@35 ~@11, ~@4 [d4,g4]@9 ~@3]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.3)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@18 A B C D E F G H ~@16 A B C D E F G H ~@10 I J K L M N O P Q@2 ~@8
>`.pickRestart({
  A: "[c#4,e4,a4]@5 ~ [c#4,e4,a4] ~@25", B: "[b3,e4,g#4]@5 ~ [b3,e4,g#4] ~@25",
  C: "[b3,d4,g4]@5 ~ [b3,d4,g4] ~@25, f4 ~@31", // G
  D: "[b3,c#4,f#4]@5 ~ [b3,c#4,f#4] ~@9 [a#3,c#4,f#4]@5 ~ [a#3,c#4,f#4] ~@9", // Bsus2 F#
  E: "~@4 [b3,d4,f#4] ~@3 [b3,d4,f#4]@3 ~@3 [a3,b3,d4,f#4]@2 ~@2 [a3,d4,f#4]@2 ~@2 [a3,f#4]@4 ~@2 [a3,c#4,f#4] ~@3, ~@11 d4 ~@4", // Bm Bm7 D F#m
  F: "[f#3,a3,d4] ~@3 [f#3,a3,d4] ~@3 [f#3,a3,d4]@2 ~@4 [g#3,b3,e4]@2 ~@2 [g#3,b3,e4] ~@3 [f#3,a3,c#4]@4 ~@2 [f#3,a3,c#4] ~@3", // D E F#m
  G: "~@4 [b3,d4,f#4]@2 ~@2 [b3,d4,f#4]@3 ~@7 [b3,d4,f#4] ~@3 [a3,c#4,f#4]@3 ~@3 [a3,c#4,f#4] ~@3", // Bm F#m
  H: "[f#3,a3,d4]@2 ~@2 [f#3,a3,d4]@3 ~@25", I: "[a3,c4,f4]@6 [a3,c4,f4] ~@25", J: "[g#3,c4,d#4]@5 ~ [g#3,c4,d#4] ~@25",
  K: "~@4 [d#4,g4]@2 ~@2 [d#4,g4]@3 ~@3 [d#4,g4]@2 ~@2 [d#4,g4]@2 ~@4 [a#3,d4,f4]@4 ~@4", // D# A#
  L: "~@4 [g3,a#3,d#4]@3 ~ [g3,a#3,d#4] ~@3 a#3 ~ [g3,a#3,d#4] ~@3 [g3,a#3,d#4]@2 ~@4 [f3,a3,c4]@3 ~ [g3,a#3,d4]@4", // D# F Gm
  M: "~@8 [d#4,g4] ~ [d#4,g4]@2 ~@2 [d#4,g4]@2 ~@2 [d#4,g4]@2 ~@4 f#4 ~@7, ~@23 [a#3,d4,f4]@4 ~@5", // D# A#
  N: "~@4 [g3,a#3,d#4]@2 ~@2 [g3,a#3,d#4]@2 ~@2 [g3,a#3,d#4] ~ [g3,a#3,d#4]@2 ~@2 [g3,a#3,d#4]@2 ~@4 [f3,a3,c4]@2 ~@2 [g3,a#3,d4]@3 ~", // D# F Gm
  O: "~@4 [d#4,g4]@3 ~ [d#4,g4]@3 ~ d#4 ~ [d#4,g4]@3 ~@7 [a#3,d4,f4]@4 ~@4", // D# A#
  P: "~@4 [g3,a#3,d#4]@2 ~@2 [g3,a#3,d#4]@2 ~@2 [g3,a#3,d#4] ~ [g3,a#3,d#4] ~@3 [g3,a#3,d#4]@3 ~@3 [f3,a3,c4]@4 ~@4", // D# F
  Q: "[[g3,a#3,d4]@13 ~@19 d4@13 ~@19, ~@15 g3@7 ~@10, ~@31 a#3@13 ~@20]/2", // Gm
})).s("gm_electric_guitar_clean").gain(0.22)

// chords · pad warm
const pad_warm = note(`<
  A B C D E@2 F@2 G@2 H I C I J@2 K L M N O P Q R S ~ A B C T H I C B C U C V W@2 K L M N O P Q R S ~ X@4 N Y Z AA AB ~
  AC AD AE AF AG@3 AH@3 AI O AI O AJ@3 ~
>`.pickRestart({
  A: "~ [a3,c#4,f#4]@30 ~", B: "[b3,d4,f#4]@16 [a3,c#4,f#4]@7 ~ [g#3,c#4,f#4]@7 ~", C: "[a3,c#4,f#4]@31 ~",
  D: "[b3,d4,f#4]@15 ~ [a3,c#4]@8 [g#3,c#4,f#4]@7 ~, ~@15 f#4@7 ~@10", E: "[[a3,c#4,f#4]@49 ~@15]/2",
  F: "[[a3,c#4]@30 ~ [b3,d4]@16 [a3,c#4]@7 ~@2 [g#3,c#4,f#4]@7 ~, f#4@55 ~@9]/2", // A Bm A C#sus4
  G: "[[a3,c#4,f#4]@31 [b3,d4]@15 ~@2 [a3,c#4]@7 ~ [g#3,c#4,f#4]@7 ~, ~@31 f#4@23 ~@10]/2", H: "[a3,c#4,f#4]",
  I: "[b3,d4,f#4]@15 ~ [a3,c#4,f#4]@7 ~ [g#3,c#4,f#4]@7 ~", J: "[[e3,g#3]@31 ~ d4@24 [a3,c#4]@7 ~, ~@31 b3@24 ~@9]/2",
  K: "[e3,g#3]", L: "[a3,d4]@11 ~ [b3,e4]@4", M: "[a3,a4]", N: "[e3,e4]", O: "[g3,g4]", P: "[f#3,f#4]", Q: "[b3,b4]",
  R: "[d3,d4]@19 [e3,e4]@13", S: "[b3,b4]@23 [a3,a4]@8 ~", T: "[b3,d4,f#4]@15 [a3,c#4,f#4]@8 ~ [g#3,c#4,f#4]@7 ~",
  U: "[b3,d4,f#4]@15 ~ [c#4,f#4]@7 ~ [g#3,c#4,f#4]@7 ~, ~@4 a3 ~@3", // Bm F#5 C#sus4
  V: "[b3,d4,f#4]@15 ~ a3@6 ~@2 [g#3,c#4,f#4]@8, ~@15 [c#4,f#4]@7 ~@10", W: "[[e3,g#3]@31 [b3,d4]@24 ~ [a3,c#4]@7 ~]/2",
  X: "[[a3,c#4]@30 ~ [b3,d4]@15 ~ [a3,c#4,f#4]@7 ~@2 [g#3,c#4,f#4]@7 ~ [a3,f#4]@31 ~ f#4@15 ~ a3@5 ~@3 [g#3,c#4,f#4]@8, f#4@47 ~@16 c#4@29 ~@3 [b3,d4]@15 ~ [c#4,f#4]@6 ~@11]/4", // A Bm F#m C#sus4 D C#sus4 Bm F#5
  Y: "[b2,b3]@23 [a2,a3]@8 ~", Z: "[e3,e4]@31 ~", AA: "[d3,d4]", AB: "[d#3,d#4]@31 ~", AC: "[f3,f4]", AD: "[g#3,g#4]",
  AE: "[g3,g4], a3 ~@31", AF: "[c3,c4]@23 ~ d4@8, ~@23 d3@8 ~",
  AG: "[[d#3,d#4]@15 [f3,f4]@8 ~ [g3,g4]@7 ~ c3@24 [d3,d4]@7 [d#3,d#4]@16 [f3,f4]@8 ~ g4@8, ~@31 c4@25 ~@31 g3@8 ~]/3", // D# F G D D# F
  AH: "[[c3,c4]@24 [d3,d4]@7 [d#3,d#4]@24 [f3,f4]@8 [g3,g4]@33]/3", AI: "[c4,c5]@2 [a#3,a#4] [a3,a4]",
  AJ: "[[c4,c5]@47 ~ g3@35 ~@13, ~@47 g4@35 ~@14]/3", // C
})).s("gm_pad_warm").gain(0.21)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  ~@14 A B C D E F G H I J K ~@5 L M N O L P L Q A B R D E F G H I J S ~ T@2 ~@2 U@3 V W X Y Z AA AB@2 AC@2 AD@2 AE AF
  AG AH AI@4 ~
>`.pickRestart({
  A: "~ [b4,b5]@13 [e5,e6]@2", B: "[d5,d6]@2 [c#5,c#6] [a4,a5]", C: "[b4,b5]@27 ~ e5@4, ~@27 e6@4 ~", D: "[d5,d6]@31 ~",
  E: "[a4,a5]@27 [f#5,f#6]@5", F: "[e5,e6]", G: "g4", H: "f#4 a#4", I: "b4@7 c#5", J: "d5@15 e5@9 f#5@8",
  K: "~ b4@27 c#5@4", L: "f#5", M: "b5@2 a5 [g#4,g#5]", N: "[f#4,f#5]", O: "b5@15 ~ a4@8 [g#4,g#5]@7 ~, ~@15 a5@9 ~@8",
  P: "b5@15 a5@9 g#5@8", Q: "b5@15 [a4,a5]@9 [g#4,g#5]@8", R: "[b4,b5]@27 [e5,e6]@4 ~", S: "b4@27 ~ c#5@4", T: "f#6/2",
  U: "[[b4,b5]@24 [e5,e6]@7 ~ d5@22 ~ [c#5,c#6]@8 [b4,b5]@32 ~, ~@31 d6@24 ~@41]/3", V: "[d4,d5]",
  W: "d#4@23 [a4,a5]@9, d#5@5 ~@3", X: "[a#4,a#5] ~@3", Y: "[f4,f5]@3 [c5,c6]", Z: "[g#4,g#5]", AA: "g5@25 [a#4,a#5]@7",
  AB: "[[c5,c6]@23 [d5,d6]@8 ~ d#5@23 [f5,f6]@4 [g5,g6]@4 ~, b5 ~@30 d#6@23 ~@10]/2", // C D F G
  AC: "[[c5,c6]@23 [d5,d6]@8 [d#5,d#6]@24 [f5,f6]@4 [g5,g6]@4 ~]/2", // C D D# F G
  AD: "[[c5,c6]@23 [d5,d6]@8 [d#5,d#6]@16 ~ [f4,f5]@10 g4@6]/2", AE: "~ [g4,g5]@31",
  AF: "[c4,c5]@16 [a#3,a#4]@8 [a3,a4]@7 ~", AG: "[g3,g4]@29 ~@3", AH: "[c5,c6]@15 [a#4,a#5]@8 [a4,a5]@8 ~",
  AI: "[g5@31 [c5,c6]@12 [a#4,a#5]@7 [a4,a5]@31 [g4,g6]@34 ~@13, g4@7 ~@25]/4", // C A# A G
})).s("gm_string_ensemble_2").gain(0.17)

// other · string ensemble 2 · soft notes
const string_ensemble_2_soft = note("<A@6 ~@20 B@6 ~ C D E D C ~@24 F ~@5 G ~@6 H@2 ~>".pickRestart({
  A: "[f#6@7 ~]/6", B: "[~@16 f#4@4 b4@2 a4 ~, f#6@7 ~]/6", C: "b4 ~", D: "f#4", E: "b4@2 a4 g#4", F: "g4@13 ~@3",
  G: "~@13 g5@3", H: "[~@17 g5@33 ~@14]/2",
})).s("gm_string_ensemble_2").gain(0.08)

// chords · epiano2
const epiano2 = note(`<
  A@4 B ~@9 C@3 D E F G H I J K L M@4 N O@2 P Q R S T@5 U V W X Y Z AA AB AC AD AE AF AG@2 AH AI AJ@2 AK AL AM AN AO AP
  AQ AR AS AT@2 AU AV AW AX@3 ~
>`.pickRestart({
  A: "[~@8 [a4,c#5]@18 ~@12 d5@6 ~@4 c#5@4 f#5@4 b4@4 f#5 ~@3, ~ f#3@40 ~@23, ~@32 b3@31 ~, ~@9 b4@2 ~@5]/2", // A
  B: "~@8 c#5@19 ~@5, f#3@27 ~@5",
  C: "[~@4 [e3,g#3]@4 ~@4 [e3,g#3,b3]@4 ~@4 [e3,g#3,b3]@3 ~@5 [e3,b3,e5]@4 ~@4 [f#3,b3,d4]@4 ~@4 [f#3,b3,d4]@4 c#5@4 [b3,d4]@2 ~@6 [e3,a3,c#4]@3 ~@5 [e3,g#3,b3]@4 ~@4 [e3,b3]@3 ~@7 b4@5 ~ [e3,b3]@2 ~@2, e2@58 ~@5 e2@29 ~@4, [e4,g#4,b4]@18 ~@14 d5@14 ~@17 g#4@18 ~ e4@9 ~@5, ~@64 b4@20 [e3,g#3,b3]@4 ~@4 g#3 ~@3]/3", // E E5 Bm A E E5 E
  D: "d4 [e3,f#3,a3,d4] [d4,f#4,a4] [e3,f#3,a3,d4] ~ [e3,f#3,a3,d4] [e4,g#4,b4] [g#3,b3,e4], e2@15 ~, [f#4,a4]@7 ~@9 [e4,g#4,b4]@8 ~@8", // D E F#m E
  E: "[a3,c#4,e4]@7 ~@5 e4@12 ~@2 [a3,c#4] ~@5, a2@27 ~@5, ~ a3@2 ~", F: "~@20 g#2@6 ~ b3 ~@4, [b3,e4]@26 g#3@3 ~@3",
  G: "[g3,b3,d4]@15 ~ [g3,b3,d4]@10 ~@6, g2@27 ~@5", H: "[f#2,f#3]@15 ~ [a#2,f#3,a#3,c#4]@12 ~@4, [b3,d#4]@3 ~@5",
  I: "~@10 d4 ~@2 [a3,c#4,e4]@2 ~, [a3,d4]@9 a3@2 ~@5, f#3@13 ~@3 f#3@6 ~@10, ~@4 b2@11 ~", // A D5
  J: "[f#3,a3,e4]@12 ~@4 [g#3,b3,e4]@3 ~@5 [f#3,a3,c#4]@4 ~@4, d3@5 ~@3", // F#m7 E F#m
  K: "~@14 e4@11 ~@3 [a3,c#4,e4] ~@3, ~@3 d3@23 ~@6, ~@8 f#3@17 ~@7, ~@9 a3@15 ~@8", // A
  L: "[d3,f#3,a3] ~ [d3,f#3,a3,c#4]@2 ~@12", // D Dmaj7
  M: "[~@8 c#5@18 ~@12 d5@6 ~@4 c#5@4 f#5@4 b4@4 f#5 ~@3, ~ f#3@40 ~@23, ~@7 a4@18 ~@7 b3@31 ~, ~@9 b4@2 ~@5]/2",
  N: "f#3@8 ~@4 c#4@2 ~@10 a3@7 ~, [a3,c#4]@10 a3@4 f#4@17 ~, ~@8 f#3@12 f#3@11 ~, ~@7 a3@5 ~@4", // A
  O: "[~@4 b3@2 [f#3,b3,d4]@10 ~@8 g#2@4 ~@12 c#4@2 a3@6 ~@4 c#4@2 [a3,c#4,f#4]@9 ~, b2@16 a2@11 ~ [c#4,f#4]@14 [c#4,f#4]@12 ~@10, ~@2 f#3@4 ~@14 [a3,c#4,f#4]@7 ~ g#3@35 ~, ~@36 f#3@12 f#3@15 ~, ~@19 a3@2 ~@4 a3@2 ~@5]/2", // Bm F#m F#5 F#m
  P: "~@4 b3@2 [f#3,b3,d4]@9 ~@5 [a3,c#4,f#4]@4 ~@4 [g#3,c#4,f#4]@3 ~, b2@16 a2@7 ~ g#2@7 ~, ~ f#3@2 ~@13", // Bm F#m C#sus4
  Q: "~@22 f#4@9 ~, f#3@16 f#3@15 ~, ~@2 a3@16 a3@13 ~, ~@4 c#4@16 c#4@11 ~, ~@3 f#4@8 ~@5",
  R: "~@4 b3@2 [b3,d4]@10 ~@4 [a3,c#4,f#4]@4 ~@4 [g#3,c#4,f#4]@3 ~, b2@16 a2@8 g#2@7 ~, ~@2 f#3@15 ~@15", // Bm F#m C#sus4
  S: "~@11 f#4@4 ~, f#3 ~, ~ a3@8 a3@6 ~, ~ c#4@4 ~@3, ~@3 f#4@8 ~@5",
  T: "[~@4 b3@2 [f#3,b3,d4]@9 ~@5 [a3,f#4]@4 ~@4 g#3@4 ~@36 [f#3,d4]@6 [f#3,b3,d4]@6 ~@8 e4@10 ~@4 e4@18 ~@8 f#3@6 ~@2 a3@2 ~@14 [g#3,b3,e4]@7 ~, b2@15 ~ a2@7 ~ g#2@30 b3@2 e4@12 a3@12 [f#3,d4]@48 e3@16 e3@16, ~ f#3@2 ~@7 c#4@4 f#4@30 c#4@32 ~@4, ~@14 c#4@26 b3@9 [g#3,e4] b3@10 [g#3,b3,e4]@16 ~@4, ~@32 g#3@2 b3@2 e4@16 g#3@36 a3@40 [a3,d4]@6 f#3@4 [f#3,a3,d4]@21 ~]/5", // Bm D Bm E D C#m E D5 …
  U: "~@3 e4 c#4@4 a3 ~ e4 ~@3 [c#4,e4] ~, a3@13 ~@3 b3@15 ~, ~@2 [c#4,a4]@2 [e4,a4]@7 [e4,a4]@4 ~, ~@9 c#4@2 ~@2 a3@2 ~", // C#m F#m A5
  V: "~@4 g#3@4 ~@4 b3@2 ~@12 b3@2 [g#3,b3,e4]@3 ~, ~@2 [b3,e4]@5 ~@5 g#3@2 ~@2, ~@4 g#2@6 g#2@5 ~, ~@5 g#3@2 [g#3,b3,e4]@6 ~@3", // E E5 E
  W: "~@8 d4@10 [d4,g4,b4]@4 d4@4 ~@2 d4@2 g4 ~, g2@26 g2@5 ~, ~@8 [g3,b3]@23 ~, ~@22 [g4,b4]@9 ~", // G
  X: "~@8 [c#4,f#4]@6 a#3@4 ~@2 a#3@4 ~@4 f#3@3 ~, ~@8 b3@23 ~, ~@4 f#3@5 f#3@5 ~@2, ~@14 [c#4,f#4]@10 [a#3,c#4,f#4]@7 ~", // F#5 F#
  Y: "a3@4 ~@2 d4@2 ~@10 [a3,d4,f#4]@6 [c#3,a3,c#4,e4]@7 ~, b2@11 b2@12 ~@9, [d4,f#4] ~@3, ~@2 a3@2 [a3,d4,f#4]@5 ~@7", // D A D
  Z: "~@12 a3@5 ~@7 [f#3,a3,c#4]@5 ~@3, ~@4 d4@13 ~@3 [b3,e4]@10 ~@2, ~@4 [f#3,a3]@6 f#3@7 ~@2 g#3@10 ~@3, ~@8 d3@9 ~@15", // F#m E5 F#m
  AA: "~@4 b3@6 ~@4 d4@2 ~@12 [a3,c#4,e4]@3 ~, ~@4 [d4,f#4]@12 [d4,f#4]@15 ~, ~@10 b2@10 b2@11 ~, ~@12 b3@4 b3@8 b3@7 ~", // A D
  AB: "[d3,f#3,a3,c#4]@3 ~ [d3,f#3,a3,c#4]@5 ~@23", AC: "[f#3,a3,f#4]@15 ~, c#4@27 ~@5",
  AD: "[b3,d4,f#4]@13 ~@3 c#4@3 f#4@4 ~ b3@4 f#4@3 ~, b2@27 ~@5", AE: "[f#3,a3,c#4,f#4]@7 ~",
  AF: "[b3,d4,f#4]@15 ~ c#4@4 f#4@3 b3@5 f#4@2 ~@2, b2@15 ~", // Bm
  AG: "[e3@7 ~@13 e3@11 ~ [a3,d4]@8 ~@4 d4@6 ~@6 [a3,c#4,e4]@5 ~@3, [b3,e4]@15 ~@3 e4@6 ~@40, g#3@11 ~@5 [g#3,b3]@11 ~@4 f#3@6 ~@3 f#3@11 ~@13, ~@2 e3@3 ~@3 b2@6 c#3@2]/2", // D5 A E5 G#m
  AH: "e3@7 ~@11 e4@5 e3@7 ~@2, [b3,e4]@8 b3@5 ~@3, g#3@3 ~@5, ~@8 e3@15 ~@9", // E5
  AI: "e3@7 ~@9 [f#3,a3,d4]@11 ~@5, [f#3,a3,d4]@15 ~@17, ~@8 e3@21 ~@3", // D
  AJ: "[f3@7 ~@9 d#4@5 ~@3 [a2,f3,a3,c4]@2 [a2,f3,a3,c4]@2 ~ [f3,a3,c4] ~@2 [a#2,d4]@3 [a#2,f3,a#3,d4]@4 ~@17 d2 ~ d2 ~@2 d2@2 ~, d#4@15 ~@49, [g3,a#3]@12 ~@2 a#3@6 ~@11 [f3,a#3]@3 ~@30, ~@8 f3@14 ~@7 a2@2 ~@33]/2", // F A# Gm A#5
  AK: "[f3,a3,c4]@6 ~@2 [a3,c4]@8 ~@2 a3@3 ~ [a3,c4,f4]@7 ~@3, a2@15 ~ a2@11 ~@5, ~@8 f4@13 ~@11", // F Am F
  AL: "[g#3,c4]@8 ~@3 c4 ~@12 g#2@5 ~@3, d#4@13 ~ [c4,d#4]@13 ~@5, g#2@7 ~ g#2@15 ~@9, ~@10 g#3@3 g#3@12 ~@7", // G# Cm
  AM: "[g2,g3,b3,d4]@15 ~ [g3,b3,d4]@11 ~@5, ~@8 g2@7 ~", // G
  AN: "[c3,g3,a#3]@8 ~@6 [c4,d#4]@7 ~@3 [d3,f3,a#3,d4]@6 ~@2, [c4,d#4]@10 g3@11 ~@11, ~@4 c3@7 ~@5, ~@6 a#3@5 ~@5", // C7 Cm A# Cm
  AO: "d#3@8 d#3@3 ~@4 [f2,f3,a3,c4]@5 ~@4 [g2,g3,a#3,d4]@5 ~@3, [g3,a#3,d4,d#4]@3 ~@5", // F Gm D#maj7
  AP: "[c3,g3]@8 ~@3 a#3@8 ~@5 [d3,f3,a#3,d4]@6 ~@2, d#4@9 ~@7, [a#3,c4]@3 ~@5, ~@8 c3@13 ~@11, ~@9 g3@10 ~@13", // C5 A# A#sus2
  AQ: "[d#3,g3,a#3,d4,d#4]@13 ~@3 [f2,f3,a3,c4]@6 ~@2 [g2,g3,a#3,d4]@5 ~@3", // D#maj7 F Gm
  AR: "g3@4 ~@3 [c4,d#4]@3 ~@2 [d3,f3,a#3,d4]@3 ~, [a#3,c4,d#4]@5 g3@5 ~@6, ~@8 c3@13 ~@11, ~@3 a#3@2 ~@3", // Cm A# Cm7
  AS: "[d#3,g3]@8 ~@6 d4@5 ~@5 [f2,f3,a3,c4]@4 ~@4, [a#3,d4,d#4]@10 g3@11 ~@11, ~@4 d#3@5 ~@7, ~@11 a#3@8 ~@13", // D# F D#maj7
  AT: "[g3@14 ~@5 d4@8 ~@5 [c4,d#4]@13 ~@3 [g3,a#3,d4]@5 ~@3 [f#3,a3,d4]@5 ~@3, [a#3,d4]@16 g3@13 ~@2 g3@14 ~@19, g2@8 ~@6 g2@15 ~@3 c3@16 ~@16]/2", // Cm Gm D A#
  AU: "[g2,g3]@8 ~@5 d4@12 ~@7, [a#3,d4]@10 g3@17 ~@5, ~@8 g2@19 ~@5, ~@11 a#3@14 ~@7", // G A#
  AV: "[c3,g3,c4,d#4]@13 ~@3 [d3,g3,d4]@7 ~ [d3,a3,c4]@6 ~@2, ~@16 a#3@4 ~@3 f#3@5 ~@4", // Cm G5 D7
  AW: "g3@9 ~@3 d4@2 ~@2, [a#3,d4]@10 g3@5 ~, ~@9 g2@5 ~@2, ~@22 a#3@5 ~@5", // A#
  AX: "[[c3,g3]@10 ~@2 [g3,a#3,d4]@3 ~@4 [a2,f#3,a3,d4]@24 ~@5 d4@33 ~@15, [c4,d#4]@6 ~@6 a#2@5 ~@30 g2@34 ~@15]/3", // C5 Gm D Cm
})).s("gm_epiano2").gain(0.33)

// chords · epiano2 · soft notes
const epiano2_soft = note(`<
  A B A B C ~@9 D E@2 ~ F G ~@5 H A B A B I ~@5 J ~@5 K L ~ M ~@8 N O P ~ Q ~ R ~@7 S T ~@5 U@2 ~
>`.pickRestart({
  A: "~@7 f#4@20 ~@5", B: "~ f#4@5 ~@10", C: "~@3 a4@10 ~@3, ~@2 f#4@11 ~@3", D: "~@4 b3@3 ~@21 g#3@2 ~@2",
  E: "[~@20 f#3@2 ~@8 e4@14 g#3@4 ~@4 g#4@7 ~@5]/2", F: "~@10 c#4@15 ~@7", G: "g#3@24 ~@2 e4 ~@5, g#2@5 ~@3",
  H: "~ c#4 ~@30", I: "f#4@7 c#4@9", J: "~@10 c#4@5 ~, ~@8 f#3@7 ~", K: "~@13 a3@3 ~@6 c#4@6 ~@4, ~@9 a3@4 ~@3",
  L: "~@6 e4 ~", M: "~@11 c#4 ~@4", N: "~@12 g#3@3 ~@17", O: "~@5 a3@4 ~@7", P: "~@7 g#3@6 ~@3", Q: "~@13 g3@8 ~@11",
  R: "~@20 c4 ~@11", S: "~@7 d#4@3 ~@6", T: "~@17 a#3@9 ~@6", U: "[~@15 a#3@34 ~@15, ~@14 g3@35 ~@15]/2",
})).s("gm_epiano2").gain(0.16)

// chords · piano · A# Dsus2
const piano = note(`<
  ~@58
  [~@24 a2@2 ~ a2 ~ a2 ~@2]
  [[a#2,f3,a#3,d4]@3 ~ [a#2,f3,a#3,d4]@4 ~@15 [d2,e2] ~@2 d2 ~@2 d2@2 ~]
  ~@18
>`).s("gm_piano").gain(0.38)

// … 100 more lines

More by Mariah Carey