Strudelify
Save The Best For Last cover art

The Comfort Zone

Save The Best For Last

Vanessa Williams

KeyE♭ majorTempo96 bpm
0:00/0:00
// Save The Best For Last — Vanessa Williams
// 96 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 87 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(96/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 · piano · "A.PIANO 2"
const piano = note(`<
  A@5 B@2 C D@3 E F@4 G H I@2 J K L@2 M@4 N@2 O P Q@2 R S T U V W X Y Z AA AB@2 AC@3 AD@2 AE@2 AF AG AH@2 AI@4 AJ AK
  AL@2 AM AN AO AP AQ AR@5 AS@3 AT@3 AU@6
>`.pickRestart({
  A: "[~@32 [d4,f4]@15 ~ eb4@4 ~@74 c5@2 ~@28 [ab3,eb4]@4, ~@16 eb4@16 ~@16 [c4,c5]@15 ~ [bb3,eb4,g4]@28 bb5@28 bb3@4 ab3@12 ab3@12 f3@12, ~@16 g4@8 [g4,eb5]@8 ~@16 ab4@8 ab4@7 ~@21 eb5@12 ~@4 eb3@8 [c4,eb4]@16 bb4@4 ~@4 f3@8 eb4@12 d4@8, ~@20 f4@12 ~@20 eb4@11 ~@25 ab5@8 ~@8 ab3@4 bb3@8 eb3@12 c4@12 c4@20, ~@5 bb4@2 [bb4,d5]@5 ~@3 bb4@5 bb4@4 [ab2,c5,eb5]@8 [bb2,bb4]@8]/5", // Dm Ab5 C Eb Cm Bb Ab Bb
  B: "[~@8 ab3@3 ~ [c3,ab3,eb4]@12 [eb2,bb2,g3,bb3,eb4]@39 ~, [db3,eb4,bb4]@3 ~@13]/2", // Ab Eb Eb7
  C: "[bb3,d4,f4,bb4] [ab3,c4,eb4,bb4]", // Bb Ab
  D: "[bb3@4 ~@7 eb3 ~@3 g3 ~@2 c4@2 ~@3 g3, [g3,bb4]@28 g4@21 d4@7 bb3@4 g4@28 eb5@8, eb4@5 eb4@3 bb3@2 bb3@2 bb3 f3@3 ~ g3@4 bb4@3, ~ bb3 [ab2,c4,eb4] [bb2,c4] [c3,eb4]@2, ~@6 ab4@2 ~ eb3@2 f4@5 c4@2 ~@2 c4@4]/3", // Gm Ab Bbsus2 Cm
  E: "~@12 f3@4 ~@11 [eb3,ab4]@5, [bb2,bb4,d5] ab2, f4@8 f4@7 ~ ab4@8 eb4@8, ~ f3@2 c5@5, ~@16 eb4@4 eb3@7 ~@5", // Ab5 Bb
  F: "[~@8 bb3@8 ~@28 ab3@4 ~@11 eb4@4 ~@9 eb3@3 ~@8 [c4,f4]@4 ~@4 bb3@4 bb3@5 ~@4 bb3@4 bb3@7 ~ bb3@3 ~@5 [eb3,eb4]@4, [g2,bb4]@27 g4@9 c4@12 ~@3 f3@12 eb2@16 bb3@12 ~@4 eb4@11 ~@2 [ab3,c4,eb4]@12 [ab3,bb3]@8, eb4@20 eb4@4 ab4@7 eb4@9 ab4@8 ~@8 bb3@7 eb4@4 bb2@12 eb4@8 [eb4,g4]@8 g4@23 ~@2 eb4@4 ~@4, ~@4 eb3@27 c4@4 eb3@9 f4@20 bb3@11 eb3@12 ~@4 eb3@8 ~ eb3@15 ~ eb3@6 f4@4 ~@2, ~@16 bb3@16 ab2@16 [bb2,c4,d4]@16 g3@24 ~@7 ab2@32 ~]/4", // F5 Eb Gm Ab Absus2 Eb Bb
  G: "~@8 g3@4 [eb3,g3]@7 ~ g3 ~@6 [eb3,eb4]@4 ~, g2@31 ~, [bb3,eb4]@11 ~ bb3@19 ~, ~@4 eb3@8 eb4@11 ~ d4@5 ~@3, ~@20 eb3@7 ~@5", // Eb Eb5
  H: "~@12 f3@3 ~@5 f3@4 ~@3 [bb2,bb3]@5, [f2,c4,eb4]@15 bb3@12 ~@5, ab3!2 ~ f3, ~@4 c3@12 bb2@11 ~@5, ~@3 d4@5", // Bb F7
  I: "[~@11 [eb3,g3]@4 ~ g3@3 ~@8 eb3@3 ~@9 db5@4 ~ db5@8 db5@4 ~@3 f3@4 ~, eb2@31 ~@4 f3@16 ~ f3@7 ~@5, bb3@15 eb4@4 [ab3,f4]@11 ~ db4@12 ~ [db4,bb5]@20, g3@8 f3@12 ~@3 [bb3,g4]@7 ~ bb4@32 ~, f3@3 bb2@12 eb3@12 ~@4 bb2@24 ~ [bb2,db5]@8]/2", // Eb Db Gb Eb Bbm
  J: "c4 ~@6 ab3, c3@16 [c3,eb4,c5]@15 ~, ab4@12 ab3@7 ab3@8 g5@4 ~, eb4@8 eb4@8 ~@8 f5@7 ~, ~ [ab3,c4]@2 [c4,ab4]@5", // Cm Ab Fm
  K: "~ ab4 [eb4,ab4] [ab3,eb4,ab4] ~@3 [ab3,eb4], [eb5,f5,ab5]@16 ~@3 ab3@8 ~@5, ~@3 ab3@8 ~@5 [c3,ab4]@16, ~@8 f4@7 ~ eb4@12 ~@4, ~@3 bb3", // Ab5 Fm7 Fm
  L: "[~@2 bb3@2 [eb4,g4] ~@3 [bb3,d4,f4,bb4]@4 [ab3,c4,eb4,ab4,c5]@4, [bb2,d4]@4 ~@3 d5@5 ~@4, bb3@2 ~@3 [f4,bb4]@3 ~@8, ~@3 f3@12 ~@9 [g4,eb5]@9 ~@31]/2", // Eb Bb Ab Bb Bb5 Cm
  M: "[bb3@16 ~@28 eb3@4 ~@20 bb4@7 ~ g4@7 f4@4 ~ eb4@3 ~ g3@3 ~@13 f3@2 ~@10 f3@2 g3@2 [eb3,ab3]@4, [g3,f4,bb4]@28 g4@20 ~@12 c5@8 ~@36 bb3@7 ~@5 eb3@8 ~@4, g4@24 ab4@8 ~@4 eb3@8 ~@8 f3@12 ~@4 g3@15 g3@8 ~@9 f3@8 c4@16 ~@4, eb4@20 eb4@12 bb3@8 bb3@8 c4@8 c4@8 ~@11 f4@2 ~@14 d4@19 ~@18, ~@16 bb3@16 [ab2,c4,eb4]@16 [bb2,d4,f4]@16 c3@28 ~@4 bb2@15 ~ ab2@11 ~@5]/4", // Ab5 Gm7 Ab Bb
  N: "[~@3 bb3!3 ~ eb3 ~ eb3@2 [eb3,f4] ~@3 d4, g2@31 ~ [ab2,c4,eb4]@16 c4@8 c4@8, bb3@12 ~@8 eb4@11 ~@17 d4@11 ~@5, ~@4 eb3@12 eb3@12 g4@21 ~@3 f3@12, ~@24 [bb3,ab4]@7 ~@17 [bb2,f4]@16]/2", // Ebsus2 Ab Bb7 Bb5
  O: "~@4 c4@2 eb4@6 ~@3 c5, ab2@31 ~, bb4@3 [eb3,eb4], eb4@12 c4@19 ~, c4 eb3@2 ab3@4 [ab3,bb4]", // Eb Absus2
  P: "~@8 c4@3 ~@19 c5@2, bb4@15 ~, bb2@5 f3@3, ~@3 ab3@8 [ab3,eb4]@13 ~@4 ab3@4, ~@12 c4@11 ~ d4@8", // Ab5
  Q: "[~@8 eb4@3 ~ [c3,ab3,c4,eb4]@12 [eb2,f3,g3,bb3,eb4]@32 ~@8, [db3,bb4]@3 ~@13, ~ ab3@2 ~@13]/2", // Ab Eb Gb
  R: "~@12 [d4,f4]@4 ~@12 eb4@3 ~, bb3@16 [ab3,c4]@15 ~, d4@3 ~@2 eb4@2 ~, bb4@8 bb4@8 bb4@8 bb4@7 ~, ~ f4@2 ~@5", // Dm Ab
  S: "~@3 eb4@3 ~ bb3, g3, bb3@7 ~, bb4 bb4@3, ~ eb4@2 ~@3 eb4@2",
  T: "~@3 [ab3,c4] ~@3 f3, [ab2,g4] bb2, bb3@8 bb3@8 ~ [d4,f4]@15, ~@4 eb3@12 ~ c4@7 c4@8, ~@5 f3@2 ~", // Ab Abmaj7 Dm
  U: "~ g3@2 g3 ~@3 [g3,f4,d5], [c3,c4,eb4] [c3,g4,eb5], ~@5 [g3,f4,d5]@2 ~, ~@3 [eb4,c5]", // G7 Cm G7 Cm
  V: "~@3 bb3 ~@3 eb4, [bb2,f4,bb4] [ab2,ab4], d4@8 d4@8 eb4@11 ab3@5, ~ f3@3 c4@2 c4@2, ~@5 eb3@3", // Bb5 Ab
  W: "~@2 bb3 ~@4 [eb3,bb3], [g2,g4], eb4@3 eb4@5, bb3@2 ~ bb3@3 g3@2, ~ eb3@2 g3@2 eb3@2 ~", // Eb5 G
  X: "~@11 eb3@4 ~@13 d4@4, [ab2,bb3,c4,eb4] [bb2,f4], ab3@2 ab3@2 d4@3 ~, ~@4 eb3@7 ~@5 bb3@8 bb3@8, ~@20 f3@7 f3@4 ~", // Ab Bb5
  Y: "~@7 bb3, eb3@4 g3 eb3 g3@2, [bb3,eb4]@16 bb3@11 eb3@4 ~, ~ g3 [eb2,eb4]@2, ~@3 bb2@5", // Eb5 Eb
  Z: "~@6 c4@4 ~@5 f4, g4@7 [eb3,eb4], eb4@5 eb3 ab2@2, ab2@5 c4@3, c4 eb3@2 bb3@5", // Eb
  AA: "~@2 g3 eb3@2 ~@2 [eb3,eb4], g2, eb4@3 [g3,d4], ~@3 eb3@9 bb3@20, ~@3 g3@2 eb3@2 ~", // Eb G5
  AB: "[~@8 ab3@4 [f3,ab3,eb4]@4 ~@12 bb2@4 ~@12 eb3@3 ~ bb4@4 bb4@4 [bb3,ab4]@2 ~@2 [bb3,eb5]@4, [f2,c4]@4 bb2@3 g3@3 g3@4 ~@2, eb4@12 ~@4 d4@16 ~@4 eb3@7 ~@5 eb3@2 ~@2 eb3@12, ab3@8 ~@8 bb3@8 bb3@19 ~ bb3@11 ~@3 g4@6, ~ f3@2 ~@2 f3@3 eb2@4 ~@4]/2", // Fm7 Bb7 Eb5 F5
  AC: "[~@7 bb3 ~ ab3@2 ~@4 ab3 ~@3 ab3 ~@3 ab3, bb4@6 c5 eb5@5 eb5 ab3 eb5@2 ~ ab3@2 ~ c4@2 c4@2, bb2@3 f4@5 ~@3 c5@4 c5@5 ~@4, f4@2 db4@2 eb5 f3@3 ~@3 ab3@2 bb4@3 f4@2 f4@2 ~ ab3@2 ~, db4 f3@2 bb3 bb2@4 c3@4 c3@4 [db3,ab4]@4 [c3,eb4,ab4]@4]/3", // Db5 Ab
  AD: "[[bb2,c4,d4,f4]@4 ~@2 [g4,eb5] [f4,bb4,d5]@5 [eb4,ab4,c5]@4, ~@16 eb4@13 ~@35, ~@2 g4 ~@5, ~@5 [f4,bb4]@2 ~@9]/2", // Bb Cm Bb Ab Bb5
  AE: "[[eb4,g4,bb4]@16 bb3@4 ~@4 [bb3,ab4]@4 g4@4 ~@12 c4@4 ~@8 bb3@2 ~@2 [f3,c4]@3 ~, ~@16 g2@12 bb3@11 ~ bb3@7 ~ bb3@7 ~@9, ~@20 eb4@8 eb3@7 ~ eb3@7 ~ eb3@8 f3@7 ~@5, ~@32 [ab2,eb4]@16 [bb2,f4]@15 ~, ~@32 c4@11 ~@5 [c4,d4]@11 ~@5]/2", // Eb Bb7 F5 Ab5 Bb5 Csus2
  AF: "~@4 g3@8 g3@3 ~ c4@3 ~@9 [g3,c4]@3 ~, [c3,g4]@20 g4@11 ~, [c4,eb4]@15 ~ c5@15 ~, ~@16 g3@8 eb4@7 ~, ~@16 eb4@5 c4@7 ~@4", // C5 Cm
  AG: "~ f3@2 f3 ~@3 [eb3,bb3], [bb2,c4,d4,f4] [ab2,c4], ~@16 [bb3,eb4]@11 eb4@5, ~@2 ab3!2, ~@5 eb3@2 ~", // Eb5 Bb Ab Eb5
  AH: "[~@3 eb3 ~@2 bb3 eb3 ~@3 [f3,c4] ~@2 bb3@2, g2@7 bb3@3 bb3@2 [bb2,d4,f4]@4, eb4@4 bb3 eb4@3 eb4@4 ~ f3@3, bb3@4 eb3@2 ab4@2 c4@3 ~ bb3@2 ~@2, g3 eb3 g3@5 g4@5 ~@4]/2", // F5 Bb
  AI: "[g3@2 ~@2 bb3@2 eb4@2 g4@7 ~@5 bb5@4 [eb5,eb6]@3 ~@5 [bb3,c4,d4]@12 d4@4 eb4@8 eb4@3 ~ eb4@4 bb3@8 ~@4 eb4@4 ~@8 [bb4,ab5]@4 eb4@3 ~ c4@4 ~@4 [c5,ab5]@4 eb4 ~@3 d4@8 [d4,g4,eb5]@4 [ab4,f5]@4, [eb2,eb3]@15 ~@5 bb4@11 ~@17 [c5,c6]@11 ~ bb4@20 bb4@8 ~@4 [bb4,g5]@17 ~@19, [eb4,g4]@8 ~@8 [g4,g5]@16 f4@15 ~ c4@15 ~ eb4@8 bb3@12 [bb3,eb5]@9 ~@7 c4@8 [ab4,f5]@16 f4@2 ~@2, bb3@4 ~@4 [bb3,eb4]@16 ~@3 [d5,d6]@21 ~@12 bb5@33 ~@35, ~@2 g3@22 ~@40 g3@16 [g3,eb4]@13 ~@3 [ab3,eb4]@12 ~@4 [bb3,f4]@13 ~@3]/4", // Eb Bb Bb7 Fm Ebmaj7 Db Eb C …
  AJ: "~@12 [eb4,g4,eb5]@3 ~ eb4@4 ~@7 eb4@5, [bb3,c4,eb4]@7 ~ [bb3,c4,g4,g5]@6 ~@2, ~@4 [bb4,g5]@11 ~@5 [eb4,bb4,bb5]@8 ~@4, ~@3 [eb5,eb6]", // Eb Cm7 C7 Eb Eb5 Eb
  AK: "d4@12 d4@3 ~ eb4@4 ~@8 [eb4,bb4,bb5]@4, [bb3,f5,f6]@15 ~ [ab3,c4,eb5,eb6]@16, ~@5 eb4@2 ~, ~@3 [d5,d6]", // Eb5 Bb5 Ab D
  AL: "[~@28 eb4@3 ~@13 eb4@4 d4@3 ~ d4@2 ~@10, bb5@7 d5@5 ~@4, bb4@16 g4@4 [c4,bb4]@11 ~ eb4@8 c5@8 f4@15 ~, ~@12 [g3,bb3]@19 ~ [ab3,c4]@16 bb3@8 ~@8, ~@12 eb4@12 [g4,eb5]@7 ~@5 bb4@8 bb4@20]/2", // C7 Gm Ab Cm
  AM: "g3@7 ~ g3@2 ~@4 eb4@2, eb4@7 ~, bb3@5 ab3@3, ~@3 bb3",
  AN: "~@16 ab3@7 ~ ab3@4 [ab3,db4]@4, db4@12 db4@15 ~@5, ab3@7 ~ ab3@8 ~@16, ~ f3@5 ~@2", // Db5
  AO: "~@2 c4 ab3@2 ~@2 [ab3,eb4], c3@20 ab3@7 ~@5, eb4@12 ab4@19 ~, c4@8 ~@4 eb4@15 ~@5, ~@4 ab3@8 c4@12 c4@7 ~", // Ab5
  AP: "~@3 [ab3,ab4] c4 ab3 ~ [ab3,eb4,ab4], [f4,ab4]@6 f4@7 ~@3, [db3,db4]@8 db4@8 [eb4,ab4]@11 ~@5, ~@4 ab3@8 ~@4 c3@8 c4@7 ~", // Ab Ab5 Fm Db Ab5
  AQ: "c4@4 f3@4 ~@20 f5@3 ~, f4, bb2@2 d4 [bb3,bb4], d4@12 c4@19 ~, ~@2 bb3@3 f3@3", // Bb
  AR: "[bb4@15 ~@17 f4@4 ~@8 d4@3 ~ eb4@4 eb4@4 ~@4 c4@4 eb4@8 eb4@8 ~@16 bb3@4 bb3@4 ~@4 eb3@4 ~@12 f3@3 ~@5 g3@7 ~@17 bb4@4, bb5 ~@7 eb4@8 d4@6 c5@10 ~@14 g4@10 ~@2 f3@4 eb4@10 c3@8, ~@16 g4@8 [g4,eb5]@8 bb4@8 bb4@7 ~ ab4@8 [eb4,ab4]@8 ~@16 bb3@8 [bb3,ab4]@7 ~@5 eb3@8 f4@19 ~ c4@11 bb4@8 eb5 c4@4 eb4@3 c4@4 ~, ~@20 [f4,bb4]@11 ~@5 f4@12 c4@12 ~@4 [bb3,f4,g4]@16 g2@15 ~ [ab2,c4,eb4]@16 [bb2,c4]@15 ~ c3@11 g3@20 ~, ~@28 d5@19 ~@13 bb4@20 ~@4 eb4@11 ~@9 [bb3,ab4]@8 d4@8 d4@7 ~ bb3@32]/5", // Cm Ab5 Bb7 Bb5 Gm7 Ab Bbsus2 Bb7
  AS: "[~@8 bb3@3 ~ eb5@4 ~@11 ab3@4 ~ eb4@8 ~@20 g3@3 ~ bb3@8 bb3@7 ~@13 [bb2,eb4]@4, f5@15 ~@9 ab4@8 [g3,g4]@20 eb4@4 ab4@4 g4@19 ~@5 bb2@8 ~@4, ~@4 f4@11 ~@5 eb4@12 f4@31 ~@17 bb3@8 bb3@7 ~, ~@8 d5@7 ~ c5@16 ~@8 eb4@8 bb3@15 ~ [ab3,c4,eb4]@15 ~ [c4,d4,f4]@16, ~@11 bb3@4 ~ ab3@11 bb4@36 ~@33]/3", // Eb5 G Ab Dm7
  AT: "[bb3@11 ~@21 [bb3,bb4]@11 ~ bb4@4 eb4@4 ~@8 ab3@3 ~ eb4@8 ~@4 g3@4 ~@12 g4@4, [eb3,g3]@24 [g4,eb5]@4 d5@20 c5@15 ~@33, eb4@16 eb4@15 ~@21 eb4@11 ~ g3@12 ~@4 bb3@15 ~, ~@11 bb3@20 ~@12 bb3@4 ~ ab3@11 ~ bb4@20 ~@8 ab4@7 ~, ~@16 g4@4 [f4,bb4]@11 ~ f4@16 ab4@8 ab4@7 ~@9 eb4@8 ~@4 eb4@11 ~]/3", // Bb Eb Cm Bb5
  AU: "[~@12 ab3@4 ~ bb2@29 ~@32 c5@2 ~@8 ab3@4 ~@18 c5 ~@9 eb4@3 ~ [c3,ab3,eb4]@12 [eb2,f3,g3,bb3,eb4]@35 ~@21, [ab2,c4,eb4]@16 ~@32 ab2@31 ~ [bb2,c4,eb4]@12 [bb2,c4,eb4]@20 [db3,f4,bb4]@11 ~@69, bb3@4 bb3@4 [bb3,c4,d4,f4]@15 ~ bb4@12 [bb3,c4]@4 ab3@4 ~@2 ab3@6 [ab3,d4]@4 eb4@4 ~@36, ~@4 eb3@12 ~@37 eb3@7 eb4@20 bb4@32 ~@80, ~@56 bb3@4 c4@8 eb3@8 [eb3,bb4]@4 ~@4 f3@16 f3@8 f3@4 ~@3 ab3@8 ~@69]/6", // Ab Eb Ab Cm7 Bbm Bb Bbsus2 Abdim …
})).s("gm_piano").gain(0.33)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~@2 A B C D@3 ~@6 E@2 F G H I J K@2 ~ L@3 M N O P Q R@2 ~@2 O S T N O U V W X Y Z AA AB AC ~ AD O AE AF AG O AH AI AJ
  AK AL AM AN AO AP AQ AR AS@2 AT ~ AD O AU AV AW@2 H AX AY AZ@6
>`.pickRestart({
  A: "~@14 c2 bb1", B: "ab1@8 ab2@3 g2@3 eb2@2", C: "f2@8 bb1@16 ~@3 bb1@2 ~ c2@2",
  D: "[db2@12 c2@8 bb1@2 ab1@2 eb1@41 ~@31]/3", E: "[~@31 ab2@33]/2", F: "g2", G: "f2 bb2", H: "eb2", I: "bb2", J: "c3",
  K: "[db1@16 c2@15 bb1@33]/2", L: "[~@11 bb1@2 ab1@2 g1@16 ab1@17 bb1@15 c2@32 ~]/3", M: "bb1@15 ab1@16 ~", N: "g1",
  O: "ab1 bb1", P: "ab1@13 ~ ab1@2", Q: "bb1@27 c2@4 ~", R: "[db2@11 ~ c2@7 bb1@2 ~ ab1@2 eb1@40]/2",
  S: "c2@7 ~ c2@2 eb2@2 f2@2 eb2@2", T: "bb1@5 ~ bb1@2 ab1@5 ~ ab1@2", U: "eb1@13 ~ g1@2", V: "ab1@6 ~ ab1",
  W: "g1@24 ~@3 g1@4 ~", X: "f1 bb1", Y: "eb1@16 bb1@3 ~ eb2@3 ~ f2@6 eb2@2", Z: "bb1@19 ~ bb1@7 ~ bb1@4",
  AA: "c2@19 ~ c2@6 ~@2 c2@4", AB: "db2 c2", AC: "bb1", AD: "~ g1", AE: "c2@25 ~@3 c2@4", AF: "bb1 ab1",
  AG: "g1@16 bb1@8 c2@3 f1@2 ~ g1@2", AH: "eb1@12 g2@7 eb2@4 ~ c2@4 bb1@4", AI: "ab1@11 ~ ab1@2 ~@2 ab1@9 ~@3 ab1@4",
  AJ: "g1@17 ~@3 g1@5 ~@3 g1@4", AK: "ab1@9 ~@3 ab1@4 bb1@8 ~@4 bb1@4", AL: "c2@9 ~@3 c2@7 ~ g1@4 c2@3 bb1@5",
  AM: "ab1@15 ~@5 ab1@3 ~ ab1@3 ~@5", AN: "g1@5 c2 c1@2", AO: "ab1@15 ~ bb1@16", AP: "eb1@19 f1@4 ~ g1@4 c2@4",
  AQ: "bb1@11 c2@2 ~ eb2 ~ g2@7 ~ f2@4 bb1@4, ~@13 db2@2 f2@2 ~@15", AR: "c2@3 c1@3 bb1 c2",
  AS: "[db2@15 ~ c2@15 bb1@26 ~@3 g1@2 f1@2]/2", AT: "bb0", AU: "c2", AV: "bb2@16 ab2@15 ~",
  AW: "[g2@31 ab2@17 bb2@16]/2", AX: "bb3@15 ab3@16 ~", AY: "g3",
  AZ: "[ab1@16 bb1@32 ab1@32 bb1@19 eb2 f2@7 eb2@2 ~ c2@2 db2@12 c2@8 bb1@4 eb1@29 ~@27]/6",
})).s("gm_fretless_bass").gain(0.38)

// other · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  A@4 B C@3 D@3 E F@2 G@2 H I J K@2 L M@2 N@4 O@2 P@2 Q@2 R S ~ T U ~@3 V W X@2 Y@3 Z@2 AA@3 ~@3 AB@5 ~ AC@2 AD AE ~@2
  AF AG@5 AH@3 AI@6 AJ@3
>`.pickRestart({
  A: "[~@16 g4@4 bb4@4 eb5@4 d5@20 c5@4 eb4@4 ab4@4 bb4@19 ~ bb4@4 eb5@4 ab5@4 ~@16 eb4@16 bb4@2 c5@2, ~@46 bb5@13 ~@5]/4",
  B: "~@3 eb4@3 d4 eb4, bb4@3 ~", C: "[bb4@12 eb4@9 ~@4 eb4@39 bb4@15 ~ bb4@14 ~@2]/3",
  D: "[bb4@16 bb3@3 ~ eb4@4 ab4@4 g4@19 ~ f4@12 g4@24 bb4@4 eb5@8]/3", E: "d5@11 ~ c5@15 ab4@4 ~",
  F: "[bb4@16 bb3@4 eb4@3 ~ ab4@4 g4@12 ab4@4 f4@12 d4@3 eb4@3 ~@2]/2",
  G: "[eb4@13 ~@3 eb4@3 f4@4 g4@5 ~@3 g4@12 eb4@10 ~@3 eb4@2 f4@2 eb4@3 ~]/2", H: "eb4@23 ~ d4@3 eb4@3 ~@2",
  I: "eb4@3 d4@5", J: "bb3@16 eb4@3 f4@4 g4@8 ~", K: "[~@8 db5@3 ~ bb5@36 ~@8 f5@4 g5@4, bb4@13 ~@51]/2",
  L: "ab5 g5 f5 eb5@5", M: "[~@4 g4 bb4 eb5 d5@5 c5@4, f5 ~]/2",
  N: "[bb4@16 bb3@4 eb4@4 ab4@4 g4@20 f4@12 c5@8 bb4@8 g4@7 ~ f4@3 eb4@4 ~ d4@12 bb3@4 c4@12 f3 ~ g3@2 ab3@4, ~@76 f4 ~@51]/4",
  O: "[bb3@20 eb4@4 ab4@4 ~ g4@19 f4@16]/2", P: "[bb4@12 eb4@16 bb4@2 ~ bb4@12 ~ eb4@12 d4@5 ~ c5@2, ~@15 c5 ~@16]/2",
  Q: "[bb4@11 ~ eb4@8 ~@4 eb4@40]/2", R: "bb4 f4 bb4 f4 bb4 eb4 bb4 eb4", S: "bb4 eb4 bb4 eb4@5", T: "~@4 eb5 d5 c5 d5",
  U: "bb4", V: "g4@6 c4@8 eb4 f4", W: "eb4@19 ~@5 d4@4 eb4@3 ~",
  X: "[eb4@16 ~@9 bb3@3 g3@12 ~@8 bb4@3 ~ bb4@4 ab4@2 g4@2 eb5@4]/2",
  Y: "[bb4@16 eb5@8 c5@4 eb5@16 c5@4 eb5@4 bb4@4 eb5@4 c5@29 ~@7]/3", Z: "[~@4 g4 bb4 eb5 d5@5 c5@4]/2",
  AA: "[bb4@4 bb3 eb4 ab4 g4@5 f4@3 g4@9]/3",
  AB: "[~@16 g4@4 bb4@4 eb5@4 d5@20 c5@11 ~ bb4@19 bb4@4 ~ eb5@4 ab5@4 g5@12 ab5@4 f5@12 eb5@4 f5@8 g5@8 eb5@17 ~@3]/5",
  AC: "[~@24 eb5@4 d5@7 ~ bb4@4 c5@4 bb4@8 d4@11 ~]/2", AD: "~@4 g3 ab3 bb3 eb4, eb4@27 ~@5", AE: "db4@31 ~",
  AF: "~@6 bb4 f5",
  AG: "[bb5@12 ~@5 g4@3 bb4@4 eb5@4 d5@12 bb4@4 c5@12 ab4@4 bb4@20 bb3@4 eb4@4 ab4@4 g4@12 ab4@4 f4@12 d4@4 eb4@17 ~@7 eb5@12]/5",
  AH: "[f5@12 eb5@15 bb4@21 bb3@4 eb4@4 ab4@4 g4@19 ~ f4@12 eb4@4]/3",
  AI: "[~@16 g4@4 bb4@4 eb5@4 d5@20 c5@12 bb4@20 bb3@4 eb4@4 ab4@3 ~ g4@20 f4@31 ~ bb4@12 eb4@16 bb4@2 c5@2 bb4@12 eb4@4]/6",
  AJ: "[~@8 d4@6 c5@2 bb4@63 ~@17]/3",
})).s("gm_epiano1").gain(0.38).pan(0.6)

// chords · pan flute
const pan_flute = note("<~ A@2 ~@60 B C D ~@13 E@2 ~@6>".pickRestart({
  A: "[~@4 eb5@2 ~@2 c5@2 d5@2 bb4@8 eb4@2 ~@2 ab4@3 ~ g4@35 ~, ~@24 g4 ~@39]/2", B: "~@4 [g4,eb5] [bb4,g5]@3",
  C: "[d5,bb5] [bb4,f5] [c5,ab5] [bb4,g5]@2 [f4,d5]@3", D: "[g4,eb5]",
  E: "[~@4 eb6@2 ~@2 c6@2 d6@2 bb5@8 eb5@2 ~ g5 ab5@2 ~@2 g5@20 ~@16]/2",
})).s("gm_pan_flute").gain(0.33).pan(0.6)

// other · acoustic guitar nylon · "NYLON STR"
const acoustic_guitar_nylon = note("<~@36 A B ~ C@3 D E F ~ G H ~@4 I@6 J K@3 ~ L@2 M N@2 ~@19>".pickRestart({
  A: "~ bb3 c4 f4 d4 f3 bb3@2, g4@7 ~@25", B: "eb4@4 d4@3 ~@2 eb4@22 ~, ~@8 d4@3 ~@21",
  C: "[~@2 c5 bb4 g4 eb4 ab4 g4@4 f4@4 eb4@7 ~@2]/3", D: "g4@6 c4@6 ~@2 eb4 f4", E: "eb4@24 d4@4 eb4@3 ~",
  F: "eb4@21 ~@11", G: "db4 f4 bb4 db4 f4@2 db4@2", H: "c4@16 eb4@11 ~@5",
  I: "[~@33 d5@7 eb5@4 bb4@8 eb5@8 d5@12 bb4@4 c5@12 ab4@4 bb4@20 bb3@4 eb4@4 ab4@4 g4@12 ab4@4 f4@11 ~ eb4@3 ~ eb4@20 ~@16, ~@15 eb4 bb4 ~@79, ~@31 g4@2 ~@159]/6",
  J: "~@4 d4@9 ~@3",
  K: "[eb4@4 d4@6 ~ eb4@4 ~ bb4@4 eb5@4 ab5@4 g5@12 ab5@4 f5@12 eb5@4 f5@8 eb5@4 c5@4 g4@4 eb4@16]/3",
  L: "[~@16 g4@4 bb4@4 eb5@4 d5@7 ~ bb4@4 c5@4 bb4@8 d4@12]/2", M: "eb4@3 ~ eb4@2 g4 bb4 eb5@23 ~",
  N: "[~@2 db4@2 g3 ab3 bb3@2 eb4@4 c4@2 eb4@4 c4@2 eb4@2 g4@2 bb4@8]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.38).pan(0.4)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@3 A@4 ~@7 B@2 C@3 D@2 E F ~@8 G@3 ~@23 H@2 I ~ J K@2 L M N@2 O P@2 ~@16
>`.pickRestart({
  A: "[~ bb3@25 ~@38 db4@12 c4@12 bb3@40, eb4@11 ~ eb4@20, ab3 ~@3, c4@13 ~@3 c4@16 ~@32]/4", B: "[~@31 ab2@33]/2",
  C: "[g2@31 f2@16 bb2@16 eb2@33]/3", D: "[bb2@31 c3@32 ~]/2", E: "db2 c2", F: "bb1",
  G: "[~@4 g3@3 [bb3,bb4]@4 [eb4,eb5]@4 ~ [d4,d5]@4 [bb4,bb5]@4 [ab4,ab5]@4 g5@4 ~@16 bb6@40 ~@8, ~@3 g4@5 ~@20 g4@20 ~@48, ~@4 eb6@7 ~]/3", // Bb Eb D Bb Ab
  H: "[~@4 [g4,g5] [bb4,bb5] [eb5,eb6] [d5,d6]@5 [c5,c6]@4]/2", I: "[bb4,bb5]", J: "~@4 [g4,g5] [bb4,bb5] [eb5,eb6]@2",
  K: "[[f5,f6]@4 [eb5,eb6]@2 [d5,d6] [bb4,bb5]@5 [eb4,eb5]@4]/2", L: "[d4,d5] [c4,c5]", M: "[bb3,bb4]",
  N: "[[bb4,bb5]@31 [eb5,eb6]@17 [c5,c6]@16]/2", O: "[ab4,ab5] [eb4,eb5]", P: "[d4@15 ~, d5 ~]/2",
})).s("gm_string_ensemble_1").gain(0.33)

// chords · pad warm · "WARM PAD"
const pad_warm = note("<A@6 B@5 C@2 D@8 E@5 F@3 G@7 H@7 I@2 J@5 K@8 L@3 M N@7 O@3 P@3 Q@4 R@2 S@6>".pickRestart({
  A: "[~@31 [bb4,bb5]@95 ~ d5@16 eb5@49]/6", // Bb
  B: "[~@31 [bb3,d4]@16 [ab3,c4]@15 ~@2 g3@23 ab4@4 ~@5 [ab3,c4]@15 ~@8 d4@8 [eb4,g4]@32 bb3, ~@31 bb4@56 ~@5 g4@19 ~@49, ~@31 f4@11 ~@5 eb4@64 ~@49, ~@63 bb3@29 ~@19 [bb3,f4]@16 c4@27 ~@6]/5", // Bb Ab Eb Bb5
  C: "[[d4,f4]@15 ~@16 [g3,bb3]@24 ab4@4 g4@5, ~@15 [ab3,c4]@15 ~@34, ~ eb4@3]/2", // Dm Gm Ab
  D: "[c4@11 ~@20 g3@23 ~@21 eb4@15 ~@37 [ab3,c4]@11 ~@2 d4@19 eb4@32 [bb3,f4,bb5]@31 ~ [c4,eb4,eb6]@32 [db4,f4,ab4], ~@12 [d4,f4]@15 eb4@47 ~@21 eb4@44 ~@20 g4@25 ~@38 ab4@26 ~@8, ~@15 bb3@48 [ab3,c4,g4]@32 bb3@32 ~@12 [bb3,f4]@20 ~@32 db4@30 ~@35, ~@95 g3@27 ~@134, ~@107 bb4@148 ~]/8", // Ab Bb5 Cm Db Dm Abmaj7 Bb5
  E: "[~@16 c4@15 ~ f4@31 [bb3,d4,d5]@16 [ab3,c5]@16 [f4,g4]@25 ~@7 [ab3,eb4]@16 ~ d4@10 ~@6, ~@15 eb4@16 [bb3,d4,bb4]@31 ~ bb4@26 ~@6 bb4@64 ~, ~@63 f4@11 ~@5 eb4@41 ~@7 c4@10 ~@6 bb3@16 ~, ~@95 g3@32 ~@16 f4@9 ~@8]/5", // Bb Ab Fsus2 Ab5 Bb
  F: "[[c4,c5]@31 [d4,f4]@12 ~@4 [ab3,c4]@16 [f4,g4]@28 ~@4 [ab3,eb4], [eb4,g4]@27 ~@4 bb4@65, ~@31 bb3@16 eb4@43 ~@6, ~@63 g3@32 ~]/3", // C Dm Ab Fsus2 Ab5 Eb
  G: "[c4@9 ~@6 [bb3,f4]@16 ~@33 f4@22 ~ [bb3,d4]@8 [db4,f4]@12 c4@13 [bb3,f4,g4]@39 [bb3,d4,f4]@16 c4@16 g3@32 [bb3,eb4], ~@15 d4@11 ~@5 bb4@64 ab4@24 ~@40 bb4@64 ~, ~@31 [c4,eb4]@53 ~@11 eb4@65 ~@15 eb4@43 ~@6, ~@31 ab3@50 ~@94 ab3@12 ~@4 bb3@28 ~@5]/7", // Bb5 Bb Db Gm7 Bb Eb5 Cm
  H: "[ab3@15 ~ bb3@15 ~@32 [bb3,d4,f4]@16 ~ c4@10 ~@21 bb4@16 [ab3,c4,c5]@16 ~ bb3 bb3@14 [f4,g4]@32 [bb3,eb4]@33, c4@27 ~@5 c4@43 ~@5 eb4@59 ~@4 f4@15 ~@66, ~@15 [d4,f4]@16 [eb4,g4]@32 ~@16 g4@32 ~@32 bb4@49 ~@32, ~@95 bb3@26 ~@22 d4@11 ~@5 eb4@26 ~@6 [ab3,c4]@28 ~@5]/7", // Bb Ab Fsus2 Eb5 Dm Eb Ab
  I: "[f4@15 ~@16 c4@16 d4@16 ~, g3@24 ~@7 ab3@31 ~@2, ~@15 eb4@32 ~@17]/2",
  J: "[[g3,bb3,eb4]@31 ~@32 eb4@32 ~ db4@16 [c4,eb4]@15 [bb3,d4,f5]@32 bb4, ~@31 [db4,f4]@32 ab4@64 ~@33, ~@31 bb3@26 ~@6 c4@25 ~@7 [f4,c5]@16 ~@16 [f4,bb4]@27 ~@6, ~@32 eb5@95 ~@33]/5", // Eb Cm Bb Db F5 Bb5
  K: "[[f4,d5]@15 [ab4,c5]@16 ~@17 [g3,bb3]@15 ~ ab3@16 [d4,f4]@15 [c4,eb4,g4]@29 ~@3 [d4,d5]@16 [ab3,c4]@12 ~@5 bb3@31 [ab3,c4,c5]@16 [bb3,f4,d5]@15 ~ [g3,bb3,eb4,eb5]@32 ~, ~@15 eb4@31 ~@2 eb4@32 ~@47 [c4,f4]@11 ~@5 [eb4,eb5]@61 ~@3 d4@11 ~@38, ~@31 [g4,bb4]@31 ~ c4@16 ~ bb3@63 ~@16 bb5@65 ~@32, ~@80 g3@13 ~@35]/8", // Dm Ab Gm Dm Cm D Ab Bb …
  L: "[[bb3,d4,f4]@8 [ab3,c4]@8 g3@13 ~@3 ab3@8 [d4,f4]@8, ~@4 eb4@11 ~ c4@6 ~@2, ~@16 bb3@19 ~@5 bb3@6 ~@2, ~@16 eb4@3 ~@5]/3", // Bb Ab Dm
  M: "[bb3,c4,eb4]@13 ~@3, g4", // Cm7
  N: "[[bb3,f4]@16 [ab3,c4]@12 ~@4 bb3@32 [c4,g4]@16 [d4,f4]@12 ~@4 [eb4,f4,g4]@31 ~ bb4@31 [c4,ab4]@26 ~@6 [db4,f4]@16 ~ [c4,eb4]@16, bb4@128 ~@31 c5@32 ab4@33, d4@10 ~@6 eb4@60 ~@4 bb3@16 ~@31 [db4,f4]@26 ~@71, ~@32 g4@26 ~@69 eb5@57 ~@7 eb5@29 ~@4]/7", // Bb5 Ab C5 Dm Eb Fm Db Cm …
  O: "[~@4 [f4,d5] [ab4,c5], [bb3,f4,f5]@14 ~@6 eb4@3 ~, ~@2 bb4@3 ~]/3", // Dm Ab Bb5
  P: "[[eb4,g4]@3 [d4,f4] ~ eb5, bb4@5 ~, ~@2 [c4,eb4,g4]]/3", // Eb Dm Cm
  Q: "[[f4,bb4,d5]@4 [ab4,c5]@4 f4 f4@5 ~@2 [c4,eb4]@4 d4@4 eb4@8, ~@2 eb4@5 ~@3 [bb3,f4]@6, ~@16 [g4,bb4]@25 ~@7 g4@13 ~@3]/4", // Bb Ab Cm Bb5 Gm
  R: "[[f4,bb4,d5] [ab4,c5] [g4,bb4]@2, ~@8 eb4@21 ~@3]/2", // Bb Ab Gm
  S: "[[ab3,bb3,c4]@6 ~@2 [d4,f4]@16 eb4@32 [db4,f4]@6 c4@6 f4@19 ~@9, eb4@8 [bb3,c4]@5 ~@11 bb4@64 ~@8, ~@48 ab3@88 g4@29 ~@27, ~@48 c4@30 ~@46 eb4@17 ~@51]/6", // Ab Dm Db Bbsus2
})).s("gm_pad_warm").gain(0.2).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@30 A@2 B ~ A@16 ~ C A@2 D A@14 E ~@17>".pickRestart({
  A: "x ~@2 x ~@3 x", B: "x ~@2 x ~@2 x ~", C: "~@4 x ~@2 x", D: "x ~@6 x", E: "x",
})).gain(0.38)

// drums · snare
const snare = s("sd").struct("<~@30 [~ x]!3 ~ [~ x]!16 ~ [~ x]!18 ~@18>").gain(0.44)

// drums · hihat
const hihat = s("hh").struct(`<
  A B@4 C ~@16 A B@7 D@2 E B@3 F@3 D@2 B D B G D B G B H B@4 F B@3 F D@2 F@3 D B D B F I ~ F@3 J ~@12
>`.pickRestart({
  A: "~@6 x!2", B: "x!8", C: "x!5 ~ x ~", D: "x!7 ~", E: "x ~ x ~ x ~ x ~ x ~@3 x ~@2 x", F: "x!3 ~ x!4", G: "x!6 ~ x",
  H: "~ x!6 ~", I: "x!3 ~ x ~@3", J: "x!3 ~ x!3 ~",
})).gain(0.27)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@5 A ~@24 B@2 A ~@3 C@3 B@2 ~ B ~ D B ~ D ~ E ~@4 C ~@3 C B@2 C@3 B ~ B ~ C@2 ~ C@3 F ~@12
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@7 x", C: "~@3 x ~@4", D: "~@3 x", E: "x ~@6 x", F: "~@3 x ~@3 x",
})).gain(0.27)

// drums · crash
const crash = s("cr").struct("<~@32 x ~@18 [~ x] ~@35>").gain(0.38)

stack(
  piano, bass, epiano1, pan_flute, acoustic_guitar_nylon, string_ensemble_1, pad_warm, kick, snare, hihat, open_hat,
  crash
)

More by Vanessa Williams