Strudelify

Whipping Post

The Allman Brothers Band

KeyA majorTempo97 bpm
0:00/0:00
// Whipping Post — The Allman Brothers Band
// 97 bpm, 12/8, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (11/8 at bar 1, 12/8 at bar 10, 11/8 at bar 25, 12/8 at bar 29, ...) are rendered on a constant 12/8 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 76 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(97/6)

// 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.

// bass · acoustic bass · "untitled"
const bass = note(`<
  A B C D E F G H I@2 J@7 K@2 L M N O P@2 Q@2 R@2 S@7 T U V W X Y Z@2 AA AB AC AD@8 AE AF AG AH AI AJ AK AL AM@6 AN@2
  AO@5
>`.pickRestart({
  A: "~@12 a2@2 a3 g3 a3@2 a2@2 a3 g3 a3@2", B: "a2@2 a3 g3 a3@2 d3@2 c3@2 a2@2 a3 g3 a3@2 a2@2 a3 g3 a3@2 a2@2",
  C: "a3 g3 a3@2 d3@2 c3@2 a2@2 a3 g3 a3@2 a2@2 a3 g3 a3@2 a2@2 a3 g3",
  D: "a3@2 d3@2 c3@2 a2@2 a3 g3 a3@2 a2@2 a3 g3 a3@2 a2@2 a3 g3 a3@2",
  E: "d3@2 c3@2 a2@2 a3 g3 a3@2 a2@2 a3 g3 a3@2 a2@2 a3 g3 a3@2 d3@2",
  F: "c3@2 a2@2 a3 g3 a3@2 a2@2 a3 g3 a3@2 a2@2 a3 g3 a3@2 d3@2 c3@2",
  G: "a2@3 a2 a2@2 a3!2 ~ a3@3 a2!2 ~ a2!2 ~ e3 c3@2 a2 a2@2",
  H: "~ a2 ~ a3 a3@2 a3 a3@3 a2 a2@2 a2 a2@2 e3@2 d3 c3 a2@2 a2 ~, ~@2 a2@7 ~@15",
  I: "[a2@2 a3 ~ a3 ~ a3@2 a2@2 a2 ~ a2@2 d3 ~ c3@2 a2@2 ~ a2 ~ a3 a3@2 a3 a3@3 a2 a2@2 a2 a2@2 e3@2 d3 c3 a2!2 ~ a2 a2@2 a3!2, ~@22 a2@7 ~@19]/2",
  J: "~ a3 a3@2 a2!2 ~ a2 a2@2 a3@2 e3 d3 c3@2 a2!2 ~ a2 a2@2 a3!2",
  K: "[~ a3 a3@2 a2!2 ~ a2 a2@2 a3@2 c3 ~ c#3@2 [d2,d3]@4 [d2,d3]@2 [d2,d3]@4 [d2,d3]@2 [d2,d3]@4 [d2,d3]@2 [d2,d3]@2 [d2,d3]@2 [d#2,d#3]@2 [e2,e3]@2 [e2,e3]@2 [e2,e3]@2 [f#2,f#3]@2]/2", // D D# E F#
  L: "[f#2,f#3]!2 [g2,g3]!3 [g#2,g#3]!3 [a2,a3]@2 [a2,a3]!2", // F# G G# A
  M: "[c2,c3] [c#2,c#3] [d2,d3]@2 [d2,d3] [e2,e3]!3 [a2,a3]@2 [a2,a3]!2", // C C# D E A
  N: "[c2,c3] [c#2,c#3] [d2,d3]@2 [d2,d3] [e2,e3] [g2,g3] [g#2,g#3] [a2,a3]@2 [a2,a3]!2", // C C# D E G G# A
  O: "[c2,c3] [c#2,c#3] [d2,d3]@2 [d2,d3] [e2,e3]@2 [e2,e3] [c2,c3] ~@3", P: "[~@16 [a2,a3]@24 a2@3 a2 a2@2 a3!2]/2",
  Q: "[~ a3@3 a2!2 ~ a2!2 ~ e3 c3@2 a2 a2@2 ~ a2 ~ a3 a3@2 a3 a3@3 a2 a2@2 a2 a2@2 e3@2 d3 c3 a2@2 a2 ~ a2@2 a3 ~ a3 ~ a3@2, ~@18 a2@7 ~@23]/2",
  R: "[a2@2 a2 ~ a2@2 d3 ~ c3@2 a2@2 ~ a2 ~ a3 a3@2 a3 a3@3 a2 a2@2 a2 a2@2 e3@2 d3 c3 a2!2 ~ a2 a2@2 a3!2 ~ a3 a3@2 a2!2 ~ a2, ~@14 a2@7 ~@27]/2",
  S: "a2@2 a3@2 e3 d3 c3@2 a2!2 ~ a2 a2@2 a3!2 ~ a3 a3@2 a2!2 ~ a2",
  T: "a2@2 a3@2 c3 ~ c#3@2 [d2,d3]@4 [d2,d3]@2 [d2,d3]@4 [d2,d3]@2 [d2,d3]@4", // D
  U: "[d2,d3]!3 [d#2,d#3] [e2,e3]!3 [f#2,f#3]!3 [g2,g3]!2", // D D# E F# G
  V: "[g2,g3] [g#2,g#3]!3 [a2,a3]@2 [a2,a3]!2 [c2,c3] [c#2,c#3] [d2,d3]@2", // G G# A C C# D
  W: "[d2,d3] [e2,e3]!3 [a2,a3]@2 [a2,a3]!2 [c2,c3] [c#2,c#3] [d2,d3]@2", // D E A C C# D
  X: "[d2,d3] [e2,e3] [g2,g3] [g#2,g#3] [a2,a3]@2 [a2,a3]!2 [c2,c3] [c#2,c#3] [d2,d3]@2", // D E G G# A C C# D
  Y: "[d2,d3] [e2,e3]@2 [e2,e3] [c2,c3] ~@7", Z: "[~@8 [a2,a3]@24 a2@3 a2 a2@2 a3!2 ~ a3@3 a2!2 ~ a2]/2",
  AA: "a2 ~ e3 c3@2 a2 a2@2 ~ a2 ~ a3 a3@2 a3 a3@3 a2 a2@2 a2 a2@2, ~@10 a2@7 ~@7",
  AB: "e3@2 d3 c3 a2@2 a2 ~ a2@2 a3 ~ a3 ~ a3@2 a2@2 a2 ~ a2@2 d3 ~",
  AC: "c3@2 a2@2 ~ a2 ~ a3 a3@2 a3 a3@3 a2 a2@2 a2 a2@2 e3@2 d3 c3, ~@6 a2@7 ~@11",
  AD: "a2!2 ~ a2 a2@2 a3!2 ~ a3 a3@2 a2!2 ~ a2 a2@2 a3@2 e3 d3 c3@2",
  AE: "a2 ~ a2@2 ~@2 a2 a2@4 ~ b2 ~ b2@3 ~ b2 ~ b2@3 ~ c3 ~ c3@2 ~@2 c3 ~ c3@4 d3 ~ d3@2 ~@2 d3 ~ d3@3 ~",
  AF: "e3 ~ e3@2 ~@2 e3 ~ e3@4 f#3 ~ f#3@3 ~ f#3 ~ f#3@3 ~ g3 ~ g3@3 ~ g3 ~ g3@3 ~ a3@2 a3@2 ~@2 a3 ~ a3@3 ~",
  AG: "b3 ~ b3@3 ~ b3 ~ b3@4 c4 ~ c4@2 ~@2 c4 ~ c4@3 ~ d4 ~ d4@2 ~@3 d4 d4@3 ~ e4 ~@2 e4@2 ~ e4 ~ e4@2 ~@2",
  AH: "f#4 ~ f#4@4 f#4 ~ f#4@3 ~ g4 ~ g4@3 ~ g4 ~ g4@3 ~ g#4 ~ g#4@3 ~ g#4 ~ g#4@3 ~ a4 ~@2 a4@3 a4 ~ a4@3 ~",
  AI: "[a2,a3]@3 ~@2 a2@3 ~@16 [b2,b3]@3 ~ [b2,b3]@3 ~@17, ~@4 a3@3 ~@41", // A B
  AJ: "[c3,c4]@3 ~ [c3,c4]@3 ~@18 b3@3 [b2,b3]@3 ~@17, ~@8 b2 ~@7", // C B
  AK: "[a2,a3]@3 ~ [a2,a3]@3 ~@17 [b2,b3]@3 ~ [b2,b3]@3 ~@17", // A B
  AL: "[c3,c4]@3 ~ [c3,c4]@3 ~@17 [d3,d4]@3 ~ [d3,d4]@3 ~@17", // C D
  AM: "[[a2,a3]@3 ~@42 d3@10 d3@4 ~@2 d3@9 ~@6 d2@11 d2@4 ~ d3@4 ~ d3@5 [d#2,d#3]@5 ~ e3@11 [e2,e3]@5 [f#2,f#3]@10 ~ [f#2,f#3]@5 [g2,g3]@10 ~ [g2,g3]@5 [g#2,g#3]@9 ~ [g#2,g#3]@5 ~ a3@11 a3@4 ~@2 [a2,a3]@5 [c2,c3]@5 [c#2,c#3]@5 d3@10 ~ d3@5 [e2,e3]@5 [g2,g3]@5 [g#2,g#3]@5 ~ [a2,a3]@10 ~ [a2,a3]@4 ~ [a2,a3]@5 [c2,c3]@5 [c#2,c#3]@5 ~ d2@10 ~ d3@4 ~ e3@4, ~@44 d2@16 ~ d2@14 ~@17 d2@10 ~@5 e2@11 ~@54 a2@16 ~@16 d2@16 ~@58 d2@5 e2@5, ~@70 d3@21 ~@176 d3@11 ~@10]/6", // A D# E F# G G# A C …
  AN: "[[g2,g3]@6 [g#2,g#3]@5 [a2,a3]@10 ~ [a2,a3]@5 ~ [a2,a3]@4 ~ c3@5 [c#2,c#3]@5 [d2,d3]@11 [d2,d3]@5 [e2,e3]@4 ~ [e2,e3]@5 ~ e3@5 ~ c3@3 ~@17, ~@32 c2@6 ~@31 e2@6 c2@3 ~@18]/2", // G G# A C# D E
  AO: "[~@43 a4@54 ~@23, ~@43 [a2,a3]@151 ~@46, ~@77 e4@116 ~@47]/5", // A
})).s("gm_acoustic_bass").gain(0.8)

// other · distortion guitar
const distortion_guitar = note("<~@4 A B C@3 D ~@13 E F@4 G ~@13 H@3 I J ~@8 K L M N O P Q@2 ~@13>".pickRestart({
  A: "~@6 c#5 b4 c#5@2 ~@2 c#5 b4 c#5@2 ~@2 c#5 b4 c#5@2 f#5 ~",
  B: "e5@2 ~@2 c#5 b4 c#5@2 ~@2 c#5 b4 c#5@2 ~@2 c#5 b4 c#5@2 f#5@2 e5 ~",
  C: "[e4@18 f#4@2 e4@20 f#4@2 e4@20 f#4 ~ d4 ~@7]/3", D: "~@6 f#4 e4 ~@4",
  E: "~@32 [e5,e6]@4 [d5,d6]@3 ~ [c5,c6]@3 ~ [e5,e6]@4", // E D C E
  F: "[~ d6@3 [c5,c6]@2 ~@6 [a4,a5]@11 ~@9 e4@36 f#4@4 e4@40 f#4@4 e4@40 f#4@2 ~@2 d4@2 ~@30, d5@3 ~@4 c5@2 d6@2 c6@2 ~@179, ~@4 [d5,c6] c5 ~@90]/4", // C A D7
  G: "~@2 f#4 e4 ~@8",
  H: "[~@16 [e5,e6]@4 [d5,d6]@3 ~ [c5,c6]@3 ~@2 e5@3 ~ d6@3 [c5,c6]@2 ~@4 c5 ~ [a4,a5]@11 ~@9 e4@36 f#4@4 e4@40, ~@28 e6@4 d5@3 ~@5 [c5,c6]@2 ~@102, ~@41 [d5,d6]@2 c6@2 ~@99]/3", // E D C A C D
  I: "f#4@2 e4@20 f#4 ~", J: "d4 ~@19 f#4@2 e4@2",
  K: "e3@2 e3@3 ~ e3 ~ e3@4 f#3 ~ f#3@3 ~ f#3 ~ f#3@3 g3 ~ g3@3 ~@2 g3 ~ g3@3 ~ a3@2 a3@4 a3 ~ a3@3 ~",
  L: "b3 ~ b3@3 ~ b3 ~ b3@3 ~ c#4 c#4@4 ~ c#4 c#4@3 ~@2 d4 ~ d4@3 ~ d4 ~ d4@4 e4@2 e4@3 ~ e4 e4@3 ~@2",
  M: "f#4 ~ f#4@3 f#4 ~ f#4@4 ~ g4 ~ g4@3 ~ g4 ~ g4@3 ~ a4 ~ a4@4 a4 ~ a4@3 ~ b4 ~ b4@3 ~ b4 ~ b4@3 ~",
  N: "c#5 ~ c#5@3 ~ c#5@2 ~ c#5@2 ~@2 d5@2 d5@2 ~ d5 ~ d5@3 ~ d#5 ~ d#5@4 d#5 ~ d#5@2 ~@2 e5@11 ~",
  O: "~@12 [g5,g6]@11 ~@13 [g5,g6]@12", P: "~ [g5,g6] ~ [g5,g6]",
  Q: "[~@12 [g5,g6]@12 ~@12 [g5,g6]@13 ~@11 [g5,g6]@12 ~@12 [g5,d6,g6]@12, ~@3 d6@5 ~ d6@5 ~ d6@4 ~@5]/2", // G G5
})).s("gm_distortion_guitar").gain(0.8)

// chords · piano
const piano = note("<~@4 A B C@8 D@7 E@2 F@8 G@6 H@5 I@3 J K L@8 M N O P Q R S T U ~@12>".pickRestart({
  A: "~@2 a2@9 d3", B: "c3@2 a2@18 a6 g6 f#6 e6, ~@10 d3 c3",
  C: "[d6@18 a6 g6 f#6 e6 d6@18 a6 g6 f#6 e6 d6@18 a6 g6 f#6 e6 d6@18 a6 g6 f#6 e6 [c5,e5]@6 [d5,f#5]@6 [e5,g5]@6 [f#5,a5]@2 [e5,g5]@2 [d5,f#5]@2 [c5,e5]@6 [d5,f#5]@6 [e5,g5]@6 [f#5,a5]@2 [e5,g5]@2 [d5,f#5]@2 [c5,e5]@6 [d5,f#5]@6 [e5,g5]@6 [f#5,a5]@2 [e5,g5]@2 [d5,f#5]@2 [c5,e5]@6 [d5,f#5]@6 [e5,g5]@6 [f#5,a5]@2 [e5,g5]@2 [d5,f#5]@2 [c5,e5]@6 [d5,f#5]@2]/8", // C D Em F#m Em D C D …
  D: "[~@8 [e5,g5]@12 [f#5,a5]@4 [e5,g5]@4 [d5,f#5]@4 [c5,e5]@12 [d5,f#5]@12 [e5,g5]@12 [f#5,a5]@4 [e5,g5]@4 [d5,f#5]@4 [c5,e5]@12 [d5,f#5]@12 [e5,g5]@12 [f#5,a5]@4 [e5,g5]@4 [d5,f#5]@4 [c5,e5]@12 [d5,f#5]@12 [e5,g5]@12 [f#5,a5]@4 [e5,g5]@4 [d5,f#5]@4 [d2,d3]@7 ~ [d2,d3]@4 [a4,c5,d5,f#5]@12 [d2,d3]@7 ~ [d2,d3]@4 [a4,c5,d5,f#5]@11 [e2,e3]@8 ~@5 [b4,g#5]@8 [b4,g#5]@3 ~ [e2,e3]@7 [e2,e3]@4 ~ [b4,d5,e5,g#5]@11 ~ [c5,e5] c5@18 g5@5 [d5,f#5]@12 [e5,g#5]@10 ~ [c5,e5]@17, ~@232 [e2,e3]@7 ~@97, ~@236 [d5,e5]@11 ~@26 e5@24 ~@39]/7", // Em F#m Em D C D Em F#m …
  E: "[~@3 [e5,g5]@4 ~ [d5,f#5]@12 [e5,g#5]@11 ~ c5@19 g5@4 ~ [d5,f#5]@12 [e5,g#5]@11 [c5,e5,g5]@3 ~@14, ~@32 e5@23 ~@41]/2", // Em D E D E C
  F: "[~@16 [a3,e4,a4,e5]@20 a6 g6 f#6 e6 d6@18 a6 g6 f#6 e6 d6@18 a6 g6 f#6 e6 d6@18 a6 g6 f#6 e6 d6@18 a6 g6 f#6 e6 [c5,e5]@6 [d5,f#5]@6 [e5,g5]@6 [f#5,a5]@2 [e5,g5]@2 [d5,f#5]@2 [c5,e5]@6 [d5,f#5]@6 [e5,g5]@6 [f#5,a5]@2 [e5,g5]@2 [d5,f#5]@2 [c5,e5]@6 [d5,f#5]@6 [e5,g5]@4]/8", // A5 C D Em F#m Em D C …
  G: "[~@4 [f#5,a5]@4 [e5,g5]@4 [d5,f#5]@4 [c5,e5]@12 [d5,f#5]@12 [e5,g5]@12 [f#5,a5]@4 [e5,g5]@4 [d5,f#5]@4 [c5,e5]@12 [d5,f#5]@12 [e5,g5]@12 [f#5,a5]@4 [e5,g5]@4 [d5,f#5]@4 [c5,e5]@12 [d5,f#5]@12 [e5,g5]@12 [f#5,a5]@4 [e5,g5]@4 [d5,f#5]@4 [c5,e5]@12 [d5,f#5]@12 [e5,g5]@12 [f#5,a5]@4 [e5,g5]@4 [d5,f#5]@4 [c5,e5]@12 [d5,f#5]@12 [e5,g5]@12 [f#5,a5]@4 [e5,g5]@4 [d5,f#5]@4 [d2,d3]@7 ~ [d2,d3]@4 [a4,c5,d5,f#5]@12 [d2,d3]@7 ~]/6", // F#m Em D C D Em F#m Em …
  H: "[[d2,d3]@4 [a4,c5,d5,f#5]@11 [e2,e3]@8 ~@5 [b4,g#5]@8 [b4,g#5]@3 ~ [e2,e3]@7 [e2,e3]@4 ~ [b4,d5,e5,g#5]@11 ~ [c5,e5] c5@18 g5@5 [d5,f#5]@12 [e5,g#5]@10 ~ [c5,e5]@19 ~ [e5,g5]@4 ~ [d5,f#5]@12 [e5,g#5]@11 ~ c5@19 g5@4 ~ [d5,f#5]@12 [e5,g#5]@11 [c5,e5,g5]@3 ~@30, ~@24 [e2,e3]@7 ~@209, ~@28 [d5,e5]@11 ~@26 e5@24 ~@71 e5@23 ~@57]/5", // D D7 E E7 C D E C …
  I: "[~@8 [a3,e4,a4,e5]@20 a6 g6 f#6 e6 d6@18 a6 g6 f#6 e6 d6@18]/3", J: "a6 g6 f#6 e6 d6@18 a6 g6",
  K: "f#6 e6 d6@18 a6 g6 f#6 e6", L: "[c5,e5]@3 [d5,f#5]@3 [e5,g5]@3 [f#5,a5] [e5,g5] [d5,f#5]",
  M: "e4@2 e4@3 ~ e4 ~ e4@3 ~ f#4@2 f#4@3 ~ f#4@5 ~ g4 ~ g4@3 ~ g4 ~ g4@3 ~ a4 ~ a4@3 ~ a4 ~ a4@3 ~, a2 b2 c3 d3",
  N: "b4 ~ b4@3 ~ b4 ~ b4@3 ~ c#5 ~ c#5@3 ~ c#5 ~ c#5@3 ~ d5 ~ d5@3 ~ d5 ~ d5@3 ~ e5 ~ e5@3 ~ e5 ~ e5@3 ~, e3 f#3 g3 a3",
  O: "f#5 ~ f#5@3 ~ f#5 ~ f#5@3 ~ g5 ~ g5@3 ~@2 g5 g5@3 ~ a5 ~ a5@3 ~ a5 ~ a5@3 ~ b5 ~ b5@3 ~ b5 ~ b5@3 ~, b3@12 c4@11 ~ d4@12 e4@12",
  P: "c#6 ~ c#6@2 ~@2 c#6 ~ c#6@3 ~ d6 ~ d6@3 ~ d6 ~ d6@3 ~ d#6 ~ d#6@2 ~@2 d#6 ~ d#6@4 ~@8 [g4,b4] [d4,e4,f4] [a3,b3,c4] [d3,e3,f3,g3], f#4@12 g4@11 ~ g#4@12 [a4,e6]@11 ~", // G Dm Am Em7 A5
  Q: "[g4,a4,c#5,e5]@4 [g4,a4,c#5,e5]@3 ~@17 [a4,d5,f#5]@3 ~ [a4,d5,f#5]@3 ~@17, [g2,a2,b2,c3] ~@23 b4 ~@23", // A7 D Cmaj7
  R: "[c5,e5,g5]@3 ~ [c5,e5,g5]@4 ~@16 [b4,d5,f#5]@3 ~ [b4,d5,f#5]@4 ~@16", // C Bm
  S: "[a4,c#5,e5]@4 [g4,a4,c#5,e5]@3 ~@18 [b4,d5,f#5]@3 [b4,d5,f#5]@4 ~@16", // A A7 Bm
  T: "[c5,e5,g5]@3 ~ [c5,e5,g5]@4 ~@16 [b4,d5,f#5]@3 ~ [b4,d5,f#5]@3 ~@17", U: "[g4,a4,c#5,e5] ~@15",
})).s("gm_piano").gain(0.71)

// chords · church organ
const church_organ = note("<~@6 A@6 B@6 ~@6 C@7 D@6 ~@6 E@2 F G H I@2 J K J K J ~@3 L M ~@16>".pickRestart({
  A: "[[c5,e5]@2 [c5,e5]@2 ~@2 [c5,e5]@2 [c5,e5]@2 ~@2 [d5,f#5]@2 [d5,f#5]@2 ~@2 [d5,f#5]@2 [d5,f#5]@2 ~@2 [e5,g5]@2 [e5,g5]@2 ~@2 [e5,g5]@2 [e5,g5,a5]@2 ~@2 [f#5,a5]@2 ~@2 e5@2 [c5,e5]@2 [c5,e5]@4 ~@2 [c5,e5]@4 ~@2 [d5,f#5]@2 [d5,f#5]@2 ~@2 [d5,f#5]@2 [d5,f#5]@2 ~@2 [e5,g5]@2 [e5,g5]@2 ~@2 [e5,g5]@2 [e5,g5]@2 ~@2 [f#5,a5,b5]@2 ~@2 [d5,f#5]@2 ~@2 [c5,e5]@2 [c5,e5]@2 ~@2 [c5,e5]@2 [c5,e5]@2 ~@2 [d5,f#5]@2 [d5,f#5]@2 ~@2 [d5,f#5]@2 [d5,f#5]@2 ~@2 [e5,g5]@2 [e5,g5]@2 ~@2 [e5,g5]@2 [e5,g5]@2 ~@2 [f#5,a5,b5]@2 ~@2 [c4,d5,f#5]@2 ~@2 [c5,e5]@4 ~@2 [c5,e5]@4 ~@2 [d5,f#5]@2 [d5,f#5]@2 ~@2 [d5,f#5]@2 [d5,f#5]@2 ~@2 [e5,g5]@2 [e5,g5]@2 ~@2 [e5,g5]@2 [e5,g5]@2 ~@2 [f#5,a5,b5]@2 ~@2 [d5,f#5]@2 ~@2 a2@40 e3@2 d3@2 c3@4 a2@40 ~ d3@2 ~@2 d3@2 a2@17, a3@18 d4@2 c4@2 a3@18 d4@2 c4@2 a3@18 d4@2 ~@2 a3@18 d4@2 c4@2 ~@44 e3 ~ c3 ~@9, ~@19 g5@2 ~@123]/6", // C D Em A7 F#m C D Em …
  B: "[~@20 e3@3 ~ d3@3 c3@4 ~ a2@40 e3@2 d3@2 ~ d3@2 ~ a2@40 e3@2 d3@2 c3@4 a2@40 ~ d3@2 ~@2 d3@2 a2@37 e3@3 ~ d3@3 c3@4 ~ a2@40 e3@2 d3@2 ~ d3@2 ~@17, ~@38 c3 ~@45 e3 ~ c3 ~@47 c3 ~@9]/6",
  C: "[~@32 [c5,e5]@2 [c5,e5]@2 ~@2 [c5,e5]@2 [c5,e5]@2 ~@2 [d5,f#5]@2 [d5,f#5]@2 ~@2 [d5,f#5]@2 [d5,f#5]@2 ~@2 [e5,g5]@2 [e5,g5]@2 ~@2 [e5,g5]@2 [e5,g5,a5]@2 ~@2 [f#5,a5]@2 ~@2 e5@2 [c5,e5]@2 [c5,e5]@4 ~@2 [c5,e5]@4 ~@2 [d5,f#5]@2 [d5,f#5]@2 ~@2 [d5,f#5]@2 [d5,f#5]@2 ~@2 [e5,g5]@2 [e5,g5]@2 ~@2 [e5,g5]@2 [e5,g5]@2 ~@2 [f#5,a5,b5]@2 ~@2 [d5,f#5]@2 ~@2 [c5,e5]@2 [c5,e5]@2 ~@2 [c5,e5]@2 [c5,e5]@2 ~@2 [d5,f#5]@2 [d5,f#5]@2 ~@2 [d5,f#5]@2 [d5,f#5]@2 ~@2 [e5,g5]@2 [e5,g5]@2 ~@2 [e5,g5]@2 [e5,g5]@2 ~@2 [f#5,a5,b5]@2 ~@2 [c4,d5,f#5]@2 ~@2 [c5,e5]@4 ~@2 [c5,e5]@4 ~@2 [d5,f#5]@2 [d5,f#5]@2 ~@2 [d5,f#5]@2 [d5,f#5]@2 ~@2 [e5,g5]@2 [e5,g5]@2 ~@2 [e5,g5]@2 [e5,g5]@2 ~@2 [f#5,a5,b5]@2 ~@2 [d5,f#5]@2 ~@2 a2@40 e3@2 d3@2 c3@4 a2@40 ~ d3@2 ~@2 d3@2 a2@33, ~@16 a3@18 d4@2 c4@2 a3@18 d4@2 c4@2 a3@18 d4@2 ~@2 a3@18 d4@2 c4@2 ~@44 e3 ~ c3 ~@17, ~@35 g5@2 ~@131]/7", // C D Em A7 F#m C D Em …
  D: "[~@4 e3@3 ~ d3@3 c3@4 ~ a2@40 e3@2 d3@2 ~ d3@2 ~ a2@40 e3@2 d3@2 c3@4 a2@40 ~ d3@2 ~@2 d3@2 a2@37 e3@3 ~ d3@3 c3@4 ~ a2@40 e3@2 d3@2 ~ d3@2 ~@33, ~@30 c3 ~@45 e3 ~ c3 ~@47 c3 ~@17]/6",
  E: "[~@8 [c5,e5]!2 ~ [c5,e5]!2 ~ [d5,f#5]!2 ~ [d5,f#5]!2 ~ [e5,g5]!2 ~ [e5,g5] [e5,g5,a5] ~ [f#5,a5] ~ e5 [c5,e5] [c5,e5]@2 ~ [c5,e5]@2 ~ [d5,f#5]!2 ~ [d5,f#5]!2 ~ [e5,g5]!2 ~ [e5,g5]!2 ~, ~@4 a3@9 d4 c4 a3@9, ~@27 g5@2 ~@19]/2", // C D Em A7 F#m C D Em
  F: "[f#5,a5,b5] ~ [d5,f#5] ~ [c5,e5]!2 ~ [c5,e5]!2 ~ [d5,f#5]!2 ~ [d5,f#5]!2 ~ [e5,g5]!2 ~ [e5,g5]!2 ~ [f#5,a5,b5] ~, d4 c4 a3@9 d4", // B7 D C D Em B7
  G: "[c4,d5,f#5] ~ [c5,e5]@2 ~ [c5,e5]@2 ~ [d5,f#5]!2 ~ [d5,f#5]!2 ~ [e5,g5]!2 ~ [e5,g5]!2 ~ [f#5,a5,b5] ~ [d5,f#5] ~, ~ a3@9 d4 c4", // D7 C D Em B7 D
  H: "a2@20 e3 d3 c3@2", I: "[a2@40 ~ d3@2 ~@2 d3@2 a2@37 e3@3 ~ d3@3 c3@4 ~, ~@20 e3 ~ c3 ~@25]/2",
  J: "a2@40 e3@2 d3@2 ~ d3@2 ~, ~@22 c3 ~", K: "~@36 e3@3 ~ d3@3 c3@4 ~",
  L: "~@44 [f6,g6] [b5,c6,c#6,d6,e6] [f5,g5,g#5,a5,a#5] [b4,c5,d5,e5], ~@43 a6@2 ~@3", // Fsus2 Cmaj7
  M: "[e4,f4,g4,a4] [g3,a3,b3,c4,d4] [e3,f3] ~@45", // Fmaj7 G Fmaj7
})).s("gm_church_organ").gain(0.8)

// other · piano
const piano_2 = note("<~@9 A@3 B@5 C@3 D E@3 ~@4 F@7 G H I J K L@3 ~@20 M N O@3 P@2 Q R@2 ~@3>".pickRestart({
  A: "[~@28 c4@2 d4@2 e4@35 ~ e4@4 d4@2 ~ d4@5 c4@2 a3@45 ~ e4@3 ~ d4@3 ~ c4@3 ~ e4@3 ~, ~@68 d4 ~@5 c4@2 ~@52 d4 ~@11 d4 ~@3]/3",
  B: "[d4@3 ~ c4@3 ~@2 e4@2 ~ d4@3 ~ c4@2 ~ d4@2 e4@2 ~ d4@3 c4@2 ~@2 c4 ~ c4@2 a3@33 a4@3 ~ a4@3 ~ a4@3 ~ a4@2 c4@8 c4@14 ~@12 e4@4 d4@3 ~ c4@3 d4 e4@35 ~@8 a3@2 c4@2 e4@4 ~ d4@3 ~ d4@2 ~ d4@10 ~ c4 ~ e4@4 d4@3 ~ d4@2 c4@2 d4@8 c4@3 d4 e4@4 d4@4 c4@3 d4@3 ~ c4, ~@8 d4@2 ~@14 e4 ~@7 d4@2 ~@82 d4 ~@69 c4@2 ~@52]/5",
  C: "[d4@8 c4@2 a3@9 ~ a3@3 ~ c4@3 d4@3 ~@2 d4@35 a4@4 ~ a4@3 e4@3 g4@10 ~ a4@2 ~ e4@22 ~@2 e4@3 ~ g4@3 ~ g#4@2 a4@18, ~@32 c4 ~@55 g#4@4 ~@52]/3",
  D: "~@3 a4@3 g4@2 a4@2 g4@3 ~@2 d4@2 c4@12 ~@2 a4@17, ~@14 e4@2 ~@15 g4 ~@16",
  E: "[~@3 a4@3 g4@2 a4@2 g4@4 e4@2 d4@2 c4@12 ~ g4 a4@19 a4@2 g4@2 ~ a4@2 g4@3 ~ d4@2 c4@13 ~@2 e4@3 ~ d4@3 ~ c4@3 ~ d4 e4@3 d4@3 ~@2 c4@2 ~@4 c4@2 a3@20 ~@16, ~@61 e4@2 ~@16 d4 ~@24 c4@2 ~@38, ~@105 d4@2 ~@37]/3",
  F: "[~@8 a3@3 c4@3 ~@2 e4@35 ~ e4@3 d4@4 ~ d4@2 c4@2 a3@46 ~@2 e4@3 d4@3 ~@2 c4@3 d4 e4@3 d4@3 ~ c4@4 d4@2 e4@2 d4@4 c4@4 ~ e4@3 c4@2 d4@6 c4@2 a3@34 ~ a4@4 a4@3 ~@2 g4@2 a4@2 g4 c4@33 ~ e4@4 d4@3 ~@2 c4@2 d4 e4@35 ~@5 a3@3 c4@4 e4@3 ~ d4@6 ~ c4@2 ~ c4@2 ~ a3@6 c4@2 e4@4 d4@4, ~@15 d4@2 ~@42 c4@2 ~@3 g3@2 ~@138 a4@2 ~@4 d4 ~@41 d4@2 ~@62 d4@2 ~@10 d4 ~@7]/7",
  G: "~@2 c4@2 d4@2 c4@3 a3@5 ~ e4@4 d4@4 ~ c4@4 d4@3 c4 d4@8 c4 a3@7, ~@7 c4 ~@16",
  H: "~@3 a3@4 c4@4 d4@4 c4 d4@13 ~@19", I: "~@3 a4@4 ~ a4@3 e4@4 ~ g#4@6 ~@3 d4 ~@22, ~@15 g4@2 ~@6 e4@25",
  J: "~@3 e4@3 ~@2 g4@3 a4@3 ~ a4@18 ~@2 g4 ~ g4@3 a4@2 g4@3 e4 d4@2, ~@35 a4@4 ~@9",
  K: "c4@14 ~ a4@18 ~ a4@2 g4@2 ~ a4@2 g4@3 ~@2 d4@2, ~@15 g4 ~@29 e4@2 ~",
  L: "[c4@15 ~ a4@19 a4@2 g4@2 ~@3 g4@3 ~ d4 c4@15 ~ e4@4 d4@4 c4@4 e4@4 ~ d4@3 ~ c4@3 c4@2 d4@2 c4 a3@19 ~@33, ~@16 g4 ~@23 a4@4 ~ e4@2 ~@16 d4 ~@80]/3",
  M: "~@12 c5@9 ~ a4@10 ~ g4@9 ~@2 d#4@2 d4@2, ~@44 d4 ~@3", N: "c4@43 a4@5",
  O: "[~ a4@4 e4@5 ~ g#4@16 e4@2 ~ e4@28 ~ e4@4 ~ g4@4 ~ a4@4 ~@2 a4@24 ~ a4@3 ~ g4@2 ~ a4@3 g4@3 ~@2 d4@2 c4@20 g4 a4@6, ~@10 g4@2 ~@17 d4@2 ~@44 g4 ~@38 e4@3 d4@2 ~@19 f4 ~@5]/3",
  P: "[e4@20 a4@4 g4@2 ~ a4@3 ~ g4@3 ~@2 d4@2 c4@20 ~ a4@24 ~ a4@3 ~ g4@3 a4@2 g4@3, ~@35 e4@2 ~@21 g4@2 ~@36]/2",
  Q: "~@2 d4@2 c4@21 ~@2 e4@5 d4@4 ~ c4@5 d4 e4@5, ~ e4@2 ~@24 d4@2 ~@19",
  R: "[d4@4 ~ d4@4 ~ c4 d4@5 c4@3 a3@62 ~@15]/2",
})).s("gm_piano").gain(0.72)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A B C D E F G H I@7 J K L M N O P Q R S T U V@7 W X Y Z Y AA AB AC AD AE AF AG@12 AH@4 AI AJ AK AL AM AN AO AP ~@5
>`.pickRestart({
  A: "~@4 x ~@2 x ~@2 x ~", B: "~ x!3", C: "~@2 x ~@2 x ~@2 x ~@3", D: "~ x ~@2 x ~@2 x ~@4",
  E: "x ~@2 x ~ x ~@2 x ~ x ~ x ~@2 x ~ x ~ x!2 ~ x ~", F: "x ~ x ~@3 x ~@2 x!2 ~ x ~ x ~@2 x!2 ~ x ~@2 x",
  G: "~ x ~@2 x ~ x ~ x ~@2 x!2 ~@5 x ~ x ~ x ~", H: "~@2 x ~@2 x!2 ~ x ~ x ~@2 x!2 ~ x ~@3 x ~@3",
  I: "~ x!2 ~ x ~@3 x ~ x ~", J: "~@4 x ~@3 x ~@7 x ~@16 x ~@2 x ~@3 x ~@7", K: "x!5 ~ x!5 ~", L: "x!5 ~ x!3 ~ x ~",
  M: "x ~@3 x ~@3 x ~@7 x ~@6 x ~@4 x ~@3 x ~@7 x ~@7", N: "x!3 ~ x ~ x!3 ~ x ~", O: "x!3 ~ x ~@3 x ~@3", P: "~@2 x",
  Q: "~@16 x ~@2 x ~ x ~@2", R: "x ~ x ~ x ~@2 x ~ x ~ x!2 ~ x ~ x ~ x ~@3 x ~",
  S: "~ x!2 ~ x ~ x ~@2 x!2 ~ x ~@2 x ~ x ~@2 x ~ x ~", T: "x ~@2 x!2 ~@5 x ~ x ~ x ~@3 x ~@2 x!2 ~",
  U: "x ~ x ~@2 x!2 ~ x ~@3 x ~@5 x ~ x ~@3", V: "x ~@3 x ~ x ~@2 x!2 ~",
  W: "x ~@16 x ~@2 x ~@3 x ~@7 x ~@3 x ~@3 x ~@3 x ~@3", X: "x ~ x!5 ~ x!4", Y: "x ~ x!3 ~ x ~ x!3 ~",
  Z: "x ~@6 x ~@4 x ~@3 x ~@7 x ~@7 x ~@3 x ~@3 x ~@7", AA: "x!2 ~", AB: "~ x ~",
  AC: "~@8 x ~@2 x ~ x ~@2 x ~ x ~ x ~@2 x", AD: "~ x ~ x!2 ~ x ~ x ~ x ~@3 x ~@2 x!2 ~ x ~ x ~",
  AE: "~ x!2 ~ x ~@2 x ~ x ~@2 x ~ x ~ x ~@2 x!2 ~@3", AF: "~@2 x ~ x ~ x ~@3 x ~@2 x!2 ~ x ~ x ~@2 x!2 ~",
  AG: "x ~ x ~@2 x!2 ~ x ~@3", AH: "x!2 ~@4 x!2 ~@4", AI: "x ~@14 x", AJ: "~@7 x ~@15 x ~@5 x ~@8 x ~@9",
  AK: "~@6 x ~@5 x ~@5 x ~@4 x ~@9 x ~@5 x ~@4 x ~@3", AL: "~@2 x ~@4 x ~@9 x ~@4 x ~@5 x ~@4 x ~@4 x ~@9",
  AM: "~ x ~@5 x ~@4 x ~@4 x ~@4 x ~@10 x ~@4 x ~@5 x ~@3", AN: "~@7 x ~@10 x ~@4 x ~@4 x ~@10 x ~@8",
  AO: "~@12 x ~@9 x ~@10 x ~@4 x ~@4 x ~@4", AP: "~@2 x ~@6 x ~@6",
})).gain(0.71)

// drums · snare
const snare = s("sd").struct(`<
  ~@2 A B C D E F G H I J I J I J I J I@4 K@2 L M N O P G Q G Q G Q G Q G@4 R@2 S T U V E W E W E W E W E W E W X@2 Y Z
  AA AB AC AB AC AD AC AE ~@5
>`.pickRestart({
  A: "~@5 x!2 ~ x!2 ~ x", B: "x!3 ~ x!2 ~ x!2 ~ x!2", C: "x!2 ~@4 x ~ x ~@3 x ~ x ~@3 x ~ x ~ x ~",
  D: "x ~@3 x ~ x ~@3 x ~ x ~@3 x ~ x ~ x!2 ~@2", E: "~ x ~ x", F: "~ x ~@2 x ~", G: "~ x ~@5 x ~@4",
  H: "x ~@5 x ~@4 x", I: "~@5 x ~@5 x", J: "~@10 x!2 ~@10 x ~", K: "~@5 x ~@6", L: "~@25 x!2 ~ x ~ x ~@13 x ~@3",
  M: "~@5 x ~@4 x ~", N: "~@4 x ~@4 x ~@2", O: "~@3 x ~@4 x ~@3", P: "~@2 x ~@4 x ~@4", Q: "~@2 x!2 ~@10 x ~@9",
  R: "~ x ~@10", S: "~@9 x!2 ~ x ~ x ~@13 x ~@19", T: "~ x ~@4 x ~@5", U: "x ~@4 x ~@5 x", V: "~@2 x ~@2 x",
  W: "~@6 x ~@11 x!2 ~@4", X: "~@6 x ~ x ~ x ~@6 x!4 ~ x ~", Y: "~@8 x ~ x ~ x ~@10 x ~@8 x ~ x ~@12 x",
  Z: "~@8 x!2 ~ x ~@11 x ~@8 x!2 ~ x ~@11 x", AA: "x", AB: "~@3 x ~@7 x", AC: "~@7 x ~@4", AD: "~@13 x ~@31 x ~@2",
  AE: "~ x ~@2",
})).gain(0.71)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@59 [~@4 x!2 ~ x ~ x ~@6 x ~@4 x ~@2]!2 ~@15>").gain(0.36)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@4 A B ~@2 C ~ D@8 ~@4 E F ~@3 G ~ H@8 ~@4 I J ~@3 K L@12 ~@2 M@2 ~@7 N ~@5
>`.pickRestart({
  A: "~ x ~@6", B: "~@23 x", C: "~@17 x ~@6", D: "~@13 x!2 ~@9", E: "~@6 x!2 ~@4", F: "~@7 x ~@4", G: "~@3 x ~@4",
  H: "~@5 x!2 ~@17", I: "~@2 x!2 ~@8", J: "~ x ~@2", K: "~ x ~@22", L: "~@21 x!2 ~", M: "~@20 x!2 ~@22 x!2 ~@2",
  N: "~@11 x ~@12",
})).gain(0.57)

// drums · hihat
const hihat = s("hh").struct("<~@22 A ~@18 B ~@17 C@2 ~@2 D ~@12>".pickRestart({
  A: "~@2 x", B: "~ x ~", C: "~@4 x!3 ~@9 x!3 ~@5", D: "x!2 ~@46",
})).gain(0.71)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@4 A B ~@2 C ~ D E D E D E D E ~@4 E D ~@3 F ~ G H G H G H G H ~@4 H G ~@3 I J K J K J K J K J K J K ~@2 L@2 ~@7 M
  ~@5
>`.pickRestart({
  A: "~ x ~@10", B: "~@11 x", C: "~@2 x", D: "~ x", E: "~@12 x!2 ~@10", F: "~ x ~", G: "~ x ~@4", H: "~@4 x!2 ~@18",
  I: "x", J: "~@5 x", K: "~@20 x!2 ~@2", L: "~@16 x!2 ~ x ~@20 x!2 ~ x ~@4", M: "~@17 x ~ x ~@28",
})).gain(0.71)

// drums · high tom
const high_tom = s("ht").struct("<~@61 [~@13 x ~ x ~@20 x!2 ~ x ~@8] [~@12 x!2 ~ x ~@20 x!2 ~ x ~@8] ~@13>").gain(0.5)

// drums · crash
const crash = s("cr").struct(`<
// … 38 more lines

More by The Allman Brothers Band