Strudelify
Green Onions cover art

Green Onions

Green Onions

Booker T. & The MG's

KeyE minorTempo112 bpm
0:00/0:00
// Green Onions — Booker T. & The MG's
// 112 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 7 "ALTO SAX" alto sax (copy of ch 6 "BRASS 1" brass section)
// note: Full arrangement: all 99 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(112/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 · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~@37 A@4 B@2 C@2 D E F G H ~@23 I@2 J@2 K@2 L@2 M N O@2 P@2 Q@2 R@2 S T M U V W@3
>`.pickRestart({
  A: "[[b5,e6]@83 ~ a#5@2 a5@2 g5@2 e5@2 [g5,d6]@2 e5@2, a#5 ~@83 d6@6 ~@6]/4", // E5 G5
  B: "[a#5 a5@40 ~ a#5 ~ a5@2 g5@2, e6@41 ~ d6@4 ~@2]/2", C: "[e5@47 ~]/2", D: "~ b5@23",
  E: "d#6 ~@19 a5@2 a#5@2, a5@19 ~@5, ~ e6@23", F: "b5@17 ~ a#5 ~ a5@2 g5@2, e6 ~@17 d6@6",
  G: "e5@2 [g5,d6]@2 e5 ~ [a5,d6]@2 e5 ~ a5@2 b5@2 a5@2 ~@2 [a5,d6]@3 e5 d5 ~, ~@10 d6@7 ~@7", H: "e5 ~@5",
  I: "[[b5,e6]@35 ~ a#5 ~ a5@3 ~@2 e5@2 ~ e5@2, a#5 ~@35 d6@4 ~@5 g5@2 ~]/2", // E5
  J: "[a#5 b5@33 ~@2 a#5@2 a5@2 g5@2 e5@2 [g5,d6]@2 e5@2, e6@17 ~ d6@3 ~@3]/2", // G5
  K: "[[a5,e6]@30 g6@3 ~ g6@13 ~, ~@30 e6@17 ~, ~@30 d#6 ~@3 d#6 ~@13]/2", // A5
  L: "[[a#5,c#6] b5@34 ~ a#5@2 a5@2 g5@2 e5@2 g5@2 e5@2, e6@17 ~ d6@3 ~ d6@2]/2", M: "[f#5,b5]",
  N: "[e5,a5]@17 ~ [e5,a5]@2 [f#5,b5]@2 e5@2", // A5 B5
  O: "[[a5,a#5] b5@27 ~@4 [a5,d6] ~ [b5,e6] ~ [d6,g6]@2 b5 ~ [d6,e6] ~ a#5 ~ a5@2 g5@2, e6@28 ~@14 d6@5 ~, ~ a#5 ~@46]/2", // A#maj7 D5 E5 G5 Dsus2
  P: "[a#5 b5@38 ~@3 d6@2 a5@2 g5@2, e6@38 ~@4 a#5 ~@5, e5 ~@15]/2",
  Q: "[e5@27 ~ e5@2 g5@4 e5@2 a#5 b5 ~@2 a#5@2 a5@4 g5 ~, ~@36 d6@3 ~ d6@6 ~@2]/2", R: "[a5@22 a5 a#5, e6]/2",
  S: "b5@23 ~", T: "a#5 b5@4 ~ a#5 b5@4 ~ a#5 b5@4 ~ d6@4 g5@2, d6@6 d6@5 ~ d6@5 ~ a#5 ~@5", U: "[e5,a5]@23 ~",
  V: "e6@22 ~ a5, a#5 ~@23", W: "[b5@2 ~@2 a5@2 ~ g5@3 e5@43 ~@19, a#5 ~@3 a#5 ~@67]/3",
})).s("gm_rock_organ").gain(0.4).pan(0.7)

// chords · rock organ · "ORGAN 3" · soft notes
const rock_organ_soft = note("<~@37 A ~@4 B ~@2 C ~@2 D E ~@24 F ~@9 G ~@6 H I ~@2 J ~@3>".pickRestart({
  A: "c6 ~@23", B: "~@18 g#5 ~ a#5 ~@3", C: "f#6, a#5 ~@23", D: "~@16 g5@2 ~ g5 ~@4", E: "g5 ~@5", F: "~@16 g5@3 ~@5",
  G: "~@14 e6 ~@9", H: "~ e6@22 ~", I: "~@10 a5 ~, ~@20 a#5 ~@3", J: "~ b5@22 ~",
})).s("gm_rock_organ").gain(0.23).pan(0.7)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~ A B C D E F C B G H B@2 A B C D E@2 C B G H B@2 A B C D F@2 C B G H B@2 A B C D F@2 C B G H B@2 A B C D F I C J G H
  B@2 A B C D F@2 C B G H B@2 A B C D F@2 C B G H B@2 A B C D F@2 C B G H K L@3
>`.pickRestart({
  A: "e1@5 ~ e1@3 ~ e1@2 g1@6 a1@4 g1@2", B: "e1@5 ~ e1@4 e1@2 g1@6 a1@4 g1@2", C: "e1@3 e1@2 e1 g1@3 a1@2 g1",
  D: "e1@6 e1@4 e1@2 g1@5 ~ a1@4 g1@2", E: "a1@3 a1@2 a1 c2@3 d2@2 c2", F: "a1@3 a1@2 g1 c2@3 d2@2 c2",
  G: "b1@5 ~ b1@4 b1@2 d2@6 e2@4 d2@2", H: "a1@5 ~ a1@4 a1@2 c2@6 d2@4 c2@2", I: "a1@6 a1@4 g1@2 c2@5 ~ c2@4 ~@2",
  J: "e1@5 ~ e1@4 e1@2 g1@6 g1@6", K: "e2@3 ~ e1@8 g1@5 ~ a1@6", L: "[b1@4 a1@2 g1@3 ~ e1@45 ~@17]/3",
})).s("gm_electric_bass_finger").gain(0.64)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~@14 A 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 AD N AE ~@11 AF ~ AG ~ AH AI@2 ~ B AJ@2 AK
  AL ~@10 AM AN AO AP AQ AR AS AN AT AU@3 AV@3
>`.pickRestart({
  A: "~@10 e3@2 [g3,g4]@4 ~@2 [a3,a4]@3 ~@3, ~@10 e4 ~@13", B: "b3",
  C: "~@6 [e4,e5]@2 ~@2 [e4,e5] ~@7 [a3,d4,a#4]@3 ~ [a3,d4,a4] ~", // E A#maj7 D5
  D: "~@6 [e4,a4,e5]@2 ~@4 [a#3,e4,a#4]@3 ~ [a3,a4]@2 [g3,g4]@3 ~ a3 ~, ~@16 e4 ~@7", // A5 A#dim A G
  E: "[e3,b3,d4,g4]@3 ~ [b3,d4,g4] ~@13 [d3,d4]@4 [e3,e4] ~", F: "[b3,f#4,b4]",
  G: "[e4,a4]@13 ~@5 [b3,b4] ~ [d4,d5] ~ [e4,e5]@2, a3@2 ~", H: "~@18 [a#3,a#4] ~@3 [e3,e4]@2",
  I: "~@6 [b3,d4,g4]@3 ~ [b3,d4,g4] ~@13", J: "~@10 [b3,d4,g4] ~@7 [a3,e4,a4]@3 ~ [b3,d4,g4] ~",
  K: "~@18 [b3,d4,g4]@3 ~ [g3,d4,g4] ~", L: "~@18 [b3,e4,a4]@3 [e4,a4] a3 ~",
  M: "~@18 [b3,b4]@3 ~ [a3,e4,a4] ~, ~@18 e4 ~@5", N: "~@20 [d3,d4] ~ [d#3,d#4] ~", O: "[e3,e4]@4 [e3,e4] ~@19",
  P: "~@2 e5@2 ~@2 [b4,e5] ~@3 e4 ~ d4 ~ d4 ~@2 e4 [d4,g4]@3 ~ e4 ~, ~@2 b4 ~@21", // E5 G5
  Q: "~@18 f#4@3 ~ b4@2, ~@18 b4 ~@3 f#4 ~", R: "[e4,a4]@4 [e4,a4] ~@19",
  S: "~@2 [d4,g4] ~ a3 ~ [d4,g4] ~@3 [d4,g4] ~ a3 ~ [d4,g4] ~@3 d4@2 a3 ~ g3 ~, ~@18 a#3 ~@5", T: "e3 ~@11, e4 ~@23",
  U: "~@3 [e4,e5] ~@8, ~@6 b4 ~@17", V: "~@12 [d4,a4,d5]@4 [e4,b4,e5] ~ g4@5 ~", W: "e4@3 ~ e4 ~@19",
  X: "~@6 [a3,e4,a4]@4 [g3,d4,g4]@6 [a3,e4,a4] ~@7", Y: "~@6 [a3,e4,a4]@4 [g3,g4]@9 ~ d3@2 [d#3,d#4]@2, ~@20 d4 ~@3",
  Z: "[e3,e4] ~@23", AA: "~@6 [a3,d4,g4]@3 ~ [a3,d4,g4] ~@13", AB: "~@6 [b3,f#4,b4]@3 ~ [b3,f#4,b4] ~@13",
  AC: "~@6 [a3,e4,a4]@3 ~ [a3,e4,a4] ~@13", AD: "~@6 [d4,g4]@3 ~ [e3,d4,g4] ~@13", AE: "[e3,e4] ~@11",
  AF: "~@8 e3 [g3,g4]@2 e3, ~@22 e4 ~", AG: "~@6 [b3,b4]@2 ~@10 [g3,g4]@3 ~ [e3,e4] ~, ~@6 a#4 ~@17",
  AH: "~@6 [a3,e4,a4]@4 [a3,e4,a4] ~@13", // A5
  AI: "[~@6 [a3,e4,a4]@3 ~ g3@2 [a3,e4,a4]@5 ~ [b3,e4,b4]@4 e3@19 ~ d3@4 [e3,d4,g4] ~, ~@22 g4@23 ~@3]/2", // A5 E5 Em7
  AJ: "[~@18 [d3,d4]@4 [e3,e4]@6 [e3,b3,e4] ~@19]/2", // D E E5
  AK: "~@12 [b3,d4] ~@3 g4 ~ [a3,d4] ~@3 [d3,d4]@2, ~@6 b4 ~@2 a4 ~@2", AL: "[e3,e4,e5]@3 ~ [e3,e4,e5] ~@19",
  AM: "~@20 d4@2 [d#4,d#5] ~, ~@20 d5 ~@3", AN: "[e4,e5]@4 [e4,e5] ~@19",
  AO: "~@14 d5 ~ [d#4,d#5] ~ [e4,e5] ~ [g4,g5] ~ e5 ~, ~@15 d4@2 ~@7", AP: "[e4,e5]@3 ~ [e4,e5] ~@19",
  AQ: "~@14 d5 ~ [d#4,d#5] ~ [e4,e5]@2 g5@2 [e4,e5] ~, ~@15 d4@2 ~@3 g4 ~@3", AR: "[a4,a5]@3 ~ [a4,a5] ~@19",
  AS: "~@14 d4@2 [d#4,d#5] ~ [e4,e5]@2 g4@2 e5 d5, ~@14 d5 ~@5 g5 ~ d4@2", // D# E
  AT: "~@16 [d#4,d#5] ~ [e4,e5]@2 d4@2 [e4,e5] ~, ~@15 [d4,d5]@2 ~@3 d5 ~@3", // D# E D
  AU: "[~@18 [f#4,f#5]@5 ~ [a3,e5,a5]@14 b4 ~ [d4,d5] ~ g5@2 ~@2 e4@2 e4@5 ~ [d4,d5]@4 [e4,e5] ~ [a#3,a#4] [a3,a4]@2 ~ g4 ~ [a3,a4]@4 ~ a3, b4@12 ~@11 e5@4 ~@9, b3@22 ~ e4@14 ~@5 g4 ~@27 g3@2]/3", // F# A5 D E A# A
  AV: "[[b3,b4]@3 a3 a4 [g3,g4]@4 ~ [e3,e4]@45 ~@17, a#4 ~@71]/3", // B G E
})).s("gm_brass_section").gain(0.48).pan(0.3)

// chords · brass section · "BRASS 1" · soft notes
const brass_section_soft = note(`<
  ~@14 A B C ~@2 D ~@3 E ~@5 F ~@2 G H ~ I ~@6 J ~@4 K ~@13 L ~@4 M@2 ~ N O@2 P ~@13 Q ~ R ~@5 S T ~@3
>`.pickRestart({
  A: "[e3,e4]@4 ~@12 e3@2 ~@4 g4 a3, ~@16 e4 ~@5 g3@2", B: "a#4 b4@23", C: "~@8 d4 ~@15", D: "~@4 e3 ~@19",
  E: "~@20 a4 a3 ~@2", F: "~@16 a3 ~@3 e4 ~@3", G: "~@3 a4 d5 ~@7 g4!2 ~@10", H: "~@20 [e4,a4] ~@3",
  I: "~@8 a3 ~@7 a3 ~@7", J: "~@4 g3 ~@5 d4@8 ~@6", K: "~@2 [e3,f3] ~@5", L: "~@16 e4 ~@7",
  M: "[~@10 [d4,g4]@2 ~@4 g3@2 ~@4 d4@23 ~@3]/2", N: "[f#4,b4]", O: "[[a3,e4,a4]@16 ~@2 a3@3 ~ b3@5 ~@21]/2",
  P: "~@14 [a3,a4] ~ g3 ~@3 g4@2 ~@2, ~@20 g3 ~@3", Q: "~@22 d4 ~", R: "~@20 d#4 ~@3", S: "~@14 a3 ~@5 [b3,d4,d5] ~@3",
  T: "~@15 g3@2 ~@5 g4 ~",
})).s("gm_brass_section").gain(0.28).pan(0.3)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@25 A B@2 C D@2 B@2 E D B@2 ~ F@2 B ~@2 G@2 ~@2 H@2 B@2 I@2 D@2 B@2 J K L@2 ~@24 B@2 M N O@2 B P ~@2 Q@4
>`.pickRestart({
  A: "~@4 [b3,e4]@19 ~", B: "~ [b3,e4]@5", C: "~ [b3,e4]@5, ~@4 d4 ~@19", D: "~ [a3,e4]@5", E: "~ [b3,d#4]@5",
  F: "[~@4 [b3,e4]@39 ~@5]/2", G: "[~@2 [b3,e4]@19 ~@3]/2", H: "[~@2 [b3,e4]@17 ~@5]/2",
  I: "[~@2 [b3,e4]@11 ~ [b3,e4]@10]/2", J: "~@4 [a3,d#4]@19 ~", K: "~ [g3,e4]@5", L: "~ [g3,b3,e4]@5", M: "~ [b3,d4]@5",
  N: "~ [g3,d4]@5", O: "[~@2 [a3,d4]@11 ~ [a3,d4]@10]/2", P: "~ e4@5, ~@2 b3@9 ~",
  Q: "[~@4 [b3,e4]@25 ~@5 [b3,e4]@45 ~@17]/4", // E5
})).s("gm_electric_guitar_muted").gain(0.24).pan(0.7)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted_2 = note(`<
  ~ A B C D E F G C H I J K L M N M O P L Q R S L T U Q V W X Y W@2 Z Y V M AA W@3 AB AC AD AE AF AG AH AI AJ@2 AK AJ
  AL@2 AM AJ AN AO AJ AP AQ AR AS AT AU AV AW AR AX AY AZ BA BB BC@2 BD BE BF BC@2 BG BH BC BI BC@3 BJ BK BH BL BM BN BH
  BO BP@3
>`.pickRestart({
  A: "[e2,b2]@5 ~ e2@3 ~ e2@2 g2@6 [a2,e3]@4 g2@2", B: "e2@5 ~ e2@3 ~ e2@2 g2@5 ~ [a2,e3]@4 g2@2",
  C: "e2@5 ~ e2@2 ~@2 e2@2 g2@6 [a2,e3]@4 g2@2", D: "e2@5 ~ e2@2 ~@2 e2@2 g2@6 [a2,e3]@3 ~ g2@2",
  E: "a2@5 ~ a2@3 ~ a2@2 c3@6 [d3,a3]@4 c3@2", F: "a2@5 ~ a2@2 ~@2 a2@2 c3@6 [d3,a3]@4 c3@2",
  G: "e2@5 ~ e2@2 ~@2 e2@2 g2@5 ~ [a2,e3]@4 g2@2", H: "b2@5 ~ b2@2 ~@2 b2@2 d3@6 [e3,b3]@4 d3@2",
  I: "a2@5 ~ a2@2 ~@2 a2@2 c3@6 [d3,a3]@4 c3 ~", J: "e2@2 ~ e2 ~ e2 g2@3 [a2,e3]@2 g2",
  K: "e2@5 ~ e2@3 ~ e2@2 g2@4 e2@2 [a2,e3]@4 g2@2", L: "e2@2 ~ e2 ~ e2 [g2,d3]@2 e2 [a2,e3]@2 g2",
  M: "e2@5 ~ e2@2 ~@2 e2@2 [g2,d3]@4 e2@2 [a2,e3]@4 g2@2", N: "e2@5 ~ e2@2 ~@2 e2@2 [g2,d3]@5 ~ [a2,e3]@4 g2@2",
  O: "a2@5 ~ a2@3 ~ a2 ~ [c3,g3]@6 [d3,a3]@4 c3@2", P: "a2@5 ~ a2@2 ~@2 a2@2 [c3,g3]@6 [d3,a3]@4 c3 ~",
  Q: "e2@5 ~ e2@2 ~@2 e2@2 [g2,d3]@6 [a2,e3]@4 g2@2", R: "b2@2 ~ b2 ~ b2 [d3,a3]@2 b2 [e3,b3]@2 d3",
  S: "a2@5 ~ a2@2 ~@2 a2@2 [c3,g3]@4 a2@2 [d3,a3]@4 c3 ~", T: "e2@5 ~ e2@3 ~ e2@2 [g2,d3]@4 e2@2 [a2,e3]@4 g2@2",
  U: "e2@2 ~ e2 ~ e2 [g2,d3]@3 [a2,e3]@2 [g2,d3]", V: "e2@5 ~ e2@2 ~@2 e2@2 [g2,d3]@5 ~ [a2,e3]@4 [g2,d3]@2",
  W: "e2@5 ~ e2@2 ~@2 e2@2 [g2,d3]@6 [a2,e3]@4 [g2,d3]@2", X: "a2@5 ~ a2@2 ~@2 a2 ~ [c3,g3]@5 ~ [d3,a3]@4 [c3,g3]@2",
  Y: "a2@5 ~ a2@2 ~@2 a2@2 [c3,g3]@6 [d3,a3]@4 [c3,g3] ~", Z: "b2@4 ~@2 b2@2 ~@2 b2 ~ [d3,a3]@6 [e3,b3]@4 [d3,a3]@2",
  AA: "[e2,b2]@4 ~@2 [e2,b2]@2 ~@2 [e2,b2]@2 [g2,d3]@5 ~ [a2,e3]@4 [g2,d3]@2", // E5 G5 A5 G5
  AB: "a2@5 ~ a2@2 ~@2 a2 ~ [c3,g3]@6 [d3,a3]@4 [c3,g3]@2", AC: "a2@5 ~ a2@2 ~@2 a2@2 [c3,g3]@5 ~ [d3,a3]@4 [c3,g3] ~",
  AD: "e2@5 ~ e2@2 ~@2 e2@2 [g2,d3]@6 [a2,e3]@3 ~ [g2,d3]@2", // G5 A5 G5
  AE: "e2@5 ~ e2@2 ~@2 e2@2 [g2,d3]@6 [a2,e3]@4 g2@2, ~@22 d3 ~", // G5 A5
  AF: "b2@5 ~ b2@2 ~@2 b2 ~ [d3,a3]@5 ~ [e3,b3]@4 [d3,a3] ~", // D5 E5 D5
  AG: "a2@4 ~@2 a2@2 ~@2 a2@2 [c3,g3]@6 [d3,a3]@4 [c3,g3] ~", // C5 D5 C5
  AH: "e2@5 ~ e2@2 ~@2 e2@2 [g2,d3]@5 ~ [a2,e3]@3 ~ [g2,d3]@2", // G5 A5 G5
  AI: "e2@5 ~ e2@2 ~@2 e2@2 [g2,d3]@4 e2@2 [a2,e3]@4 g2 ~", AJ: "e2@5 ~ e2@3 ~ e2 ~ g2@5 ~ g2@6",
  AK: "e2@6 e2@2 ~@2 e2 ~ g2@5 ~ g2@6", AL: "a2@5 ~ a2@2 ~@2 a2 ~ c3@5 ~ c3@6", AM: "e2@5 ~ e2@2 ~@2 e2 ~ g2@5 ~ g2@6",
  AN: "b2@5 ~ b2@2 ~@2 b2 ~ d3@5 ~ d3@6", AO: "a2@5 ~ a2@3 ~ a2 ~ c3@5 ~ c3@6", AP: "e2@5 ~ e2@3 ~ e2@2 g2@5 ~ g2@6",
  AQ: "e2@4 ~@2 e2@2 ~@2 e2@2 g2@6 a2@3 ~ g2@2", AR: "e2@5 ~ e2@3 ~ e2@2 g2@6 a2@4 g2@2",
  AS: "e2@5 ~ e2@3 ~ e2@2 g2@5 ~ a2@4 g2@2", AT: "e2@5 ~ e2@3 ~ e2@2 g2@6 a2@3 ~ g2@2",
  AU: "a2@4 ~@2 a2@2 ~@2 a2 ~ c3@6 d3@4 c3@2", AV: "a2@5 ~ a2@3 ~ a2@2 c3@6 d3@4 c3 ~",
  AW: "e2@5 ~ e2@2 ~@2 e2@2 g2@6 a2@4 g2@2", AX: "b2@2 ~ b2 ~ b2 d3@3 e3@2 d3",
  AY: "a2@5 ~ a2@2 ~@2 a2 ~ c3@6 d3@4 c3 ~", AZ: "e2@5 ~ e2@2 ~@2 e2@2 g2@5 ~ a2@3 ~ g2@2",
  BA: "e2@5 ~ e2@3 ~ e2@2 g2@4 e2@2 a2@4 g2@2",
  BB: "[e2,b2]@5 ~ [e2,b2]@2 ~@2 [e2,b2]@2 [g2,d3]@6 e3@4 [g2,d3]@2, ~@6 a2 ~", // E5 G5
  BC: "[e2,b2]@5 ~ [e2,b2]@2 ~@2 [e2,b2]@2 [g2,d3]@6 [a2,e3]@4 [g2,d3]@2", // E5 G5 A5 G5
  BD: "[e2,b2]@5 ~ [e2,b2]@2 ~@2 [e2,b2]@2 [g2,d3]@5 ~ [a2,e3]@3 ~ [g2,d3]@2", // E5 G5 A5 G5
  BE: "a2@5 ~ [a2,e3]@2 ~@2 [a2,e3] ~ [c3,g3]@6 a3@4 [c3,g3]@2, e3 ~@5 d3 ~", // A5 C5
  BF: "[a2,e3]@5 ~ [a2,e3] ~@3 [a2,e3]@2 [c3,g3]@6 [d3,a3]@4 [c3,g3] ~", // A5 C5 D5 C5
  BG: "b2@5 ~ [b2,f#3]@2 ~@2 [b2,f#3] ~ [d3,a3]@6 [e3,b3]@4 [d3,a3] ~, f#3 ~@7", // B5 D5 E5 D5
  BH: "[a2,e3]@5 ~ [a2,e3]@2 ~@2 [a2,e3]@2 [c3,g3]@6 [d3,a3]@4 [c3,g3] ~", // A5 C5 D5 C5
  BI: "[e2,b2]@3 [e2,b2] ~ [e2,b2] [g2,d3]@2 [e2,b2] [a2,e3]@2 [g2,d3]", // E5 G5 E5 A5 G5
  BJ: "[e2,b2]@5 ~ [e2,b2]@2 ~@2 [e2,b2]@2 [g2,d3]@6 [a2,e3]@3 ~ [g2,d3]@2", // E5 G5 A5 G5
  BK: "[a2,e3]@5 ~ [a2,e3]@2 ~@2 [a2,e3]@2 [c3,g3]@6 [d3,a3]@4 [c3,g3]@2", // A5 C5 D5 C5
  BL: "[e2,b2]@6 [e2,b2]@2 ~@2 [e2,b2]@2 [g2,d3]@5 ~ [a2,e3]@4 [g2,d3]@2", // E5 G5 A5 G5
  BM: "[e2,b2]@5 ~ [e2,b2]@2 ~@2 [e2,b2]@2 [g2,d3]@5 ~ [a2,e3]@4 [g2,d3]@2", // E5 G5 A5 G5
  BN: "[b2,f#3]@4 ~@2 [b2,f#3]@2 ~@2 [b2,f#3] ~ [d3,a3]@6 [e3,b3]@4 [d3,a3]@2", // B5 D5 E5 D5
  BO: "e2@4 ~@2 e2@2 ~@2 e2@2 g2@5 ~ a2@4 g2@2", BP: "[b2@4 a2@2 g2@4 e2@39 ~@23]/3",
})).s("gm_electric_guitar_muted").gain(0.44).pan(0.3)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@98 [~ x ~@2]>").gain(0.56)

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

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

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@11 A ~@11 A ~@11 A ~@7 A ~@3 A ~@10 B A ~@11 A ~@7 A ~ B ~ A ~@7 A ~@2 C ~@2
>`.pickRestart({
  A: "x", B: "~@3 x", C: "~@5 x ~@6",
})).gain(0.64)

stack(
// … 3 more lines

More by Booker T. & The MG's