Strudelify

Touch Me in the Morning

Diana Ross

KeyD majorTempo90 bpm
0:00/0:00
// Touch Me in the Morning — Diana Ross
// 90 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 66 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(90/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 · "untitled"
const piano = note(`<
  A B C D E F G H A I J K L M N O P Q R S T U V W X Y Z AA AB AC AD N AE AF AG AH AI O AJ O P AK AL AK AM AN AO AP AQ AR
  AS AT AU AV AW P AX AR AS AT AU AV AW P AX ~
>`.pickRestart({
  A: "[g3,b3,d4]@3 [g3,b3,d4]@5", B: "[e4,f#4,a4]@3 [c#4,f#4,a4]", C: "[b3,d4,a4]@2 [b3,d4,g4]!2",
  D: "[e4,f#4,a4]@3 [e4,f#4,a4]@3 [a3,d4,f#4]@2", E: "[a3,b3,d4] [b3,d4,g4]", F: "[f#3,a3,e4]@2 [f#3,a3,d4] [c4,e4,g4]",
  G: "[b3,d4,g4]@2 [d4,e4,g4] [g3,b3,d4]", H: "[c4,e4,g4]@3 [g3,c4,e4]@5",
  I: "[a3,d4,f#4]@3 [f#3,a3,d4] [c#4,f#4,a4]@2 [f#3,a3,c4]@2", J: "[f#3,b3,d4]@3 [f#3,b3,d4] [g3,b3,d4]@3 [b3,d4,g4]",
  K: "[a3,d4,f#4]@3 [f#3,a3,d4] [c#4,f#4,a4]@2 [c4,f#4,a4]@2", L: "[f#3,b3,d4] [b3,d4,e4,g4]",
  M: "[c#4,e4,a4]@3 [c#4,e4,a4]@5", N: "[g3,c4,e4]", O: "[a3,c#4,e4]", P: "[c4,e4,g4]", Q: "[f#3,b3,d4] [a3,c#4,e4]",
  R: "[a3,c#4,e4] [a3,d4,f#4]", S: "[b3,d4,f#4]@3 [b3,d4,f#4] [c#4,e4,a4]@4",
  T: "[c#4,e4,a4]@3 [c#4,e4,a4] [f#3,a3,d4]@4", U: "[b3,d4,g4]@2 [a#3,c#4,e4]@2 [b3,d4,f#4]@3 [b3,d4,f#4]",
  V: "[g3,b3,d4]@2 [c#4,e4,a#4]@2 [b3,d4,f#4]@3 [b3,d4,f#4]", W: "[g3,b3,d4]@3 [g3,b3,d4] [a3,c#4,e4]@4",
  X: "[b3,d4,g4]@3 [g3,b3,d4] [g3,b3,d4]@4", Y: "[e4,f#4,a4]@3 [f#3,a3,c#4]",
  Z: "[a3,b3,d4]@3 [a3,b3,d4] [b3,d4,g4]@2 [b3,d4,g4]@2", AA: "[a3,e4,f#4]@3 [d4,f#4,a4]", AB: "[a3,b3,d4] [g3,b3,d4]",
  AC: "[a3,e4,f#4]@2 [a3,d4,f#4] [g3,c4,e4]", AD: "[b3,d4,g4]@2 [d4,e4,g4] [b3,d4,g4]", AE: "[g3,b3,d4]",
  AF: "[a3,d4,f#4]@3 [d4,f#4,a4] [c#4,f#4,a4]@2 [f#3,a3,c4]@2", AG: "[f#3,b3,d4]@3 [b3,d4,f#4] [g3,b3,d4]@3 [b3,d4,g4]",
  AH: "[d4,f#4,a4]@2 [c#4,f#4,a4] [a3,c4,f#4]", AI: "[f#3,b3,d4]@3 [f#3,b3,d4] [b3,d4,e4,g4]@4",
  AJ: "[g3,c4,e4]@3 [c4,e4,g4]@5", AK: "[b3,d4,f#4] [a3,c#4,e4]", AL: "[a3,c#4,e4] [d4,f#4,a4]",
  AM: "[c#4,e4,a4] [a3,d4,f#4]", AN: "[g3,b3,d4]@2 [a#3,c#4,e4]@2 [b3,d4,f#4]@3 [b3,d4,f#4]",
  AO: "[g3,b3,d4]@2 [a#3,c#4,e4]@2 [f#3,b3,d4]@3 [b3,d4,f#4]", AP: "[b3,d4,g4]@3 [g3,b3,d4] [a3,c#4,e4]@4",
  AQ: "[g3,b3,d4]!2", AR: "[f#3,a3,e4] [f#3,a3,d4] [f#3,a3,c#4] [f#3,a3,c4]",
  AS: "[f#3,b3,d4]@3 [b3,d4,f#4] [b3,d4,g4]@2 [g3,b3,d4]@2", AT: "[e4,f#4,a4] [a3,d4,f#4] [c#4,f#4,a4] [f#3,a3,c4]",
  AU: "[f#3,b3,d4]@2 [b3,d4,g4]!2", AV: "[e4,f#4,a4] [f#3,a3,d4] [f#3,a3,c#4] [a3,c4,f#4]",
  AW: "[b3,d4,f#4] [g3,b3,d4,e4]", AX: "[g3,b3,d4]@3 [b3,d4,g4]@5",
})).s("gm_piano").gain(0.24)

// other · electric guitar clean
const electric_guitar_clean = note(`<
  A B C B D E F G A H I J K L M N O K P Q R S T K U V C B U B F M W B X B Y N Z AA M AB AC AD AE AF S K AG AH AI AH AI
  AH AJ G A AH AI AH AI ~@5
>`.pickRestart({
  A: "a3@3 a3 a3@4", B: "d4@3 d4 d4@2 d4@2", C: "g3@3 g3 g3@2 a3@2", D: "g3!2 a3 b3", E: "d4 c4 d4!2", F: "g3 a3 c4 g3",
  G: "c4@3 c4 c4@2 g3@2", H: "d4 a3 d4!2", I: "g3@3 g3 e3@3 a3", J: "d4 b3 d4!2", K: "g3@3 g3 g3@3 g3",
  L: "c#4@3 c#4 a3@2 b3@2", M: "c4@3 c4 c4@3 c4", N: "c#4@3 c#4 c#4@3 c#4", O: "c4@3 c4 c4@2 e3@2",
  P: "f#3@2 a3@2 b3@3 b3", Q: "g3@3 g3 g3@2 e3@2", R: "f#3 a3 b3 f#3", S: "g3@2 f#3@2 b3@3 a3",
  T: "g3@2 f#3@2 b3@2 b3 a3", U: "g3@3 g3 a3@2 a3@2", V: "d4@3 d4 b3@2 d4@2", W: "a3@3 a3 a3@2 b3@2",
  X: "g3@2 f#3@2 e3@3 a3", Y: "g3@3 g3 g3@2 g3@2", Z: "c4@3 c4 a3@2 b3@2", AA: "c#4@3 c#4 c#4@4",
  AB: "g3@2 f#3@2 g3@3 g3", AC: "f#3@3 f#3 b3@3 b3", AD: "g3@3 g3 g3@4", AE: "f#3 a3 b3@2",
  AF: "g3@2 f#3@2 b3@2 f#3 a3", AG: "g3@3 g3 a3@2 b3@2", AH: "d4!4", AI: "g3@3 g3 e3@2 a3@2", AJ: "g3 f#3 g3@2",
})).s("gm_electric_guitar_clean").gain(0.36)

// other · electric guitar clean · soft notes
const electric_guitar_clean_2 = note("<~@61 [d4!4] [g3 f#3 g3@2] [c4@3 c4 c4@2 g3@2] [a3@3 a3 a3@4] ~>")
  .s("gm_electric_guitar_clean").gain(0.12)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B C B D E F G H I J I K L M L M N O P O Q@2 N R S C B D E F M A T U T V W M L M N O N O Q@2 N D T D T X T V M H T D
  T X T V M Y ~
>`.pickRestart({
  A: "[e2,b2,e3]@2 [e2,b2,e3] [e2,b2,e3]@3 [e2,b2,e3]@2", B: "[d3,a3,d4]@2 [d3,a3,d4] [d3,a3,d4]@3 [d3,a3,d4]@2",
  C: "[g2,d3,g3]@2 [g2,d3,g3]!2 [g2,d3,g3]@2 [e2,b2,e3]@2", D: "[g2,d3,g3]@2 [g2,d3,g3]!2 [e2,b2,e3]@2 [e2,b2,e3]@2",
  E: "[d3,a3,d4]@2 [d3,a3,d4]!2 [d3,a3,d4]@2 [c3,g3,c4]@2", F: "[g2,d3,g3]@2 [g2,d3,g3]!2 [c3,g3,c4]@2 [g2,d3,g3]@2",
  G: "[c3,g3,c4] [c3,g3,c4]@3", H: "[e2,b2,e3] [e2,b2,e3]@3", I: "[d3,a3,d4]!4",
  J: "[g2,d3,g3]@2 [g2,d3,g3]!2 [e2,b2,e3]@2 [e2,b2,e3]!2", K: "[g2,d3,g3]!2 [g2,d3,g3]@2",
  L: "[a2,e3,a3]@2 [a2,e3,a3] [a2,e3,a3]@3 [a2,e3,a3]@2", M: "[c3,g3,c4]@2 [c3,g3,c4] [c3,g3,c4]@3 [c3,g3,c4]@2",
  N: "[g2,d3,g3]@2 [g2,d3,g3]!2 [a2,e3,a3]@2 [a2,e3,a3]@2", // G5 A5
  O: "[f#2,c#3,f#3]@2 [f#2,c#3,f#3]!2 [b2,f#3,b3]@2 [b2,f#3,b3]@2", P: "[g2,d3,g3]!2 [a2,e3,a3]@2",
  Q: "[g2,d3,g3]@2 [f#2,c#3,f#3]!2 [b2,f#3,b3]@2 [b2,f#3,b3]!2", R: "[g2,d3,g3]!2 [e2,b2,e3]@2",
  S: "[d3,a3,d4] [d3,a3,d4]@2 [d3,a3,d4]", T: "[d3,a3,d4]@2 [d3,a3,d4]!2 [d3,a3,d4]@2 [d3,a3,d4]@2",
  U: "[g2,d3,g3]@2 [g2,d3,g3]@2 [e2,b2,e3]@3 [e2,b2,e3]", V: "[g2,d3,g3]@2 [g2,d3,g3]!2 [g2,d3,g3]@2 [g2,d3,g3]@2",
  W: "[a2,e3,a3] [a2,e3,a3]@3", X: "[g2,d3,g3]!2 [e2,b2,e3]!2", Y: "[e2,b2,e3] ~@3",
})).s("gm_acoustic_guitar_steel").gain(0.3).pan(0.3)

// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  A B C D E F G H I J K J L M H M H N O P Q R S T U B C D E F V H I J W J X M H M H P Q N Q R Y T Z AA AB AA AC AD AE H
  A AA AB AA AC AD AE H A ~
>`.pickRestart({
  A: "[g3,b3,d4]@3 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]", B: "[e3,f#3,a3]@3 [e3,f#3,a3]@2 [e3,f#3,a3] [f#3,a3,c#4]@2",
  C: "[d3,a3,b3]@3 [d3,a3,b3] [d3,g3,b3]@2 [d3,g3,b3]@2", D: "[e3,f#3,a3]@3 [e3,f#3,a3]@2 [e3,f#3,a3] [d3,f#3,a3]@2",
  E: "[a3,b3,d4]@3 [a3,b3,d4] [d3,g3,b3]@3 [d3,g3,b3]", F: "[e3,f#3,a3]@3 [e3,f#3,a3] [f#3,a3,d4]@2 [e3,g3,c4]@2",
  G: "[d3,g3,b3]@3 [d3,g3,b3] [d3,e3,g3]@2 [g3,b3,d4]@2", H: "[e3,g3,c4]@3 [e3,g3,c4]@2 [e3,g3,c4]@2 [e3,g3,c4]",
  I: "[d3,g3,b3]@3 [d3,g3,b3]@2 [d3,g3,b3]@2 [d3,g3,b3]", J: "[f#3,a3,d4]@3 [f#3,a3,d4] [f#3,a3,c#4]@2 [f#3,a3,c4]@2",
  K: "[d3,f#3,b3]@3 [d3,f#3,b3] [g3,b3,d4]@3 [d3,g3,b3]", L: "[f#3,b3,d4]@3 [f#3,b3,d4] [e3,g3,b3,d4]@3 [e3,g3,b3,d4]",
  M: "[e3,a3,c#4]@3 [e3,a3,c#4]@2 [e3,a3,c#4]@2 [e3,a3,c#4]", N: "[f#3,b3,d4]@3 [f#3,b3,d4] [e3,a3,c#4]@3 [e3,a3,c#4]",
  O: "[e3,a3,c#4]@3 [e3,a3,c#4] [f#3,a3,d4]@3 [f#3,a3,d4]", P: "[d3,f#3,b3]@3 [d3,f#3,b3] [e3,a3,c#4]@3 [e3,a3,c#4]",
  Q: "[e3,a3,c#4]@3 [e3,a3,c#4] [d3,f#3,a3]@3 [d3,f#3,a3]", R: "[d3,g3,b3]@2 [e3,a#3,c#4]@2 [d3,f#3,b3]@3 [f#3,b3,d4]",
  S: "[d3,g3,b3]@2 [e3,a#3,c#4]@2 [d3,f#3,b3]@3 [d3,f#3,b3]", T: "[d3,g3,b3]@3 [d3,g3,b3] [e3,a3,c#4]@3 [e3,a3,c#4]",
  U: "[g3,b3,d4]@3 [g3,b3,d4] [d3,g3,b3]@3 [d3,g3,b3]", V: "[d3,g3,b3]@3 [d3,g3,b3] [d3,e3,g3]@2 [d3,g3,b3]@2",
  W: "[f#3,b3,d4]@3 [f#3,b3,d4] [g3,b3,d4]@3 [g3,b3,d4]", X: "[d3,f#3,b3]@3 [d3,f#3,b3] [e3,g3,b3,d4]@3 [e3,g3,b3,d4]",
  Y: "[d3,g3,b3]@2 [e3,a#3,c#4]@2 [f#3,b3,d4]@3 [d3,f#3,b3]", Z: "[d3,g3,b3]@3 [d3,g3,b3] [d3,g3,b3]@3 [d3,g3,b3]",
  AA: "[e3,f#3,a3] [f#3,a3,d4] [f#3,a3,c#4] [f#3,a3,c4]", AB: "[d3,f#3,b3]@3 [d3,f#3,b3] [g3,b3,d4]@2 [d3,g3,b3]@2",
  AC: "[f#3,b3,d4]@3 [f#3,b3,d4] [d3,g3,b3]@2 [d3,g3,b3]@2", AD: "[e3,f#3,a3] [d3,f#3,a3] [f#3,a3,c#4] [f#3,a3,c4]",
  AE: "[f#3,b3,d4]@3 [f#3,b3,d4] [d3,e3,g3,b3]@3 [d3,e3,g3,b3]", // Bm Em7
})).s("gm_acoustic_guitar_steel").gain(0.3).pan(0.3)

// chords · piano
const piano_2 = note(`<
  A B C D E F G H A I J K J L M N@2 O P Q R S T U V B C D E F G H A I J K J L M N@2 O P Q R S T W X Y Z Y Z Y AA AB AC Y
  Z Y Z AD ~@4
>`.pickRestart({
  A: "[g3,b3,d4,e4]!4", B: "[e4,f#4,a4]!2 [d4,f#4,a4] [c#4,f#4,a4]", C: "[a3,b3,d4]!2 [g3,b3,d4]!2",
  D: "[e4,f#4,a4]!3 [d4,f#4,a4]", E: "[c#4,f#4] [b3,d4] [d4,e4,g4,b4]!2, a4 ~",
  F: "[e4,f#4,a4]@4 [e4,f#4,a4]@4 [d4,f#4,a4]@4 [g3,c4] e4@3", G: "[g3,b3,d4]@3 [g3,b3,d4] [b3,c#4,d4]@2 [g3,b3,d4]@2",
  H: "[g3,c4,e4] [c4,e4,g4]!3", I: "~@4 [a3,d4,f#4] f#4!2 [a3,c#4,f#4,a4]@2 f#4@2 [a3,c4,f#4]@2 f#4!3",
  J: "[b3,d4,f#4]@2 d4 b3 [g3,b3,d4]@2 b3 [g3,b3,d4]@3 e4@4 [g3,b3,d4]@2", // Bm G
  K: "~@2 a3@2 [a3,d4,f#4] f#4!2 [a3,c#4,f#4,a4]@2 f#4@2 [a3,c4,f#4]@2 f#4!3", // D F#m F#dim
  L: "[a3,c#4,e4]@5 e4!2 [a3,c#4,e4]@3 a4@2 [a3,c#4,e4,a4] e4@3", // A
  M: "[a3,c4,e4] g4!2 g4@3 f#4 [g3,c4,f#4]@3 e4 e4@2 d4 e4@2", // Am C
  N: "[~@2 [e3,a#3,c#4] d4 [a#3,c#4,e4]@2 f#4 [a#3,c#4,e4,g4]@3 b4 [c#4,e4,a4]@2 e4 f#4 ~ [g3,c4,e4]@2 g4!2 [g3,c4,e4,g4]@2 f#4 [g3,c4,f#4]@3 e4 e4@2 d4 e4@2, ~@15 g4@3 ~@14]/2", // A#dim A C
  O: "~@2 d4@2 [d4,g4,b4] d5 ~ [e4,a4,c#5]@2 b4 ~ [c#4,e4,a4]@3 f#4 g4", // G A
  P: "[c#4,e4,f#4,a4]@4 [c#4,f#4,a4]@2 c#5 [d4,f#4,b4]@5 [d4,f#4,b4,d5]@2 [e4,a4,c#5,e5]@2", // F#m7 F#m Bm A
  Q: "[f#4,b4,d5,f#5]@2 d4@2 [g4,b4,e5] d5 ~ [e4,a4,c#5]@2 b4 ~ [c#4,e4,a4]@3 f#4 g4", // Bm Em A
  R: "[c#4,e4,f#4,a4]@4 [c#4,f#4,a4]@2 e5 [f#4,b4,d5]@5 [d4,f#4,b4,d5]@2 [c#4,e4,a4,c#5]@2", // F#m7 F#m Bm A
  S: "[d4,g4,b4]@2 b4@2 [e4,a#4,c#5] b4 c#5 [f#4,b4,d5]@2 f#5@2 b5 [b4,d5,f#5] e5 [f#4,b4,d5] c#5", // G A#dim Bm
  T: "[d4,g4,b4]@2 b4 [e4,a#4,c#5]@2 b4 c#5 [f#4,b4,d5]@2 f#5@2 b5 [b4,d5,f#5] e5 [f#4,b4,d5] c#5", // G A#dim Bm
  U: "~@2 b4@2 [d4,g4,b4]@3 b4 [e4,a4,c#5]!2 c#5@6", // G A
  V: "~@2 d5!2 [g4,b4,d5]@2 d5!2 [d4,g4,b4]@2 a4@2 [d4,e4,g4]@2 b4@2", // G Em7
  W: "~@4 [d4,g4,b4]@2 b4@2 ~ c#5 [e4,a4,c#5] c#5 [e4,a4,c#5]@4", // G A
  X: "[g4,b4,d5]@2 d5@2 [g4,b4,d5] d5 d5@2 [d4,e4,g4,b4]@2 a4@2 [d4,e4,g4]@2 b4@2", // G Em7
  Y: "[e4,f#4,a4]@4 [d4,f#4,a4]@3 [d4,f#4,a4]@4 [c4,f#4,a4]@3 [c4,f#4,a4]@2", // F#m7 D F#dim
  Z: "[b3,c#4,d4,f#4]@4 [f#3,b3,d4]@3 [g3,b3,d4]@5 [d4,e4,g4,b4]@4", // Bm G Em7
  AA: "[b3,c#4,d4,f#4]@4 [f#3,b3,d4]@3 [g3,b3,d4]@5 [g3,b3,d4,e4]@4", // Bm G Em7
  AB: "[g3,c4,e4]@4 [g3,c4,e4]@3 [g3,b3,e4]@4 [g3,c4,e4]@3 [g3,c4,e4]@2", // C Em C
  AC: "[g3,b3,d4,e4]@2 [g3,b3,d4,e4]!2 [d4,e4,g4,b4] a4 [d4,e4,g4,b4] b4", AD: "[e4,f#4,a4] ~@3",
})).s("gm_piano").gain(0.48).pan(0.7)

// chords · piano · soft notes · D F#dim Bm G Em7 C Em C …
const piano_soft = note(`<
  ~@61
  [~@4 [d4,f#4,a4]@3 [d4,f#4,a4]@4 [c4,f#4,a4]@3 [c4,f#4,a4]@2]
  [[b3,c#4,d4,f#4]@4 [f#3,b3,d4]@3 [g3,b3,d4]@5 [g3,b3,d4,e4]@4]
  [[g3,c4,e4]@4 [g3,c4,e4]@3 [g3,b3,e4]@4 [g3,c4,e4]@3 [g3,c4,e4]@2]
  [[g3,b3,d4,e4]@2 [g3,b3,d4,e4]!2 [d4,e4,g4,b4] a4 [d4,e4,g4,b4] b4]
  ~
>`).s("gm_piano").gain(0.12).pan(0.7)

// bass · electric bass pick
const bass = note(`<
  A B C D E F G H I J K L M N O N O P Q P Q R@2 P S B C D E F G H I J K L M N O N O P Q P Q R@2 P S T U V U V W X Y T U
  V U Z ~@4
>`.pickRestart({
  A: "a2@7 a2", B: "d2@7 d2", C: "g2@8 g2@3 g2 a2@3 a2", D: "d2@11 d2 d3@4", E: "g2@6 g2@2 a2@3 a2 a1@3 a1",
  F: "d2@11 d2 d3@3 d3", G: "g2@3 g2 g2@2 g2@2", H: "c3@4 c3@3 c3", I: "a2!8", J: "d2 b1 a1 d2@5 d2@4 d2@3 d2",
  K: "g2@3 g2 g2@4 e2@3 e2 a2@2 a2@2", L: "d2@4 d2@4 d2@4 d2@3 d2", M: "g2@3 g2 g2@4 g2@3 g2 g2@3 d2",
  N: "c#2@4 c#2@3 c#2 c#2@4 c#2@3 c#2", O: "c2@4 c2@3 g1 c2@4 c2@3 c2", P: "g2@3 g2 g2@3 g2 g2@3 g2 g2@3 g2",
  Q: "f#2@3 f#2 f#2@4 b2@3 b2 [b2,f#3,a3]@2 [a2,f#3,a3]@2", R: "g2@2 g2@2 f#2 f#2@2 b2@4 b2 b2@2 a2@2",
  S: "g2@3 g2 g2@3 g2 a2@3 a2 a2@4", T: "d3@3 d3 d3@4 d3@4 d3@3 d3", U: "g2@3 g2 g2@4 e2@3 e2 a2@3 a1",
  V: "d2@3 d2 d2@4 d2@4 d2@3 d2", W: "g2@3 g2 g2@4 g2@3 g2 g2@3 g2", X: "c3@3 c3 c3@4 c3@3 c3 c3@3 c3", Y: "a2!16",
  Z: "d2@3 ~@13",
})).s("gm_electric_bass_pick").gain(0.5).pan(0.3)

// bass · electric bass pick · soft notes
const bass_soft = note(`<
  ~@61
  [~@3 d2 d2@4 d2@4 d2@3 d2]
  [g2@3 g2 g2@4 g2@3 g2 g2@3 g2]
  [c3@3 c3 c3@4 c3@3 c3 c3@3 c3]
  [a2!16]
  ~
>`).s("gm_electric_bass_pick").gain(0.12).pan(0.3)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  A B C D E B F G H I J K J L M N O P Q R S T U V W B C D E B F G H I J K J L M N O P Q R S T U X Y B Z D AA B F H AA B
  Z D AA B F H AA ~
>`.pickRestart({
  A: "~@4 a5!2 g5 b5", B: "a5 d5", C: "~@8 d6@2 c#6@2 b5 c#6@3", D: "a5@3 ~", E: "~@8 b5@2 a5@2 g5 b5@3",
  F: "~@3 d5 g5 f#5 e5 d5", G: "e5@14 d5 f#5", H: "e5@3 ~", I: "~@4 f#5!3 a5@2 f#5@2 f#5@2 f#5!3",
  J: "f#5@2 d5 b4 d5@2 b4 d5@3 e5@6", K: "~@2 a4@2 f#5!3 a5@2 f#5@2 f#5@2 f#5!3", L: "~@4 e5!3 e5@3 a5@2 a5 e5@3",
  M: "~ g5!2 g5@3 f#5 f#5@3 e5 e5@2 d5 e5@2", N: "~@2 c#5 d5 e5@2 f#5 g5@3 b5 a5@2 e5 f#5 g5",
  O: "~@2 g5!2 g5@2 f#5 f#5@3 e5 e5@2 d5 e5@2", P: "~@2 d5@2 b5 d6 ~ c#6@2 b5 ~ a5@3 f#5 g5", Q: "a5@4 a5@2 c#6 b5@9",
  R: "~@2 d5@2 e6 d6 ~ c#6@2 b5 ~ a5@3 f#5 g5", S: "a5@4 a5@2 e6 d6@9",
  T: "b5@2 b5@2 c#6 b5 c#6 d6@2 f#6@2 b6 f#6 e6 d6 c#6", U: "b5@2 b5 c#6@2 b5 c#6 d6@2 f#6@2 b6 f#6 e6 d6 c#6",
  V: "~@2 b5@2 b5@3 b5 c#6!2 c#6@6", W: "~@2 d6!2 d6@2 d6!2 b5@2 a5@2 g5@2 b5@2", X: "~@4 b5@2 b5@2 ~ c#6!3 c#6@4",
  Y: "d6@2 d6@2 d6!2 d6@2 b5@2 a5@2 g5@2 b5@2", Z: "~@4 d6 c#6 b5 c#6", AA: "~@4 b5 a5 g5 b5",
})).s("gm_string_ensemble_2").gain(0.48).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  A@2 B A@3 B C D@4 A B@2 A D B A@2 D@2 B@4 A B D A B E A B A C B@2 D A B@3 A@6 B C B A D B A F B C@3 G ~@4
>`.pickRestart({
  A: "x!2", B: "x ~@2 x!2 ~@3", C: "x ~@2 x!2 ~@2 x", D: "x ~@3 x ~@2 x", E: "~ x ~ x ~@2 x!2", F: "x ~@2 x!3 ~@2",
  G: "x",
})).gain(0.36)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  A B A@2 B@2 A ~@2 B ~@2 C ~@2 A B A@2 C B ~@2 A ~ A C ~@2 A@2 ~ C ~ A ~ A ~ B C ~@3 B@2 A C B C ~@2 A C ~@2 B ~@5 D
  E@2 F ~
>`.pickRestart({
  A: "~@7 x", B: "~@3 x ~@4", C: "~@3 x ~@3 x", D: "~@4 x ~@2 x", E: "x ~@2 x!2 ~@3", F: "x ~@2 x!3 ~@2",
})).gain(0.2)

// drums · snare
const snare = s("sd").struct("<A@3 B A@3 B A@19 C A@3 D A@29 ~@5>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@2 x ~@2 x ~@2", D: "x!2 ~@2 x ~@3 x!4 ~ x ~ x",
})).gain(0.36)
// … 25 more lines

More by Diana Ross