Strudelify

Alone in Love

Mariah Carey

KeyB♭ minorTempo67 bpm
0:00/0:00
// Alone in Love — Mariah Carey
// 67 bpm, 4/4, key A# minor. 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 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(67/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 · electric bass finger
const bass = note("<~@2 A ~@2 B ~@8 C@8 D@2 E F G H G I J K@8 L@8 M N@3 O@2 H G P Q@8 R@6 ~>".pickRestart({
  A: "bb2@13 ~@3", B: "ab2@7 ~",
  C: "[~@12 f2@2 ~ gb2@7 ~ db2 gb2@2 gb2@2 ~ gb2 ab2@4 ab2@4 ~ gb2 f2@3 ~ f2@2 ~ gb2@3 gb2@3 ~ gb2 ab2 a2@3 ~@2 a2@2 bb2@7 ~ f2 bb2@5 f2@2 gb2@4 ~ gb2 db2@2 ~ gb2@2 gb2@2 ~ gb2@2 ab2@3 ab2@4 ~ gb2 f2@3 ~ f2@2 ~ gb2@3 ~ gb2@3 gb2 ab2 a2@5 a2@2 gb2]/8",
  D: "[~@2 gb2@4 ~ gb2 f2@2 ~ f2@2 a2@2 bb2@3 bb2@4 ~ f2 bb2@6 ~@2]/2", E: "bb2@10 ~@2 bb2@3 ~",
  F: "ab2@10 ~@2 ab2@3 ~", G: "gb2@10 ~@2 gb2@3 ~", H: "f2@10 ~@2 f2@3 ~", I: "g2@10 ~@2 g2@3 ~", J: "gb2@3 ~ f2@3 ~",
  K: "[bb2@18 ~@10 f2@2 ~ gb2@7 ~ db2 gb2@2 gb2@2 ~ gb2 ab2@4 ab2@4 ~ gb2 f2@3 ~ f2@2 ~ gb2@3 gb2@3 ~ gb2 ab2 a2@3 ~@2 a2@2 bb2@7 ~ f2 bb2@5 f2@2 gb2@4 ~ gb2 db2@2 ~ gb2@2 gb2@2 ~ gb2@2 ab2@3 ab2@4 ~ gb2 f2@3 ~ f2@2 ~ gb2]/8",
  L: "[~@3 gb2@3 gb2 ab2 a2@5 a2@2 gb2@3 gb2@4 ~ gb2 f2@2 ~ f2@2 a2@2 bb2@3 bb2@4 ~ c3 d3@6 ~ eb2@4 ~@4 db2 eb2@2 eb2@2 ~ eb2@2 f2@3 f2@2 ~@3 eb2 f2@2 f2@3 ab2@2 bb2@4 ~@4 f2 bb2@3 ~ f2@2 ~ gb2@3 gb2@2 ~@3 db2 gb2@2 gb2@3 f2@2 eb2@4 ~@4 db2 eb2@2 eb2@2 ~ eb2@2 f2]/8",
  M: "~@2 f2@2 ~@3 f2 f2@2 f2@3 ab2@2 bb2",
  N: "[bb2@3 ~@4 f2 bb2@3 ~ ab2@2 ~ g2@4 ~ g2@3 ~ ab2@2 ~@3 a2@2 bb2@11 ~@2 bb2@3 ~]/3",
  O: "[ab2@10 ~@2 ab2@2 ~ gb2@11 ~@2 gb2@3 ~]/2", P: "g2@3 ~ eb3@3 ~",
  Q: "[gb2@6 ~@2 a2@2 ~ bb2@2 c3@2 bb2@3 bb2@2 ~@3 bb2@3 bb2@2 ~ bb2 f2 ab2@3 ab2@2 ~@3 ab2@3 ab2 ab2@2 g2@2 gb2@3 gb2@2 ~@3 gb2@3 gb2@2 ~@3 f2@3 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2 bb2@3 bb2@2 ~@3 bb2@3 bb2@2 ~ bb2 f2 ab2@3 ab2@2 ~@3 ab2@3 ab2 ab2@2 g2@2 gb2@3 gb2@2 ~@3 gb2@3 gb2@2 ~@3 f2]/8",
  R: "[~@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2 bb2@3 bb2@2 ~@3 bb2@3 bb2@2 ~ bb2 f2 ab2@3 ab2@2 ~@3 ab2@3 ab2 ab2@2 g2@2 gb2@3 gb2@2 ~@3 gb2@3 gb2@2 ~@3 f2@3 f2@2 f2@2 f2@2 f2@2 f2@2 f2@2 f2 bb2@3 bb2@2 ~@12]/6",
})).s("gm_electric_bass_finger").gain(0.25)

// bass · electric bass finger · soft notes
const bass_soft = note("<~@2 A B C ~ D E F G F H I J ~@57>".pickRestart({
  A: "~@7 bb2", B: "ab2@6 ~ ab2", C: "gb2@6 ~ gb2", D: "bb2@11 ~ bb2@4", E: "ab2@11 ~ ab2@4", F: "gb2@5 ~ gb2@2",
  G: "f2@5 ~ f2@2", H: "g2@11 ~ g2@3 ~", I: "gb2 f2", J: "bb2",
})).s("gm_electric_bass_finger").gain(0.08)

// chords · epiano1
const epiano1 = note(`<
  ~@6 A B C D E F G H I@8 J@2 K B C D E F L H I@8 M@2 N@5 O@3 P Q R S T U V@5 W@8 ~@2
>`.pickRestart({
  A: "[bb3,bb4,db5,f5]@3 ~", B: "[ab3,ab4,c5,f5]@15 ~", C: "[gb3,bb4,db5,f5]@15 ~",
  D: "[f4,bb4,c5]@8 [f4,a4,c5]@7 ~, f3@15 ~", E: "[gb3,gb4,bb4,db5]@15 ~", F: "[g3,g4,bb4,eb5]@15 ~",
  G: "[gb3,gb4,bb4,db5]@8 [f3,f4,a4,c5]@7 ~", H: "~ d5, [ab3,ab4,c5,eb5]",
  I: "[~@15 [gb3,bb4,db5,f5]@15 ~ [ab3,ab4,c5,eb5]@8 ~ [f3,f4,ab4,c5]@6 ~ [gb3,bb4,db5,f5]@6 ~@3 [a3,f4,a4,c5,e5]@5 ~@2 [bb3,ab4,c5,eb5]@7 ~@2 [f4,bb4,c5]@5 ~@2 [gb3,bb4,db5,f5]@12 ~@4 [ab4,c5,eb5]@6 ~@3 [f3,f4,ab4,c5]@6 ~ [gb3,bb4,db5,f5]@7 ~@2 [a3,gb4,a4,db5]@5 ~@2 [gb3,bb4,db5,f5], ~@95 ab3@8 ~@25]/8", // Gbmaj7 Ab Fm Gbmaj7 Fmaj7 Ab Fsus4 Gbmaj7 …
  J: "[~@8 [f3,f4,a4,c5]@5 ~@2 [bb3,ab4,c5,eb5]@9 [bb3,f4,ab4,bb4,d5]@7 ~, ~@15 ab3 ~@16]/2", // F Ab Bb7
  K: "[bb3,f4,bb4,db5]@15 ~, f5@3 ~", L: "[gb3,gb4,bb4,db5]@7 ~ [f3,f4,a4,c5]@7 ~",
  M: "[~@8 [f3,f4,a4,c5]@5 ~@2 [bb3,ab4,c5,eb5]@9 ~@4 [d4,f4,bb4,d5] ~@2 [eb4,gb4,bb4,eb5], ~@15 ab3 ~@16]/2", // F Ab Bb Ebm
  N: "[~@15 [f3,f4,ab4,c5]@2 ~@14 [bb3,f4,bb4,eb5]@2 ~@14 [bb3,f4,bb4,db5]@2 ~@11 [f3,f4,ab4,db5] ~@2 [eb4,f4,bb4,eb5]@2 ~@14 [f3,f4,ab4,c5], ~@63 [db5,d5,e5] ~@16]/5", // Fm Bbsus4 Bbm Db Ebsus2 Fm Dbm
  O: "[~@15 [bb3,f4,bb4,db5]@2 ~@14 [g3,g4,bb4,eb5]@3 ~@6 [ab3,ab4,c5,eb5]@2 ~@6]/3", P: "[bb3,f4,bb4,db5]@15 ~",
  Q: "[f3,f4,ab4,c5]@13 ~@3", R: "[gb3,gb4,bb4,db5]@11 ~@5", S: "bb4@3 ~ a4@3 ~, [f3,f4,c5]@7 ~",
  T: "[gb3,gb4,bb4]@7 ~, db5@3 ~", U: "[g3,g4,bb4,eb5]@4 [eb4,g4,bb4,eb5]@3 ~",
  V: "[[gb4,bb4,db5]@5 ~@3 [a3,f4,c5]@5 ~@2 [bb3,f4,bb4,db5]@13 ~@3 [f3,f4,ab4,c5]@13 ~@3 [gb3,gb4,bb4,db5]@9 ~@7 [f3,f4,bb4,c5]@8 ~ [f3,f4,a4,c5]@4 ~@3 [bb3,f4,bb4,db5], gb3@7 ~ a4@3 ~@69]/5", // Gb F Bbm Fm Gb Fsus4 F Bbm
  W: "[~@15 [f3,f4,ab4,c5]@13 ~@3 [gb3,gb4,bb4,db5]@9 ~@7 [f3,f4,bb4,c5]@8 ~ [f3,f4,a4,c5]@4 ~@3 [bb3,f4,bb4,db5]@5 ~@11 [f3,f4,ab4,c5]@13 ~@3 [gb3,gb4,bb4,db5]@9 ~@7 [f3,f4,bb4,c5]@8 ~ [f3,f4,a4,c5]@4 ~@3 [bb3,f4,bb4,db5]]/8", // Fm Gb Fsus4 F Bbm Fm Gb Fsus4 …
})).s("gm_epiano1").gain(0.19).pan(0.7)

// other · electric guitar muted
const electric_guitar_muted = note("<~@24 A B@2 C D E F G H ~@9 I J K L M N O P Q R@2 S T@3 ~@14>".pickRestart({
  A: "~@9 bb3 db4 f4 db4 ~ db4 f4, ~@13 bb3@2 ~", B: "~@9 bb3 db4 f4 db4 bb3 db4 f4", C: "~@10 f3 ~@2 f3 ~@2",
  D: "gb3 ~@2 gb3 ~@2 gb3 ~@2 gb3 ~ gb3!4 ~", E: "~@2 g3 ~@2 g3 ~@2 g3 ~@2 g3!4 ~",
  F: "gb3 ~@2 gb3 ~@2 gb3 ~ f3 ~ f3 ~ f3!3 ~", G: "ab3 ~@2 ab3 ~@2 ab3 ~ bb3 ~ bb3 ~@2 bb3 ~@2", H: "bb3 ~@15",
  I: "~@2 eb3 ~ eb3!2 ~@2 eb3 ~ eb3!2 ~ eb3!3", J: "f3!3 ~@2 f3 ~@2 f3 ~@2 f3 ~ f3!2 ~",
  K: "~@2 bb3 ~@2 bb3 ~@2 bb3!4 ~@2 bb3!2", L: "gb3 ~ gb3 ~@2 gb3 ~@2 gb3 ~ gb3!2 ~@2 gb3 ~",
  M: "eb3!3 ~@2 eb3 ~@2 eb3 ~@2 eb3 ~ eb3!2 f3", N: "f3!3 ~ f3 ~ f3!2 ~@2 f3 ~ f3!3 bb3",
  O: "bb3 ~ bb3 ~ bb3 ~ bb3!2 ~ bb3!6 g3", P: "~@2 g3 ~ g3 ~@11", Q: "~@10 bb3 ~ ab3 bb3 ~@2",
  R: "~@4 bb3 ~@2 bb3 ~@2 bb3 ~ ab3 bb3 ~@2", S: "~@2 bb3 ~@2 bb3 ~@4 eb4 ~@2 db4 ~@2",
  T: "~@2 bb3 ~@2 bb3 ~@2 bb3 ~ bb3 ~ ab3 bb3 ~@2",
})).s("gm_electric_guitar_muted").gain(0.1).pan(0.4)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@15 A B C D A E F G H I J K L M N O P@2 A B Q R A S T U V@2 ~@14 W X Y Z AA AB AC AD AA AE AF AG ~@2
>`.pickRestart({
  A: "~@2 [bb3,db4] ~@2 [bb3,db4] ~@2 [bb3,db4] ~@2 [bb3,db4] ~@2 [bb3,db4] ~", // Bbm
  B: "~@2 [c4,eb4] ~@2 [c4,eb4] ~@2 [ab3,c4] ~@2 [ab3,c4] ~@2 [ab3,c4] ~", // Cm Ab
  C: "~@2 [bb3,db4] ~@2 [bb3,db4] ~@2 [a3,c4] ~@2 [a3,c4] ~@2 [a3,c4] ~", // Bbm Am
  D: "~@2 [ab3,c4] ~@2 [ab3,c4] ~@4 [bb3,d4] ~@2 [bb3,d4] ~@2", // Ab Bb
  E: "~@2 [c4,eb4] ~@2 [c4,eb4] ~@4 [ab3,c4] ~@2 [ab3,c4] ~@2", // Cm Ab
  F: "~@2 [bb3,db4] ~@2 [bb3,db4] ~@2 [a3,db4] ~@2 [a3,db4] ~@2 [a3,db4] ~", // Bbm A
  G: "~@2 bb3 ~@2 [bb3,db4] ~@4 [a3,c4] ~@2 [a3,c4] ~@2", H: "ab3 c4@2 ~@4 f3 ab3@3 d4@4 f4", I: "[f4,bb4,db5]@15 ~",
  J: "ab4", K: "~ gb5, gb4", L: "f4@15 ~", M: "gb4", N: "g4@15 ~", O: "gb5 f5", P: "[ab5@8 bb5@13 ~@11]/2",
  Q: "~@2 [bb3,db4] ~@2 [bb3,db4] ~@4 [a3,c4] ~@2 [a3,c4] ~@2", // Bbm Am
  R: "~@2 [ab3,c4] ~@2 [ab3,c4] ~@2 [bb3,d4] ~@2 [bb3,d4] ~@2 [bb3,d4] ~", // Ab Bb
  S: "~@2 [c4,eb4] ~@2 [c4,eb4] ~@2 [ab3,c4] ~@2 [ab3,c4] ~@2 [ab3,c4] [bb3,db4]", // Cm Ab Bbm
  T: "~@2 [bb3,db4] ~@2 [bb3,db4] ~@2 [a3,db4] ~@2 [a3,db4] ~@2 a3 [bb3,db4]", // Bbm A Bbm
  U: "~@2 [bb3,db4] ~@2 [bb3,db4] ~@2 [a3,c4] ~@2 [a3,c4] ~@2 [a3,b3,c4] ~", // Bbm Am
  V: "[~@2 ab3 c4 ~@2 c4 eb4 f3 ~ bb3 d4@2 ab3 bb3@5 ~@13, ~@2 eb4 ~@13, ~@5 ab3@2 ~@25]/2",
  W: "~@2 [bb3,db4] ~@2 [bb3,db4] ~@2 [bb3,db4] ~@2 [bb3,db4] ~@2 ab3@2", // Bbm
  X: "[bb3,db4] ~ [bb3,db4] ~@2 [bb3,db4] ~@2 [bb3,db4] ~@2 [bb3,db4] ~@2 ab3@2", // Bbm
  Y: "[bb3,db4] ~ [bb3,db4] ~@2 [bb3,db4] ~@2 [bb3,db4] ~@2 [bb3,db4] ~ bb3 ab3 ~", // Bbm
  Z: "bb3 ~ [bb3,db4] ~@2 [bb3,db4] ~@2 [bb3,eb4] ~@2 [bb3,eb4] ~@2 [bb3,eb4] ~", // Bbm Eb5
  AA: "~@2 ab3@2 [bb3,db4] ~@2 [bb3,db4] ~ [bb3,db4] ab3@2 [bb3,db4] ~ [bb3,db4] ~", // Bbm
  AB: "[bb3,db4] ~ ab3@2 [bb3,db4] ~@2 [bb3,db4] ~ [bb3,db4] ab3 ~ [bb3,db4] ~ [bb3,db4] ~", // Bbm
  AC: "~@2 [bb3,db4] ~@2 [bb3,db4] ~@2 [bb3,db4] ~@2 [bb3,db4] ~@2 ab3 ~", // Bbm
  AD: "[bb3,db4] ~ [bb3,db4] ~@2 [bb3,db4] ~@2 [bb3,eb4] ~@2 [bb3,eb4] ~@2 [bb3,eb4] ~", // Bbm Eb5
  AE: "[bb3,db4] ~ ab3@2 [bb3,db4] ~@2 [bb3,db4] ~ [bb3,db4] ab3@2 [bb3,db4] ~ [bb3,db4] ~", // Bbm
  AF: "~@2 ab3 ~ [bb3,db4] ~@2 [bb3,db4] ~ [bb3,db4] ab3 ~ [bb3,db4] ~ [bb3,db4] ~", // Bbm
  AG: "~@2 ab3@2 [bb3,db4] ~ bb3 [bb3,db4] ~@2 f3@2 [bb3,db4]!3 ~", // Bbm
})).s("gm_electric_guitar_clean").gain(0.2).pan(0.7)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  ~@15 A B C ~ D E ~ F G ~@9 H ~@3 I ~@3 J ~@17 K L ~@3 M ~@2 N O ~@2
>`.pickRestart({
  A: "~@4 db4 ~@11", B: "bb3 ~@5 eb4 ~@9", C: "~@7 bb3 ~@8", D: "~@15 db4", E: "~@8 ab3 ~@7",
  F: "~@2 db4 ~ [bb3,db4] ~@6 a3 ~@4", G: "~@3 eb4@5 ~ bb3@2 ~@5", H: "~@7 bb3 ~@2 bb3 ~@5", I: "~@4 bb3 ~@11",
  J: "~@9 ab3 ~@2 f3 ~@3", K: "~@13 db4 ~@2", L: "db4 ~@15", M: "~@6 bb3 ~@9", N: "~ bb3 ~@14", O: "~@6 db4 ~@9",
})).s("gm_electric_guitar_clean").gain(0.11).pan(0.7)

// other · pad warm
const pad_warm = note("<~@2 A B C B ~@27 D E@7 ~@16 F@8 G@4 ~@2>".pickRestart({
  A: "bb4", B: "ab4", C: "gb4", D: "bb6", E: "[ab6@15 bb6@48 ab6@16 bb6@9 gb6@7 bb6@9 ~@8]/7",
  F: "[bb5@15 ab5@16 gb5@16 f5@16 bb5@16 ab5@16 gb5@16 f5@16 bb5]/8", G: "[~@15 ab5@16 gb5@16 f5@16 ~]/4",
})).s("gm_pad_warm").gain(0.09)

// chords · brass section
const brass_section = note("<~@41 A@2 ~@2 B ~@2 C@3 ~@5 D@2 ~@13>".pickRestart({
  A: "[~@15 [gb4,bb4,eb5,f5]@2 ~@15]/2", B: "~@15 [gb4,bb4,eb5,f5]",
  C: "[~@23 f4@4 ~@2 [ab4,c5,eb5] ~ [bb4,db5] ~@3 [bb4,db5,f5] ~@12, ~@15 [bb4,db5]@12 ~@4 f5@2 ~@15]/3", // Ab Bbm
  D: "[~@15 [bb4,db5,f5]@2 ~@15]/2", // Bbm
})).s("gm_brass_section").gain(0.18)

// chords · pad new age
const pad_new_age = note(`<
  A B C D E F ~@8 G@2 H I J K L M N O P Q R S R T U@3 K H I J K L M V W X Y Z AA AB AC AD AE AF AG AH AI AH AJ AK AL
  AM@2 AN AM AO@2 AP AQ AR AS AT@3
>`.pickRestart({
  A: "db7 ~ ab6 bb6 ab6 bb6 db7 f6 ab6 bb6 ab6 bb6 db7 f6 bb6 ab6",
  B: "db7 f6 ab6 bb6 ab6 bb6 db7 f6 ab6 bb6 ab6 bb6 db7 f6 bb6 ab6", C: "~@8 f6 ab6 bb6 ~@5",
  D: "~@4 db7 ~ f6 ~ bb6 ~@7", E: "~@6 db7 ~ f6 ~@7", F: "~@6 f5@2 eb5@5 ~@3", G: "[~@15 [bb6,db7]@2 ~@14 [ab6,c7]]/2",
  H: "~@8 f6 ~@3 ab6 ~@2 [bb6,db7]", I: "~@8 [a6,c7] ~@6 [ab6,c7]", J: "~@8 bb6 ~@3 ab6 ~@2 [bb6,db7]",
  K: "~@15 [ab6,c7]", L: "~@8 f6@2 ~@2 ab6 ~@2 [bb6,db7]", M: "~@8 [ab5,a6,c7] ~@3 gb5 ~@2 [f5,bb6,db7]",
  N: "~@8 [a5,a6,c7] ~ a4 [bb4,bb5] ~ c5 ~ [c5,c6,ab6,c7]", O: "~ [bb4,bb5], ~@8 [bb6,d7] ~@7", P: "bb6 ~@15",
  Q: "ab6 ~@15", R: "gb6 ~@15", S: "f6@15 ~", T: "g6@15 ~",
  U: "[gb6@6 ~@2 [a4,a5] ~ [a4,a5] bb5@2 [c5,c6] ~ [c5,c6]@9 [bb4,bb5]@23 ~, ~@11 bb4 ~@36]/3", // A C Bb
  V: "~@8 [a6,c7] ~ a4 [bb4,bb5] ~ [c5,c6] ~ [c5,c6,ab6,c7]", W: "~@8 [bb4,bb5,bb6,d7] ~@7", X: "~@2 [eb6,eb7] ~@12 f6",
  Y: "~@15 bb6", Z: "~@7 db6 ~ eb6 ~@6", AA: "~@8 f5 ab5 bb5 db6 ~ eb6 ~ f6",
  AB: "~@2 db6 ~ eb6 ~@2 db6 ~ eb6 ~@3 bb6 ~ ab6", AC: "~@2 db6 ~ eb6 ~@4 eb6 ~ db6 ~@4",
  AD: "~@2 db6 ~ eb6 ~@2 db6 ~ eb6 ~@6", AE: "~@2 db6 ~ eb6 ~@8 ab5 ~ bb5", AF: "bb3",
  AG: "~@8 gb5 ~@3 db6 ~@2 f6, ab3", AH: "gb3", AI: "f3", AJ: "g3", AK: "gb3 a3",
  AL: "db6@2 ~@2 eb6@4 ~@5 eb6@2 ~, ~@2 db6@6 db6@3 db6@4 ~, ~@9 eb6@4 ~@3",
  AM: "~@4 eb6@4 ~@3 db6@2 eb6 ~@2, ~@2 db6@6 db6@3 ~@5, ~@9 eb6@4 ~@3",
  AN: "~@11 eb6@3 ~@2, ~ db6@3 bb5@3 ~, ~@4 eb6@7 ~@5, ~@9 db6@5 ~@2",
  AO: "~@4 eb6@4 ~@5 eb6@2 ~, ~@2 db6@6 db6@3 db6@4 ~, ~@9 eb6@4 ~@3",
  AP: "~@8 bb5 ~@2 eb6@4 ~, ~@2 db6@7 [bb5,db6]@6 ~, ~@4 eb6@7 ~@5", // Bbm
  AQ: "~@2 db6@2 db6@3 ~@4 db6@2 ~ db6@2, ~@4 eb6@5 eb6@4 eb6@3, ~@7 db6@4 ~@5",
  AR: "~@13 eb6@2 ~, ~@2 db6@5 db6@4 db6@4 ~, ~@4 eb6@5 eb6@4 ~@3",
  AS: "~@11 db6@2 ~ db6@2, ~@2 db6@5 db6@4 ~@5, ~@4 eb6@5 eb6@4 eb6@3",
  AT: "[~@11 db6@2 ~@2 eb6@32 ~, ~@2 db6@5 db6@4 ~@2 bb5@32 ~@3, ~@4 eb6@5 eb6@5 db6@32 ~@2]/3",
})).s("gm_pad_new_age").gain(0.14).pan(0.7)

// chords · pad new age · soft notes
const pad_new_age_soft = note("<A ~ B C D ~ E F G H G I J K ~@8 L ~ E F G H G I J M ~@8 N ~@5 O P ~@23>".pickRestart({
  A: "~ f6 ~@14", B: "~@6 db7 ~@9", C: "~@7 ab6 ~@8", D: "~@9 ab6 bb6 ~@5", E: "bb4", F: "ab4", G: "gb4", H: "f4",
  I: "g4", J: "gb4 f4", K: "bb4@15 ~", L: "~@8 a4 ~ a5 ~@2 c6 ~@2", M: "bb4 ~", N: "~@8 [a4,a5] ~ a5 ~@5",
  O: "~@14 f6 ~", P: "~@7 db6 ~@8",
})).s("gm_pad_new_age").gain(0.07).pan(0.7)

// chords · pad sweep
const pad_sweep = note("<~ A@3 B C ~@25 D E ~@12 F@3 G ~@22>".pickRestart({
  A: "[~@8 [bb3,db4]@21 ~@3 ab3@15 ~, ~@8 f4@23 [c4,f4]@15 ~@2]/3", B: "[gb3,bb3,db4]@7 ~", C: "[ab3,c4,f4]",
  D: "~@7 d5, ~@3 f4, ~@13 [ab4,bb4]@3", // Absus2
  E: "~@7 d7@7 ~@2, f5@5 [ab6,bb6]@9 ~@2, ~ [ab5,bb5]@7 ~@8, ~ d6@3 ~@4, ~@2 f6@5 ~", // Absus2
  F: "[~@11 eb6@11 ~@7 bb5 ~ ab5 ~@16, ~@30 f5@5 ~@13]/3", G: "~@15 ab5",
})).s("gm_pad_sweep").gain(0.16)

// chords · percussive organ
const percussive_organ = note("<~@3 A B C ~@36 D E D F D F D G ~@6 H@2 I J K@8 L ~@2>".pickRestart({
  A: "~@2 [bb4,db5] ~@2 [bb4,db5] ~@4 [bb4,f5] ~ [bb4,eb5] [bb4,f5] ~@2", // Bbm Bb5 Eb5 Bb5
  B: "~@2 [bb4,db5] ~@2 [bb4,db5] ~@2 [bb4,db5] ~@5 [bb4,f5] [bb4,db5]", C: "[bb4,db5,eb5] [bb4,f5] [bb4,db5] ~@13",
  D: "~@2 [bb4,db5] ~ [bb4,eb5] ~@2 [bb4,db5] ~ [bb4,eb5] ~@6", // Bbm Eb5 Bbm Eb5
  E: "~@2 [bb4,db5] bb4 [bb4,eb5] ~@2 [bb4,db5] ~ [bb4,eb5] ~ [bb4,db5] ~@4", // Bbm Eb5 Bbm Eb5 Bbm
  F: "~@2 [bb4,db5] ~ [bb4,eb5] ~@2 [bb4,db5] ~ [bb4,eb5] ~ [bb4,db5] ~@4", G: "~@2 [bb4,db5] ~ [bb4,eb5] ~@11",
  H: "[~@15 [bb4,db6]@17]/2", I: "[ab4,f5]", J: "[gb4,gb5]",
  K: "[bb5@8 a5@7 [bb4,db6]@16 [ab4,f5]@16 [gb4,bb5]@16 f5@9 a5@7 [bb4,db6]@16 [ab4,f5]@16 [gb4,bb5]@16 f4, f4@15 ~@48 f4@16 ~@49]/8", // Bbm Db Gb Bbm Db Gb
  L: "~@8 a5@7 ~",
})).s("gm_percussive_organ").gain(0.2)

// chords · epiano2
const epiano2 = note("<~@15 A@2 B@2 C D A ~@11 A@2 B@2 C D A ~@31>".pickRestart({
  A: "~@2 [db5,f5] ~@2 [c5,eb5] ~@10", B: "[~@2 [db5,f5] ~@2 [c5,eb5] ~@2 [a3,f4,c5]@7 [bb3,ab4,c5]@8 ~@9]/2",
  C: "~@2 [db5,f5] ~@2 [c5,eb5] ~@5 [bb4,db5] ~@2 [bb4,db5] ~", D: "~@2 [db5,f5] ~@2 [c5,eb5] ~@7 bb4 ~@2",
})).s("gm_epiano2").gain(0.23).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@14 A B@7 C D E F E F E F E F G H@8 I B@3 D B@3 J ~ E@5 K B@3 C B@3 L B@3 M N ~
>`.pickRestart({
  A: "~@10 x ~@3 x!2", B: "~@2 x ~@4 x!2 ~ x ~@2 x!3", C: "~@2 x ~@4 x!2 ~ x ~@3 x!2", D: "~@2 x ~@4 x!2 ~@5 x!2",
  E: "x ~@6 x!2 ~@7", F: "x ~@6 x!2 ~@5 x!2", G: "x ~@14 x", H: "~@2 x ~@4 x!2 ~ x ~@4 x", I: "~@2 x ~@4 x ~@5 x ~ x",
  J: "~@2 x ~@4 x!2 ~@7", K: "x ~@6 x!2 ~@6 x", L: "~ x ~@6", M: "~@2 x ~@12 x", N: "~@2 x ~@4 x ~@8",
})).gain(0.39)

// drums · snare
const snare = s("sd").struct("<~@14 A B@7 C D E@8 F B@8 G B@3 H B@3 I ~@6 E B@3 C B@3 J B@3 K L ~>".pickRestart({
  A: "~@12 x!2 ~@2", B: "~ x ~ x", C: "~@4 x ~@7 x!2 ~@2", D: "~@4 x ~@4 x ~@2 x ~@3", E: "~@3 x",
  F: "~@9 x ~@2 x!2 ~@2", G: "~@2 x ~ x ~@2 x", H: "~@4 x ~@4 x ~@2 x!2 ~@2", I: "~@4 x ~@8 x ~ x",
  J: "~@4 x ~@2 x!2 ~@2 x ~@3 x", K: "~@4 x ~@3 x ~@2 x ~@4", L: "~ x ~@2",
})).gain(0.44)

// drums · low tom
const low_tom = s("lt").struct("<~@2 A@3 B@2 A@7 ~@18 C ~@35 C ~@2>".pickRestart({
  A: "x ~@6 x!2 ~@7", B: "x ~@6 x!2 ~@6 x", C: "~@7 x",
})).gain(0.35)

// drums · hihat
// … 34 more lines

More by Mariah Carey