Strudelify

I'll Never Love This Way Again

Dionne Warwick

KeyD majorTempo78 bpm
0:00/0:00
// I'll Never Love This Way Again — Dionne Warwick
// 78 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 9 "Strings" synth strings 1 (copy of ch 5 "Melody 2" cello)
// note: Full arrangement: all 63 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(78/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(`<
  ~ A B C D E F G H I J K L M N O P M N O Q M R S M T G U V W Q X M Y Z AA M N O AA AB AC AD AE AF AG AH AE AI AJ AH AK
  AF AL AM AK AN AO AH AE AP AQ ~
>`.pickRestart({
  A: "d2@15 ~@3 d2@2 ~@5 b1@16 ~ a1@3 a#1@3", B: "g1@19 ~@2 e2@2 ~@2 e1 ~@4 e1@9 ~@3 b1@4 ~@2",
  C: "b1@15 ~@3 b1@2 ~@4 b1@16 ~@2 e2@3 ~@3", D: "b1@19 ~@2 b1@2 ~@2 a1 ~@4 a1@9 ~@3 a1@4 ~@2",
  E: "d2@16 ~@2 d2@3 ~@4 b1@2 ~@3 b1@9 ~@3 b1@4 ~@2", F: "g2@16 ~@2 g2@3 ~@3 f#2@10 ~@2 f#2@10 ~@2",
  G: "g2@16 ~@2 g2@3 ~@3 a1@10 ~@2 g2@10 ~@2", H: "f#2@16 ~@2 f#2@3 ~@3 b1@16 ~@2 b1@3 ~@3",
  I: "~ e2@2 ~@3 e2@9 ~@3 e2@4 ~@3 f#2@2 ~@3 f#2@9 ~@3 f#2@4 ~@2", J: "g2@16 ~@2 g2@3 ~@4 g2@2 ~@3 g2@9 ~@3 g2@4 ~@2",
  K: "a1@5 ~ a1 ~ a1@5 ~ a1 ~", L: "d1@5 ~ d1 ~ f#1@5 ~ a1 ~", M: "d2@16 ~@2 d2@3 ~@3 b1@16 ~@2 b1@3 ~@3",
  N: "e2@16 ~@2 e2@3 ~@3 a1@10 ~@2 a#1@10 ~@2", O: "b1@16 ~@2 b1@3 ~@3 e2@10 ~@2 e2@10 ~@2",
  P: "~ a1@16 ~ e1 ~@2 g1@2 ~ f#1@14 ~@4 e1@2 ~@4", Q: "~ a1@16 ~ e1 ~@2 f#1@2 ~ a1@14 ~@4 a1@2 ~@4",
  R: "g2@16 ~@2 g2@3 ~@3 e2@10 ~@8 b1@6", S: "~ b1@18 ~@3 b1@2 a1@16 ~@2 a1@3 ~@3",
  T: "g2@16 ~@2 g2@3 ~@3 d2@10 ~@2 f#2@10 ~@2", U: "~ f#2@18 ~@3 f#2@2 b1@16 ~@2 b1@3 ~@3",
  V: "e2@16 ~@2 e2@3 ~@3 f#2@16 ~@2 f#2@3 ~@3", W: "~ g2@2 ~@3 g2@9 ~@3 g2@4 ~@2 g2@16 ~@2 g2@3 ~@3",
  X: "d1@15 ~@3 a1@2 ~@4 a1@2 ~@4 a1@10 ~@2 a1@4 ~@2", Y: "~ e2@2 ~@3 e2@9 ~@3 e2@4 ~@2 a1@10 ~@2 a#1@10 ~@2",
  Z: "~ b1@18 ~@3 b1@2 e2@10 ~@2 e2@10 ~@2", AA: "a1@15 ~@3 a1@2 ~@4 a1@2 ~@4 a1@10 ~@2 a1@4 ~@2",
  AB: "g#2@5 ~ g#2 ~ g#2@5 ~ g#2 ~", AC: "~ a#1@16 ~ f1 ~@2 g1@2 ~ a#1@14 ~@4 a#1@2 ~@4",
  AD: "d#2@16 ~@2 d#2@3 ~@4 c2@2 ~@3 c2@9 ~@3 c2@4 ~@2", AE: "~ f2@2 ~@3 f2@9 ~@3 f2@4 ~@2 a#1@10 ~@2 b1@10 ~@2",
  AF: "c2@16 ~@2 c2@3 ~@3 f2@10 ~@2 f2@10 ~@2", AG: "a#1@5 ~ g#1 ~ g1@5 ~ f1 ~",
  AH: "d#2@16 ~@2 d#2@3 ~@3 c2@16 ~@2 c2@3 ~@3", AI: "~ c2@18 ~@3 c2@2 f2@10 ~@2 f2@10 ~@2",
  AJ: "~ a#1@2 ~@3 a#1@9 ~@3 a#1@4 ~@2 a#1@16 ~@2 a#1@3 ~@3", AK: "f2@16 ~@2 f2@3 ~@3 a#1@10 ~@2 b1@10 ~@2",
  AL: "~ a#1@16 ~ g#1 ~@2 g#1@2 ~ g1@14 ~@4 f1@2 ~@4", AM: "d#2@16 ~@2 d#2@3 ~@3 c2@18 ~@4 c2@2",
  AN: "c2@9 ~@2 c2 f2@5 ~ f2@5 ~", AO: "a#1@16 ~@2 a#1@3 ~@3 a#1@16 ~@2 a#1@3 ~@3",
  AP: "~ c2@2 ~@3 c2@9 ~@3 c2@4 ~@2 f2@10 ~@2 f2@10 ~@2", AQ: "a#1@15 ~@3 g#1@2 ~@4 g1@2 ~@4 a#1@10 ~@2 a#1@4 ~@2",
})).s("gm_fretless_bass").gain(0.27)

// chords · piano
const piano = note(`<
  ~ A@2 B@2 C D E F G H I J K L M N O P Q I R S T U D V W X Y Z AA AB P Q AC AD P Q Z AE AF AG AH AI AJ AK AL AM AN AG
  AL AO AP AQ AR AS AT AU AV AM AW ~
>`.pickRestart({
  A: "[[f#4,a4,e5]@12 ~ f#4@5 ~@18 b3@11 ~@37 [d4,e4,a4]@6 ~@6, e3@46 ~@2 d3@18 d4@12 f#3@11 ~@7, ~@18 d5@26 ~@4 f#4@12 g4@29 ~@7, ~@19 a4@26 ~@2 a4@19 f#4@23 ~@7, ~@54 g3@35 ~@7]/2", // F#m7 Dsus2
  B: "[[f#4,a4,e5]@12 ~ f#4@5 ~@18 f#3@11 ~@13 c#4@6 ~@18 [d4,g4,a4]@6 ~@6, e3@46 ~@2 c#3@41 ~@7, ~@18 e5@26 ~@4 f#4@18 [c#4,f#4]@23 ~@7, ~@19 a4@26 ~@2 d4@31 g3@11 ~@7, ~@27 a3@17 ~@4]/2", // F#m7 Dsus4 F#5
  C: "d3@7 ~@5 a3@6 [d4,f#4]@4 ~@14 [d4,f#4,a4,b4]@8 ~@4, [d2,d4,f#4]@19 ~@29, a3@12 ~@21 b3@10 ~@5, ~@7 d3@13 ~@4 b2@22 ~@2", // D Bm7 D
  D: "g2@7 ~@5 d4@6 [g4,b4]@4 ~@3 [d2,d3,a3,d4,f#4]@9 ~@3 [f#2,f#3,a3,d4,f#4]@9 ~@2, [g4,b4]@3 ~@5, d4 ~@3, ~@7 g2@13 ~@28", // G D G
  E: "~@13 [g3,b3]@11 ~ [a2,a3,d4,f#4]@9 ~@3 [g2,b3,e4,g4]@9 ~@2, g2@23 ~@25, [f#3,g3,d4]@12 [f#3,d4]@11 ~@25, ~ b3@12 ~@35, ~@7 d3@17 ~@24", // G D Em Gmaj7 D
  F: "[f#2,f#3,c#4,e4,f#4,a4]@23 ~@13 f#4@7 b4@2 ~@3, ~@24 [d3,b4]@19 ~@5, ~@24 [d4,f#4]@9 d4@11 ~@4, ~@30 a3@13 ~@5", // F#m7 G D
  G: "~@13 [e4,g4]@11 ~@12 c#5@7 f#5@2 ~@3, e3@23 ~@10 a4@11 ~@4, [d4,e4,b4]@12 [d4,b4]@11 ~@7 e4@13 ~@5, ~ g4@12 ~@11 [a4,c#5]@12 ~@12, ~@7 b3@17 [a3,f#5]@19 ~@5", // Em E7 G A D
  H: "~@12 [b3,d4,f#4,a4]@8 ~@16 d5@7 g5@2 ~@3, g2@22 ~@2 [b4,d5]@9 b4@11 ~@4, ~@9 g3@10 ~@5 [b3,g5]@19 ~@5, ~@30 e4@13 ~@5", // Bm7 Bm Em
  I: "~@24 [d4,e4,g4,b4]@10 ~@2 [d4,e4,g4,b4]@7 ~@5, [d4,e4,g4,b4] ~, ~@18 a2@16 a2@9 ~@5", // Em7
  J: "~@14 d5 ~, f#3@12 a5 f#5@2 ~, d5@24 d5@6 f#5@5 d4@10 ~@3, a4@4 f#4@11 ~, [d4,f#4] a2@44 ~@3", // D
  K: "[d2,d3,e3,a3,d4,e4,f#4]@23 ~ [b1,b2,f#3,a3,b3,d4]@23 ~", // D Bm7
  L: "[e2,e3,b3,d4,e4,g4]@23 ~@2 [a2,b3,d4,e4,g4]@9 ~@3 [a#1,a#2,c#4,e4,f#4,a#4]@9 ~@2", // Em7 F#7
  M: "~@12 [d4,f#4,a4,b4]@8 ~@5 [e2,e3,f#3,a3,b3,d4]@9 ~@3 [e2,e3,b3,d4,e4,g#4]@9 ~@2, b2@11 ~@13, ~@9 b3@10 ~@29", // Bm7 E7
  N: "~@6 [e4,a4] ~, ~ a2@42 ~@5, ~ [e4,a4]@35 ~@12, ~ c#4@29 c#4@12 ~@6, ~@3 g3@4 ~", // A5
  O: "~@12 a4@7 d5@2 ~@16 [b3,d4]@11, [f#3,d5]@19 ~@5 b2@23 ~, [f#4,a4]@9 f#4@11 ~@5 d4@12 ~@11, ~@6 d4@13 ~@5 [a3,b3,f#4]@12 [a3,f#4]@11 ~, ~@31 f#3@17", // Bm D F#m B7 D
  P: "~@12 b4@7 e5@2 ~@4 [a2,b3,d4,e4,g4]@9 ~@3 [a#1,a#2,c#4,e4,f#4,a#4]@9 ~@2, [g3,e5]@19 ~@29, [g4,b4]@9 g4@11 ~@28, ~@6 d4@13 ~@29", // Em7 F#7 C G
  Q: "[b1,b2,f#3,a3,b3,d4]@23 ~@2 [e2,e3,f#3,a3,b3,d4]@9 ~@3 [e2,e3,b3,d4,e4,g#4]@9 ~@2", // Bm7 E7
  R: "d3@7 ~@5 a3@6 [d4,f#4]@4 ~@14 f#4@7 b4@2 ~@3, [d2,d4,f#4]@19 ~@11 a3@13 ~@5, a3@12 ~@12 [d4,f#4]@9 d4@11 ~@4, ~@7 d3@13 ~@4 [d3,b4]@19 ~@5", // D G
  S: "~@12 [b3,d4,e4,g4]@8 ~@5 [e2,e3,b3,d4,e4,g4]@9 ~@4 [d4,g4,b4]@9 ~, g2@22 ~@15 [b1,b2,e4]@9 ~@2, ~@9 g3@10 ~@29", // Em7 G E5
  T: "b2@7 ~@5 c#4@6 [e4,f#4,a4]@4 ~@14 [d4,e4,g4,b4]@8 ~@4, [b1,e4,f#4,a4]@19 ~@29, c#4@12 ~@21 b3@10 ~@5, ~@7 b2@13 ~@4 a2@22 ~@2", // F#m7 Em7 Bsus4
  U: "~@13 f#4@11 b2@7 ~@5 f#3@6 [a3,b3,d4]@4 ~@2, d3@23 ~ [b1,a3,b3,d4]@19 ~@5, [d4,a4]@12 [d4,a4]@11 ~@8 b2@13 ~@4, ~ f#4@12 ~@35, ~@7 a3@17 f#3@12 ~@12", // Bm7 D5
  V: "~@12 [b3,d4,f#4,a4]@8 ~@5 [a2,a3,d4,f#4]@9 ~@3 [g2,b3,e4,g4]@9 ~@2, g2@11 ~@13, ~@9 g3@10 ~@29", // Bm7 D Em
  W: "~@13 [f#3,a3]@11 ~@13 [b3,d4]@11, f#2@23 ~@8 f#3@17, [e3,f#3,c#4]@12 [e3,c#4]@11 ~@2 d4@12 ~@11, ~ a3@12 ~@11 [a3,b3,f#4]@12 [a3,f#4]@11 ~, ~@7 c#3@17 b2@23 ~", // F#m Bm F#7 C#m B7 D
  X: "~@12 [d4,e4,g4,b4]@8 ~@17 [f#3,a3]@11, e3@22 ~@2 f#2@23 ~, ~@9 b3@10 ~@5 [e3,f#3,c#4]@12 [e3,c#4]@11 ~, ~@25 a3@12 ~@11, ~@31 c#3@17", // Em7 F#m F#7 C#m
  Y: "~@12 d5@7 a5@2 ~@3 g2@7 ~@5 d4@6 [e4,g4,b4]@4 ~@2, [b3,a5]@19 ~@5 d4@12 ~@12, [b4,d5]@9 b4@11 ~@11 g2@13 ~@4, ~@6 f#4@13 ~@5 [e4,g4,b4]@18 ~@6", // Em B7 Bm Em
  Z: "~@14 b4 ~, d3@12 e5 d5@2 ~, b4@24 b4@6 d5@5 g3@10 ~@3, e4@4 d4@11 ~, [g3,d4] a2@44 ~@3", // G5
  AA: "~ f#5@44 ~@3, [f#3,d4,a4,d5]@23 ~", // D
  AB: "[d2,d3,e3,a3,d4,e4,f#4]@23 ~@13 [d4,f#4,a4,b4]@8 ~@4, ~@12 b2@11 ~, ~@33 b3@10 ~@5", // D Bm7
  AC: "~@14 a4 ~, c#3@12 e5 c#5@2 ~, a4@24 a4@6 c#5@5 g3@10 ~@3, e4@4 c#4@11 ~, [g3,c#4] a2@44 ~@3", // Gdim
  AD: "~@13 f#4@11 ~@12 [d4,f#4,a4,b4]@8 ~@4, d3@23 ~ b2@22 ~@2, [d4,a4]@12 [d4,a4]@11 ~@25, ~ f#4@12 ~@35, ~@7 a3@17 ~@9 b3@10 ~@5", // Bm7 D5
  AE: "~@6 [f4,a#4] ~, [a2,a4]@7 ~, ~ f4@35 ~@12, ~ d4@29 d4@12 ~@6, ~@3 g#3@4 ~", // A#5 A
  AF: "~@24 [d4,f4,g#4,a#4]@10 ~@2 [d4,f4,g#4,a#4]@7 ~@5, [d4,f4,g#4,a#4] ~, ~@18 a#2@16 a#2@9 ~@5", // A#7
  AG: "[d#2,d#3,a#3,d#4,g4]@23 ~@14 [c4,d#4]@11, ~@24 c3@23 ~, ~@24 [a#3,c4,g4]@12 [a#3,g4]@11 ~, ~@25 d#4@12 ~@11, ~@31 g3@17", // D# Cm C7 D#
  AH: "[f2,f3,c4,d#4,f4,g#4]@23 ~@2 [a#1,a#2,c4,d#4,f4,g#4]@9 ~@3 [b1,b2,d4,f4,g4,b4]@9 ~@2", // Fm7 G7
  AI: "~@13 [c4,d#4]@11 ~ [f2,f3,g3,a#3,c4,d#4]@9 ~@3 [f2,f3,c4,d#4,f4,a4]@9 ~@2, c3@23 ~@25, [a#3,c4,g4]@12 [a#3,g4]@11 ~@25, ~ d#4@12 ~@35, ~@7 g3@17 ~@24", // Cm Cm7 F7 C7 D#
  AJ: "~@6 [f4,a#4] ~, ~ a#2@42 ~@5, ~ [f4,a#4]@35 ~@12, ~ d4@29 d4@12 ~@6, ~@3 g#3@4 ~", // A#5
  AK: "~@13 g4@11 ~@13 [c4,d#4]@11, d#3@23 ~ c3@23 ~, [d#4,a#4]@12 [d#4,a#4]@11 ~@2 d#4@12 ~@11, ~ g4@12 ~@18 g3@17, ~@7 a#3@17 [a#3,c4,g4]@12 [a#3,g4]@11 ~", // Cm D#5 C7 D#
  AL: "~@13 [f4,g#4]@11 ~ [a#1,a#2,c4,d#4,f4,g#4]@9 ~@3 [b1,b2,d4,f4,g4,b4]@9 ~@2, f3@23 ~@25, [d#4,f4,c5]@12 [d#4,c5]@11 ~@25, ~ g#4@12 ~@35, ~@7 c4@17 ~@24", // Fm Fm7 G7 F7 Cm
  AM: "[c2,c3,g3,a#3,c4,d#4]@23 ~@2 [f2,f3,g3,a#3,c4,d#4]@9 ~@3 [f2,f3,c4,d#4,f4,a4]@9 ~@2", // Cm7 F7
  AN: "[a#1,a#2,c4,d#4,f4,g#4]@23 ~ [a#1,a#2,f3,g#3,a#3,d4]@23 ~", // Fm7 A#7
  AO: "c3@7 ~@5 g3@6 [a#3,c4,d#4]@4 ~@3 [f2,f3,g3,a#3,c4,d#4]@9 ~@3 [f2,f3,c4,d#4,f4,a4]@9 ~@2, [c2,a#3,c4,d#4]@19 ~@29, g3 ~@3, ~@7 c3@13 ~@28", // Cm7 F7 Cm7
  AP: "~@14 a#4 ~, d3@12 f5 d5@2 ~, a#4@24 a#4@6 d5@5 g#3@10 ~@3, f4@4 d4@11 ~, [g#3,d4] a#2@44 ~@3", // G#dim
  AQ: "[d#2,d#3,a#3,d#4,g4]@23 ~ c3@7 ~@5 g3@6 [a#3,c4,d#4]@4 ~@2, ~@24 [c2,a#3,c4,d#4]@19 ~@5, ~@2 g3 ~, ~@31 c3@13 ~@4", // D# Cm7
  AR: "f3@7 ~@5 c4@6 [d#4,f4,g#4]@4 ~@3 [a#1,a#2,c4,d#4,f4,g#4]@9 ~@3 [b1,b2,d4,f4,g4,b4]@9 ~@2, [f2,d#4,f4,g#4]@19 ~@29, c4 ~@3, ~@7 f3@13 ~@28", // Fm7 G7 Fm7
  AS: "~@12 [d#3,g3,a#3,c4]@8 ~@5 [f2,f3,g3,a#3,c4,d#4]@9 ~@3 [f2,f3,c4,d#4,f4,a4]@9 ~@2, c2@11 ~@13, ~@9 c3@10 ~@29", // Cm7 F7
  AT: "~@12 c5@7 f5@2 ~@3 [a#1,a#2,f3,g#3,a#3,d4]@23 ~, [g#3,f5]@19 ~@29, [g#4,c5]@9 g#4@11 ~@28, ~@6 d#4@13 ~@29", // A#7 C# G#
  AU: "~@13 g4@11 [c2,c3,g3,a#3,c4,d#4]@23 ~, d#3@23 ~@25, [d#4,a#4]@12 [d#4,a#4]@11 ~@25, ~ g4@12 ~@35, ~@7 a#3@17 ~@24", // Cm7 D#5
  AV: "~@12 c5@7 f5@2 ~@4 [a#1,a#2,c4,d#4,f4,g#4]@9 ~@3 [b1,b2,d4,f4,g4,b4]@9 ~@2, [g#3,f5]@19 ~@29, [g#4,c5]@9 g#4@11 ~@28, ~@6 d#4@13 ~@29", // Fm7 G7 C# G#
  AW: "a#2@2 ~@12 g#4 ~, a#1@13 f4@2 ~, [d4,f4,g#4]@6 [f4,g#4]@6 d4@3 ~, a#3@4 a#3@6 a#2@5 ~, ~@2 a#2@4 d4@5 a#3@4 ~", // Ddim Fm
})).s("gm_piano").gain(0.16).pan(0.4)

// chords · piano · soft notes
const piano_soft = note(`<
  ~ A@2 B@2 C ~@2 D E F G H ~@2 I J K L ~ G D M C ~@2 M ~ I N O ~ C L ~ P C L ~ P Q R ~@3 S ~@7 T ~@2 U V ~ W ~@3
>`.pickRestart({
  A: "[~@7 d5 ~ f#4@13 d5@22 ~@4, ~ d4@10 ~@5]/2", B: "[~@15 e5@2 ~ f#4@26 d5@44 ~@8, ~@7 d4@40 ~@49]/2",
  C: "~@43 b3@2 ~@3", D: "~@4 b2@3 ~, ~@4 a3 ~@3", E: "~@4 f#3@3 ~, ~@4 e4 ~@3",
  F: "~@19 g3@2 ~@3 g2@18 ~@6, ~@4 e4 ~@3", G: "a2@3 ~@5", H: "~@19 a4@26 ~ a4 ~, ~@3 d4@14 ~@7", I: "~@19 b3@2 ~@27",
  J: "~ g3@17 ~@30", K: "d3@3 ~@5, d4 ~@7", L: "e3@3 ~@5, d4 ~@7", M: "~@19 g3@2 ~@27", N: "g2@3 ~@5, f#4 ~@7",
  O: "~@19 e4@26 d4 ~@2, ~@3 g3@14 ~@7", P: "~@19 e4@26 ~ e4 ~, ~@3 g3@14 ~@7", Q: "b3@7 ~", R: "a#1@43 ~@5, a#2@3 ~@5",
  S: "~ g#3@17 ~@30", T: "~@19 f4@26 ~ f4 ~, ~@3 g#3@14 ~@7", U: "~@19 c3@2 ~@27", V: "a#2@3 ~@5, d#4 ~@7",
  W: "f3@3 ~@5, d#4 ~@7",
})).s("gm_piano").gain(0.1).pan(0.4)

// bass · epiano1 · "Bass"
const bass_2 = note("<~ A B@2 C ~@18 D E F G H I J K L M N O P M N Q ~@24>".pickRestart({
  A: "d4 b3", B: "[g3@4 e3@2 e2 b1@7 e2@2]/2", C: "b1@8 a1@7 ~", D: "~ a1", E: "d2 b2", F: "g2@4 f#2@3 f#2",
  G: "g2@2 a2 g2", H: "f#2 b2", I: "e2!2 f#2!2", J: "g2 g2@2 g2", K: "a2!2", L: "d2@2 d2!2 f#2!2 a2!2", M: "d2 d3 b2!2",
  N: "e2!2 a2 a#2", O: "b2!2 e2!2", P: "a2 g2 f#2 e2", Q: "b2!2 e2@2",
})).s("gm_epiano1").gain(0.31)

// bass · electric bass finger · "Bass"
const bass_3 = note(`<
  ~@5 A B C D E F G H I J K L I J M N O P@2 ~@15 N Q R S T U V S T W X S T U V S T W X S T U V ~
>`.pickRestart({
  A: "d2 b2", B: "g2@4 f#2@3 f#2", C: "g2@2 a2 g2", D: "f#2 b2", E: "e2!2 f#2!2", F: "g2 g2@2 g2", G: "a2!2",
  H: "d2@2 d2!2 f#2!2 a2!2", I: "d2 d3 b2!2", J: "e2!2 a2 a#2", K: "b2!2 e2!2", L: "a2 g2 f#2 e2", M: "b2!2 e2@2",
  N: "a2!4", O: "d3 b2", P: "[g2@4 e2@2 e2 b1@5 ~@4]/2", Q: "g#2!8", R: "a#2 ~ a#2 ~ a#2@4", S: "d#2!2 c2!2",
  T: "f2!2 a#1 b1", U: "c2@2 c2!2 f2@2 f2@2", V: "a#2 g#2 g2 f2", W: "c2!2 f2!2", X: "a#2!8",
})).s("gm_electric_bass_finger").gain(0.31)

// drums · kick
const kick = s("bd").struct(`<
  ~
  [x ~@2 x!2 ~@2 x]!40
  [x ~@5 x ~ x ~@2 x ~@2 x ~]
  [x ~@2 x!2 ~@2 x]!19
  [x ~@5 x ~ x ~@2 x ~@2 x ~]
  ~
>`).gain(0.24)

// drums · rim
const rim = s("rim").struct("<~ A@40 ~ A@7 ~ A@7 ~ A@3 ~@2>".pickRestart({
  A: "~ x ~ x",
})).gain(0.28)

// drums · snare
const snare = s("sd").struct("<~@41 A ~@7 B ~@7 B ~@3 A ~>".pickRestart({
  A: "~@4 x ~@7 x ~ x!2", B: "~@4 x ~@7 x!4",
})).gain(0.28)

// drums · hihat
const hihat = s("hh").struct(`<
  ~
  [x!8]!48
  [x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~ x]
  [x!8]!7
  [x ~ x ~ x ~ x ~ x ~ x ~ x!2 ~ x]
  [x!8]!4
  ~
>`).gain(0.24)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@3 A@2 ~ A@2 ~@2 A ~ A@2 ~@4 A ~ A ~@5 A@5 ~ A@2 ~@5 A@4 ~@2 A@2 ~ A B A@4 ~ A@2 B A@4 ~
>`.pickRestart({
  A: "~@15 x", B: "~@7 x",
})).gain(0.28)

// drums · crash
const crash = s("cr").struct("<~@49 [~ x] ~@13>").gain(0.28)

stack(bass, piano, piano_soft, bass_2, bass_3, kick, rim, snare, hihat, open_hat, crash)

More by Dionne Warwick