Strudelify
Just the Lonely Talking Again cover art

Whitney

Just the Lonely Talking Again

Whitney Houston

KeyC majorTempo135 bpm
0:00/0:00
// Just the Lonely Talking Again — Whitney Houston
// 135 bpm, 4/4, key C 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 183 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(135/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, A@4 for four bars: edit a riff to change every repeat.

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  ~ A@2 B@2 A@2 C@2 D@2 E@2 D@2 F@2 D@2 E@2 D@2 G@2 H@4 I@2 J@2 H@2 K L M N@3 O@2 P Q R@2 S T O@2 P Q U@2 V@2 D@2 E@2
  D@2 F@2 D@2 E@2 D@2 G@2 H@4 I@2 J@2 H@2 K L M W@3 O@2 P X R@2 S T O@2 P Q U@2 Y@4 Z AA AB@2 AC@2 AD@2 AE AA AF@2 AG AH
  O@2 P X R@2 S T O@2 P Q U@2 V@2 O@2 P X R@2 S T O@2 P Q U@2 V@2 O@2 P X R@2 S T O@2 P Q U@2 V@2 O@2 P X R@2 S T O@2 P
  Q U@2
>`.pickRestart({
  A: "[[g3,a3,c4,e4,g4]@23 ~]/2", B: "[~@4 c5@7 ~ [c4,d4,f4,a4,c5]@4, [a3,a#3,d4,f4,a4]@17 ~@7]/2",
  C: "[~@4 c5@7 ~ [c#4,f4,g4,c5]@4, [a3,a#3,d4,f4,a4]@17 ~@7]/2", D: "[[g3,a3,c4,e4,g4]@9 ~ [g3,a3,c4,e4,g4]@2]/2",
  E: "[[f3,a3,a#3,d4]@8 ~ [c4,d4,f4,a4,c5]@3]/2", F: "[[f3,a3,a#3,d4]@8 ~ [c#4,f4,g4,c5]@3]/2",
  G: "[[f3,a3]@12 [f4,a4,c5]@19 ~@5 [c#4,f4,g4,c5]@12, [a#3,d4]@31 ~@17]/2", H: "[g#3,c4,c#4,f4,g#4]/2",
  I: "[~ [g5,a#5,c6,d#6], [g#3,c4,d#4,g4]]/2", J: "[[a3,d4,f#4] [a3,c#4,f4] [a3,c4,d#4] [a3,c#4,f4], [f2,d#3]]/2",
  K: "[c#4,f4,g#4,c#5]", L: "c5 a#4, [c#4,g4]", M: "[f3,a3,c4,e4,g4]@23 ~",
  N: "[~@24 [a5,c6,g6]@41 ~@7, [a4,c5,e5,g5]@2 ~]/3", O: "[[g3,a#3,d4,f4,a4]@47 ~]/2", P: "[g3,a#3,d4,f4]",
  Q: "[g3,a#3,c#4,e4]@23 ~", R: "[[f3,a3,c4,e4]@47 ~]/2", S: "[g3,c4,e4,g4]",
  T: "[f#3,a3,c4,d#4]@11 ~ [f#3,d#4,f#4,a#4]@12", U: "[[f3,a3,c4,e4,g4]@47 ~]/2", V: "[[f3,a3,c4,e4,g4]@41 ~@7]/2",
  W: "[~@24 [a5,c6,e6,g6]@41 ~@7, [a4,c5,e5,g5]@2 ~]/3", X: "[g3,a#3,c#4,f4]@23 ~",
  Y: "[[f3,a3,c4,e4,g4]@41 ~@7 [f3,a3,c4,e4]@47 ~, ~@15 c5@16 ~, ~@23 a4@24 ~, ~@47 g4@48 ~]/4", Z: "[a#3,f4,a#4,d5]",
  AA: "c5 a#4, [d#3,g3,c#4,g4,f5]", AB: "[e4@36 [e4,g5]@11 ~, [f3,a3,c4,g4,a4,c5,e5]@47 ~]/2", AC: "[d3,g4,a4,c5,e5]/2",
  AD: "[c5@11 ~ a5@12, [f3,a3,c4,e4,g4,a4,e5], ~@11 c5@13]/2", AE: "f4!2, [f3,a#4,d5,f5]",
  AF: "[c5 [c5,a5]@3, [f3,a3,c4,e4,g4,a4]]/2", AG: "[d3,d4,g4,a4,c5,e5]", AH: "[d3,f#3,c4,d#4,f#4]@23 ~",
})).s("gm_epiano1").gain(0.28)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  A B C D ~ B C D E B C D F B C D G B C D ~ B C D H I@3 J K L M N I O P Q R S R T U V W X Y Z AA AB U V AC AD AE AF@2 AG
  B C AH F AI C D G B C D AJ B C AK AL I@3 AM K AN AO AP I AQ AR AS R@3 AT U V AC AU Y AV AA AB U V AC AU M AW@2 AX AY
  AZ BA BB AY BC BD BE R BF BG BH BI BJ BK BL U BM AC BN Y Z AA AB U BM BO BP Y Z BQ AB U BR AC AU BS BT BU BV BW BX AC
  AD Y Z AA AB U BM AC AD Y Z BY BZ U CA CB CC M CD CE CF U BM AC AD CG CH AA AB U CA CI CC CJ@2
>`.pickRestart({
  A: "~ a2", B: "d2@3 ~@19 a1@2", C: "d2@3 ~ a1@2 d2@3 ~@7 f1@6 f#1@2", D: "g1@3 ~@13 g1 ~ g1@3 ~ g1@2",
  E: "~@10 g1 ~ a1@12", F: "~@11 a1", G: "~@5 g1 a1@6", H: "~@10 g1 ~ a1@10 a1 ~", I: "a#1@4 ~@18 a#1 ~",
  J: "a#1@4 ~@6 a#1 ~ f2@6 a#1@6", K: "g#1@4 ~@18 g#1 ~", L: "g#1@2 ~@9 d#1", M: "f1@4 ~@18 f1 ~",
  N: "f1@4 ~@4 f1 ~ g#1 ~ a1@8 ~@2 f1@2", O: "a#1@2 ~@7 f2@2 a#1", P: "d#2@4 ~@18 d#2 ~", Q: "d#2@4 ~@18 f1 ~",
  R: "f1@21 ~ f1 ~", S: "f1@8 c2 f2@2 c2", T: "f1@8 f1 ~ f1 ~ f1@12", U: "g1@2 ~@9 f1",
  V: "g1@4 f1@2 g1@3 ~@7 d2@6 a#1@2", W: "c2@4 ~@18 c2 ~", X: "c2@2 ~@3 c2 g1@4 ~ g1", Y: "f1@2 ~@9 e1",
  Z: "f1@2 e1 f1@2 ~@5 c2 c#2", AA: "d2@21 ~ c2@2", AB: "d2@4 e1 f1 f#1@4 ~ f#1", AC: "c2@2 ~@9 g1",
  AD: "c2@4 g1@2 c2@3 ~@7 g1@6 e1@2", AE: "f1 ~@5", AF: "[f1@9 ~ f1 ~@5 f1 ~ f1@20 ~@2 f1 ~ f1@4 f1 ~]/2", AG: "~ e1",
  AH: "g1@3 ~@15 g1@3 ~ g1@2", AI: "d2@2 ~@9 a1", AJ: "~@10 g1 ~ a2@10 ~@2", AK: "g1@3 ~@7 g2 ~@7 g1@3 ~ g1@2",
  AL: "~@10 g1 ~ a1@10 a1@2", AM: "a#1@3 ~@7 a#1 ~ f2@6 a#1@6", AN: "g#1@4 ~@18 f1 ~", AO: "f1@13 ~@7 a1 ~ c2@2",
  AP: "f2@8 g1 ~ g#1@2 a1@8 ~@2 a1@2", AQ: "a#1@6 ~@5 a#1", AR: "d#2@4 ~@18 a#1 ~",
  AS: "d#2@3 ~ a#1@2 d#2@4 a#1 ~@5 a#1@6 d#1@2", AT: "f1@8 f1 ~ f1 ~ f1@4 f#1@6 f1@2",
  AU: "c2@4 g1@2 c2@3 ~ c2 ~@5 g1@6 e1@2", AV: "f1@3 ~ f1 ~ f1@2 ~@12 c2@2 c#2@2",
  AW: "[f1@7 ~@3 f1 ~@5 f1 ~ f1@12 ~@4 f1 ~@5 f1 ~ f1@3 ~ f1 ~]/2", AX: "~@10 f1 ~ f2@12", AY: "f1@21 ~ c2@2",
  AZ: "f2@2 c2 f2@7 ~ c2", BA: "f1@13 ~@7 c2 ~ d2 ~", BB: "d#2@10 c2 ~ d#2@4 c2@2 d2@4 ~@2",
  BC: "f2@4 c2@2 f2@9 ~@5 c2@2 c#2@2", BD: "d2@21 ~ a1@2", BE: "d2@4 ~@2 d2@4 a1@2 c2@4 d2@2 ~@4 f1 ~",
  BF: "f1@3 ~@3 f1@4 ~@6 c2 ~@5 c2@2", BG: "f2@13 ~@7 c2@2 d2@2", BH: "d#2@10 a#2@2 d#2@2 a#2@2 d#2@2 f1@5 ~",
  BI: "f1@17 ~@5 f1 ~", BJ: "f1@4 f1 ~ f1@3 ~@7 f2@3 ~ d#2@3 ~", BK: "d2@9 ~@3 d3@6 g3@4 d3@2",
  BL: "f#3@3 d2@2 a1 d2@5 ~", BM: "g1@4 f1@2 g1@3 ~@7 d2@6 g1@2", BN: "c2@2 g1 c2@2 c2 ~@2 g1@3 e1", BO: "c2@2 ~@9 g2",
  BP: "c3@4 g2@2 c2@4 f1@2 g1@9 ~ e1@2", BQ: "d2@19 ~ c2@2 c#2@2", BR: "g1@3 a1@3 a#1@3 d2@2 g1",
  BS: "f1@4 ~@16 a1 ~ c2 ~", BT: "f2@8 c2@2 ~@2 f2@3 ~ e2@3 ~ d#2 ~ c2@2", BU: "d2@11 ~ d3@5 ~ g3@3 ~ d3@2",
  BV: "f#3@6 e1@6 f1@6 f#1@5 ~", BW: "g1@9 ~@13 d2@2", BX: "g2@2 d2 g1@2 ~@6 d2", BY: "d2@6 ~@4 a1@2 c2@6 c#2@5 ~",
  BZ: "d2@2 c2@2 a1 ~ e1@6 f1@5 ~ f#1@3 ~ f#1@2", CA: "g1@4 f1@2 g1@3 ~@9 d2@4 g1@2", CB: "c2@3 ~@13 d3 ~@5 d2@2",
  CC: "c2@4 ~@6 c2 ~ g1@6 f#1@6", CD: "f1@18 ~@2 c2 ~ c#2 ~", CE: "d2@9 ~@2 c2", CF: "d2@8 e1 ~ f1 ~ f#1@9 ~ f#1@2",
  CG: "f1@4 ~@18 c2 ~", CH: "f2@10 c2 ~ f1@11 ~", CI: "c2@3 ~@13 d2 ~@5 d2@2", CJ: "[f1@7 ~]/2",
})).s("gm_fretless_bass").gain(0.44)

// other · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~ A@2 B@2 ~ C D@3 ~@8 E F@2 G E H@2 ~ I@3 J@2 K L@4 M N@3 O P@2 Q R S@2 R T P@2 Q ~@4 U V@2 ~@7 E W@2 ~ E X@2 ~ I@3
  J@2 K L@4 M Y@3 O P@2 Q Z AA@2 AB AC P@2 Q ~@7 AD@4 ~@4 AE@4 ~@2 P@2 Q ~ AA@2 AB AF P@2 Q ~ AA@2 AB AG AH@2 AI ~ AJ@2
  AB AF AH@2 AK ~ AA@2 AB AF AH@2 AI ~ AA@2 AB AF AH@2 AI ~ AA@2 AB AG AH AL AK ~ AA@2 AB AG AM AL AK ~ AN@2
>`.pickRestart({
  A: "[~@23 c5@2 d5@2 e5@2 f5@6 e5@5 d5@4 c5@4]/2", B: "[d5@6 a5@17 ~]/2",
  C: "c5@2 ~ e5@3 f5@6 e5@4 d5@4 c5@4, ~@2 d5@3 ~@19", D: "[d5 a5@2 c6@2 ~]/3",
  E: "c4@2 d4@2 e4@2 f4@5 ~ e4@4 d4@4 c4@4", F: "[d4@4 a4@7 ~ c5@4]/2", G: "e4",
  H: "[d4@12 a4@19 ~@5 [c#4,f4,g4,c5]@11 ~]/2", I: "[~ g#4@4 ~, ~ c4@16 ~@7, ~ c#4@8 ~@3, ~@3 f4@16 ~@5]/3",
  J: "[c5@47 ~]/2", K: "[d5,f#5] [c#5,f5]", L: "[[c5,d#5]@12 [c#5,f5]@48 ~@12 c#5@23 ~, ~@5 f4@3, ~@66 g#4@29 ~]/4",
  M: "c5 a#4, g4", N: "[[f4,a4,e5]@4 ~@3 e5@6 [c5,e5,g5]@48 ~@11, ~@7 [a5,c6]@48 ~@17]/3", O: "~@2 g4",
  P: "[a4,a5] [a#4,a#5]", Q: "[f4,f5]", R: "[e4,e5]", S: "[[c5,c6]@3 [f4,f5]]/2", T: "[f#4,f#5] [c5,f#5,a#5]",
  U: "~@3 a4 g4 f4", V: "[[g3,c4,e4]@15 ~]/2", W: "[d4@6 a4@17 ~]/2", X: "[d4@2 a4@5 ~]/2",
  Y: "[e5@6 ~ e5@6 [c5,e5,g5]@48 ~@11, [f4,a4]@2 ~, ~@7 [a5,c6]@48 ~@17]/3", Z: "[e4,e5]@7 ~",
  AA: "[[g4,g5]@2 [c5,c6] [g4,g5]@3 [f4,f5]@2]/2", AB: "[g4,g5]", AC: "[f#4,f#5] [a#4,c5,f#5,a#5]",
  AD: "[c6@6 a#5@4 a5@8 a5@4 f5@8 g5@3 ~ a#4@8 g5@4 c5@8 c6@37 ~@5]/4",
  AE: "[c6@6 a#5@4 a5@8 a5@4 f5@8 g5@3 ~ a#4@8 g5@4 c5@8 c6@11 ~ c6@26 ~@4]/4", AF: "[f#4,f#5]@3 ~",
  AG: "[f#4,f#5]@7 ~", AH: "[a4,a5]@13 ~@11", AI: "[f4,f5]@13 ~@11",
  AJ: "[[g4,g5]@12 [c5,c6]@6 [g4,g5]@18 [f4,f5]@11 ~]/2", AK: "f5@5 ~@3, f4@13 ~@11", AL: "[a4,a5]@7 ~@5", AM: "a5 ~",
  AN: "[[g4,g5]@12 ~@6 e6@29 ~, ~@12 e5@35 ~, ~@16 a5@31 ~, ~@17 c6@30 ~]/2", // G
})).s("gm_epiano2").gain(0.27).pan(0.8)

// other · pad poly · "POLYSYNTH"
const pad_poly = note(`<
  ~ A@2 B@2 C@2 D@2 E@2 ~@18 F@2 G H I@2 ~@2 J@3 K L@2 M N O@4 P@3 N Q@6 ~@6 R@2 S@2 T@2 U@2 V@4 F@2 G H W@2 ~@5 K L@2 M
  N O@4 P@3 N X@4 Y@2 Z AA AB@4 AC@3 AA AD@2 AE AF L@2 M N O@4 P@3 N AG@2 AH AF L@2 M N O@4 P@3 N AG@2 AH AF L@2 M N O@4
  P@3 N AG@2 AH AF L@2 M N O@4 P@3 N AG@2
>`.pickRestart({
  A: "[a3,c4,e4,g4]/2", B: "[d4@2 ~ c5, f4, a#3@35 ~@13, g3@29 ~@19, ~ [d4,a4]]/2", C: "[[a3,c4,e4]@47 ~]/2",
  D: "[[g3,d4]@2 [d4,f4,a4] [c#4,f4,a4,c5], a#3@3 ~]/2", E: "[[a3,c4,e4,g4]@43 ~@5]/2", F: "[d#4,g4]/2", G: "f#4 f4",
  H: "d#4 f4", I: "g#3/2", J: "[e4,g4]/3", K: "f4 g4", L: "f4/2", M: "f4@23 ~", N: "e4", O: "[c5@47 ~]/4", P: "f4/3",
  Q: "[e4@41 [e4,g4]@97 ~@6]/6", R: "[c4,e4]/2", S: "[d4,f4]/2", T: "[e4,g4]/2", U: "[[f4,a4]@3 g4]/2", V: "[f4,g#4]/4",
  W: "[g#3@3 ~]/2", X: "[e4@41 ~@25 a4@6 c5@17 ~ d5@6, ~@42 [e4,g4]@53 ~]/4", Y: "e5/2", Z: "c5@17 ~ d5@6",
  AA: "c5 a#4", AB: "[a4@6 ~@30 d5@12 c5@47 ~, ~@3 e5@44 ~]/4", AC: "[a4@2 d5@4 c5@5 d5]/3", AD: "a4/2", AE: "g4",
  AF: "f#4", AG: "e4/2", AH: "[e4,g4]",
})).s("gm_pad_poly").gain(0.22)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@25 A B C D E@2 F G H@2 ~ I@3 J ~ K@2 ~ L M@4 K@2 ~ N O@4 ~@15 P@7 Q@2 R@2 ~@2 S@4 K@2 ~ L M@4 K@2 ~ N O@4 ~@16 K@2 ~
  L M@4 K@2 ~ N T@4 K@2 ~ L M@4 K@2 ~ N T@4 K@2 ~ L M@4 K@2 ~ N T@4 K@2 ~ L M@4 K@2 ~ N U@2
>`.pickRestart({
  A: "c4", B: "c#4", C: "d#4", D: "f4@23 ~", E: "[[g#3,c4,d#4,g4]@47 ~]/2", F: "[d#4,f#4] [c#4,f4]",
  G: "[c4,d#4] [c#4,f4]", H: "[g#3@11 ~]/2", I: "[~@23 g4@18 a4@6 g4@11 ~@2 g4@6 e4@6, ~@23 a3@49, ~@23 c4@40 ~@9]/3",
  J: "c4 a3@3", K: "[c4,a4] [d4,a#4]", L: "~@3 e4",
  M: "[c5@36 ~ d4 ~ c4 d4 ~ c4 d4 c4 ~@3 c5@42 ~@6, ~@18 c4 ~@4 d4 ~@24, ~@47 c4@43 ~@6]/4", N: "~@3 c#4",
  O: "[c4@15 ~]/4", P: "[~@23 c4@24 c#4@24 d#4@24 f4@24 g4@47 ~@2, ~@119 d#4@44 ~@5]/7",
  Q: "[[d#4,f#4]@11 [c#4,f4]@12 [c4,d#4]@12 [c#4,f4]@13]/2", R: "[g#3@41 ~@7]/2", S: "[[e4,g4]@83 ~@13]/4",
  T: "[~@48 [e4,g4]@24 ~@11 a#4@12 ~, c4@15 ~, ~@72 f#4@23 ~]/4", U: "c4/2",
})).s("gm_string_ensemble_2").gain(0.24)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@85 A@2 B@2 ~@6 C@2 D@2 ~@28 C@2 D@2 ~@12 C@2 D@2 ~@12 C@2 D@2 ~@12 C@2 D@2 ~@4
>`.pickRestart({
  A: "[~@12 c6@6 a5@5 g5@18 ~ e5@6]/2", B: "[a4@12 e4@31 ~@5]/2", C: "[c5@47 ~]/2", D: "c5 d5",
})).s("gm_string_ensemble_1").gain(0.12).pan(0.3)

// chords · epiano2 · "E.PIANO 2"
const epiano2_2 = note(`<
  ~@28 A@3 ~@2 B C@2 D@3 ~@24 E F@2 ~@10 G@3 ~@3 H I@4 ~@18 J@2 K L M@2 N@2 O@4 P@2 ~ Q ~@60 R@2
>`.pickRestart({
  A: "[~@6 g5@2 d#5 a#4@2 c5@19 ~@6, ~@5 g#5@2 ~@29]/3", B: "~@4 [c4,c5] [c#4,c#5]", C: "[[g#4,g#5]@43 ~@5]/2",
  D: "[~@6 g5@2 d#5 a#4@2 c5@14 ~@11, ~@5 g#5@2 ~@29]/3", E: "~@8 c5 ~@2 a4", F: "[g4@13 ~@11]/2",
  G: "[~@10 g#5@2 g5@4 d#5@2 a#4@4 c5@41 ~@9]/3", H: "~@2 d#5@4 c5@2 c#5 c5@3",
  I: "[g#4@17 g#5 g5@2 d#5 a#4@2 c5@25]/4", J: "[[c4,e4,g4]@35 ~ [c4,e4,g4]@11 ~]/2", K: "[c4,d4,f4]@19 ~@5",
  L: "c5@11 ~ a#4@11 ~, [d#4,f4,g4]@23 ~", M: "[~@17 [a4,c5,e5,g5]@29 ~@2]/2", N: "[[g4,a4,c5,e5]@41 ~@7]/2",
  O: "[[c4,e4,g4]@38 ~@2 f5@2 g5@5 f5@23 ~@2 c6@6 ~@6 f5@6 g5@5 ~, ~@71 f5@10 ~@15, ~@6 g5 ~, ~@26 a#5@5 ~]/4", // C
  P: "[~@8 c5@7 ~, ~@15 f5@8 ~@25, ~@10 d5@3 ~@11]/2", Q: "~ [d4,f#4,a#4]", R: "[~@18 g5@29 ~, ~@12 e6@35 ~]/2",
})).s("gm_epiano2").gain(0.33).pan(0.2)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@16 A@3 ~@22 B ~ C ~ D ~@3 D ~ C ~@37 B ~ C ~ D ~@3 D ~ C ~@21 D ~ C ~ E ~@3 F ~ C ~ D ~@3 D ~ C ~ D ~@3 D ~ C ~ D
  ~@3 D ~ C ~ D ~@3 D ~ C ~ D ~@3 D ~ C ~ D ~@3 D ~ C ~@3
>`.pickRestart({
  A: "[~@6 g4@13 ~@5]/3", B: "~@4 c3@2 ~@2 d3@2 ~@2 f3@3 ~ d3 ~ g3@3 ~ g3@2",
  C: "~@4 c3@2 ~@2 d3@2 ~@2 f3@3 ~ d3@2 g3@3 ~ f3@2", D: "~@4 c3@2 ~@2 d3@2 ~@2 f3@3 ~ d3@2 g3@3 ~ g3@2",
  E: "~@4 c3@2 ~@2 d3@2 ~@2 f3@4 d3@2 g3@3 ~ g3@2", F: "~@2 c3@2 ~@4 d3@2 ~@2 f3@4 d3@2 g3@3 ~ g3@2",
})).s("gm_electric_guitar_muted").gain(0.31).pan(0.8)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<~ A@2 ~ B A@2 C D E@2 ~@5 F@2 ~@42 G@3 ~ H@2 ~@117>".pickRestart({
  A: "[e5@7 ~]/2", B: "~@12 a5@11 ~", C: "~@5 [d4,g4]@18 ~", D: "~@12 g4@9 f4@2 ~", E: "[e4@29 ~@19]/2",
  F: "[~@3 g4@37 ~@8, ~@3 c5@34 ~@11]/2", G: "[~@12 a5@37 ~@23]/3", H: "[~@4 [g4,c5]@35 ~@9]/2",
})).s("gm_electric_guitar_jazz").gain(0.08).pan(0.4)

// other · alto sax
const alto_sax = note(`<
  ~@106 A B C D E@2 F G@4 H I ~ J@2 ~@6 K L ~@4 M ~ N O ~@6 P Q ~@4 R S T U ~@6 V W ~ X Y ~@3 Z AA ~@13
>`.pickRestart({
  A: "~@7 f4@2 ~ g4@3 a4@5 a#4@4 ~ d5", B: "c5@17 g#4 a4@5 [g4,g#4]", C: "f4@12 ~@4 d4@3 ~ d4@3 ~",
  D: "c4@2 d4 c4 d4 c4 d4 [c4,d4] ~ [c4,d4] c4 d4 c4@9 ~@3", // Csus2
  E: "[~@4 d4 ~ e4 ~@2 c4 ~@2 [f3,g3]@3 f3 ~ g3 f3@3 f3@10 ~@17, ~@4 d4 ~@19]/2", F: "~@12 g4@3 ~ a4@3 c5@3 d5@2",
  G: "[~@12 d5@23 d#5 d5@5 ~ d5@11 ~ d5@6 c5@6 a#4@4 a4@8 a#4@6 f4@11 ~, ~ a4@15 ~@25 c5@2 ~@11 d#5 ~@41]/4",
  H: "~@18 c4 ~ d4 ~ f4 ~", I: "a#4@3 a4@2 ~@2 f4 d4 ~ f4@3 ~ d4@2 ~@2 d4@2 ~ c4@3", J: "[e5 f5@17 d5@3 ~ c5@4 ~@22]/2",
  K: "~@4 c5 d5@3 ~@2 c5@11 a#4@3", L: "a4@3 ~@5", M: "~@7 d4@2 f4 ~@3 f4@5 d4@2 ~@4",
  N: "~@6 c5@2 ~ d5 ~ d#5 ~ d5@4 ~ c5@3 a#4@3", O: "~ a4@10 ~@13", P: "~@6 c5 d5@3 ~@2 c5@6 a4@2 ~@4, ~@18 g4 ~@5",
  Q: "a4 g4 f4@5 ~@5", R: "~@18 c4@2 d4@2 ~ g4, ~@11 f4", S: "a4@2 ~ a4@3 f4@3 ~@15", T: "~@7 g5@5 g5@5 ~ f5@3 d5@3",
  U: "~ c5@5 a4@3 ~@15", V: "~@2 f5", W: "c5 ~@5", X: "~@6 d5@2 ~ d5@2 ~", Y: "c5@3 d5 ~@8",
  Z: "~@7 a#4@6 a4@3 a#4@3 a4@3 ~ g4, ~@11 g#4", AA: "f#4 f4@8 ~@15",
})).s("gm_alto_sax").gain(0.38).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B C ~ A B C ~ A B C ~ A B C ~ B@2 C ~ B@2 C ~ A@3 ~ B@4 A B@5 A B@19 C ~ B@2 C ~ B@2 C ~ B@2 C ~ B@7 A@2 B@5 A
  B@21 A B@34 D B@37 ~
>`.pickRestart({
  A: "x ~@10 x", B: "x", C: "x ~@8 x ~ x", D: "x!4",
})).gain(0.38)

// drums · snare
const snare = s("sd").struct("<A B@55 C B@31 C B@7 C B@6 D E B@15 C B@16 F B@14 E B@7 G B@17 C B@2 ~@2>".pickRestart({
  A: "~ x ~@4", B: "~ x", C: "~ x ~ x ~@2", D: "~@6 x ~@4 x", E: "~@2 x ~@3 x ~@2 x ~@2", F: "~@5 x!2 ~@5",
  G: "~ x ~@4 x ~@5",
})).gain(0.55)

// drums · hihat
const hihat = s("hh").struct(`<
  A B C B C@5 B C B C B@3 D B@2 E D B C B D B@2 C B C B@2 D C@4 B C B D B@2 C@4 B F C@3 G C@3 D C@2 B C@4 H C@5 I B D C
  G C B@2 C@3 B C@3 J C B D C B C@2 B C F D C K C@5 L C B@2 M G H C@6 B G B N C B C@7 B C@5 D B C B@3 C B D C@5 J C O
  C@3 J C@3 P Q C@2 B@2 C@2 K C@7 J C@4 R ~
>`.pickRestart({
  A: "~@2 x ~@2 x!2 ~@2 x ~ x", B: "x!4", C: "x ~@2 x ~@2 x ~@2 x ~ x", D: "x ~@2 x ~ x!2 ~@2 x ~ x",
  E: "x ~@2 x ~@2 x ~ x!2 ~@2", F: "x ~@2 x ~ x!2 ~@2 x ~@2", G: "x ~ x!2 ~@2 x ~@2 x ~ x",
  H: "x ~ x!2 ~ x!2 ~@2 x ~ x", I: "x ~ x!2 ~@2 x ~@2 x ~@2", J: "x ~@2 x ~@2 x ~ x!2 ~ x",
  K: "x ~@2 x ~@2 x ~ x ~@2 x", L: "x!7 ~ x!4", M: "x ~ x!2 ~ x!2 ~@2 x ~@2", N: "x ~ x!5 ~@2 x!3", O: "x ~@2 x!9",
  P: "x ~@2 x ~ x!2 ~ x!2 ~ x", Q: "x ~ x!2 ~ x!2 ~ x!2 ~ x", R: "x",
})).gain(0.33)

// drums · low tom
// … 59 more lines

More by Whitney Houston