Strudelify

Don't Answer Me

Alan Parsons

KeyC majorTempo114 bpm
0:00/0:00
// Don't Answer Me — Alan Parsons
// 114 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 13 alto sax (copy of ch 12 alto sax)
// note: Full arrangement: all 114 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(114/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
const piano = note(`<
  ~ A@2 B@2 C@2 D E F@2 B@2 C@2 D E F@2 B@2 C@2 D E G H I@2 J K L M N O H@2 P Q H@2 F@2 R@2 S@2 T U F@2 B@2 C@2 D E G H
  I@2 J K L M V O H@2 P Q H@2 F@2 R@2 S@2 T U F@2 B@2 C@2 D E G H I@2 J K L M V O H@2 G H I@2 J K L M V O H W@2
>`.pickRestart({
  A: "[[g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~, c2@10 ~ c2@4 ~, ~@6 c3@9 ~ c3@11 ~ c3@2 ~@2]/2", // C
  B: "[[g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~, a1@9 ~@2 a1@5, a2@2 ~ a2@4 ~ a2@8]/2", // C
  C: "[[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] f4 [a3,c4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [d2,a3,c4,f4] ~ [a3,c4,f4] ~, d2@7 ~ d2@5 ~@3, ~@3 d3@7 ~ d3@3 ~@2]/2", // F Am F Dm7 F
  D: "[a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~, g1@8 ~@2 g2@5 ~", // Am7 G
  E: "[a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~, g2@5 ~ g2@9 ~", // Am7 G
  F: "[[g3,e4]@2 [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~, c2@10 ~ c2@4 ~, c4 ~@5 c3@9 ~ c3@11 ~ c3@2 ~@2]/2", // C
  G: "[g3,d4,f4] ~ [g3,d4,f4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~", // G7 C
  H: "[g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~", // C
  I: "[b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~", // Em
  J: "[d4,f4] ~ [d4,f4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~, g4 ~@7", // Dm C
  K: "[c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~ [c4,e4,g4] ~", // C
  L: "[a3,c4] ~ [a3,c4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~, f4 ~@7", // Am F
  M: "[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4] ~ [a3,c4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~, ~@3 f4 ~@4", // F Am F
  N: "[g#3,f4]@2 d4 ~ [g#3,d4,f4] ~ [d4,f4] ~ [d4,f4] ~ [g#3,d4,f4] ~ [g#3,d4,f4] ~ [g#3,f4] ~, d4 ~@5 g#3@2 ~@8", // C# Ddim Dm Ddim C#
  O: "[g#3,d4,f4] ~ [g#3,d4,f4] ~ [g#3,d4,f4] ~ [g#3,d4,f4] ~ [g#3,c4,d4,f4] ~ [g#3,c4,d4,f4] ~ [g#3,c4,d4,f4] ~ [g#3,c4,d4,f4] ~", // Ddim Dm7b5
  P: "[g#3,c4,d4,f4] ~ [g#3,c4,d4,f4] ~ [g#3,d4,f4] ~ [g#3,d4,f4] ~ [g#3,c4,d4,f4] ~ [g#3,c4,d4,f4] ~ [g#3,f4] ~ [g#3,f4] ~", // Dm7b5 Ddim Dm7b5 C#
  Q: "[d4,f4] ~ [d4,f4] ~ [g#3,d4,f4] ~ [g#3,d4,f4] ~ [g#3,c4,d4,f4] ~ [g#3,c4,d4,f4] ~ [g#3,c4,d4,f4] ~ [g#3,c4,f4] ~, g#3 ~@7", // Dm Ddim Dm7b5 Fm
  R: "[[g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~, a1@9 ~@2 a1@5, a2 ~@7]/2", // C
  S: "[[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] f4 [a3,c4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [d2,a3,c4,f4] ~ [a3,c4,f4] ~, d2@7 ~ d2@5 ~@3, ~@3 d3@7 ~@6]/2", // F Am F Dm7 F
  T: "[a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~, g1 ~", // Am7 G
  U: "[a3,c4,g4] ~ [a3,c4,g4] ~ [a3,c4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~", // Am7 G
  V: "[g#3,f4]@2 [c4,d4] ~ [g#3,c4,d4,f4] ~ [c4,d4,f4] ~ [d4,f4] ~ [g#3,d4,f4] ~ [g#3,d4,f4] ~ [g#3,f4] ~, [c4,d4] ~@5 g#3@2 ~@8", // C# Csus2 Dm7b5 Dm7 Dm Ddim C# Csus2
  W: "[[g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4]@15 ~@3]/2", // C
})).s("gm_piano").gain(0.25).pan(0.7)

// bass · fretless bass
const bass = note(`<
  ~ A B C D E F G H I J K@2 L@2 M G J N K@2 L O G P Q R S T Q R U V W@2 Q X W@2 Y@2 I J K@2 L@2 M G J N K@2 L O G P Q R
  S T Q R U V W@2 Q X W@2 Y@2 I J K@2 L@2 M G J N K@2 L O G P Q R S T Q R U V W@2 Q X Q R S T Q R U V W@2 Q Z@2
>`.pickRestart({
  A: "c2@5 ~ c2@8 ~@2", B: "c2@2 ~ c2@5", C: "a1@5 ~ a1@8 ~@2", D: "a1@2 ~ a1@5", E: "d2@5 ~ d2@8 ~@2",
  F: "d2@2 ~ d2@5", G: "g1@2 ~ g1@4 ~", H: "g1@2 ~ g1@3 ~@2", I: "c2@5 ~ c2@7 ~@3", J: "c2@2 ~ c2@4 ~",
  K: "a1@2 ~ a1@4 ~", L: "d2@2 ~ d2@4 ~", M: "g1@4 ~@2 g1@9 ~", N: "c2@4 ~@2 c2@7 ~@3", O: "d2@4 ~@2 d2@7 ~@3",
  P: "g1@3 ~ g1@3 ~ g1 ~ g1 ~ g1@4", Q: "c2@5 ~ c2@2 c2@6 ~@2", R: "c2@5 ~ c2@2 c2@8", S: "e2@2 ~ e2 e2@3 ~",
  T: "e2@5 ~ e2@2 e2@8", U: "f1@5 ~ f1 ~ f1@7 ~", V: "f1@4 ~@2 f1 ~ f1@7 ~", W: "a#1@2 ~ a#1 a#1@3 ~",
  X: "c2@5 ~ c2@2 c2@7 ~", Y: "c2@2 ~ c2 c2@3 ~", Z: "[c2@5 ~ c2@2 c2@5 ~ c2@14 ~@4]/2",
})).s("gm_fretless_bass").gain(0.44)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A@6 B@2 C@6 B@2 C@6 B@2 D E F G H I J K L M@2 N O M@2 O P@6 Q@2 R@6 Q@2 S E F G H I J K L T@2 U V W@2 X Y Z@5 Q@2 R@6
  Q@2 S E F G H I J K L T@2 U V E F G H I J K L T@2 U AA@2
>`.pickRestart({
  A: "[~@16 e4@4 [g3,c4,e4]@6 [g3,c4,e4]@5 ~ e4@4 [g3,c4,e4]@6 [g3,c4,e4]@4 ~@2 e4@4 [a3,c4,e4]@6 [a3,c4,e4]@4 ~@2 e4@6 [a3,c4,e4]@6 [a3,c4,e4]@3 ~ [d4,f4]@4 [a3,d4,f4]@5 ~ [a3,d4,f4]@6, ~@15 [g3,c4]@5 ~@11 [g3,c4]@5 ~@10 a3@5 ~@12 [a3,c4]@7 ~@9 a3@5 ~@12, ~@47 c4@4 ~@45]/6", // C Am Dm C5 Am
  B: "[[a3,d4,f4]@4 [a3,d4,f4]@5 ~ [a3,d4,f4]@5 ~ g4@4 [g3,c4,d4,g4]@6 [g3,b3,d4,g4]@6, ~@15 [g3,c4,d4]@4 ~@13]/2", // Dm Gsus4 G Gsus4
  C: "[[g3,c4,d4,g4]@4 [g3,c4,d4,g4]@6 [g3,b3,d4,g4]@5 ~ e4@4 [g3,c4,e4]@6 [g3,c4,e4]@5 ~ e4@4 [g3,c4,e4]@6 [g3,c4,e4]@4 ~@2 e4@4 [a3,c4,e4]@6 [a3,c4,e4]@5 ~ e4@6 [a3,c4,e4]@6 [a3,c4,e4]@3 ~ [d4,f4]@4 [a3,d4,f4]@5 ~ [a3,d4,f4]@6, ~@15 [g3,c4]@5 ~@11 [g3,c4]@5 ~@10 a3@5 ~@12 [a3,c4]@7 ~@9 a3@5 ~@12, ~@47 c4@4 ~@45]/6", // Gsus4 G C Am Dm C5 Am
  D: "[g3,c4,d4,g4]@2 [g3,c4,d4,g4]@3 [g3,b3,d4,g4]@3", E: "[d4,f4]@5 ~ [c4,e4]@4 g3 ~ [g3,c4,e4]@2 g3@2, g3@9 ~@7",
  F: "[g3,c4,e4]@2 ~ [g3,c4,e4]@2 ~ [g3,c4,e4] ~", G: "[g3,b3,e4]@4 ~@2 [g3,b3,e4]@4 ~@2 [g3,b3,e4]@2 g3 ~",
  H: "[g3,b3,e4]@4 ~@2 [g3,b3,e4]@4 g3 ~ [b3,e4]@2 ~@2", I: "[g3,d4,f4]@2 ~ [g3,c4,e4]@2 ~ [g3,c4,e4] g3",
  J: "[g3,c4,e4]@4 ~@2 [g3,c4,e4]@5 ~ [g3,c4,e4]@2 g3 ~", K: "[a3,c4,f4]@4 ~@2 [a3,c4,f4]@5 ~ [a3,c4,f4]@2 a3 ~",
  L: "[a3,c4,f4]@4 ~@2 [c4,f4]@4 a3 ~ [c4,f4]@3 ~, ~@6 a3@2 ~@4 a3 ~@3", M: "[c4,f4]@2 ~ [c4,f4]@2 ~ [c4,f4] ~",
  N: "[c4,e4]@5 ~ [c4,e4]@5 ~ [c4,e4]@2 ~@2", O: "[c4,e4]@2 ~ [c4,e4]@2 ~ [c4,e4] ~",
  P: "[[c4,e4]@5 ~ [c4,e4]@4 ~@2 [c4,e4]@2 ~@2 e4@4 [g3,c4,e4]@6 [g3,c4,e4]@5 ~ e4@4 [g3,c4,e4]@6 [g3,c4,e4]@4 ~@2 e4@4 [a3,c4,e4]@6 [a3,c4,e4]@5 ~ e4@6 [a3,c4,e4]@6 [a3,c4,e4]@3 ~ [d4,f4]@4 [a3,d4,f4]@5 ~ [a3,d4,f4]@6, ~@15 [g3,c4]@5 ~@11 [g3,c4]@5 ~@10 a3@5 ~@12 [a3,c4]@7 ~@9 a3@5 ~@12, ~@47 c4@4 ~@45]/6", // C Am Dm C5 Am
  Q: "[[a3,d4,f4]@4 [a3,d4,f4]@5 ~ [a3,d4,f4]@5 ~ g4@4 [c4,d4,g4]@6 [b3,d4,g4]@6, ~@15 [c4,d4]@4 ~@13]/2", // Dm Csus2 G Csus2
  R: "[[c4,d4,g4]@4 [c4,d4,g4]@6 [b3,d4,g4]@5 ~ e4@4 [g3,c4,e4]@6 [g3,c4,e4]@5 ~ e4@4 [g3,c4,e4]@6 [g3,c4,e4]@4 ~@2 e4@4 [a3,c4,e4]@6 [a3,c4,e4]@5 ~ e4@6 [a3,c4,e4]@6 [a3,c4,e4]@3 ~ [d4,f4]@4 [a3,d4,f4]@5 ~ [a3,d4,f4]@6, ~@15 [g3,c4]@5 ~@11 [g3,c4]@5 ~@10 a3@5 ~@12 [a3,c4]@7 ~@9 a3@5 ~@12, ~@47 c4@4 ~@45]/6", // Csus2 G C Am Dm C5 Am
  S: "[c4,d4,g4]@2 [c4,d4,g4]@3 [b3,d4,g4]@3", T: "[g#3,c4,f4]@4 ~@2 [g#3,c4,f4]@4 g#3 ~ [g#3,c4,f4]@2 g#3 ~",
  U: "[g3,c4,e4]@5 ~ [g3,c4,e4]@5 ~ [g3,c4,e4]@2 g3 ~", V: "[g3,c4,e4]@4 ~@2 [g3,c4,e4]@4 ~@2 [g3,c4,e4]@2 g3 ~",
  W: "[g#3,c4,f4]@2 ~ [g#3,c4,f4]@2 ~ [g#3,c4,f4] ~", X: "[g3,c4,e4]@2 ~ [c4,e4]@2 ~ [g3,c4,e4] ~, ~@3 g3@3 ~@2",
  Y: "[g3,c4,e4]@5 ~ [g3,c4,e4]@4 ~@2 [g3,c4,e4]@3 ~", // C
  Z: "[e4@4 [g3,c4,e4]@6 [g3,c4,e4]@5 ~ e4@4 [g3,c4,e4]@6 [g3,c4,e4]@4 ~@2 e4@4 [a3,c4,e4]@6 [a3,c4,e4]@5 ~ e4@6 [a3,c4,e4]@6 [a3,c4,e4]@3 ~ [d4,f4]@4 [a3,d4,f4]@5 ~ [a3,d4,f4]@6, ~@15 [g3,c4]@5 ~@10 a3@5 ~@12 [a3,c4]@7 ~@9 a3@5 ~@12, ~@31 c4@4 ~@45]/5", // C Am Dm C5 Am
  AA: "[[g3,c4,e4]@4 ~@2 [g3,c4,e4]@4 ~@2 g3 ~ [c4,e4]@14 ~@4]/2", // C
})).s("gm_acoustic_guitar_steel").gain(0.22).pan(0.2)

// chords · epiano1
const epiano1 = note(`<
  ~@24 A B C@3 B D@3 E@3 ~ F@3 ~@16 A B C@3 B D@3 E@3 ~ F@3 ~@16 A B C@3 B D@3 E@3 A B C@3 B D@3 E@3 ~@2
>`.pickRestart({
  A: "~@3 [d4,f4,a4]", B: "[d4,f4,a4]@2 [c4,e4,g4] [c4,e4,g4]@5",
  C: "[[c4,e4,g4] [d4,f4,a4] [c4,e4,g4] [a3,d4,f4]@2 [c4,e4,g4]@2 [e4,a4,c5]@2 [e4,a4,c5] [e4,g4,b4] [e4,g4,b4]@8 ~@3 [d4,f4,a4]@2]/3", // C Dm C Dm C Am Em Dm
  D: "[[c4,e4,g4] [d4,f4,a4] [c4,e4,g4] [a3,d4,f4]@2 [c4,e4,g4]@2 [e4,g4,c5]@2 [e4,g4,c5]@2 [c4,f4,a4] [c4,f4,a4]@8 ~@4]/3", // C Dm C Dm C F
  E: "[[g#3,c4]@2 [a#3,d4] [g#3,c4]@3 [a#3,d4] [c4,d#4]@3 [d4,f4] [d#4,g4]@3 [f4,g#4] [e4,g4]@9]/3", // G# A# G# A# Cm Dm D# Fm …
  F: "[[g#3,c4]@2 [a#3,d4] [g#3,c4]@3 [a#3,d4] [c4,d#4]@2 [d4,f4]@2 [d#4,g4]@3 [f4,g#4] [e4,g4]@9]/3", // G# A# G# A# Cm Dm D# Fm …
})).s("gm_epiano1").gain(0.22)

// chords · epiano1 · soft notes
const epiano1_soft = note("<~@8 A B@2 C@2 D E F@4 G@2 H@2 I@2 ~@15 J K@2 L@2 D M N@2 O P Q@4 R@2 ~@57>".pickRestart({
  A: "~@10 c4@2 c4@2 c4 ~", B: "[c4@4 c4@2 c4@2 c4@2 b3@2 b3@2 d4@8 c4@7 ~@3]/2",
  C: "[b3@2 c4 b3@3 a3 a3@4 ~@2 d4!3]/2", D: "d4@2 d4!3 c4@3", E: "e4@6 d4@7 ~@3",
  F: "[c4@2 c4 c4@2 d4@2 d4@4 ~@2 c4!2 c4@3 c4!3 b3@2 d4@5 c4@3 ~]/4",
  G: "[b3@4 b3@4 b3@2 a3@2 a3@2 a3@9 ~@3 d4@2 d4@2 d4@2]/2", H: "[d4@4 d4@2 d4@2 d4@2 c4@2 c4@2 e4@8 d4@5 ~@3 a3@2]/2",
  I: "[c4@2 c4 c4@2 c4 d4 d4@5 ~@4]/2", J: "~@5 c4!3", K: "[c4@2 c4!3 b3!2 d4@4 c4@3 ~ b3]/2",
  L: "[b3@2 b3 b3@2 a3!2 a3@4 ~@2 d4!3]/2", M: "e4@8 d4@5 ~@3", N: "[c4@4 c4@2 c4@4 d4@4 d4@9 ~@3 c4@2 c4@2 c4@2]/2",
  O: "c4@2 c4!3 b3@3", P: "d4@8 c4@5 ~@3",
  Q: "[b3@4 b3@4 b3@2 a3@2 a3@2 a3@9 ~@3 d4@2 d4@2 d4@4 ~@2 d4@2 d4@2 d4@4 c4@2 e4@8 d4@5 ~@3 c4@2]/4",
  R: "[c4@2 c4@2 c4@2 d4 d4@5 ~@4]/2",
})).s("gm_epiano1").gain(0.1)

// other · epiano2
const epiano2 = note(`<
  ~@3 A B ~@2 C D ~@2 A B ~@2 C D ~@2 A B ~@2 C D ~@18 A B ~@2 C D ~@2 A B ~@2 C D ~@18 A B ~@2 C D ~@2 A B ~@2 C D ~@25
>`.pickRestart({
  A: "~@2 d4@3 c4@3", B: "b3@3 c4@5", C: "~@2 c4@3 b3@3", D: "a3@3 b3@4 ~",
})).s("gm_epiano2").gain(0.29).pan(0.9)

// other · overdriven guitar
const overdriven_guitar = note("<~@33 A@3 B A@2 ~@26 A@3 B A@2 ~@26 A@3 B ~@8 A@3 B ~>".pickRestart({
  A: "~@2 c4 ~ d4@2 c4 ~@3 c4 ~ d4@2 c4 ~", B: "~@2 c4 ~ d4@2 c4 ~ [d4,e4]@2 g4 ~ [c4,d4]@2 c4 ~",
})).s("gm_overdriven_guitar").gain(0.27)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~ A@24 B@4 C@6 D@2 E@2 F@2 G@8 H@8 B@4 C@6 D@2 E@2 F@2 G@8 H@8 B@4 C@6 D@2 B@4 C@6 I@3
>`.pickRestart({
  A: "[g3@16 ~@16 f3@16 ~@2 c4@3 b3@3 a3@3 b3@5, [e3,c4]@64 d4@37 ~@27, ~@32 a3@64 [d3,g3]@31 ~]/8", // C G5
  B: "[f4 ~@7 b3@8, g3@61 ~@3, c4 ~, ~ e4@15]/4",
  C: "[f4@4 e4@28 a3@32 c4 ~ c4@2 d4@2 c4 ~@3 c4@2 d4@2 c4@2 ~@2 c4 ~ d4@2 c4 ~@3 c4@2 d4@2 c4@2, c4@63 ~ g#3@32, g3@32 f4@63 ~]/6",
  D: "[~@2 c4@2 d4@2 c4@2 ~@2 c4@2 d4@2 c4 ~@3 c4 ~ d4@2 c4 ~@3 c4 ~ d4@2 c4 ~, [g3,e4]@31 ~]/2", // C
  E: "[c4@2 c4@2 d4@2 c4 ~@3 c4 ~ d4@2 c4 ~@3 c4 ~ d4@2 c4 ~@3 c4 ~ d4@2 c4@2, [g#3,f4]]/2", // C#
  F: "[~@2 c4@2 d4@2 c4 ~@3 c4 ~ d4@2 c4 ~@3 c4 ~ d4@2 c4 ~@3 c4 ~ d4@2 c4 ~, [g3,e4]]/2", // C
  G: "[g3@16 ~@16 [f3,f4]@16 ~@2 c4@3 b3@3 a3@3 b3@5, [e3,c4,e4]@64 d4@37 ~@27, ~@32 a3@63 ~ [d3,g3,g4]@31 ~]/8", // F C G5
  H: "[g3@32 ~@32 [f3,f4]@31 ~@5 c4@6 b3@6 a3@6 b3@10, [e3,c4,e4]@64 d4@37 ~@27, ~@32 a3@64 g3@31 ~, ~@95 g4@32 ~, ~@6 d3 ~]/8", // F C
  I: "[~@2 c4@2 d4@2 c4@2 ~@2 c4@2 d4@2 c4 ~@3 c4 ~ d4@2 c4 ~@3 c4 ~ d4@2 c4@14 ~@4, [g3,e4]@11 ~]/3", // C
})).s("gm_string_ensemble_1").gain(0.27)

// other · vibraphone
const vibraphone = note(`<
  ~@24 A B C D@2 B E F@2 G H I@2 J K L ~@16 A B C D@2 B E F@2 G H I@2 J K L ~@16 A B C D@2 B E F@2 G H M@2 B C D@2 B E
  F@2 G H I@2 ~
>`.pickRestart({
  A: "~@6 f6 ~", B: "f6@4 e6 ~ e6@8 ~@2", C: "e6 f6 e6 d6@2 e6@2 a6", D: "[~@2 a6@2 g6 ~ g6@18 ~@4 f6@3 ~]/2",
  E: "e6 f6 e6 d6@2 e6@2 g6", F: "[~@2 g6@4 f6 ~ f6@19 ~@5]/2", G: "[c6,c7]@7 ~", H: "[g#5,g#6]@8 [f5,f6]@7 ~",
  I: "[[g5,g6]@5 ~@3]/2", J: "[c6,c7]", K: "[g#5,g#6] [f5,f6]", L: "[g5,g6]", M: "[[g5,g6]@10 ~@4 f6 ~]/2",
})).s("gm_vibraphone").gain(0.22)

// other · pad poly
const pad_poly = note("<~@25 A@4 B@4 ~@24 A@4 B@4 ~@24 A@4 B@4 ~@4 A@4 B@4 ~@5>".pickRestart({
  A: "[g4@63 ~]/4", B: "[g4@37 ~ f4@23 ~@3]/4",
})).s("gm_pad_poly").gain(0.33).pan(0.1)

// other · alto sax
const alto_sax = note("<~@72 A@3 B C@2 D@3 E F G@5 H ~@25>".pickRestart({
  A: "[~@6 g3 a3 c4@2 d4@2 e4@2 c5@7 ~ c5@3 ~ c5@2 b4@2 d5@8 c5@7 ~@3, ~@14 b4 ~@7 b4 ~@7 c#5 ~@17]/3",
  B: "~@4 e4@4 d4@4 c4 ~@3, ~@4 d#4 ~@11",
  C: "[~@2 e4@4 d4@2 c4@2 d4@2 e4@2 g4@4 a4@2 e4@2 d4@4 c4 ~@3 g3@2, ~@2 d#4 ~@17 d#4 ~@9 f#3 ~]/2",
  D: "[a3@2 c4@2 a3@2 c4@4 d4@2 e4@2 d4@4 e4@2 d4@2 e4@4 g4 ~ e4@2 g4@4 a4@2 g4@2 a4@4 c5 ~ c5 ~ c5 ~, ~@28 d#4 ~@19]/3",
  E: "c5@2 b4@2 c5@2 b4@2 c5 ~ c5@2 ~@2 c5@2", F: "~@2 c5@2 ~@2 c5 ~ c5 ~ c5@2 d5 ~ d5 ~",
  G: "[d5@4 c5 ~ c5 ~ c5@4 a4@2 c5@5 ~@3 a4@2 c5@2 d5@2 e5 ~ d5@21 ~@3 a4@2 c5@2 d5@2 e5 ~ g5@15 ~ a5 ~, ~@22 g4 ~@31 g4 ~@7 f#5 ~@17]/5",
  H: "g5@3 ~",
})).s("gm_alto_sax").gain(0.32).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~ A@8 B@15 C B@31 C B@31 C B@23 D ~>".pickRestart({
  A: "x ~@3 x!2 ~@2", B: "x ~@2 x!2 ~@3", C: "x ~ x ~ x!3 ~", D: "x ~@2 x!2 ~@2 x",
})).gain(0.49)

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

// drums · hihat
const hihat = s("hh").struct("<~@25 A@15 B ~@16 A@15 B ~@16 A@24 ~>".pickRestart({
  A: "x!4", B: "x!3 ~",
})).gain(0.38)

// drums · low tom
const low_tom = s("lt").struct("<~@4 [~@7 x] ~@3 [~@7 x] ~@105>").gain(0.33)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~ A@15 B A@7 ~ A@7 B A@7 B A@7 B A@7 ~ A@7 B A@7 B A@7 B A@7 ~ A@7 B A@11 B A@3 ~@2
>`.pickRestart({
  A: "~@3 x", B: "~@5 x!2 ~",
})).gain(0.38)

// drums · crash
const crash = s("cr").struct(`<
  ~@25 A ~@3 A ~@3 A ~@3 A ~@19 A ~@3 A ~@3 A ~@3 A ~@19 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2 B ~
>`.pickRestart({
  A: "x", B: "~@7 x",
})).gain(0.27)

// drums · ride
const ride = s("rd").struct(`<
  ~ A@8 B@7 C@6 B@2 D E B@3 E B@2 C E B@3 E B@2 C B@7 C@6 B@2 D E B@3 E B@2 C E B@3 E B@2 C B@7 C@6 B@2 D E B@3 E B@2 C
  E B@3 E B@3 E B@2 C E B@2 F ~
>`.pickRestart({
  A: "x!8", B: "x!6 ~ x", C: "x!2 ~ x!3 ~ x", D: "x!2 ~ x!5", E: "~ x!5 ~ x", F: "x!6 ~@2",
})).gain(0.27)

// drums · congas
const congas = s("conga:13").struct("<~ [~@10 x!3 ~@3]!112 ~>").gain(0.87)
// … 8 more lines

More by Alan Parsons