Strudelify
Every Kind of People cover art

Every Kind of People

Robert Palmer

KeyG majorTempo161 bpm
0:00/0:00
// Every Kind of People — Robert Palmer
// 161 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "CHORDS | CLAVIUM   I-A4" named as a piano, played on clavinet (its acoustic guitar nylon patch is not one)
// note: duplicate parts dropped: ch 6 "FLUTE | ITOPIA   P1-A15" flute (copy of ch 5 "FLUTE | FLUTE    P1-C14" blown bottle)
// note: Full arrangement: all 136 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(161/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 · clavinet · "CHORDS | CLAVIUM   I-A4"
const clavinet = note("<~@6 A B@4 C@4 D@4 E@4 B@20 C@4 D@4 E F@5 G@4 H@5 I@8 J@16 K@8 L@8 J@24 M@5 ~>".pickRestart({
  A: "~@18 [g3,b3,d4,f#4]@5 ~", B: "[g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~",
  C: "[e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~", // Em7
  D: "[c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~", // Cmaj7
  E: "[a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~", // Am7
  F: "[[a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [c4,e4,g4]@5 ~ [c4,e4,g4]@5 ~ [c4,e4,g4]@5 ~ [e4,g4]@5 ~ [c4,e4,g4]@5 ~ [c4,e4,g4]@5 ~ [c4,e4,g4]@5 ~ [c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [b3,d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [b3,d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 g3, ~@17 a3@5 ~ a3@5 ~ a3@5 ~ [a3,c4]@5 ~ a3@5 ~ a3@5 ~ a3@5 ~ a3@5 ~@7 g3@5 ~ [g3,b3]@5 ~ [g3,b3]@5 ~ [g3,b3]@5 ~ g3@5 ~ [g3,b3]@5 ~ [g3,b3]@5 ~ [g3,b3]@5 ~@2]/5", // Am7 C Em C Am7 Bm D Bm …
  G: "[[b3,d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~ [b3,d4]@5 ~ [b3,d4]@5 ~ [b3,d4]@5 ~ d4@5 ~ [b3,d4]@5 ~ [b3,d4]@5 ~ [b3,d4]@5 ~ d4@5 [e3,g3], ~@5 [g3,b3]@5 ~ [g3,b3]@5 ~ [g3,b3]@5 ~ [g3,b3]@5 ~ [g3,b3]@5 ~ [g3,b3]@5 ~ [g3,b3]@5 ~ [e3,g3]@5 ~ [e3,g3]@5 ~ [e3,g3]@5 ~ [e3,g3,b3]@5 ~ [e3,g3]@5 ~ [e3,g3]@5 ~ [e3,g3]@5 ~ [e3,g3,b3]@5 ~@2]/4", // Bm D Bm Em G Em
  H: "[[b3,d4]@5 ~ d4@5 ~ [b3,d4]@5 ~ d4@5 ~ d4@5 ~ d4@5 [e3,g3,b3,d4]@5 ~@2 d4@5 ~ b3@5 [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~@2 b3@5 [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~@2 b3@5 [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3], ~@5 [e3,g3,b3]@5 ~ [e3,g3]@5 ~ [e3,g3,b3]@5 ~ [e3,g3,b3]@5 ~ [e3,g3,b3]@5 ~@7 [e3,g3,b3]@5 ~ [c3,e3,g3]@5 ~@19 [c3,e3,g3]@5 ~@19 [c3,e3,g3]@5 ~@20]/5", // Bm Em7 Cmaj7 C Em C
  I: "[b3@5 [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]]/8", // Cmaj7 Am7 Gmaj7
  J: "[~@5 [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]]/8", // Gmaj7
  K: "[~@5 [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [e3,g3,b3,d4]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]]/8", // Gmaj7 Em7 Cmaj7
  L: "[~@5 [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [c3,e3,g3,b3]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [a3,c4,e4,g4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]]/8", // Cmaj7 Am7 Gmaj7
  M: "[~@5 [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [g3,b3,d4,f#4]@5 ~ [b3,d4,f#4]@5 ~ [d4,f#4]@5 ~ [d4,f#4]@5 ~@2, ~@100 g3@5 ~ [g3,b3]@5 ~ [g3,b3]@5 ~@3]/5", // Gmaj7 Bm D G
})).s("gm_clavinet").gain(0.48)

// chords · piano · "A.CHORDS | JACOE\E  I-B6"
const piano = note(`<
  A@3 B@3 C@2 D E@2 F G H I J K L M@3 N O@2 P Q R@2 P S T@2 P Q U V P W@2 X@2 Y@3 Z P AA AB AC L AD@2 AE ~ AF@3 AG@4 H
  AH@3 AI@4 AJ@2 AK AL@4 AM@3 AN AO@4 AP@5 AQ AR@3 AS AT@3 AU AV@3 AW@2 AX AY@4 AZ@3 AX BA@4 AS BB@2 AX AY@4 AZ@3 AX
  BA@4 AS BB@2 ~
>`.pickRestart({
  A: "f#3/3", B: "[f#3@65 ~@7]/3", C: "[~@15 g3@2 ~ g3@3 a3@5 ~ b3@5 ~ b3@5 ~ b3@8 ~, ~@21 [b2,d3,f#3]@23 ~@4]/2",
  D: "~ b3@19 ~@4, [b2,d3,f#3]@5 ~", // Bm
  E: "[~@6 [f#2,b2,d3,f#3]@2 ~@7 [f#2,b2,d3,f#3]@13 ~@2 [b2,d3,f#3,g3]@10 ~@2 g3@5 ~]/2", // Bm Gmaj7
  F: "~ a3@5 b3@5 ~ b3@5 ~ b3@5 ~, [b2,d3,g3]@7 ~", G: "~ b3@21 ~@2, [b2,d3,g3]@7 ~",
  H: "~@6 [g2,b2,d3,g3]@2 ~@7 [g2,b2,d3,g3]@3 ~@6", I: "[g2,b2,d3,g3]@7 ~", J: "[e3,g3,b3,d4]@15 ~@3 b3@5 ~",
  K: "[e3,b3]@5 ~ e4@5 ~ b3@3 a3@3 [b2,e3,g3]@5 ~", L: "~@6 [b2,e3,g3]@3 ~@6 [b2,e3,g3]@7 ~@2",
  M: "[~@6 [g2,b2,e3,g3]@10 ~@2 g3@3 [c3,e3,g3,a3]@8 ~ b3@3 [c3,e3,g3,b3]@8 ~ a3@3 [a2,g3,b3]@5 ~ a3@3 [a2,c3,e3,g3]@15 ~@3]/3", // Em Am7 Cmaj7 Em Am7
  N: "~@6 [g3,a3,c4,e4]@10 ~@2 d4@5 ~", // Am7
  O: "[[g3,a3,c4,e4]@5 ~ d4@2 ~ [e3,g3,a3,d4]@8 ~ c4@3 d4@5 ~ [d3,f#3,g3,b3]@17 ~@4]/2", // Am7 Em7 Gmaj7
  P: "~@2 [f#2,b2,d3,f#3] ~@2 [f#2,b2,d3,f#3] ~@2", Q: "[f#2,b2,d3,f#3]@6 ~ b3",
  R: "[e4@5 ~ [f#3,b3,d4]@5 ~ [f#3,b3,d4]@5 ~ e4@3 [d3,f#3,g3,b3]@23 ~@4]/2", S: "[f#2,b2,d3,f#3]@5 ~",
  T: "[[f#3,b3,e4]@5 ~ d4@2 ~ [f#3,b3,d4]@8 ~ b3@3 d4@5 ~ b3@8 ~@13]/2", // Esus2 Bm
  U: "[f#3,b3,e4]@5 ~ d4@2 ~ [f#3,b3,d4]@5 ~ e4@7 ~@2", V: "b3@2 ~ a3@2 ~ g3@15 ~@3, [b2,f#3]@5 ~",
  W: "[[f#2,b2,d3,f#3]@30 ~@9 g3@3 g3@5 ~]/2", X: "[a3@2 ~ b3@5 ~ b3@5 ~ a3@5 ~ b3@23 ~@4, [b2,d3,f#3]@43 ~@5]/2",
  Y: "[~@6 [f#2,b2,d3,f#3]@3 ~@3 [f#3,b3]@3 d4@5 ~ [g3,g4]@5 ~ [b3,f#4]@3 e4@5 ~ [f#3,b3,d4]@5 ~ e4@10 ~@2 e4@10 ~@2 e4@3 d4@3, ~@42 [d3,g3]@25 ~@5]/3", // Bm B5 G B5 Bm G5
  Z: "[b2,d3,g3,b3]@7 ~", AA: "~@3 e4@5 ~ e4@5 ~ b3@7 ~@2, ~@3 [d3,g3]@17 ~@4",
  AB: "d4@3 [e3,g3,b3]@5 ~ [e3,g3,b3,d4]@7 ~@2 d4@5 ~", AC: "b3@2 ~ a3@3 g3@15 ~@3, [b2,e3]@5 ~",
  AD: "[~@6 [e3,b3,e4]@10 ~@2 b3@2 ~ [e3,g3,c4,d4]@8 ~ b3@5 ~ d4@3 d4@8 ~]/2", AE: "b3@2 a3@3 ~ [a2,e3,g3]@15 ~@3",
  AF: "[~@6 [a3,c4,e4,g4]@7 ~@2 [a3,c4,e4,g4]@7 ~@2 g4@2 f#4@5 ~ f#4@5 ~@2 e4@5 ~@9 f#4@15 ~@4, ~@23 f#3@18 ~@3 f#3@23 ~@5, ~@24 b3@17 ~@4 b3@22 ~@5]/3", // Am7
  AG: "[~@6 [f#2,b2,d3,f#3]@3 ~@3 [f#3,b3]@3 d4@5 ~ [g3,g4]@5 ~ f#4@5 e4@5 ~@2 [b3,d4]@5 ~ d4@7 ~@2 d4@5 d4@5 ~ b3@5 ~@2 g3@2 g3@17 ~@5, ~@26 b3@5 ~@7 f#3@5 ~ d3@23 ~@5 [g2,d3,e3]@20 ~@4, ~@45 g3@22 ~@4 a3@2 ~@23]/4", // Bm B5 G Bm Em7
  AH: "[~@17 b3@5 ~ d4@3 ~ [g3,b3]@5 ~ [g3,b3,d4]@5 ~ [g3,b3,d4]@5 ~ [e3,b3]@5 a3@3 ~ [d3,g3,b3]@15 ~@3, ~@5 e4@10 ~@57, ~@6 [d3,g3]@15 ~@5 e3@5 ~ e3@5 ~ e3@5 ~ b2@5 ~@4 b2@15 ~@4]/3", // G E5 G G5
  AI: "[~@6 [g3,b3]@2 ~@7 [g3,b3]@7 ~@2 [b3,e4]@5 d4@2 ~@2 e4@7 ~ b3@2 ~@2 [g3,c4,d4]@7 ~ b3@2 ~@2 [g3,c4,d4]@7 ~ d4@5 ~ b3@3 a3@3 ~ [c3,e3,g3,a3]@15 ~@3, ~@5 [b2,e3]@3 ~@6 [b2,e3]@7 ~@2 e3@5 ~@4 [e3,b3]@8 ~@4 e3@8 ~@4 e3@7 ~@14 a2@15 ~@4]/4", // G E5 Gsus4 Am7 E5
  AJ: "[~@6 [c4,e4]@10 ~ d4@5 ~@2 [a3,c4,e4]@5 d4@3 ~ [a3,d4]@7 ~ c4@2 ~ d4@4, ~@5 [g3,a3]@10 ~@8 g3@5 ~@4 [e3,g3]@8 ~@8]/2", // C Am D5 Gsus2 Em
  AK: "~@3 [g3,b3]@17 ~@4, ~@2 [d3,f#3]@17 ~@5", // G D
  AL: "[~@6 [d3,f#3]@2 ~@7 [d3,f#3]@2 ~@7 [d3,f#3]@17 ~@3 b3@2 ~ e4@5 ~@2 d4@5 ~ d4@5 e4@2 ~@2 [g3,b3]@22 ~@5, ~@5 [f#2,b2]@3 ~@6 [f#2,b2]@3 ~@6 [f#2,b2]@17 ~@13 [f#3,b3]@5 ~ [f#3,b3]@5 ~@4 [d3,f#3]@23 ~@5]/4", // D G B5 D
  AM: "[~@6 [d3,f#3]@2 ~@7 f#3@2 ~@7 f#3@20 ~@4 e4@5 d4@3 ~ d4@7 ~ b3@2 ~ d4@4, ~@5 [f#2,b2]@3 ~@6 [f#2,b2,d3]@3 ~@6 [f#2,b2,d3]@20 ~@4 [f#3,b3]@5 ~@4 [f#3,b3]@8 ~@8]/3", // D B5 Bm B5
  AN: "~ b3@4 ~@7",
  AO: "[~@6 [d3,f#3]@2 ~@7 f#3@2 ~@7 f#3@17 ~@3 b3@2 ~@2 e4@5 d4@3 [f#3,b3,d4]@5 ~ e4@8 ~@4 a3@3 g3@15 ~@4, ~@5 [f#2,b2]@3 ~@6 [f#2,b2,d3]@3 ~@6 [f#2,b2,d3]@17 ~@7 [f#3,b3]@5 ~@19 b2@20 ~@5, ~@71 b3@3 ~@22, ~@18 f#3@5 ~]/4", // D Bm B5 Bm B5
  AP: "[~@6 f#3@2 ~@6 [f#2,b2,d3,f#3]@2 ~@7 [f#2,b2,d3,f#3]@30 ~@9 g3@2 ~ g3@5 ~@2 a3@2 b3@5 ~ b3@5 ~ a3@5 ~ b3@23 ~@5, ~@5 [f#2,b2,d3]@3 ~@63 [b2,d3,f#3]@43 ~@6]/5", // Bm
  AQ: "~@5 [f#2,b2,d3,f#3]@3 ~@3 [f#3,b3]@3 d4@5 ~ [g3,g4]@4", // Bm B5 G
  AR: "[~@2 [b3,f#4]@3 e4@5 ~ [f#3,b3,d4]@5 ~ e4@10 ~@2 e4@10 ~@2 e4@2 ~ d4@3 [b2,d3,g3,b3]@22 ~@3, ~@17 [d3,g3]@25 ~@30]/3", // B5 Bm G G5
  AS: "~@5 [f#2,b2,d3,f#3]@3 ~@6 [f#2,b2,d3,f#3]@3 ~@7", // Bm
  AT: "[~@2 e4@5 ~ e4@5 ~ b3@8 ~ d4@3 [e3,g3,b3]@5 ~ [e3,g3,b3,d4]@8 ~ d4@5 ~ b3@3 a3@3 g3@15 ~@4, ~@2 [d3,g3]@17 ~@28 [b2,e3]@20 ~@5]/3", // Em Em7 G5 E5
  AU: "~@5 [b2,e3,g3]@3 ~@6 [b2,e3,g3]@8 ~@2", // Em
  AV: "[~@5 [e3,b3,e4]@10 ~@2 b3@3 [e3,g3,c4,d4]@8 ~ b3@5 ~ d4@3 d4@8 ~ b3@3 a3@2 ~ [a2,e3,g3]@15 ~@4]/3", // E5 C A7
  AW: "[~@5 [g3,a3,c4,e4]@10 ~@2 d4@5 ~ [g3,a3,c4,e4]@5 ~ d4@2 ~ [e3,g3,a3,d4]@8 ~ c4@2 ~ d4@4]/2", // Am7 Em7
  AX: "~ [d3,f#3,g3,b3]@9 ~@2", // Gmaj7
  AY: "[~@5 [f#2,b2,d3,f#3]@2 ~@7 [f#2,b2,d3,f#3]@2 ~@7 [f#2,b2,d3,f#3]@17 ~@4 b3@2 ~ e4@5 ~ [f#3,b3,d4]@5 ~ [f#3,b3,d4]@5 ~ e4@2 ~ [d3,f#3,g3,b3]@22 ~@6]/4", // Bm Gmaj7
  AZ: "[~@5 [f#2,b2,d3,f#3]@2 ~@7 [f#2,b2,d3,f#3]@2 ~@7 [f#2,b2,d3,f#3]@20 ~@4 [f#3,b3,e4]@5 ~ d4@3 [f#3,b3,d4]@7 ~@2 b3@2 ~ d4@4]/3", // Bm Esus2 Bm
  BA: "[~@5 [f#2,b2,d3,f#3]@2 ~@7 [f#2,b2,d3,f#3]@2 ~@7 [f#2,b2,d3,f#3]@17 ~@4 b3@3 [f#3,b3,e4]@5 ~ d4@3 [f#3,b3,d4]@5 ~ e4@8 ~ b3@3 a3@3 g3@15 ~@4, ~@71 [b2,f#3]@20 ~@5]/4", // Bm Esus2 Bm B5
  BB: "[~@5 [f#3,b3,e4]@10 ~@2 d4@5 ~ [f#3,b3,e4]@5 ~ d4@3 [f#3,b3,d4]@7 ~@2 c4@3 d4@4]/2", // Esus2 Bm
})).s("gm_piano").gain(0.48)

// bass · acoustic bass · "BASS | FRETLESS P2-A10"
const bass = note(`<
  A@3 B@3 ~ C D C@2 E F G H I J@3 K L M N O P Q R S P Q T S P U V W P U X C Y C@2 G F G H J@4 Z L M AA C Y C@2 G F G AB
  J@4 K AC M AD@4 AE AF@3 AG@3 AH AI AJ@4 AK@5 AL@3 AM AN@6 AO@3 AP@4 AQ AR@3 AQ AS AF@3 AT@7 AU@8 AV@2 ~
>`.pickRestart({
  A: "[g2,d3,b3]/3", B: "[[g2,d3,b3]@11 ~]/3", C: "g2@5 ~ d3@5 ~", D: "~ g2@7 ~ g2@3 d3@10 ~@2",
  E: "~ e2@9 ~@3 b2@10 ~", F: "~ e2@7 ~ e2@3 b2@10 ~@2", G: "e2@5 ~ b2@5 ~", H: "e2@7 ~@2 e2@3 b2@5 ~ e2@5 ~",
  I: "~ c2@10 ~ g2@11 ~", J: "c2@5 ~ g2@5 ~", K: "[a1,a2]@11 ~ [b1,b2]@11 ~", L: "[c2,c3]@11 ~ [d2,d3]@11 ~",
  M: "[e2,e3]@5 ~ [a2,a3]@5 ~", N: "~ [e2,e3]@10 ~ [c2,c3]@11 ~", O: "[g1,g2]@15 ~@3 d2@5 ~", P: "g2@5 ~ d2@5 ~",
  Q: "g1@7 ~@2 g1@2 ~ d2@10 ~@2", R: "g1@10 ~@3 d2@10 ~", S: "g1@15 ~@3 d2@5 ~", T: "~ g1@10 ~ d2@11 ~",
  U: "f#1@8 ~ f#1@2 ~ d2@11 ~", V: "~ f#1@10 ~ d2@11 ~", W: "~ f#1@14 ~@3 d2@5 ~", X: "g2@8 ~ g2@2 ~ d2@10 ~@2",
  Y: "g2@7 ~@2 g2@3 d3@10 ~@2", Z: "[g1,g2]@5 ~ [b1,b2]@5 ~", AA: "[e2,e3]@5 ~ [c2,c3]@5 ~",
  AB: "e2@7 ~@2 e2@2 ~ b2@5 ~ b2@5 ~", AC: "[c2,c3]@11 ~ d3@10 ~@2, ~@11 d2@10 ~@3",
  AD: "[[e2,e3]@9 ~@3 [c2,c3]@10 ~@2 g2@15 ~@3 d2@5 g2@10 ~@2 d2@10 ~@2 g1@7 ~@2 g1@3 d2@10 ~@3, ~@23 g1@15 ~@58]/4", // E C
  AE: "g1@5 ~ d2@5 ~", AF: "[g1@15 ~@2 d2@5 ~ g2@10 ~@2 d2@10 ~@2 g1@7 ~@2 g1@3 d2@10 ~@3]/3",
  AG: "[g1@10 ~@2 d2@11 g1@15 ~@3 d2@5 ~ g2@10 ~@2 d2@10 ~@3]/3", AH: "f#1@7 ~ f#1@3 d2@11 ~@2",
  AI: "f#1@10 ~ d2@11 ~@2", AJ: "[f#1@14 ~@3 d2@5 ~ g2@11 ~ d2@11 ~ f#1@8 ~ f#1@3 d2@11 ~ g2@8 ~ g2@2 ~ d2@10 ~@3]/4",
  AK: "[g2@10 ~ d3@11 ~ g2@7 ~@2 g2@3 d3@10 ~@2 g2@11 ~@2 d3@10 ~ g2@11 ~@2 d3@10 ~ e2@11 ~ b2@11 ~@2]/5",
  AL: "[e2@7 ~ e2@3 b2@10 ~@2 e2@11 ~ b2@11 ~ e2@8 ~ e2@2 ~ b2@5 ~ e2@5 ~@2]/3", AM: "c2@10 ~ g2@10 ~@3",
  AN: "[c2@9 ~@2 g2@10 ~@2 c2@10 ~@2 g2@10 ~@2 c2@10 ~@2 g2@10 ~@2 [g1,g2]@10 ~@3 b2@9 ~@3 c3@10 ~ [d2,d3]@10 ~@2 [e2,e3]@10 ~@2 [a2,a3]@10 ~@3, ~@83 b1@10 ~@2 c2@10 ~@39]/6", // G D E A
  AO: "[[e2,e3]@9 ~@2 [c2,c3]@10 ~@2 [g1,g2]@15 ~@3 d2@5 ~ g2@10 ~@2 d2@10 ~@3]/3", // E C G
  AP: "[g1@7 ~ g1@3 d2@10 ~@2 g1@10 ~@3 d2@9 ~@2 g1@15 ~@3 d2@5 ~ g2@10 ~@2 d2@10 ~@3]/4",
  AQ: "g1@7 ~ g1@2 ~ d2@10 ~@3", AR: "[g1@9 ~@2 d2@10 ~@2 g1@15 ~@3 d2@5 ~ g2@10 ~@2 d2@10 ~@3]/3",
  AS: "g1@9 ~@2 d2@10 ~@3",
  AT: "[g2@7 ~ g2@2 ~ d2@10 ~@2 [g1,g2]@15 ~@3 d2@5 ~ g2@10 ~@2 d2@10 ~@2 g1@7 ~@2 g1@3 d2@10 ~@2 g1@9 ~@4 d2@9 ~@2 g1@15 ~@3 d2@5 ~ g2@10 ~@2 d2@10 ~@2 g1]/7", // G
  AU: "[~@8 g1@3 d2@10 ~@2 g1@9 ~@3 d2@9 ~@3 g1@15 ~@3 d2@5 ~ g2@10 ~@2 d2@10 ~@2 g1@7 ~@2 g1@3 d2@10 ~@2 g1@9 ~@3 d2@9 ~@3 g1@15 ~@3 d2@5 ~ g2@10 ~@2 d2@10 ~@2 g1]/8",
  AV: "[~@8 g1@3 d2@10 ~@2 g2@7 ~@2 g2@2 ~ d2@10 ~@3]/2",
})).s("gm_acoustic_bass").gain(0.48)

// other · blown bottle · "FLUTE | FLUTE    P1-C14"
const blown_bottle = note(`<
  A B C A B C ~@17 A B C ~ A B C ~ A B C ~ A B C ~@33 D@2 E ~ D@2 E ~ D@2 E ~ D@2 E ~@17 D@2 E ~ D@2 E ~ D@2 E ~ D@2 ~@2
  D@2 E ~ D@2 E ~ D@2 E ~ D@2 ~@3
>`.pickRestart({
  A: "~@2 f#5 ~@2 a5 ~@2", B: "g5@3 ~@6 d5@3 ~@6 c5@2 ~@4", C: "~@12 b4@2 ~ c5@3 b4@3 d5@3",
  D: "[~@5 f#5@2 ~@7 a5@3 ~@6 g5@2 ~@7 d5@3 ~@6 c5@2 ~@5]/2", E: "~@11 b4@3 c5@3 b4@2 ~ d5@2 ~@2",
})).s("gm_blown_bottle").gain(0.32)

// other · pan flute · "FLUTE | IcePiano P1-B7"
const pan_flute = note(`<
  A B C A B C ~@17 A B C ~ A B C ~ A B C ~ A B C ~@33 D@2 E ~ F G E ~ D@2 E ~ H G E ~@17 D@2 E ~ D@2 E ~ D@2 E ~ D@2 ~@2
  D@2 E ~ D@2 E ~ D@2 E ~ D@2 ~@3
>`.pickRestart({
  A: "~@6 f#5@2 ~@7 a5@2 ~@7", B: "g5@2 ~@7 d5@2 ~@7 c5@2 ~@4", C: "~@12 b4@3 c5@2 ~ b4@2 ~ d5@2 ~",
  D: "[~@5 f#5@2 ~@7 a5@2 ~@7 g5@2 ~@7 d5@2 ~@7 c5@2 ~@5]/2", E: "~@11 b4@2 ~ c5@2 ~ b4@3 d5@2 ~@2",
  F: "~@5 f#5@3 ~@6 a5@2 ~@8", G: "g5@2 ~@6 d5@3 ~@6 c5@3 ~@4", H: "~@3 f#5 ~@3 a5 ~@4",
})).s("gm_pan_flute").gain(0.32)

// chords · string ensemble 2 · "STRINGS | LwSTRINGS I-B13"
const string_ensemble_2 = note(`<
  ~@7 A@4 B@4 C@4 D@4 E@4 ~@4 F@5 ~@3 E@4 G@4 C@4 H@7 I@8 J@8 ~@4 K@5 ~@3 L@8 M@8 N@8 O@5 ~@3 N@8 P@6 ~@4
>`.pickRestart({
  A: "[[g4,b4,d5] [g4,b4,d5]@21 ~@74, ~ f#5@86 ~@9]/4", B: "[~ d5@86 ~@9, [e4,g4,b4]@43 ~@5]/4",
  C: "[[c4,e4,g4,b4]@43 ~@5]/4", D: "[[a4,c5,e5,g5]@43 ~@5]/4", E: "[[g4,b4,d5,f#5]@43 ~@5]/4",
  F: "[[g4,b4,d5,f#5]@107 ~@13]/5", G: "[[e4,g4,b4,d5]@43 ~@5]/4",
  H: "[[a4,c5,e5,g5]@43 ~@5 [b4,d5,f#5]@36, ~@95 g4@73]/7", // Am7 Bm
  I: "[~@12 [g4,b4,d5]@43 ~@5 [e4,g4,b4]@36, ~@23 e4@86 ~@10 c4@73]/8", // G Em
  J: "[~@12 [e5,g5]@43 ~@5 [d5,f#5]@36, ~@23 [a4,c5]@86 ~@10 [g4,b4]@73]/8", // Em D Am G
  K: "[~@12 [d5,f#5]@43 ~@5, ~@23 [g4,b4]@86 ~@11]/5", // D G
  L: "[~@24 f#5@85 ~@10 [e4,g4,b4,d5]@73, ~@23 [g4,b4,d5]@86 ~@83]/8", // Em7 G
  M: "[~@23 [c4,e4,g4,b4]@86 ~@10 [a4,c5,e5,g5]@73]/8", N: "[~@23 [g4,b4,d5,f#5]@169]/8",
  O: "[~@23 [g4,b4,d5,f#5]@86 ~@11]/5", P: "[~@23 [g4,b4,d5,f#5]@107 ~@14]/6",
})).s("gm_string_ensemble_2").gain(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@7 A B A C A C A C A C A C A C A D A C A C A C A C A C A E ~ C A F A C A C G H I J A C A C A C A K I H I H I H ~ C A
  E I H I H I L I J A E I H I L I H I H I H I L I H I J G H I H I H I J G H I L I M I J G H ~ K I H I H I H ~ K I H I H
  I H ~ K I H I J G H I L ~
>`.pickRestart({
  A: "x", B: "~ x ~@5 x ~@16", C: "x!2 ~@2", D: "~ x ~@10 x ~@11", E: "x ~@5 x ~@16 x", F: "x!2", G: "x ~@22 x",
  H: "~@5 x ~@17 x", I: "~@23 x", J: "~@5 x ~@18", K: "x ~@10 x ~@11 x", L: "~@11 x ~@11 x", M: "~@5 x ~@16 x ~",
})).gain(0.56)

// drums · snare
const snare = s("sd").struct(`<
  ~@7 A B A C D C D E D C D C A B A F D C D C D C D G D C D C D C D F D C D C D H D G D C D C D H G F I H I H D C D G D
  H I H D H J K I H D C I H J K I H I H I H J K D H I L D H D H D H I H I H J K M H I L D H D F I H I L D H J ~ I H I L
  D H J ~ I H I G D H N ~@2
>`.pickRestart({
  A: "~@13 x ~@8 x ~", B: "~@13 x ~@10", C: "~ x", D: "~@4 x ~@2 x", E: "~@13 x ~@5 x ~ x ~@2", F: "x!2 ~@6",
  G: "~@4 x ~ x!2", H: "~@11 x ~@12", I: "~@11 x ~@8 x ~@3", J: "~@12 x ~@7 x ~@2 x", K: "~ x ~@10",
  L: "~@11 x ~@5 x ~@2 x ~@3", M: "~@11 x ~@7 x ~@4", N: "~@11 x ~@8 x ~@2 x",
})).gain(0.7)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@7 A B C@2 A C@3 D C E D ~@20 D C@3 D E F D@2 C@3 ~@4 F@3 G D E F D@2 C H G ~@20 D H F G F@3 G F@3 G ~@37
>`.pickRestart({
  A: "~@7 x ~@5 x ~@5 x ~@4", B: "~ x ~@5 x ~@5 x ~@5 x ~@4", C: "x!4", D: "~ x!3", E: "x ~@5 x ~@5 x ~@5 x ~@4 x",
  F: "~@5 x ~@5 x ~@5 x ~@5 x", G: "~@5 x ~@5 x ~@5 x ~@6", H: "x ~@5 x ~@4 x ~@5 x ~@5 x",
})).gain(0.7)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@22 A ~@15 A ~@15 B ~@15 B ~@7 B ~@7 B ~@15 B ~@7 B ~@7 B ~ C ~@5 D ~@7 D ~
>`.pickRestart({
  A: "~@6 x!2", B: "~@17 x ~@2 x ~@3", C: "~@23 x", D: "~@16 x ~@2 x ~@4",
})).gain(0.63)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@22 A ~@15 A ~@15 B ~@15 B ~@7 B ~@7 B ~@15 B ~@7 B ~@7 B ~@7 C ~@7 D ~
>`.pickRestart({
  A: "~@4 x!2 ~@2", B: "~@11 x ~@2 x ~@9", C: "~@11 x ~@12", D: "~@10 x ~@2 x ~@10",
})).gain(0.7)

// drums · open hat
const open_hat = s("oh").struct("<~@19 A B C D ~@28 A C@2 D ~@12 E C@2 D ~@28 F@3 ~@34>".pickRestart({
  A: "~ x!3", B: "x ~@5 x ~@5 x ~@6 x ~@4", C: "x!4", D: "x", E: "~@5 x ~@6 x ~@5 x ~@5", F: "~@5 x ~@5 x ~@5 x ~@5 x",
})).gain(0.56)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@22 A ~@15 A ~@15 B ~@15 B ~@7 B ~@7 B ~@15 B ~@7 B ~@7 C ~@7 D ~@7 E ~
>`.pickRestart({
  A: "~@2 x!2 ~@4", B: "~@5 x ~@2 x ~@15", C: "~@2 x ~@2 x ~@2 x ~@15", D: "~@2 x ~@2 x ~@18", E: "~@2 x ~@4 x ~@16",
})).gain(0.7)

// drums · crash
const crash = s("cr").struct(`<
  ~@7 A ~@3 B ~@3 B ~@3 B ~@3 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@3 B ~@2 C ~@4 B ~@2 C ~@3 C ~@4 B ~@2 C ~@3 C ~@2 B ~
  B ~ B C ~ C ~ C ~ C ~@2 B ~@2 C ~@3 C ~@3 C ~@3 C ~ C ~ C ~@2 B C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~
>`.pickRestart({
// … 17 more lines

More by Robert Palmer