Strudelify

Dream Lover

Bobby Darin

KeyC majorTempo130 bpm
0:00/0:00
// Dream Lover — Darin Bobby
// 130 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 87 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C D E F G@2 F@2 H@2 I J K L M N E O E F G@2 F@2 H@2 I J K L M N E P Q R S T U@2 V O E F G@2 F@2 H@2 I J K L M N E
  W X Y Z@2 Y@2 AA@2 AB AC AD AE AF AG AH AI AJ AK AH AI AJ AK AJ AK AL@3
>`.pickRestart({
  A: "c2@7 ~ e2@4 g2@3 ~", B: "a2@8 c3@4 e3@3 ~", C: "c2@7 ~ e2@3 ~ g2@3 ~", D: "a2@4 c3@2 e3 ~", E: "c2@8 e2@4 g2@3 ~",
  F: "c2@8 e2@3 ~ g2@3 ~", G: "a1@8 c2@4 e2@3 ~", H: "a1@8 c2@3 ~ e2@3 ~", I: "~@4 c2 ~ c2@2 ~@4 c2@3 ~",
  J: "~@4 g1 ~ g1@2 ~@4 g1@3 ~", K: "~@4 c2 ~ c2@2 ~@4 c2@2 ~@2", L: "~@4 f1 ~ f1@2 ~@4 f1@2 ~@2",
  M: "c2@7 ~ a2@4 e2@3 ~", N: "f2@7 ~ g1@3 ~ b1@3 ~", O: "g2 ~ g2 ~ f2 ~ f2 ~ e2 ~ e2 ~ d2 ~ d2 ~",
  P: "c2 ~ c2 ~ a#1 ~ a#1 ~ a1 ~ a1 ~ g1 ~ g1 ~", Q: "f2 ~@5 a2@6 c3@3 ~", R: "f2@2 ~@4 a2@5 ~ c3@2 ~@2",
  S: "c2@2 ~@4 e2@5 ~ g2@3 ~", T: "c2@2 ~@4 e2@5 ~ g2@2 ~@2", U: "d2@2 ~@4 f#2@5 ~ a2@2 ~@2", V: "g2 ~@7",
  W: "g#2@3 ~ f#2 ~ f#2 ~ f2 ~ f2 ~ d#2 ~ d#2 ~", X: "c#2@8 f2@4 g#2@3 ~", Y: "c#2@8 f2@3 ~ g#2@3 ~",
  Z: "a#1@8 c#2@4 f2@3 ~", AA: "a#1@8 c#2@3 ~ f2@3 ~", AB: "~@4 c#2 ~ c#2@2 ~@4 c#2@3 ~",
  AC: "~@4 g#1 ~ g#1@2 ~@4 g#1@3 ~", AD: "~@4 c#2 ~ c#2@2 ~@4 c#2@2 ~@2", AE: "~@4 f#1 ~ f#1@2 ~@4 f#1@2 ~@2",
  AF: "c#2@7 ~ a#2@4 f2@3 ~", AG: "f#2@7 ~ g#1@3 ~ c2@3 ~", AH: "c#2@7 ~ f2@4 g#2@3 ~", AI: "a#2@8 c#3@4 f3@3 ~",
  AJ: "c#2@7 ~ f2@3 ~ g#2@3 ~", AK: "a#2@4 c#3@2 f3 ~", AL: "[c#2@11 ~@5]/3",
})).s("gm_acoustic_bass").gain(0.54)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A B A B C@2 D@2 E@2 F@2 G H I J K L M N C@2 D@2 E@2 F@2 G H I J K L M O P@2 Q@2 R@2 S T C@2 D@2 E@2 F@2 G H I J K L M
  U V@2 W@2 X@2 Y@2 Z AA AB AC AD AE AF AG AF AG AF AG AF AG AF AG AH@3
>`.pickRestart({
  A: "[c3,g3,c4,e4,g4]@13 ~@3", B: "[a2,a3,c4,e4]@3 ~", C: "[[c3,g3,c4,e4,g4]@5 ~@3]/2", D: "[[a2,a3,c4,e4]@5 ~@3]/2",
  E: "[[c3,g3,c4,e4,g4]@21 ~@11]/2", F: "[[a2,a3,c4,e4]@3 ~]/2", G: "~@4 [c4,e4,g4] ~ [c4,e4,g4] ~@5 [c4,e4,g4] ~@3",
  H: "~@4 [g4,b4,d5] ~ [g4,b4,d5] ~@5 [g4,b4,d5] ~@3", I: "~@4 [g4,c5,e5] ~ [g4,c5,e5] ~@5 [g4,c5,e5] ~@3",
  J: "~@4 [f4,a4,c5] ~ [f4,a4,c5] ~@5 [f4,a4,c5] ~@3", K: "[c4,e4,g4]@7 ~ [a3,c4,e4]@6 ~@2",
  L: "[f3,a3,c4]@7 ~ [g3,b3,d4]@6 ~@2", M: "[c3,g3,c4,e4]@3 ~",
  N: "[f5,b5,d6,g6] ~ [f5,b5,d6,g6] ~ [f5,b5,d6,g6] ~ [f5,b5,d6,g6] ~ [f5,b5,d6,g6] ~ [f5,b5,d6,g6] ~ [f5,b5,d6,g6] ~ [f5,b5,d6,g6] ~", // G7
  O: "c4 ~ [c4,c5,g5,a#5,e6,g6] ~ [a#3,c5,g5,a#5,e6,g6] ~ [a#3,c5,g5,a#5,e6,g6] ~ [a3,c5,g5,a#5,e6,g6] ~ [a3,c5,g5,a#5,e6,g6] ~ [g3,c5,g5,a#5,e6,g6] ~ [g3,c5,g5,a#5,e6,g6] ~", // C7 Am7 C7
  P: "[f4@18 ~@10 c5 ~@3, [a4,c5]@22 f4@7 ~@3, f3@17 ~ f3@11 ~@3, c4@10 ~@10 c4@9 ~@3, ~@12 a4@3 ~]/2", // Am
  Q: "[[c4,e4,g4]@21 ~ [c4,e4,g4] ~@3 [c4,e4,g4] ~@5]/2", // C
  R: "[[d4,f#4,a4]@20 ~@2 [c4,f#4,a4] ~@3 [c4,f#4,a4] ~@5, d3@9 ~@7, a3 ~]/2", S: "[g2,g3,b3,d4] ~@15",
  T: "[g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~", // G
  U: "~@2 [c4,d#4,f#4,g#4] ~ [g#2,g#3,c4,d#4,f#4,g#4] ~ [g#2,d#3,g#3,c4,d#4,f#4,g#4] ~ [g#2,d#3,g#3,c4,d#4,f#4,g#4] ~ [g#2,d#3,g#3,c4,d#4,f#4,g#4] ~ [g#2,d#3,g#3,c4,d#4,f#4,g#4] ~ [g#2,d#3,g#3,c4,d#4,f#4,g#4] ~", // G#7
  V: "[[c#3,g#3,c#4,f4,g#4]@5 ~@3]/2", W: "[[a#2,a#3,c#4,f4]@5 ~@3]/2", X: "[[c#3,g#3,c#4,f4,g#4]@21 ~@11]/2",
  Y: "[[a#2,a#3,c#4,f4]@3 ~]/2", Z: "~@4 [c#4,f4,g#4] ~ [c#4,f4,g#4] ~@5 [c#4,f4,g#4] ~@3",
  AA: "~@4 [g#4,c5,d#5] ~ [g#4,c5,d#5] ~@5 [g#4,c5,d#5] ~@3", // G#
  AB: "~@4 [g#4,c#5,f5] ~ [g#4,c#5,f5] ~@5 [g#4,c#5,f5] ~@3", // C#
  AC: "~@4 [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~@5 [f#4,a#4,c#5] ~@3", AD: "[c#4,f4,g#4]@7 ~ [a#3,c#4,f4]@6 ~@2",
  AE: "[f#3,a#3,c#4]@7 ~ [g#3,c4,d#4]@6 ~@2", AF: "[c#3,g#3,c#4,f4,g#4]@13 ~@3", AG: "[a#2,a#3,c#4,f4]@3 ~",
  AH: "[[c#3,c#4,f4,g#4]@11 ~@5]/3", // C#
})).s("gm_piano").gain(0.5)

// other · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  A B C B A C D@2 E@2 F G H I H J K L M N A C D@2 E@2 F G H I H J K L M O P Q R S T U V W A C D@2 E@2 F G H I H J K L M
  X Y Z AA@2 AB@2 AC AD AE AF AE AG AH AI Y AJ Z AJ Y AJ Z AJ Z AJ AK@2 ~
>`.pickRestart({
  A: "g4 ~ g4 c5 e5 ~ c5 ~ g4 ~ c5 ~ e5 ~ c5 ~", B: "a4 ~ a4 c5 e5 ~ c5 ~ a4 ~ e5 ~ c5 ~ a4 ~",
  C: "g4 ~ g4 c5 e5 ~ c5 ~ g4 ~ e5 ~ c5 ~ g4 ~", D: "a4 ~ a4 c5 e5 ~ c5 ~ e5 ~ c5 ~ a4 ~ c5 ~",
  E: "g4 ~ g4 c5 e5 ~ c5 ~ e5 ~ c5 ~ g4 ~ c5 ~", F: "a4 ~ a4 c5 e5 ~ c5 ~ a4 ~ c5 ~ e5 ~ c5 ~",
  G: "a4 ~ a4 c5 e5 ~ c5 ~ a4 ~ c5 ~ e5 ~@3", H: "~@4 [g4,c5,e5] ~ [g4,c5,e5] ~@5 [g4,c5,e5] ~@3",
  I: "~@4 [g4,b4,d5] ~ [g4,b4,d5] ~@5 [g4,b4,d5] ~@3", J: "~@4 [f4,a4,c5] ~ [f4,a4,c5] ~@5 [f4,a4,c5] ~@3",
  K: "~@2 g4 c5 e5@2 c5@2 a4@2 c5@2 e5@2 c5 ~", L: "f4 ~ f4 a4 c5@2 a4@2 g4@2 b4@2 d5@2 b4 ~",
  M: "g4 ~ g4 c5 e5@2 c5@2 g4 ~ c5 ~ e5@2 [c5,e5] ~", // C
  N: "[g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~", // G
  O: "~@2 [g3,a#3,e4] ~ [g3,a#3,e4] ~ [g3,a#3,e4] ~ [g3,a#3,e4] ~ [g3,a#3,e4] ~ [g3,a#3,e4] ~ [g3,a#3,e4] ~", // Edim
  P: "f4 ~ f4 a4 c5 ~ a4 ~ f4 ~ c5 ~ a4 ~ f4 ~", Q: "f4 ~ f4 a4 c5 ~ c5 ~ a4 ~ f4 ~ a4 ~ c5 ~",
  R: "c5 ~ c5 g4 e4 ~ g4 ~ c5 ~ g4 ~ e4 ~ g4 ~", S: "e4 ~ e4 g4 c5 ~ g4 ~ e4 ~ g4 ~ c5 ~ g4 ~",
  T: "d5 ~ [a4,d5] f#4 ~@2 a4 ~ d5 ~ a4 ~ f#4 ~ a4 ~", U: "f#4 ~ f#4 a4 d5@2 a4 ~ f#4 ~ a4 ~ d5@2 a4 ~",
  V: "[g4,b4,d5] ~@15", // G
  W: "[g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~", // G
  X: "[d#3,g#3,c4] ~ [d#3,g#3,c4] ~ [d#3,g#3,c4] ~ [d#3,g#3,c4] ~ [d#3,g#3,c4] ~ [d#3,g#3,c4] ~ [d#3,g#3,c4] ~ [d#3,g#3,c4] ~", // G#
  Y: "g#4 ~ g#4 c#5 f5 ~ c#5 ~ g#4 ~ c#5 ~ f5 ~ c#5 ~", Z: "g#4 ~ g#4 c#5 f5 ~ c#5 ~ g#4 ~ f5 ~ c#5 ~ g#4 ~",
  AA: "a#4 ~ a#4 c#5 f5 ~ c#5 ~ f5 ~ c#5 ~ a#4 ~ c#5 ~", AB: "g#4 ~ g#4 c#5 f5 ~ c#5 ~ f5 ~ c#5 ~ g#4 ~ c#5 ~",
  AC: "a#4 ~ a#4 c#5 f5 ~ c#5 ~ a#4 ~ c#5 ~ f5 ~ c#5 ~", AD: "a#4 ~ a#4 c#5 f5 ~ c#5 ~ a#4 ~ c#5 ~ f5 ~@3",
  AE: "~@4 [g#4,c#5,f5] ~ [g#4,c#5,f5] ~@5 [g#4,c#5,f5] ~@3", // C#
  AF: "~@4 [g#4,c5,d#5] ~ [g#4,c5,d#5] ~@5 [g#4,c5,d#5] ~@3", // G#
  AG: "~@4 [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~@5 [f#4,a#4,c#5] ~@3", AH: "~@2 g#4 c#5 f5@2 c#5@2 a#4@2 c#5@2 f5@2 c#5 ~",
  AI: "f#4 ~ f#4 a#4 c#5@2 a#4@2 g#4@2 c5@2 d#5@2 c5 ~", AJ: "a#4 ~ a#4 c#5 f5 ~ c#5 ~ a#4 ~ f5 ~ c#5 ~ a#4 ~",
  AK: "[[g#3,c#4,f4]@15 ~]/2", // C#
})).s("gm_acoustic_guitar_nylon").gain(0.32)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A@2 B@2 C@2 D@2 C@2 D@2 E F G H I J K L C@2 D@2 C@2 D@2 E F G H I J K M N@2 O@2 P@2 Q ~ C@2 D@2 C@2 D@2 E F G H I J K
  ~ R@2 S@2 R@2 S@2 T U V W X Y Z@2 AA@2 Z@2 AA@4 AB@2 ~
>`.pickRestart({
  A: "[g5@15 ~ a5@15 ~, [c5,e5]@31 ~]/2", B: "[g5@15 ~ a5@14 ~@2, [c5,e5]@15 ~]/2", C: "[[g4,c5,e5]@31 ~]/2",
  D: "[[a4,c5,e5]@31 ~]/2", E: "~@4 [g4,c5,e5] ~ [g4,c5] ~@5 [g4,e5]@2 ~@2, ~@6 e5@2 ~@4 c5 ~@3",
  F: "~@4 [b4,d5,f5] ~ [b4,d5,f5]@2 ~@4 [b4,d5,f5]@2 ~@2", G: "~@4 [g4,c5,e5] ~ [g4,c5,e5] ~@5 [g4,c5] ~@3, ~@6 e5 ~",
  H: "~@4 [a4,c5,f5] ~ [a4,c5,f5] ~@5 [a4,c5,f5] ~@3", I: "g5@7 ~ a5@7 ~, [c5,e5]@15 ~",
  J: "[a4,c5,f5]@7 ~ [b4,d5,g5]@7 ~", K: "[g4,c5,e5]@15 ~",
  L: "[f4,b4,d5] ~ [f4,b4,d5] ~ [f4,b4,d5] ~ [f4,b4,d5] ~ [f4,b4,d5] ~ [f4,b4,d5] ~ [f4,b4,d5] ~ [f4,b4,d5] ~", // Bdim
  M: "c5 ~ c5 ~ a#4 ~ a#4 ~ a4 ~ a4 ~ g4 ~ g4 ~", N: "[~@4 [f4,a4,c5]@2 ~@2 [f4,a4,c5]@23 ~]/2",
  O: "[[e4,g4,c5]@29 ~@3]/2", P: "[~@4 [f#4,a4,c5]@2 ~ [f#4,a4,c5]@23 ~@2]/2", Q: "[g4,b4,d5] ~@7",
  R: "[[g#4,c#5,f5]@31 ~]/2", S: "[[a#4,c#5,f5]@31 ~]/2",
  T: "~@4 [g#4,c#5,f5] ~ [g#4,c#5] ~@5 [g#4,f5]@2 ~@2, ~@6 f5@2 ~@4 c#5 ~@3", // C# C#5 C#
  U: "~@4 [c5,d#5,f#5] ~ [c5,d#5,f#5]@2 ~@4 [c5,d#5,f#5]@2 ~@2", // Cdim
  V: "~@4 [g#4,c#5,f5] ~ [g#4,c#5,f5] ~@5 [g#4,c#5] ~@3, ~@6 f5 ~", // C# C#5
  W: "~@4 [a#4,c#5,f#5] ~ [a#4,c#5,f#5] ~@5 [a#4,c#5,f#5] ~@3", X: "g#5@7 ~ a#5@7 ~, [c#5,f5]@15 ~",
  Y: "[a#4,c#5,f#5]@7 ~ [c5,d#5,g#5]@7 ~", Z: "[g#5@15 ~ a#5@15 ~, [c#5,f5]@31 ~]/2",
  AA: "[g#5@15 ~ a#5@14 ~@2, [c#5,f5]@15 ~]/2", AB: "[g#4,c#5,f5]/2",
})).s("gm_string_ensemble_1").gain(0.4)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  A B C D E F G H I J K@2 L M L N O P Q R E F G H I J K@2 L M L N O P Q S T U V W X@2 Y Z E F G H I J K@2 L M L N O P Q
  AA AB AC AD AE AF AG AH@2 AI AJ AI AK AL AM AN AO AP AQ AN AO AP AQ AP AQ AR@2 ~
>`.pickRestart({
  A: "c4@6 c4@2 [d4,g4]@3 ~ [e4,g4]@4, c3, [g3,e4,g4] ~", // G5 Em C
  B: "~@12 b3@2 g3 ~, [a2,e4]@7 ~, c4@4 b3 c4@2 ~, a3@3 a3@4 ~, ~@2 e3@5 ~", // A5
  C: "~@3 c4 g4@2 [c4,e4,g4]@2, c3, [e4,g4] d4, c4@3 ~@5, ~ g3@3", // C Em
  D: "[a3,c4,e4]@3 [a3,c4,e4] [a3,b3,e4]@2 [a3,c4,e4] ~, [a2,e3]@3 ~", // Am Asus2 Am A5
  E: "c4@6 c4@2 d4@3 ~@3 g3@2, c3, [g3,e4,g4] g4, ~@3 e4", F: "~@2 g4 [c4,e4,g4], c3, e4 d4, g4@3 c4@3 ~@2, c4 g3@3",
  G: "~@3 a3 e4@2 ~ e3, a2, [c4,e4] b3, a3@3 ~@3 [a3,c4,e4]@2, ~@2 e3@5 ~", // C Am
  H: "a3@2 ~@3 e3 ~ a3, [a2,c4]@13 ~@3, e4@2 [b3,e4] [c4,e4], ~@2 e3@3 ~@3, ~@3 a3@3 ~@2", // Am E5 C
  I: "[c4,g4]@3 [c4,g4] g4@2 ~ c3, g3, c3@7 ~, e4 d4, ~@3 [c4,e4,g4]", // C5 C
  J: "~@6 c4@2 [d4,g4]@3 ~@3 e3@2, c3, [e4,g4]@2 ~ [e4,g4], c4@3 ~@5, ~ g3@3", // G5 Em
  K: "[~@6 e3@2 ~@12 e4@2 [b3,e4]@2 ~@2 a3@2 [a3,c4,e4]@3 ~, a2@12 c4@12 ~@2 e4 ~@5, [a3,c4,e4]@2 [b3,e4] [a3,e4]@2 a3 ~@2, ~@11 e3@2 ~ a2@17 ~, ~@16 e3@8 e3@7 ~]/2", // E5 Am E5 A5
  L: "~@4 [c3,g3,c4,e4,g4] ~ [c3,g3,c4,e4,g4]@2 ~@4 [c3,g3,c4,e4,g4]@2 ~@2", // C
  M: "~@4 [g2,d3,g3,b3,d4] ~ [g2,d3,g3,b3,d4]@2 ~@4 [g2,d3,g3,b3,d4]@2 ~@2", // G
  N: "~@4 [f2,f3,a3,c4] ~ [f2,f3,a3,c4]@2 ~@6 g3@2, ~@5 f2@3, ~@3 f3", O: "~ [c4,g4] [a3,c4,e4]@2, [c3,g3] ~",
  P: "[f2,f3,a3,c4] [g2,g3,b3,d4]", Q: "~@6 c4@2 ~@4 [e4,g4]@3 ~, c3@15 ~, e4@8 d4@7 ~, c4@3 ~@5, ~@4 g3@5 ~ g3@5 ~",
  R: "~@2 [g2,d3,g3,b3,d4] ~ [g2,d3,g3,b3,d4] ~ [g2,d3,g3,b3,d4] ~ [g2,d3,g3,b3,d4] ~ [g2,d3,g3,b3,d4] ~ [g2,d3,g3,b3,d4] ~ [g2,d3,g3,b3,d4] ~", // G
  S: "c5 ~ [c3,a#3,e4,g4,c5] ~ [c3,a#3,e4,g4,a#4] ~ [c3,a#3,e4,g4,a#4] ~ [c3,a#3,e4,g4,a4] ~ [c3,a#3,e4,g4,a4] ~ [c3,a#3,e4,g4] ~ [c3,a#3,e4,g4] ~", // C7
  T: "~@7 c5, [f2,f3,a3,c4], ~@5 f4@3, ~@3 a4", U: "[f3,a3,c4]@11 ~ c4@2 ~@2, ~@12 g3 ~@3",
  V: "[c4,e4]@10 ~@2 e4@2 g4 ~, c3@15 ~, ~@10 c4@5 ~", W: "[c3,c4,e4,g4]@3 ~",
  X: "[[d3,f#3]@5 ~@3 d4@6 ~@2, d4@14 a3@13 ~@5, a3@3 f#3@4 ~, ~@5 d3@9 ~@2]/2", Y: "[g2,g3,b3,d4] ~@7",
  Z: "[g3,g4] ~ [g3,g4] ~ [f3,f4] ~ [f3,f4] ~ [e3,e4] ~ [e3,e4] ~ [d3,d4] ~ [d3,d4] ~", // G F E D
  AA: "[c4,d#4,f#4,g#4]@3 ~ [c4,d#4,f#4,g#4] ~ [c4,d#4,f#4,g#4] ~ [c4,d#4,f#4,g#4] ~ [c4,d#4,f#4,g#4] ~ [c4,d#4,f#4,g#4] ~ [c4,d#4,f#4,g#4] ~, [g#2,d#3,g#3]@3 ~", // G#7 G#5
  AB: "c#4@6 c#4@2 d#4@3 ~@3 g#3@2, c#3, [g#3,f4,g#4] g#4, ~@3 f4", // C#
  AC: "~@2 g#4 [c#4,f4,g#4], c#3, f4 d#4, g#4@3 c#4@3 ~@2, c#4 g#3@3", // C#
  AD: "~@3 a#3 f4@2 ~ f3, a#2, [c#4,f4] c4, a#3@3 ~@3 [a#3,c#4,f4]@2, ~@2 f3@5 ~", // C# A#m
  AE: "a#3@2 ~@3 f3 ~ a#3, [a#2,c#4]@13 ~@3, f4@2 [c4,f4] [c#4,f4], ~@2 f3@3 ~@3, ~@3 a#3@3 ~@2", // A#m F5 C#
  AF: "[c#4,g#4]@3 [c#4,g#4] g#4@2 ~ c#3, g#3, c#3@7 ~, f4 d#4, ~@3 [c#4,f4,g#4]", // C#5 C#
  AG: "~@6 c#4@2 [d#4,g#4]@3 ~@3 f3@2, c#3, [f4,g#4]@2 ~ [f4,g#4], c#4@3 ~@5, ~ g#3@3", // G#5 Fm
  AH: "[~@6 f3@2 ~@12 f4@2 [c4,f4]@2 ~@2 a#3@2 [a#3,c#4,f4]@3 ~, a#2@12 c#4@12 ~@2 f4 ~@5, [a#3,c#4,f4]@2 [c4,f4] [a#3,f4]@2 a#3 ~@2, ~@11 f3@2 ~ a#2@17 ~, ~@16 f3@8 f3@7 ~]/2", // F5 A#m F5 A#5
  AI: "~@4 [c#3,g#3,c#4,f4,g#4] ~ [c#3,g#3,c#4,f4,g#4]@2 ~@4 [c#3,g#3,c#4,f4,g#4]@2 ~@2", // C#
  AJ: "~@4 [g#2,d#3,g#3,c4,d#4] ~ [g#2,d#3,g#3,c4,d#4]@2 ~@4 [g#2,d#3,g#3,c4,d#4]@2 ~@2", // G#
  AK: "~@4 [f#2,f#3,a#3,c#4] ~ [f#2,f#3,a#3,c#4]@2 ~@6 g#3@2, ~@5 f#2@3, ~@3 f#3", // F#
  AL: "~ [c#4,g#4] [a#3,c#4,f4]@2, [c#3,g#3] ~", AM: "[f#2,f#3,a#3,c#4] [g#2,g#3,c4,d#4]",
  AN: "c#4@6 c#4@2 [d#4,g#4]@3 ~ [f4,g#4]@4, c#3, [g#3,f4,g#4] ~", // G#5 Fm C#
  AO: "~@12 c4@2 g#3 ~, [a#2,f4]@7 ~, c#4@4 c4 c#4@2 ~, a#3@3 a#3@4 ~, ~@2 f3@5 ~", // A#5
  AP: "~@3 c#4 g#4@2 [c#4,f4,g#4]@2, c#3, [f4,g#4] d#4, c#4@3 ~@5, ~ g#3@3", // C# Fm
  AQ: "[a#3,c#4,f4]@3 [a#3,c#4,f4] [a#3,c4,f4]@2 [a#3,c#4,f4] ~, [a#2,f3]@3 ~", AR: "[[c#3,g#3,c#4,f4]@15 ~]/2",
})).s("gm_epiano2").gain(0.5)

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

// drums · snare
const snare = s("sd").struct("<A@15 B A@3 C A@11 B A@3 C A@6 D C A@11 B A@3 C A@11 B A@11 B ~@3>".pickRestart({
  A: "~@3 x ~@2 x ~", B: "~@3 x ~@2 x!2", C: "~@4 x!4", D: "x",
})).gain(0.66)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<A@15 B A@3 C A@11 B A@3 C A@6 ~ D A@11 B A@3 C A@11 B A@11 B ~@3>".pickRestart({
  A: "~ x ~@2", B: "~@2 x ~@2 x ~@2", C: "x!4 ~@4", D: "~ x!3 ~@4",
})).gain(0.2)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@12 A@3 B ~@3 C ~@8 A@3 B ~@3 C ~@6 D C ~@8 A@3 B ~@3 C ~@8 A@3 B ~@11 E ~@3
>`.pickRestart({
  A: "~@2 x!2 ~@2 x ~", B: "~@2 x!2 ~ x!3", C: "~@4 x!4", D: "x", E: "~@5 x!3",
})).gain(0.66)

// drums · hihat
const hihat = s("hh").struct("<A@4 B@8 ~@4 B@12 ~@4 B@10 C ~ B@8 ~@4 B@12 ~@4 B@12 ~@3>".pickRestart({
  A: "x!4", B: "x ~@2 x!2 ~@3 x ~@3 x ~@3", C: "~ x ~ x",
})).gain(0.66)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<A@12 ~@4 A@12 ~@4 A@10 ~@2 A@8 ~@4 A@12 ~@4 A@12 ~@3>".pickRestart({
  A: "~ x ~ x ~ x ~ x",
})).gain(0.2)

// drums · crash
const crash = s("cr").struct("<A ~@3 A ~@11 A ~@3 A ~@11 A ~@3 A ~@7 A ~@11 A ~@3 A ~@11 A ~ A ~@9 A ~@2>".pickRestart({
  A: "x",
})).gain(0.66)

// drums · ride
const ride = s("rd").struct("<A@4 ~@15 B ~@15 B C A@5 ~ B ~@15 B ~@12 C A C A@7 C A D ~@2>".pickRestart({
  A: "x!4", B: "x!8", C: "~ x!3", D: "x",
})).gain(0.66)

// drums · tambourine
const tambourine = s("tb").struct("<~@4 A@8 B@4 A@12 B@4 A@10 ~@2 A@8 B@4 A@12 B@4 A@12 ~@3>".pickRestart({
  A: "~ x ~ x", B: "~@2 x!2 ~@2 x ~",
})).gain(0.66)

// drums · shaker
// … 8 more lines

More by Bobby Darin