Strudelify

Authority Song

John Mellencamp

KeyD majorTempo151 bpm
0:00/0:00
// Authority Song — John Mellencamp
// 151 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 151 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(151/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(`<
  ~@28 A B C D A B C D A B C D A B C D ~@20 A B C D A B C D A B C D A B C D E F G H E F G H E F G H E F G H ~@14 A B C D
  A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C ~@2
>`.pickRestart({
  A: "[a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~ [a4,d5] ~", // D5
  B: "[g4,b4,d5] ~ [g4,b4,d5] ~ [g4,b4,d5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~ [d4,g4,b4] ~ [d4,g4,b4] ~ [d4,f#4,a4] ~", // G A G D
  C: "[d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~", // D
  D: "[d4,g4,b4] ~ [d4,g4,b4] ~ [g4,b4] ~ [e4,a4,c#5] ~ [a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~@3", // G A
  E: "[a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~", // D5
  F: "[g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [e3,a3,c#4] ~ [e3,a3,c#4] ~ [d3,g3,b3] ~ [d3,g3,b3] ~ [d3,f#3,a3] ~", // G A G D
  G: "[d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~ [d3,f#3,a3] ~", // D
  H: "[d3,g3,b3] ~ [d3,g3,b3] ~ [g3,b3] ~ [e3,a3,c#4] ~ [a3,c#4] ~ [e3,a3,c#4] ~ [e3,a3,c#4] ~@3", // G A
})).s("gm_piano").gain(0.31)

// bass · electric bass finger · "BASS"
const bass = note(`<
  ~@3 A@4 B@3 C D E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E
  F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F G ~@12 H E F E F E F E F E F E F E F E F E F E F E F
  E F E F E F E F E F E F E F E F E F I
>`.pickRestart({
  A: "[~@10 f#2 ~ f#2 ~ d2@22 ~@4 f#2 ~ f#2 ~ f#2 ~ d2@17 ~]/4", B: "[~@10 f#2 ~ f#2 ~ d2@19 ~@9 f#1 ~ f#1 ~ d1@2]/3",
  C: "~ d2!3 ~ d2!3", D: "c#2@2 d2 ~ d2 ~ d2 ~@3 d2 ~ d2 ~ d2 ~", E: "d2!4 f#2 d2!3",
  F: "g1@2 g1@2 b1@2 a1@3 ~ a1 ~ a1@2 c#2@2", G: "d2@3 ~", H: "~@15 d2", I: "[d1,d2] ~",
})).s("gm_electric_bass_finger").gain(0.31)

// chords · drawbar organ · "Organ"
const drawbar_organ = note(`<
  ~@12 A@3 ~ B@3 ~ C@3 ~ D E@2 ~@16 F G H I J K L@2 ~ M N@2 ~ O P@2 ~ Q N@2 ~@4 R ~@3 R ~@3 R ~@3 S@6 T@2 U@4 V@2 W@2 X
  Y ~@16 R ~@3 Z ~@3 AA ~@3 AB AC AD AE AF AG AH AI AJ AK AL AM AN AM AO AP AQ AR AS AT AU AV AW AX AY AZ
>`.pickRestart({
  A: "[a4@15 ~ [g4,b4]@4 ~@2 [e4,a4,c#5] ~@3 [g4,b4]@2 ~@2 [f#4,a4]@6 ~@12, d5@11 ~@13, f#4 ~@3]/3", // G A G F#m
  B: "[a4@15 ~ [g4,b4]@4 ~@2 [c#5,e5] ~@3 [a4,c#5,e5] ~@3 [a4,d5]@6 ~@12, d5@5 ~@7]/3", // G C#m A D5
  C: "[a4@14 ~@2 [g4,b4]@4 ~@2 [e4,a4,c#5] ~@3 [g4,b4] ~@3 [f#4,a4]@6 ~@12, d5@11 ~@13, f#4 ~@3]/3", // G A G F#m
  D: "[a4,d5], f#4@3 ~", E: "[[g4,b4]@4 ~@2 [a4,c#5,e5] ~@3 [a4,c#5,e5] ~@3 [a4,d5]@6 ~@12]/2",
  F: "~@11 d#2 c#3 [d#3,f#3] [g#3,a#3] c#4", G: "[a4,d5,f#5,a5]@6 [a4,d5,f#5] ~@9",
  H: "[b4,d5,g5]@3 ~ [b4,d5,g5] ~ [a4,c#5,e5] ~@9", I: "[a4,d5,f#5,a5]@6 [a4,d5,f#5,a5] ~@9",
  J: "[d5,g5,b5]@3 ~ [g5,b5] ~ [e5,a5,c#6] ~@9", K: "a4@7 ~",
  L: "[[g4,b4,d5]@5 ~ [e4,a4,c#5] ~@3 [g4,b4]@2 ~@2 [f#4,a4]@6 ~@12]/2", M: "[f#4,d5]@3 ~, a4@7 ~",
  N: "[[g4,b4,d5]@3 ~ [g4,b4,d5] ~ [a4,c#5,e5] ~@3 [a4,c#5,e5] ~@3 [a4,d5]@6 ~@12]/2", O: "[a4,d5] ~",
  P: "[[g4,b4,d5]@3 ~ [g4,b4,d5] ~ [a4,c#5] ~@3 [g4,b4] ~@3 [f#4,a4]@6 ~@12]/2", Q: "[f#4,a4,d5] ~",
  R: "[g4,b4,d5]@3 ~ [g4,b4,d5] ~ [a4,c#5,e5] ~@9", // G A
  S: "[d5@8 [c#5,e5]@8 ~@16 [g4,b4]@6 [a4,c#5]@4 [g4,b4]@4 ~@18 g4@4 [b4,d5] ~ [c#5,e5]@10 d5@15 ~, g4@7 ~ a4@22 ~@16 [f#4,a4]@16 ~@2 b4@3 ~@3 a4@24 ~@2, b4@5 ~@11 d5@21 ~@15 d5@15 ~@29]/6", // C#m G A G Bm C#m F#m
  T: "[[g4,d5]@5 ~ [a4,c#5]@4 [g4,b4]@3 ~ [f#4,a4]@16 ~@2]/2", // G5 A G F#m
  U: "[[g4,b4,d5,g5]@4 [g4,b4,d5] ~ [a4,c#5,e5]@6 ~@2 a4@15 ~@3 [g4,b4]@5 ~ [a4,c#5]@3 ~ [g4,b4]@3 ~ a4@6 d5 ~@3 [a4,d5]@6 ~@2, ~@6 d5 ~@7 d5@22 ~@10 f#4@5 ~@13]/4", // G A G A G D5
  V: "[[g4,b4]@4 d5 ~ [a4,c#5,e5]@7 ~ [a4,d5]@17 ~]/2", // G A D5
  W: "[[g4,b4,d5]@5 ~ [a4,c#5]@3 ~ [g4,b4]@2 ~@2 [f#4,a4]@4 d5 ~ [f#4,a4,d5]@3 ~ [f#4,a4,d5]@4 ~@4]/2", // G A G F#m D
  X: "[g4,b4,d5,g5]@3 ~ [g4,b4,d5,g5] ~ [a4,c#5,e5,a5] ~@9", Y: "[d5,f#5,a5] ~@7, d6 ~@15",
  Z: "[g4,b4,d5]@3 ~ [g4,b4,d5] ~ [a4,c#5] ~@9", AA: "[g4,b4,d5]@3 ~ [g4,d5] ~ [a4,e5] c#5 ~@8",
  AB: "[g4,b4,d5]@6 ~@2 [a4,c#5,e5]@7 ~, g5 ~", AC: "[a4,d5] ~@3 [a4,d5]@2 ~@6 [a4,d5]@3 ~",
  AD: "[g4,b4,d5]@3 ~ [g4,b4,d5] ~ [a4,c#5,e5] ~@3 [a4,c#5,e5] ~@3 [a4,c#5] ~", // G A
  AE: "a4@2 ~@2 [a4,d5]@11 ~, d5 ~@3 f#4@9 ~@3", AF: "[g4,b4]@4 d5 ~ [a4,c#5]@2 ~@6 [a4,d5] ~", AG: "[a4,d5]@7 ~",
  AH: "[g4,b4,d5]@3 ~ [g4,b4] ~ [a4,c#5,e5] ~@3 [a4,c#5,e5]@2 ~@2 f#5 ~", // G A
  AI: "[a4,d5,f#5]@2 ~@2 [a4,d5,f#5]@8 [f2,f#2,g2] [a2,b2,c3,c#3] [d3,d#3,f#3,g#3] [a#3,c#4,d#4]", // D G#7 D#7
  AJ: "[b4,d5,g5]@7 ~ [a4,c#5,e5]@7 ~", AK: "[a4,d5,f#5]@2 ~@2 a4 ~ [a4,d5,f#5]@9 ~",
  AL: "[b4,d5,g5]@3 ~ [b4,d5,g5] ~ [a4,c#5,e5] ~@3 [a4,c#5,e5]@4 a4 ~", AM: "[a4,d5,f#5] ~@3 [a4,d5,f#5]@10 ~@2",
  AN: "[b4,d5,g5]@3 ~ [b4,d5,g5] ~ [a4,c#5,e5,a5] ~@3 [a4,c#5] ~@3 [a4,c#5,e5] ~, ~@5 e5 ~@2", // G A
  AO: "[b4,d5,g5]@3 ~ [d5,g5] ~ [a4,c#5,e5] ~@3 [a4,c#5,e5]@2 ~@4", AP: "[f#4,a4,d5]@12 d#2 ~ f#3 [g#3,a#3]",
  AQ: "[b4,d5,g5]@3 ~ [b4,d5,g5] ~ [a4,c#5,e5,a5] ~@9", AR: "[a4,d5,f#5] ~@9 [a4,d5,f#5] ~ [a4,d5,f#5] ~ d5 ~",
  AS: "[b4,d5,g5]@3 ~ [b4,d5,g5] ~ [a4,c#5,e5]@2 ~@2 [a4,c#5,e5]@3 ~ [c#5,e5] ~", AT: "[a4,d5] ~ [a4,d5]@4 ~@2",
  AU: "[b4,d5,g5]@3 ~ [b4,d5,g5] ~ [a4,c#5,a5] ~@7 [a4,d5,f#5] ~, ~@3 e5 ~@4", AV: "[a4,d5,f#5]@11 ~ [a4,d5,f#5] ~@3",
  AW: "[b4,d5,g5]@3 ~ [d5,g5] ~ [a4,c#5,e5] ~@3 [c#5,e5]@4 a4 ~, ~@5 a4 ~@2", AX: "[a4,d5,f#5] ~@3 [a4,d5,f#5]@8 ~@4",
  AY: "[b4,d5,g5]@3 ~ [b4,d5,g5] ~ [a4,c#5,e5,a5] ~@3 [a4,c#5,e5]@4 ~ a4, ~@10 a5@5 ~", AZ: "[a4,d5,f#5] ~@15",
})).s("gm_drawbar_organ").gain(0.31)

// chords · drawbar organ · "Organ" · soft notes
const drawbar_organ_soft = note("<~@16 A ~@8 B ~@17 C ~@3 D E ~@7 F ~@70 G ~@3 D H ~@6 I J ~@6 I ~@3>".pickRestart({
  A: "f#4@3 ~", B: "d5 ~@3", C: "~@11 [c#2,f#2] [g#2,a#2] ~@2 d#4", D: "~@4 d5 ~@11", E: "d5@7 ~, f#4@3 ~", F: "f#4 ~",
  G: "~@14 e5 ~", H: "~@11 [c#2,d#2] [d2,e2,g#2] a#2 e3 [f3,g3]", I: "~@4 b4 ~@11",
  J: "~@12 [c#2,f#2] [g#2,a#2,c#3] d#3 ~", // F#5 A#m7
})).s("gm_drawbar_organ").gain(0.15)

// chords · overdriven guitar · "Guitar"
const overdriven_guitar = note(`<
  ~ A B C D E F E F G ~ H I J K L M N M O M P M O Q O R S T U V W V U V W V W V W V X V Y F Z AA AB AC AD K Y K AE K AE
  K AE AF AE AF AE AG AH AI AJ AK AL AM W AN W AM AO AM W AM W AM Y AP AQ AP AQ AP AQ AR AS AT AQ AP AQ AP AQ AP Z AU
  ~@12 A AV AW AX AE M AE M AY AZ BA BB BA M BA M BC AM BD AM BE BF BD BG W BH W AM BI AM BI AM BJ BK BL BK BM BK BN BO
  BP BQ
>`.pickRestart({
  A: "~@10 a2 ~ c#3 ~ d3 ~", B: "c#3@3 ~ d3 ~ d3 ~ c#3@3 ~ d3 ~ d3 ~", C: "c#3@2 ~@2 d3 ~ c#3@3 ~ d3 ~ c#3 ~ d3 ~",
  D: "c#3@3 ~ d3 ~ d3 ~ c#3@2 ~@2 d3 ~ d3 ~", E: "c#3@2 ~@2 d3 ~ c#3@2 ~@2 d3 ~ c#3 ~ d3 ~",
  F: "c#3@2 ~@2 d3 ~ d3 ~ c#3@2 ~@2 d3 ~ d3 ~", G: "c#3@2 ~@2 d3 ~ d3@3 ~ c#3@2 d3 ~@3", H: "~@10 a2 ~ c#3@2 d3 ~",
  I: "d3 ~ d3 ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~", // D5
  J: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3] ~ [e3,a3] ~ [e3,a3] ~ [e3,a3] ~ [e3,a3] ~", // G5 A5
  K: "[d3,a3] ~@3 [d3,a3]@2 ~@2 [d3,a3] ~ [d3,a3]@3 ~ [d3,a3] ~", // D5
  L: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3]@2 ~@2 [e3,a3] ~ [e3,a3] ~ [e3,a3] ~", // G5 A5
  M: "[d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3]@3 ~ [d3,a3] ~", // D5
  N: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3] ~@3 [e3,a3] ~ [e3,a3] ~ [d3,e3,a3] ~", // G5 A5 Dsus2
  O: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3] ~@3 [e3,a3] ~ [e3,a3] ~ [d3,a3] ~", // G5 A5 D5
  P: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3] ~@3 [e3,a3] ~ [e3,a3] ~ [e3,a3] ~", // G5 A5
  Q: "[d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~@3 [d3,a3] ~", // D5
  R: "[d3,a3]@2 ~@2 [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3]@3 ~ [d3,a3] ~", // D5
  S: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3] ~@3 [e3,a3] ~ [e3,a3] ~@3", // G5 A5
  T: "[a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~@3 [d3,a3] ~ [d3,a3] ~ [d3,a3] ~", // D5
  U: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3]@2 ~@2 [e3,a3] ~ [e3,a3] ~ [a3,d4] ~", // G5 A5 D5
  V: "[a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4]@2 ~@2 [d3,a3] ~ [d3,a3] ~ [d3,a3] ~", // D5
  W: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3]@3 ~ [e3,a3] ~ [e3,a3] ~ [a3,d4] ~", // G5 A5 D5
  X: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3]@2 ~@2 [e3,a3] ~ [e3,a3] ~ [a3,c4,d4] ~", // G5 A5 D7
  Y: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3]@3 ~ [e3,a3] ~ [e3,a3] ~ [e3,a3] ~", // G5 A5
  Z: "c#3@2 ~@2 d3 ~ c#3@2 ~@2 d3 ~ c#3@3 ~", AA: "d3 ~ c#3@2 ~@2 d3 ~ c#3@3 ~ d3 ~ c#3@2",
  AB: "~@2 d3 ~ c#3 ~ d3 ~ c#3 ~ d3 ~ d3 ~@3",
  AC: "[d3,g3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~", // Dsus4 D5
  AD: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3] ~ a3 ~ [e3,a3] ~ [e3,a3] ~ [e3,a3] ~", // G5 A5
  AE: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3]@2 ~@2 [e3,a3] ~ [e3,a3] ~ [d3,a3] ~", // G5 A5 D5
  AF: "[d3,a3]@2 ~@2 [d3,a3]@2 ~@2 [d3,a3] ~ [d3,a3]@3 ~ [d3,a3] ~", // D5
  AG: "[d3,a3]@2 ~@2 [d3,a3]@3 ~ [d3,a3] ~ [d3,a3]@3 ~ [d3,a3] ~", // D5
  AH: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3]@3 ~ [e3,a3] ~ a3 ~ [a3,d4] ~", // G5 A5 D5
  AI: "[a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4]@2 ~@2 [d3,a3] ~ [d3,a3] ~", // D5
  AJ: "[d3,g3]@3 ~ [d3,g3] ~ [e3,a3]@3 ~ [e3,a3] ~ a3 ~ [a3,d4] ~", // G5 A5 D5
  AK: "[a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4]@2 ~@2 [d3,a3] ~", // D5
  AL: "[d3,a3] ~ [d3,a3] ~ [d3,g3] ~ [d3,a3]@2 ~@2 [d3,a3] ~ [d3,a3] ~ [a3,d4,e4] ~", // D5 G5 D5 Asus4
  AM: "[a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4]@3 ~ [a3,d4] ~", // D5
  AN: "[a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4]@3 ~ [d3,g3] ~", // D5 G5
  AO: "[d3,g3,a#3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3]@3 ~ [e3,a3] ~ [e3,a3] ~ [a3,d4] ~", AP: "[d3,a3] ~ [d3,a3] ~@5",
  AQ: "~@14 [d3,a3] ~", AR: "[d3,a3]@2 ~@2 [d3,a3]@2 ~@2 c#3@3 ~ d3 ~ c#3@2",
  AS: "~@2 d3 ~ c#3@3 ~ d3 ~ c#3@2 ~@2 [d3,a3] ~", AT: "[d3,a3]@2 ~@2 [d3,a3]@3 ~@9", AU: "d3 ~ c#3@3 ~@11",
  AV: "d3@3 ~ d3 ~ [d3,a3] ~ a3 ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~", // D5
  AW: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3] ~ [e3,a3] ~ [e3,a3] ~ [e3,a3] ~ [d3,a3] ~", // G5 A5 D5
  AX: "[d3,a3]@2 ~@2 [d3,a3]@3 ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~", AY: "c#3@2 ~@2 d3 ~ c#3@3 ~ d3 ~ c#3@2 ~@2",
  AZ: "d3 ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3] ~ [d3,a3]@3 ~ [d3,a3] ~", // D5
  BA: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3]@3 ~ [e3,a3] ~ [e3,a3] ~ [d3,a3] ~", // G5 A5 D5
  BB: "[d3,a3] ~ [d3,a3] ~ [d3,a3] ~ a3 ~ [d3,a3] ~ [d3,a3]@3 ~ [d3,a3] ~", // D5
  BC: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3]@2 ~@2 [a3,d4] ~ [a3,d4] ~ [a3,d4] ~", // G5 A5 D5
  BD: "[g3,d4] ~ [g3,d4] ~ [g3,d4] ~ [a3,e4]@3 ~ [a3,e4] ~ [a3,e4] ~ [a3,d4] ~", // G5 A5 D5
  BE: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3]@3 ~ [e3,a3] ~ [e3,a3] ~ d4 ~", // G5 A5
  BF: "[a3,d4] ~ [a3,d4] ~ [a3,d4] ~ d4 a3 [a3,d4] ~ [a3,d4]@3 ~ [a3,d4] ~", // D5
  BG: "[a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,d4]@3 ~ d4 ~", // D5
  BH: "[a3,d4] ~ [a3,d4] ~ [a3,d4] c#4 [a3,d4] c#4 [a3,d4] c#4 [a3,d4] ~ [a3,d4] ~ [a3,d4] ~", // D5
  BI: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3] ~@3 [e3,a3] ~ [e3,a3] ~ [a3,d4] ~", // G5 A5 D5
  BJ: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~@2 e3 ~@2 [e3,a3] ~ [e3,a3] ~ [a3,d4] ~, ~@3 a3 ~@4", // G5 A5 D5
  BK: "[a3,d4]@2 ~@2 [a3,d4]@3 ~ [a3,d4] ~ [a3,d4]@3 ~ [a3,d4] ~", // D5
  BL: "[d3,g3,a#3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3]@3 ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~", // Gm G5 A5 D5
  BM: "[d3,g3,a#3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3]@2 ~@2 [a3,d4] ~ [a3,d4] ~ [a3,d4] ~", // Gm G5 A5 D5
  BN: "[d3,g3] ~ [d3,g3] ~ [d3,g3] ~ [e3,a3]@3 ~ [a3,d4] ~ [a3,d4] ~ [a3,d4] ~", // G5 A5 D5
  BO: "[a3,d4]@2 ~@2 [a3,d4]@3 ~ [a3,d4] ~ [a3,d4]@3 ~ a3 ~", BP: "~ c#3@2 ~ d3 ~ c#3@2 ~@2 d3 ~ c#3@3 ~", BQ: "d3 ~@7",
})).s("gm_overdriven_guitar").gain(0.46)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@10 A B A@15 C A@4 D A E F A@3 G A@3 H A@3 I J A@6 K A@7 F A@2 L A L A L@2 A@6 M N A E A@5 F A@7 O D@10 G@2 P Q A@3 R
  A@7 S A@2 M T A@15 U A@6 V W X
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!2 ~", C: "~@2 x ~ x!3 ~", D: "~@3 x ~@2 x ~", E: "~@2 x ~@4 x", F: "~@5 x!3",
  G: "~@2 x!2 ~@2 x ~", H: "x ~@3 x!4", I: "x ~ x!2 ~@12", J: "~@3 x", K: "~@4 x ~@4 x ~@2 x ~@3", L: "~@2 x ~@3 x!2",
  M: "~ x ~@2", N: "~@4 x!4", O: "x!4", P: "~@2 x!2 ~@4", Q: "~@4 x ~ x!9 ~", R: "x!2 ~ x",
  S: "~@4 x ~@4 x ~@2 x ~ x ~", T: "~ x!7", U: "~@6 x!3 ~ x!4 ~@2", V: "~ x!3", W: "x ~ x ~@3 x!2", X: "x",
})).gain(0.51)

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

// drums · clap
const clap = s("cp").struct(`<
  ~@6 A B@3 A B ~@32 B@2 A B ~@18 A B ~@2 A B ~@2 A B@3 A ~@17 B@2 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3
  A B@3 A B@3 A B@3 A B@2 ~@2
>`.pickRestart({
  A: "~@3 x ~@2 x ~", B: "~@2 x!2 ~@2 x ~",
})).gain(0.46)

// drums · clap · soft notes
const clap_soft = s("cp").struct(`<
  ~@6 A ~@3 A ~@35 A ~@19 A ~@3 A ~@3 A ~@3 A ~@19 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A
  ~@3 A ~@4
>`.pickRestart({
  A: "~ x ~@2",
})).gain(0.31)

// drums · low tom
const low_tom = s("lt").struct("<~@106 [~@15 x] [~ x!2 ~@2 x!3] [~@3 x!5] ~@16 [~@5 x!3] ~@25>").gain(0.46)

// drums · hihat
const hihat = s("hh").struct(`<
  A B C D E F G H I J ~@2 K L@6 M L@7 N O L@4 M L N K M L@5 ~@5 K L M L@4 M L@7 J P M L@12 M ~@72
>`.pickRestart({
  A: "x!2", B: "x!4", C: "~@3 x!4 ~", D: "~@2 x ~@5 x ~ x!3 ~@3", E: "~@2 x ~ x ~@3 x ~ x!3 ~ x ~",
// … 72 more lines

More by John Mellencamp