Strudelify

Knock on Wood

Wilson Pickett

KeyE majorTempo120 bpm
0:00/0:00
// Knock on Wood — Wilson Pickett
// 120 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 105 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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.

// other · brass section · "Horn falls (like on"
const brass_section = note("<~@18 A@2 ~@19 A@2 ~@23 B@2 ~@18 A@2 ~@19>".pickRestart({
  A: "[~@20 [d5,d6] ~@3 [d5,d6]@2 [d#5,d#6]@2 [e5,e6]@8 ~@28]/2", // D D# E
  B: "[~@20 [f5,f6] ~@3 [f5,f6]@2 [f#5,f#6]@2 [g5,g6]@8 ~@28]/2", // F F# G
})).s("gm_brass_section").gain(0.57)

// chords · synth brass 1 · "Brass"
const synth_brass_1 = note(`<
  ~ A B C D ~@4 E ~ F ~ G ~ H ~ I J K L M N O P D ~@2 Q ~ R ~ S ~ T ~ U ~ V W X Y Z N B AA AB AC AD AE AF ~@2 AG ~ AH ~
  AI ~ T ~ U ~ AJ AK X AL AM AN AO AF ~@4 E ~ F ~ G ~ H ~ I J K L AP AQ AR AA AS AT L AU L AV AW AX AY N B AA AZ BA
>`.pickRestart({
  A: "e5@27 ~ g5@3 ~", B: "~@4 a5@23 ~@5", C: "b5@27 ~ d6@4", D: "~ b5@5 ~@2", E: "~@4 b4 ~@2 e5@5 d5@18 ~@2",
  F: "~@4 b4 ~@3 e5@3 d5@15 ~@2 e5 ~@3", G: "~@4 e5 ~@3 a5@4 g5@18 ~@2", H: "~@4 e5 ~@3 a5@4 g5@19 ~",
  I: "~@4 [e5,g#5]@5 ~ [e5,g#5] ~@5", J: "~@8 [e5,a5]@11 ~ [e5,a5]@2 ~@10", K: "~@8 [g#5,b5]@11 ~ [g#5,b5] ~@11",
  L: "~@8 [e5,a5,c#6]@11 ~ [e5,a5,c#6] ~@11", M: "[b5,e6] ~@7", N: "e5@27 ~ g5@4", O: "~@4 a5@25 ~@3",
  P: "b5@26 ~@2 d6@3 ~", Q: "~@4 e5 ~@3 a5@4 g5@15 a5 ~@4", R: "~@4 b4 ~@2 e5@4 d5@18 ~@3",
  S: "~@4 b4 ~@3 g#5@3 ~ d5@19 ~, ~@7 e5@4 f#5@20 ~", T: "~@4 e5 ~@3 [a5,c#6]@4 [g5,b5]@15 [a5,c#6] ~@4",
  U: "~@4 e5 ~@3 [a5,c#6]@4 [g5,b5]@16 [a5,c#6] ~@3", V: "~@8 [e5,g#5,b5]@10 ~ [e5,g#5,b5]@2 ~@11",
  W: "~@8 [e5,a5,c#6]@12 [e5,a5,c#6] ~@11", X: "~@8 [g#5,b5,e6]@11 ~ [g#5,b5,e6] ~@11",
  Y: "~@8 [a5,c#6,e6]@10 ~@2 [a5,c#6,e6] ~@11", Z: "[g#5,b5,e6] ~@7", AA: "b5@13 ~ d6@2", AB: "~ b5 ~ a5 ~ g5 ~@2",
  AC: "~@4 a5@2 g#5@2 [f#4,f#5]@17 ~@7, [f#4,f#5] g#5 ~@14, ~ g#4@2 a4@3 g#4 ~@25", // F#
  AD: "[g#4,g#5]@2 ~ [b4,b5]@2 ~@2 [g#4,g#5]@17 ~@8, ~@2 [a4,a5]@2 ~ a5@2 ~@25, ~@3 a4 ~@12", // G# B G# A
  AE: "[a4,a5]@2 a#4 ~ c5@2 [b4,b5]@2 [a4,a5]@17 ~@7, ~ [b4,b5] ~@14, ~@3 c6@3 ~@26", // A B A B
  AF: "[a#5,e6,g6]@5 ~@11 [a5,d#6,f#6]@5 ~@11", AG: "~@4 e5 ~@3 a5@4 g5@16 a5 ~@3",
  AH: "~@4 b4 ~@7 d5@17 ~@3, ~@8 [e5,g#5]@5 ~@19, ~@11 f#5@18 ~@3", // E
  AI: "~@4 b4 ~@3 [e5,g#5]@4 [d5,f#5]@15 [e5,g#5] ~@4", AJ: "~@8 [b5,d6,g6]@11 ~ [b5,d6,g6] ~@11",
  AK: "~@8 [c6,e6,g6]@12 [c6,e6,g6] ~@11", AL: "~@8 [a5,c#6,e6]@10 ~ [a5,c#6,e6]@2 ~@11",
  AM: "[f#4,f#5]@2 [g#4,g#5]@2 [a4,a5]@2 g#5@2 [f#4,f#5]@17 ~@7, ~@6 g#4 ~@25", // F# G# A F#
  AN: "[g#4,g#5]@2 [a4,a5]@2 [b4,b5]@2 [a4,a5]@2 [g#4,g#5]@17 ~@7", // G# A B A G#
  AO: "[a4,a5]@2 [b4,b5]@2 ~@2 [b4,b5]@2 [a4,a5]@17 ~@7, ~@2 a#4 ~ c6@3 ~@25, ~@5 c5@2 ~@25", AP: "[g#5,b5,e6]@3 ~@29",
  AQ: "e5@27 ~@2 g5@3", AR: "~@5 a5@23 ~@4", AS: "~@4 b5@4 ~@4 a5@4 ~@4 g5@9 ~@3",
  AT: "~@8 [d5,g#5,b5]@11 ~ [d5,g#5,b5]@2 ~@10", AU: "~@9 [d5,g#5,b5]@10 ~ [d5,g#5,b5]@2 ~@10",
  AV: "~@8 [d5,g#5,b5]@11 ~ [d5,g#5,b5]@2 ~@10, ~@8 g5 ~@23", AW: "~@8 [e5,g5,b5]@11 ~ [e5,g5,b5] ~@11",
  AX: "~@8 [d5,g#5,b5]@10 ~@2 [d5,g#5,b5] ~@11, ~@8 g5 ~@23", AY: "~@8 [e5,g5,c#6]@11 ~@2 [e5,g5] ~@10, ~@21 c#6@2 ~@9",
  AZ: "~@4 b5@4 ~@4 a5@3 ~@5 g5@6 ~@6", BA: "~ [e5,b5,e6]@6 ~@25",
})).s("gm_synth_brass_1").gain(0.45)

// chords · baritone sax · "Sax"
const baritone_sax = note(`<
  A@2 B C D ~@4 E ~ F ~ G ~ G ~ H I J K L M N O D ~@2 G ~ P ~ Q ~ R ~ G ~ H S T U V W B X Y Z AA@2 AB ~@2 AC ~ AD ~ P ~
  R ~ G ~ AE AF T U Z AG@2 AB ~@4 E ~ F ~ G ~ G ~ H I J K AH M B X AI AJ AK AL AM AN AM AO AM M AP AQ AR AS
>`.pickRestart({
  A: "[~@31 e5@27 ~@2 g5@4]/2", B: "~@2 a5@11 ~@3", C: "a#5 b5@25 ~@2 d6@3 ~", D: "~@2 b5@13 ~",
  E: "~@3 b4 ~@4 e5@4 d5@18 ~@2", F: "~@4 b4 ~@3 e5@4 d5@20", G: "~@4 e5 ~@3 a5@4 g5@20",
  H: "~@8 [d5,g#5]@11 ~ [d5,g#5] ~@11", I: "~@8 [e5,a5]@10 ~@2 [e5,a5] ~@11", J: "~@8 [d5,g#5]@10 ~@2 [d5,g#5] ~@11",
  K: "~@4 [e5,a5]@5 ~ [e5,a5] ~@5", L: "[e4,e5] ~@7", M: "e5@27 ~ g5@4", N: "~@4 a5@23 ~@5", O: "b5@27 ~ d6@4",
  P: "~@4 b4 ~@3 e5@4 d5@14 ~@6", Q: "~@3 b4 ~@3 e5@4 d5@20 ~", R: "~@4 e5 ~@3 a5@4 g5@16 a5 ~@3",
  S: "~@8 [e5,a5]@11 ~ [e5,a5] ~@11", T: "~@8 [d5,g#5]@12 [d5,g#5] ~@11", U: "~@8 [e5,a5]@12 [e5,a5]@3 ~@9",
  V: "[e5,e6] ~@7", W: "e5@13 ~ g5@2", X: "b5@13 ~ d6@2", Y: "~@4 b5@4 ~@4 a5@4 ~@4 g5@5 ~@7",
  Z: "[f#4,f#5] [g#4,g#5] [a4,a5] [g#4,g#5] [f#4,f#5]@9 ~@3", // F# G# A G# F#
  AA: "[~@6 a5@2 [g#4,g#5]@17 ~@6 [a4,a5]@3 ~ [c5,c6]@2 [b4,b5]@2 [a4,a5]@17 ~@8, [g#4,g#5]@2 a5@2 b5@3 ~@57, ~ a4@2 b4@2 a4@2 ~@27 [b4,b5]@2 ~@28]/2", // G# A C B A G# B
  AB: "[c5,c6]@4 ~@11 [b4,b5]@4 ~@13", AC: "~@4 e5 ~@3 a5@4 g5@18 ~@2", AD: "~@4 b4 ~@3 e5@4 d5@13 ~@7",
  AE: "~@8 [f5,b5]@12 [f5,b5] ~@11", AF: "~@8 [g5,c6]@12 [g5,c6] ~@11",
  AG: "[[g#4,g#5]@2 ~@2 b5@2 [a4,a5]@2 [g#4,g#5]@17 ~@7 a5@2 [b4,b5]@2 [c5,c6]@2 [b4,b5]@2 [a4,a5]@17 ~@7, ~@2 [a4,a5]@2 ~@27 a4@3 ~@30, ~@3 b4@3 ~@58]/2", // G# A G# B C B A
  AH: "[e5,b5,e6] ~@7", AI: "~@4 b5@4 ~@4 a5@4 ~@4 g5@11 ~", AJ: "~@9 [b4,d5,e5]@11 ~ [b4,d5,e5] ~@10",
  AK: "~@8 [a4,c#5,e5]@11 ~ [a4,c#5,e5] ~@11", AL: "~@8 [b4,d5,e5]@11 ~ [b4,d5,e5]@2 ~@10",
  AM: "~@8 [c#5,e5]@11 ~ [c#5,e5]@2 ~@10", // C#m
  AN: "~@8 [e5,f#5] ~@3 e5@6 ~@2 [b4,d5,e5]@2 ~@10, ~@4 [b4,d5]@5 ~@7, ~@8 c#5@3 ~@21", AO: "~@4 [b4,d5]@6 [b4,d5] ~@5",
  AP: "~ a5@6 ~", AQ: "b5@25 ~@3 d6@4", AR: "~@4 b5@4 ~@4 a5@4 ~@4 g5@7 ~@5", AS: "~ [e5,b5,e6]@5 ~@26, ~ d6 ~@30",
})).s("gm_baritone_sax").gain(0.41)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~ A@2 B C D E D F G H I J K D F L M L N L O P Q R S F@2 T@2 U V@2 U W X Y Z AA AB AC AB O AD@2 AE AF AG AH AI AJ AK AL
  AM AN U@2 AO AP AQ AR AQ@2 AS AT AU AV AW AX AY AJ D E D F G H I J K D F L M L N L AZ BA BB BC BD BE BF BG BH BI BJ BK
  BL BA BB BC BD BM
>`.pickRestart({
  A: "[e1@28 ~ g1@5 ~@2 a1@26 ~@2]/2", B: "b1@28 ~ d2@3", C: "~@5 b1@27", D: "a1@4 ~@9 f#2@3 ~@4 e2@3 ~@5 c#2@4",
  E: "a1@4 ~@9 f#2@3 ~@4 e2@3 ~@6 c#2@3", F: "a1@4 ~@8 f#2@3 ~@5 e2@3 ~@5 c#2@4", G: "e1 ~@2 c#2 ~ b1 ~ g#1",
  H: "e1@4 ~@8 c#2@3 ~@5 b1@3 ~@5 g#1@4", I: "e1@4 ~@9 c#2@3 ~@4 b1@3 ~@5 g#1@4",
  J: "e1@4 ~@8 c#2@3 ~@5 b1@4 ~@4 g#1@4", K: "~ a1@4 ~@8 f#2@3 ~@4 e2@4 ~@4 c#2@4", L: "a1 ~@2 f#2 ~ e2 ~ c#2",
  M: "~ e1@5 ~@6 c#2@4 ~@4 b1@5 ~@3 g#1@4", N: "e1@5 ~@8 c#2@3 ~@4 b1@4 ~@4 g#1@4", O: "e1 ~@7", P: "e1@7 g1",
  Q: "~@5 a1@26 ~", R: "b1@27 ~ d2@3 ~", S: "~ b1@7", T: "a1@5 ~@7 f#2@3 ~@5 e2@3 ~@5 c#2@4",
  U: "e1@5 ~@7 c#2@3 ~@5 b1@3 ~@5 g#1@4", V: "e1@5 ~@7 c#2@3 ~@5 b1@4 ~@4 g#1@4",
  W: "a1@8 ~@4 f#2@3 ~@5 e2@4 ~@4 c#2@4", X: "a1@9 ~@4 f#2@3 ~@4 e2@3 ~@5 c#2@4",
  Y: "a1@5 ~@8 f#2@3 ~@5 e2@3 ~@4 c#2@4", Z: "a1@10 ~@2 f#2@3 ~@5 e2@4 ~@4 c#2@4", AA: "e1@12 c#2@3 ~@5 b1@4 ~@4 g#1@4",
  AB: "a1@12 ~ f#2@3 ~@4 e2@3 ~@5 c#2@4", AC: "e1@12 ~ c#2@4 ~@4 b1@3 ~@4 g#1@3 ~",
  AD: "[e1@18 ~@3 e1 ~@2 e1@4 ~ g1@6 ~@2 a1@26 ~]/2", AE: "~ b1@27 ~ d2@3", AF: "~@5 b1@16 ~@11",
  AG: "f#1@9 ~@3 f#1 ~@3 f#1@14 ~@2", AH: "~ g#1@9 ~@2 g#1 ~@3 g#1@13 ~@3", AI: "~ a1@9 ~@2 a1 ~@3 a1@9 ~@7",
  AJ: "c2@4 ~@12 b1@5 ~@11", AK: "~ a1@4 ~@7 f#2@4 ~@4 e2@3 ~@5 c#2@4", AL: "a1@4 ~@8 f#2@4 ~@4 e2@3 ~@5 c#2@4",
  AM: "a1@5 ~@8 f#2@3 ~@4 e2@3 ~@5 c#2@4", AN: "a1@5 ~@8 f#2@4 ~@3 e2@4 ~@4 c#2@4",
  AO: "e1@7 ~@6 c#2@3 ~@4 b1@3 ~@5 g#1@4", AP: "e1@9 ~@3 c#2@3 ~@5 b1@4 e1@4 f#1@4",
  AQ: "a1@11 ~ f#2@3 ~@5 e2@3 ~@5 c#2@4", AR: "a1@8 ~@4 f#2@3 ~@5 e2@3 ~@5 c#2@4", AS: "g1@11 ~ e2@3 ~@5 d2@3 ~@5 a1@4",
  AT: "c2@12 ~ a2@3 ~@4 g2@2 ~@6 e2@4", AU: "e1@3 c#2 ~ b1 ~ g#1", AV: "a1@11 ~ f#2@3 ~@5 e2@4 ~@4 c#2@4",
  AW: "~ f#1@9 ~@2 f#1 ~@3 f#1@14 ~@2", AX: "~ g#1@9 ~@2 g#1 ~@4 g#1@13 ~@2", AY: "~ a1@9 ~@2 a1 ~@4 a1@9 ~@6",
  AZ: "~ e1@4 ~@27", BA: "~ e1@25 ~@3 g1@3", BB: "~@2 a1@13 ~", BC: "b1@27 ~@2 d2@3",
  BD: "~@4 b1@4 ~@5 a1@4 ~@3 g1@11 ~", BE: "e1@9 ~@4 c#2@3 ~@5 b1@3 ~@4 f#1@4",
  BF: "~ a1@11 ~ f#2@3 ~@4 e2@4 ~@5 c#2@3", BG: "e1@12 ~ c#2@3 ~@5 b1@3 ~@5 g#1@3",
  BH: "~ a1@12 f#2@3 ~@5 e2@3 ~@5 c#2@3", BI: "e1@12 ~ c#2@3 ~@5 b1@3 ~@4 g#1@4",
  BJ: "a1@12 ~ f#2@3 ~@5 e2@3 ~@5 c#2@3", BK: "~ e1@12 c#2@3 ~@5 b1@3 ~@4 g#1@4",
  BL: "~ a1@11 f#2@3 ~@5 e2@3 ~@6 c#2@3", BM: "e2 ~@7",
})).s("gm_electric_bass_finger").gain(0.36)

// chords · drawbar organ · "Organ (a good dirty"
const drawbar_organ = note(`<
  ~ A@3 B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC@2 AD AE AF AG AH@3 AI AJ AK AL AM AN AO AP AQ AR AS@2
  AT@2 AU AV AW AX AY AZ BA BB BC BD@2 BE BF AP AQ BG BH C D E F G H I J K L M N O P Q R BI BJ BK BL BM BN BO BP BQ BR
  BS BT BU BV BW BX BY BZ
>`.pickRestart({
  A: "[a#5 b5@26 ~ [g5,b5,d6]@8 [a5,c#6,e6]@27 ~ [f#5,b5]@5 e5 [c#5,d#5] [a4,b4] g#4 [e4,f#4] d#4 [b3,c#4] a3 [f#3,g#3] e3 ~@5 [d#5,f#5]@4 b4 ~@3 [a4,d5,f#5]@4, e6@27 ~@36 d#6@4 ~@17 d5 ~@11]/3", // G A B5 C#sus2 Asus2 Esus2 Bsus2 F#sus2 …
  B: "~@4 [b4,d#5,f#5]@27 ~", // B
  C: "~@6 a3 [g4,b4,c#5]@3 ~@2 [g4,b4,c#5] ~@7 [d#4,e4] ~@3 [a4,e5,g5]@4 [d5,f#5] ~@3, ~@7 e5@5 ~@20", // C#m7b5 Emaj7 A7 D
  D: "~@6 a3 ~ [g4,b4,c#5]@3 ~ [g4,b4,c#5] ~@19, ~@2 e5 ~@5", // C#m7b5
  E: "~@6 a3 ~ [g4,c#5]@3 g4 c#5 ~@7 [g#3,a3] ~@3 [a4,e5,g5]@4 [d5,f#5] ~@3, ~@7 [b4,e5]@5 ~@12 b4 ~@7", // Gdim Amaj7 A7 D E5
  F: "~@6 a3 ~ [g4,b4,c#5]@3 ~ [g4,b4,c#5] ~@7 [b5,e6]@3 a5@2 [f#5,g#5] [d#5,e5] [b4,c#5] [g#4,a4] f#4 [d#4,e4] c#4, ~@8 e5@4 ~@8 f6 ~@11", // C#m7b5 E5 F#sus2 Emaj7 Bsus2 Amaj7 Emaj7
  G: "~@6 g#3 ~ [d5,f#5,g#5,b5]@4 [d5,f#5,g#5,b5] ~@11 [b4,d5,e5]@4 [a4,c#5] ~@3, ~@24 f5 ~@7", // G#m7b5 E7 A
  H: "~@6 e4 [f5,g5] [g#5,b5]@4 [d5,f#5] ~@9 e4 ~ [b4,d5,e5] ~@3 [a4,a#4,c#5,e5] ~@3, ~@8 [d5,f#5]@3 ~@21, ~@8 a5 ~@23", // Fsus2 G#m D E7 A D
  I: "~@7 [d#4,e4] [g#5,b5]@4 [d5,f#5,g#5] ~@9 e4 ~ [b4,d5,e5]@4 [a4,c#5] ~@3, ~@8 [d5,f#5]@3 ~@21, ~@8 g5 ~@23", // Emaj7 G#m G#m7b5 E7 A D
  J: "~@6 e4 ~ [g#5,b5]@4 [d5,f#5,a5] ~@3 [b5,e6]@2 ~ a5 [f#5,g#5] [d#5,e5] [a4,b4,c#5] [f#4,g#4] [d#4,e4] [e4,f#4] ~@2 [b4,c#5,d#5,e5] ~@3, ~@8 [d5,f#5]@3 ~ g#5@2 ~@2 a#5 ~@15", // G#m D E5 F#sus2 Emaj7 A F#sus2 Emaj7 …
  K: "~@7 a3 [g4,b4,c#5]@3 g4 [b4,c#5] ~@7 [a4,e5,g5]@8 [d5,f#5] g4 ~@2, ~@8 e5@5 ~@19", // C#m7b5 Bsus2 A7 D
  L: "~@6 a3 [g4,b4,c#5,e5]@6 ~@11 [a5,e6,g6]@4 [d6,f#6] ~@3", // C#m7b5 A7 D
  M: "~ c#6@3 a5 ~@3 [g5,b5]@4 [f#5,a5] ~@3 [e5,g5] ~ [d#5,e5,g5] d5 f#5 ~@3 e5@4 [c#5,d5] ~@3, e6 ~@7, c6@2 ~@22 c#5@3 ~ b4@2 ~@2", // G F#m Em D# Dmaj7
  N: "~@4 [a4,a#4,d5] b4@2 ~ a#4@2 a4 ~ g4@2 ~@2 g4@3 ~ a4@3 ~ e4@4 [a#5,d6]@4, ~@4 e5@3 ~ e5@6 ~@2 e5@7 ~@9, ~@16 d5 ~@3 a#4 ~@11", // A#maj7 A#
  O: "~ d6 ~ b5 d6 ~ d6 ~ d6 b5@2 d6 ~ d6 b5 d6 b5@2 d6 ~ d6 b5 ~@2 b5@4 [c#6,e6]@4, b5@2 ~@3 b5@2 b5@2 ~@3 b5@2 ~@5 b5@2 ~@2 d6@4 ~ c6 ~@3", // C#m
  P: "[a5,b5] g#5 [e5,f#5] [b4,c#5,d#5] a4 [f#4,g#4] [d#4,e4] c#4 g3 [g#3,a3,b3] ~@10 a3 ~@7 b3 ~@3, ~@12 [g4,b4,c#5,e5]@11 ~ [g4,b4,c#5,e5]@7 ~", // Asus2 Esus2 B F#sus2 Emaj7 G#m C#m7b5
  Q: "e5@2 ~@2 e3 ~@4 f6 ~@14 [d5,f#5,g#5,b5]@3 ~ [g3,g#3,a3,b3] ~@3, b4 ~@7 [e5,b5,e6]@2 ~@14 a5 ~@7", // G#m7b5 E5
  R: "~@4 a3 ~@4 g4@2 ~ a3 ~@3 [g4,b4,c#5,e5]@3 ~ a3 ~@3 [g4,b4,c#5,e5]@4 [a3,b3,c#4] ~@3, ~@2 [b4,c#5,e5] ~@5, ~@9 d#5 ~@22", // C#m7b5 A C#m7
  S: "~@8 [b5,e6]@4 a5 [f#5,g#5] [d#5,e5] c#5 b4 [g#4,a4] f#4 [d#4,e4] [b3,c#4] a3 [f#3,g#3] e3 d#3 ~@7, ~@8 a#5 ~@23", // E5 F#sus2 Emaj7 Amaj7 Emaj7 Bsus2 F#sus2
  T: "a#5 b5@26 ~ [g5,b5,d6]@4, e6@13 ~@3", U: "~@2 [a5,c#6,e6]@13 ~, ~@4 c6 ~@27",
  V: "[f#5,b5,d#6]@27 ~@2 e6 ~@2, ~@7 [g#5,a5,d6,f#6]", // B D
  W: "~@4 [b5,d#6,f#6]@15 ~ [g#5,a5] [e5,f#5] d#5 c#5 [a4,b4] g#4 [e4,f#4] d#4 c#4 ~@3", // B Amaj7 Esus2 Asus2 Esus2
  X: "~@6 a3 ~ [g4,b4,c#5,e5]@3 ~ [g4,b4,c#5] ~@7 [c5,c#5] ~@3 [a5,e6,g6]@4 [d6,f#6] ~@3, ~@8 d5 ~@3 e5@2 ~@18", // C#m7b5 C#maj7 A7 D
  Y: "c6@2 c#6@2 a5 ~ e5 ~ [g5,b5]@3 a5 f#5 ~ d5 [e5,g5] ~ [e5,g5] d5 [d5,f#5]@3 ~@2 c#5@3 [b4,e5]@3 ~@2, e6@4 ~@19 e5@3 ~@6", // G Em D E5
  Z: "a#4@3 ~ a4@2 ~@2 [g4,e5]@4 e4 ~@3 g4@4 a4@4 e4 ~@3 e4 ~@3, e5@7 ~@9 e5@13 ~@3", // C
  AA: "g4@4 ~@4 e4 ~@3 e4@2 ~@2 g4@4 ~@4 e4 ~@3 e4@4, e5@13 ~@3 e5@15 ~, ~@4 a4@9 ~@3 d5 ~@3 a4@12",
  AB: "[a#4,d5,e5]@4 ~ d5 ~@2 d5 ~ d5 ~ d5 ~@2 d5 ~ d5 ~ d5@3 ~ [d#4,e4] [a4,c#5]@3 ~ g4 g#4 ~@2, ~@2 b4@10 ~@2 b4 ~", // Em7b5 Emaj7 A
  AC: "[~@16 [e5,b5,e6]@2 ~@2 [d#5,e5] ~@3 [a5,c6,c#6] ~@3 g5@5 g#5@3 e5 ~@3 [d5,f#5]@4 [c#5,e5] ~@3 [b4,e5] ~ [a#4,e5]@2 a4 ~@3 g4@4 g#4@2 ~@2, ~@16 [f#5,f6] ~@11 b5@8 ~@20 e5@8, ~@56 d5 ~@7]/2", // E5 Emaj7 A D C#m E5 A#dim F#maj7
  AD: "e4 ~@3 [e4,b4,d5]@3 ~@5 a#4 b4@2 ~@5 e4 b4@2 ~ c#5@3 ~@2 g4 ~@2, ~@4 [a#4,e5] ~@7 [e4,d5]@3 ~@5 d5@3 ~@9, ~@21 a#4 ~@6 [a#3,b4,e5]@3 ~", // E7 A#dim E7 E
  AE: "a3@4 ~@4 [g4,b4,c#5,e5]@3 ~@12 [b5,c#6,e6]@5 [g5,b5]@2 ~@2, ~@23 [g5,d6]@3 ~@6, ~@23 c6 ~@4 c#6 ~@3", // C#m7b5 C#m7 G G5
  AF: "~@6 a3 [g4,b4,c#5]@3 ~@2 [g4,b4,c#5] ~@9 a3 ~ [c#6,e6]@4 [g5,b5,c#6] ~@3, ~@7 e5@5 ~@12 [g5,b5]@3 ~@5", // C#m7b5 C#m C#m7b5 G
  AG: "~@6 [a3,a#3] ~ [g4,b4,c#5]@3 ~ [g4,b4,c#5] ~@9 [c5,c#5,d#5] [g5,b5,c#6,e6]@5 [g5,b5,c#6] ~@3, ~@2 e5 ~@5", // A#maj7 C#m7b5 Cm C#m7b5
  AH: "[~@6 a3 ~ e5@3 g4 [b4,c#5] ~@9 b4 [b5,e6]@4 [b5,c#6]@2 c#5 ~@2 b5@5 d6 ~ d6 ~ d6 ~@2 d6 b5 d6 ~ d6 ~ b5 d6 b5 d6 b5@2 d6 b5 d6 ~@2 b5@2 ~ c6@3 c#6@2 e6 c#6 e6 c#6@2 e6 ~ e6 ~@2 e6 e6@2 d#6 ~@2 [e6,g6]@6 ~ d6@2 e5 ~, ~@7 [g4,b4,c#5]@3 ~@13 [g5,c#6]@3 ~ g5@4 d6@5 ~@24 d6@2 ~ e6@4 ~@18 f6@2 ~@5 f#6 ~@3, ~@31 [a#5,e6]@3 ~@4 b5@6 ~@3 b5@2 ~@10 b5@2 ~@14 c#6@2 c#6@5 ~@3 a5@7 ~@4]/3", // Bsus2 E5 Bsus2 Em C#m7b5 Gdim A#dim
  AI: "[b5,d6]@3 ~ [a5,c#6] ~ e5 ~ [g5,a#5,b5] g5 g#5@2 e5 ~ [b4,c#5] ~ [d5,f#5]@4 [c#5,e5] ~ e4 ~ [a4,b4] ~ a4 ~ g4@3 ~, e6@4 ~@23 a4@2 ~@3, a#5 ~@8 b5@2 ~@12 e5@8 ~", // Bm A G Bsus2 D C#m Asus2
  AJ: "~ d5 ~@2 [a4,e5]@3 ~@2 a4@2 ~ [b4,e5]@2 ~@2 [a#4,e5]@3 ~ [a4,e5]@3 ~ e5@4 e4@3 ~, [g4,e5]@3 ~@5 [a#4,e5]@3 ~@13 g4@3 ~@5", // A5 E5 A#dim A5 C A#dim
  AK: "a#4 b4 ~ e4 ~ [d6,d#6] ~@4 e6 ~ e6 ~ e6 ~ b5 e6 ~ e6@2 ~ a5 [f#5,g#5] [c#5,d#5,e5] b4 [f#4,g#4,a4] [d#4,e4] [b3,c#4] [g#3,a3] [e3,f#3] d#3, e5@2 ~@2 e6@5 ~@23, ~@4 a#5@3 ~ b5@7 ~@3 b5@4 ~@10", // D#maj7 F#sus2 C#m F#m Emaj7 Bsus2 Amaj7 Esus2
  AL: "~@8 a#4@2 b4@16 ~@2 [g4,b4,d5]@3 ~, ~@4 e5@9 ~@3", AM: "~@2 [a4,c#5,e5]@13 ~",
  AN: "[b4,d#5,f#5]@25 ~@3 [a5,d6,f#6]@3 ~", AO: "~@4 [b5,d#6,f#6]@5 ~@3 [a5,c#6,e6]@4 ~@4 [g5,b5,d6]@8 ~@4",
  AP: "f#5@2 g#5@2 a5@2 g#5@2 ~@12 [a5,c#6,e6] ~@11, ~@4 f#5@11 ~", // A
  AQ: "g#5@2 a5@2 b5@2 a5@2 ~@12 [b5,d#6,f#6,g#6] ~@11, ~@4 g#5@11 ~", // G#m7
  AR: "a5@2 b5@2 c6@2 b5@2 a5@11 ~ [c6,e6] ~@3 g#5 f#5 [d#5,e5] c#5 [c4,c#4,d#4] f5 ~@2, ~@5 a5 ~@2", // C Emaj7 Cm
  AS: "[[a#4,e5,g5]@5 ~@11 [b3,a4]@4 [f#4,g#4] ~@2 [c3,f3] [f3,f#3] [g#3,a3,b3] [c#4,e4] f#4 [a4,b4,c#5,d#5,e5] [b4,c#5,g#5,a5]@2 [b5,c#6] ~@2 [g#5,a5] d#6 ~@20 e6 [g5,c#6] [g5,b5,c#6,e6] ~@5, ~@15 f#5@3 ~@9 g#4@2 f#5 ~ [c6,d6]@4 ~@29, ~@16 d#5@2 ~@5 [d#3,e3]@2 ~ d#4@2 ~@5 [g5,e6,f#6]@3 ~@28]/2", // Edim B7 F#sus2 F5 F#maj7 G#m C#m A …
  AT: "[[g5,b5,c#6,e6]@3 ~ [a5,d6,f6] f#6 ~@14 [a4,e5,g5]@8 [d5,f#5] g4 ~ [a#4,c5] [a#4,b4,d5] b4 ~ f#4 [d#4,e4] [b3,c#4] [f#3,g#3,a3] e3 ~@12 [c5,c#5] ~@3 [g5,b5,c#6,e6]@3 ~ b4 ~@3, ~@31 g4@4 ~@29, ~@32 [c#5,e5]@3 ~@29]/2", // C#m7b5 Dm A7 D A#sus2 A# Emaj7 Bsus2 …
  AU: "[c6,d6] b5@2 ~@5 [g5,b5,c#6,e6]@3 ~ e5 ~@3 [g5,b5,c#6,e6]@4 ~@4 d6 d#6 ~@2 [a#5,d6,d#6,e6]@4, [g5,c#6,e6]@4 ~@4 c6 ~@7 [c6,d6,d#6] ~@7 g5@5 ~@3, ~@24 [b5,c#6,e6]@3 ~ e5 ~@3", // Csus2 C#m7b5 D#maj7 C#dim Cm C#m7
  AV: "~@2 d6 ~ d6 ~ d6 ~@2 d6 ~ d6 b5@2 d6 b5 d6 b5 ~@2 b5 ~ [a5,b5] ~ [a5,c#6]@2 e5@2 [g5,b5]@2 g#5 ~, b5@11 ~@8 d6@3 ~@10", // Asus2 A G
  AW: "e5 ~@3 [e5,b5,e6]@2 ~@26, ~@4 a#5 ~@27", // E5
  AX: "[d6,f#6]@4 [c#6,e6] ~ e5 ~ [b5,d6]@3 ~ [a5,c#6] ~ e5 ~ b5 [g5,b5] e5 ~ [f#5,a5]@2 ~@2 [e5,g5]@2 d5 ~ [d5,f#5]@2 [f4,f#4,g#4] ~", // D C#m Bm A G F#m Em D …
  AY: "[b4,e5] b4 [e4,f#4] ~ [a#4,e5]@3 ~ [a4,e5]@2 e4 ~ g4@2 e4 ~ g#4@2 e4 ~ [a4,e5]@2 e4@2 [a#4,e5]@3 e4 ~@2 e4 ~, ~ e5@2 ~@5 b4 ~@3 e5@7 ~@9 [b4,e5]@4", // E5 Esus2 A#dim A5 A#dim E5
  AZ: "[g4,c#5] ~@3 e4 ~@3 [g4,b4,c#5]@3 ~ [g4,b4,c#5] ~@11 [g5,b5,c#6,d#6,e6]@4 f#5 e5 [b4,c#5,d#5] a4, ~@2 e5 ~@5", // Gdim C#m7b5 B
  BA: "g#4 ~@3 e4 ~@3 [g4,b4,c#5]@3 ~ [g4,b4,c#5] ~@7 f#4 ~@3 [g5,b5,c#6,e6]@4 f#5 e5 [b4,c#5,d#5] [g#4,a4], ~@8 e5@4 ~@12 d#6 ~@7", // C#m7b5 B Amaj7
  BB: "f#4 ~@3 [d4,d#4,e4] d4 ~@2 c5 e5@3 [g4,b4,c#5] ~@7 [f#4,g#4] ~@3 [g5,b5,c#6,e6]@4 f#5 [d#5,e5] c#5 [g#4,a4,b4], ~@8 [g4,b4,c#5]@3 ~@13 d#6 ~@7", // C#m7b5 F#sus2 C#m7b5 Emaj7 G#m C#m7b5
  BC: "~@4 f#4 ~@3 [c#5,e5]@4 [g4,b4] ~@7 f#4 ~@3 [g4,b4,c#5,e5] ~@4 d#6@3, ~@8 [g4,b4]@3 ~@17 [a#5,d6,e6]@4, ~@29 g5 ~@2", // C#m G C#m7b5 G Em7b5
  BD: "[d6@2 ~@2 f6 ~ f6 ~@2 f6 ~ f6 ~ f6 ~@2 f6 ~ f6 ~@2 f6 ~ f6 ~@2 f6 ~ f6 ~@2 d#6@3 e6@2 g6 e6@2 g6 ~ g6 ~@3 [c5,d5] ~ [c6,a#6]@3 ~@2 [g6,a#6]@3 ~ [f6,a6]@2 ~@2 d#6@2 e6 ~, ~@3 d6@6 ~ d6@2 d6@2 ~ d6@2 d6@2 ~ d6@2 d6@2 ~ d6@2 d6@3 g6@4 ~@6 e6@2 e6@2 ~@8 c6@9 ~@3, ~@43 g6@8 ~@9 g6@4]/2", // Csus2 C7 Gm F
  BE: "~@4 e5 ~@3 a#5 ~@3 e5 ~@3 a5@2 e5 ~ g5@2 g#5@2 e5@2 ~@2 [b4,c#5] c6 ~@2, ~@8 [d6,e6]@9 ~@15, ~@9 b5@6 ~ c#6 ~@3 b5@7 ~@5", // Bsus2 Dsus2
  BF: "[g5,b5,c#6,e6]@4 ~@4 [g5,b5,c#6,e6]@4 a4 ~@3 [g5,b5,c#6,e6]@3 ~@2 g5@6 ~ g5@3 ~, ~@20 e6@11 ~, ~@21 [b5,c#6]@10 ~", // C#m7b5 Bsus2
  BG: "~ a5@2 ~ c6@2 b5@2 a5@11 ~ [c6,e6] ~@4 [f#5,g#5] e5 [c#5,d#5] c4 [c#4,d#4,f5] ~@2, ~@3 b5@2 ~@15 a5@5 ~@7", // C F#sus2 C#sus2 C#
  BH: "~ [a#4,e5,g5]@5 ~@10 [b3,a4,f#5]@4 ~@12, ~@8 d#5 ~@7", // Edim B7
  BI: "~ [g#5,b5,c#6]@3 f#5 [d#5,e5] [b4,c#5] [g#4,a4] [e4,f#4] [c#4,d#4] [a3,b3] [f#3,g#3] e3 d#3 ~@18, e6 ~@15", // C#7 Emaj7 Bsus2 Amaj7 Esus2 C#sus2 Asus2 F#sus2
  BJ: "a#5 b5@26 ~ [g5,b5,d6]@4, e6@13 ~@3, ~ f6 ~@30", BK: "~@2 [a5,c#6,e6]@13 ~",
  BL: "[b5,d#6,f#6]@26 ~@2 [d6,f#6,a6]@3 ~, ~@28 [f6,g6] ~@3", // B D Fsus2
  BM: "~@4 [b5,d#6,f#6]@4 ~@4 [a5,c#6,e6]@5 ~@3 [g5,b5,d6]@4 f#5 ~ [d#5,e5] [b4,c#5] [g#4,a4] [e4,f#4] [c#4,d#4] ~", // B A G Emaj7 Bsus2 Amaj7 Esus2 C#sus2
  BN: "~@6 a#4 b4 [g#5,e6]@4 [b5,c#6] ~@8 a3 ~@2 [g#4,b4,c#5,e5]@4 ~ [g#4,b4,c#5,e5] ~@2, ~@8 [b5,c#6]@3 ~@21", // C#m Bsus2 C#m7 Bsus2
  BO: "~@7 [a#4,b4,c#5,e5] ~ [g5,b5,c#6,e6]@3 [g5,b5,c#6] ~@8 [c#5,e5] ~@3 d#6 ~@2 [g4,d5,d#5,e5] ~@3, ~@24 [g5,b5,c#6,e6]@5 ~@3", // A#dim C#m7b5 C#m D#maj7 C#m7b5
  BP: "~@6 [b4,c#5,f#5] ~ [c#6,e6]@4 [g#5,b5,c#6] ~@7 e5 ~@3 [g#5,b5,c#6,e6]@4 [g4,d#5,e5] [a#4,b4,c#5] ~@2, ~@8 [g#5,b5]@3 ~@21", // Bsus2 C#m C#7 C#m7 C A#m G#m
  BQ: "~@6 [a#4,c#5,e5] ~ [c#6,e6]@4 [g5,b5,c#6] ~@8 [b4,c#5,e5] ~@2 [g5,c#6] ~ [g5,b5,c#6,e6] ~ [a#4,c5,e5] ~@3, ~@8 [g5,b5]@3 ~@21", // A#dim C#m C#m7b5 C#m7 Gdim C#m7b5 C7 G
  BR: "~@6 c#5 f#5 ~ [g#5,b5]@3 [g#5,b5] ~@7 c#5 ~@3 [g#5,b5,c#6,e6]@5 ~@3, ~@9 [c#6,e6]@5 ~@18, ~@9 d#6 ~@22", // G#m C#m7 C#m
  BS: "~@7 [a#4,b4,c#5,e5] d#5 [g5,b5,c#6]@3 ~ [b5,c#6] ~@7 [b4,c#5] ~@2 [a#5,c6,d6,d#6] ~@3 a5 ~@3, ~@9 e6@5 ~@10 g5@3 ~@5, ~@6 g5 ~@5 [b5,c#6,e6]@2 ~@2", // A#dim C#m7b5 Bsus2 Cm7 C#m7
  BT: "~@7 [a#4,c5] ~ d#6 ~@2 [g#5,e6]@2 ~@6 a#5 b5@6 ~ [a5,c#6] ~@3, ~@8 [g#5,b5,c#6,e6]@3 ~ [b5,c#6] ~@7 [d6,e6]@9 ~@3", // A#sus2 C#m A C#m7 Bsus2 Dsus2
  BU: "~@6 [g4,a#4,b4,c#5,d5] ~@2 g5@2 ~@2 c#6 ~@7 [b4,c#5] ~@2 a#6 b6@2 a6 [f#6,g#6] [d#6,e6] [b5,c#6] a5, ~@8 [b5,c#6,e6]@4 [g5,b5,e6]@3 ~@9 e7@2 ~@6", // G Bsus2 F#sus2 Emaj7 Bsus2 C#m7 Em
  BV: "a#5 [b5,e6]@27 ~ [g4,g5,b5,d6]@3", BW: "~@5 [a4,a5,c#6,e6]@26 ~", BX: "[b4,b5,d#6,f#6]@25 ~@4 [d5,a5,d6,f#6]@3",
  BY: "~@5 [b4,b5,d#6,f#6]@4 ~@4 [a5,c#6,e6]@5 ~@2 [g4,g5,b5,d6]@11 ~, ~@12 a4@5 ~@15", // B A G
  BZ: "~ [e4,b4,g#5,b5]@5 f#5 e5 [a4,b4,c#5,d#5] [f#4,g#4] ~@22, ~ e6@3 ~@28", // E B7 F#sus2
})).s("gm_drawbar_organ").gain(0.36)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@47 [x!8] [x!3 ~@5] ~@18 [x!8] [x!3 ~@5] ~@36>").gain(0.2)

// drums · snare
const snare = s("sd").struct("<~ A@20 B A@20 B A@4 ~@2 C D A@16 ~@2 C D A@16 B A@3 E A@11 E F>".pickRestart({
  A: "~ x ~ x", B: "~ x!4 ~@3", C: "~ x!7", D: "x!2 ~@14 x!2 ~@14", E: "~ x ~ x ~ x ~@2", F: "x",
})).gain(0.46)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@47 [x!8]!2 x ~@17 [x!8]!2 x ~@35>").gain(0.15)

// drums · hihat
const hihat = s("hh").struct("<A B@20 ~@5 B@16 ~ B@7 ~ B@19 ~ B@16 ~ B@3 ~ B@11 ~@2>".pickRestart({
// … 28 more lines

More by Wilson Pickett