Strudelify

And We Danced

The Hooters

KeyA majorTempo144 bpm
0:00/0:00
// And We Danced — The Hooters
// 144 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 31, 4/4 at bar 32, 2/4 at bar 56, ...) are rendered on a constant 4/4 grid of one bar per cycle
// 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.
// note: Guitar parts that double another keep only their own notes (fills, solos): GUITAR 2.
setcpm(144/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 · acoustic guitar steel · "MANDOLIN"
const acoustic_guitar_steel = note(`<
  ~@2 A B@2 C@2 B@2 C@2 B@2 C@2 D@3 E ~@68 F G H I J K H L M G H I J G H I J ~@47
>`.pickRestart({
  A: "~ [d4,f#4,a4,d5,f#5]!3 [b3,b4,d5,f#5]@2 [b3,b4,e5] [b3,b4,d5]", // D Bm E5 Bm
  B: "[[b3,b4,d5,f#5]!4 [e4,c#5,e5,a5]!3 [e4,b4,e5,g#5]@2 [e4,b4,e5,g#5]!2 [e4,b4,e5] [c#4,a4,c#5,e5]@2 c#4!2, ~@7 [a4,c#5,e5]]/2", // Bm A E E5 A
  C: "[[c#4,a4,c#5,e5]@2 [c#4,a4,c#5,e5]@2 [c#4,a4,c#5,e5]@2 [c#4,a4,c#5,e5]@2 [d4,f#4,a4,d5,f#5]@2 [d4,f#4,a4,d5,f#5]@2 [d4,f#4,a4,d5,f#5]@2 [d4,f#4,a4,d5,f#5]@4 [d4,f#4,a4,d5,f#5]@2 [d4,f#4,a4,d5,f#5]!4 [b3,b4,d5,f#5]@4 [b3,b4,e5]@2 [b3,b4,d5]@2]/2", // A D Bm E5 Bm
  D: "[[b3,b4,d5,f#5]!4 [e4,c#5,e5,a5]!3 [e4,b4,e5,g#5]@2 [e4,b4,e5,g#5]!2 [e4,b4,e5] [c#4,e4,a4,c#5,e5]!3 [c#4,e4,a4,c#5,e5]@2 [c#4,e4,a4,c#5,e5]!3 d4 [d4,f#4,a4,d5,f#5]!3]/3", // Bm A E E5 A D
  E: "[d4,f#4,a4,d5,f#5]!4 ~@4", F: "~@14 [b3,a4,b4,e5]!2", G: "[b3,a4,b4,e5]@2 [b3,a4,b4,e5]@3 [b3,a4,b4,e5]!3",
  H: "[e4,c#5,e5,a5]!3 [e4,b4,e5,g#5]@2 [e4,b4,e5,g#5]!2 [e4,b4,e5]", // A E E5
  I: "[c#4,a4,c#5,e5]@2 [c#4,a4,c#5,e5]@3 [c#4,a4,c#5,e5]!3", // A
  J: "[d4,f#4,a4,d5,f#5]!3 [d4,f#4,a4,d5,f#5]@2 [d4,f#4,a4,d5,f#5]!3", // D
  K: "[b3,b4,d5,f#5]@2 [b3,b4,e5] [b3,b4,d5] [b3,b4,d5,f#5]!4", // Bm E5 Bm
  L: "[c#4,e4,a4,c#5,e5]!3 [c#4,e4,a4,c#5,e5]@2 [c#4,e4,a4,c#5,e5]!3", // A
  M: "d4@2 [d4,f#4,a4,d5,f#5]@4 [d4,f#4,a4,d5,f#5]@2 [d4,f#4,a4,d5,f#5]@2 [d4,f#4,a4,d5,f#5]@2 [d4,f#4,a4,d5,f#5]!4", // D
})).s("gm_acoustic_guitar_steel").gain(0.3)

// chords · harmonica
const harmonica = note(`<
  ~@2 A B@2 C@2 B@2 C@2 B@2 C@2 D@4 ~@3 E@2 ~@2 E@2 ~@18 F G ~@2 H@3 ~@4 I J@2 ~@2 K L ~ M N@2 ~@2 O P@2 ~@2 E@2 ~@2 Q R
  S T U@2 S V ~ W X Y Z W AA AB AC AD AE AF AG AH AG AI F AJ ~@2 H@3 ~@2 AK AL AK AM@2 AL AK ~ AK AL AK AM@2 AL AK ~ AK
  AN AO AM@2 AL AP AQ AR AL AK AM@2 AL AK ~@8
>`.pickRestart({
  A: "~@15 e5", B: "[[d5,f#5]@3 [c#5,e5]@2 [b4,d5]@3 [a4,c#5,a5]@6 [g#4,b4,g#5]@10 ~@8]/2",
  C: "[[c#5,e5]@3 [b4,d5]@2 [a4,c#5]@2 a#4 [d4,f#4,b4]@6 [d4,f#4,a4]@9 ~@8 e5]/2", // C#m Bm A Bm D
  D: "[[d5,f#5]@3 [c#5,e5]@2 [b4,d5]@2 ~ [a4,c#5,a5]@6 [g#4,b4,g#5]@6 a4@2 b4@2 c#5@6 a4@7 ~ e4!2 [d4,f#4,a4]@16 ~@8]/4", // D C#m Bm A G#m D
  E: "[~@4 d6 ~ e6@19 ~@7]/2", F: "a4 g#4 a4 g#4 a4 b4 c#5 d5", G: "e5@15 ~", H: "[~@12 d6 ~ e6@19 ~@15]/3",
  I: "~@12 a4 ~@3", J: "[~@2 [f#4,a4] ~@3 [d4,f#4,a4]@16 ~@10]/2", K: "~@7 [f#4,a4]",
  L: "b4@2 c#5@2 b4@2 [d4,f#4,a4]@7 ~@3", M: "~@12 [f#4,a4] ~@3", N: "[~@2 [f#4,a4] ~@3 [d4,f#4,a4]@13 ~@13]/2",
  O: "~@4 a4 g#4 a4 g#4", P: "[a4 b4 c#5 d5 e5@8 ~@4]/2", Q: "~@12 [g#5,b5]@3 ~",
  R: "[a5,c#6]@7 ~ [a5,d6] ~ [a5,d6] ~ [a5,d6] ~ [a5,d6] ~", S: "~@2 [a5,c#6]@7 ~@3 [g#5,b5]@3 ~",
  T: "[a5,c#6]@7 ~ [f#5,a5] ~ [f#5,a5] ~ [f#5,a5] ~ [a5,c#6] ~", // A F#m A
  U: "[[a5,c#6] ~ [a5,c#6] ~ [a5,d6] ~@7 [g#5,b5]@3 ~ [a5,c#6]@7 ~ [a5,d6] ~ [a5,d6] ~ [a5,d6] ~ [a5,d6] ~, ~@3 e6@9 ~@4]/2", // A D5 G#m A D5
  V: "[a5,c#6]@7 ~@9", W: "~@7 f5 f#5@3 e5@2 d5@2 c5", X: "c#5@6 b4 ~ b4@7 ~", Y: "~@7 d#5 e5@3 d5@2 c#5@2 a#4",
  Z: "b4@6 a4 ~ a4@7 ~", AA: "c#5@6 b4 ~ b4@4 a4@2 b4@2", AB: "c#5@5 a4@6 ~ e4@4", AC: "a4@15 ~",
  AD: "a4 ~@3 a4 ~@5 a4 ~@3 a4 ~", AE: "~@2 a4 ~@3 a4 ~ a4 ~ a4 ~ a4 ~ a4 ~", AF: "~@4 a4 ~@5 a4 ~@3 a4 ~",
  AG: "~@2 a4 ~ a4 ~ a4 ~@3 a4 ~ a4 ~ a4 ~", AH: "a4 ~@3 a4 ~ a4 ~ a4 ~ a4 ~@3 a4 ~",
  AI: "a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 ~", AJ: "e5", AK: "~@4 [g#5,b5]@3 ~ [a5,c#6]@7 ~",
  AL: "[a5,d6] ~ [a5,d6] ~ [a5,d6] ~ [a5,d6] ~@3 [a5,c#6]@6", // D5 A
  AM: "[[f#5,a5] ~ [f#5,a5] ~ [f#5,a5] ~ [a5,c#6] ~ [a5,c#6] ~ [a5,c#6] ~ [a5,d6] ~@7 [g#5,b5]@3 ~ [a5,c#6]@7 ~, ~@7 e6@9]/2", // F#m A D5 G#m A
  AN: "[a5,d6] ~ [a5,d6] ~ [a5,d6] ~ [a5,d6] ~@3 a5@4 [c#5,e5] ~, ~@5 c#6@3, ~@7 a5", // D5 C#m
  AO: "[c#5,e5,a5] ~ [c#5,e5,a5] ~ [c#5,e5,a5]@4 [c#5,e5,a5]@2 [c#5,a5]@2 ~@4, ~@10 e5 ~@5", // A F#m
  AP: "~@4 [g#5,b5]@3 ~ [a5,c#6]@6 [e4,a4,c#5] ~", // G#m A
  AQ: "[e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~ [a4,c#5] ~ [e4,a4,c#5] ~ [a4,c#5] ~ [e4,a4,c#5] ~ [a4,c#5] ~", // A
  AR: "[e4,a4,c#5] ~ [e4,a4,c#5] ~ [g#5,b5]@3 ~ [a5,c#6]@7 ~", // A G#m A
})).s("gm_harmonica").gain(0.51)

// chords · percussive organ · "ORGAN"
const percussive_organ = note(`<
  ~@18 A B C D E B C D E B C F ~@16 G H I J K L I J ~@16 M N B C D E B C F A B C D E B C F ~@16 G O I J K L I J ~ P Q R
  S P Q R ~ P Q R S P Q R ~ P Q R S P Q R ~ P Q R S P Q R ~@8
>`.pickRestart({
  A: "~@12 [e5,g#5,b5]@3 ~", B: "[e5,a5,c#6]@6 ~@2 [f#5,a5,d6] ~ [f#5,a5,d6] ~ [f#5,a5,d6] ~ [f#5,a5,d6]@2",
  C: "~ [e5,a5,c#6]@3 ~@2 [e5,g#5,b5] ~", // A E
  D: "[e5,a5,c#6]@5 ~@3 [d5,f#5,a5] ~ [d5,f#5,a5] ~ [d5,f#5,a5] ~ [f#5,a5,c#6] ~", // A D F#m
  E: "[f#5,a5,c#6] ~ [f#5,a5,c#6] ~ [f#5,a5,d6] ~@7 [e5,g#5,b5]@3 ~", F: "[e5,a5,c#6]@5 ~@11",
  G: "a5 g#5 a5 g#5 a5 b5 c#6 d6", H: "~@2 [e5,g#5,b5,e6]@2 [e5,a5,c#6]@3 ~",
  I: "[f#5,a5,d6] ~ [f#5,a5,d6] ~ [f#5,a5,d6] ~ [f#5,a5,d6]@2 ~@2 [e5,a5,c#6]@6", // D A
  J: "~@4 [e5,g#5,b5]@2 ~@2 [e5,a5,c#6]@5 ~@3", // E A
  K: "[d5,f#5,a5] ~ [d5,f#5,a5] ~ [d5,f#5,a5] ~ [f#5,a5,c#6] ~ [f#5,a5,c#6] ~ [f#5,a5,c#6] ~ [f#5,a5,d6] ~@3", // D F#m D
  L: "~@4 [e5,g#5,b5]@3 ~ [e5,a5,c#6]@6 ~@2", M: "~@4 a5 g#5 a5 g#5", N: "a5@2 b5@2 c#6@2 d6@2 e6@4 [e5,g#5,b5]@3 ~",
  O: "e6@4 [e5,g#5,b5]@3 ~ [e5,a5,c#6]@6 ~@2", P: "~@4 [e6,g#6,b6]@3 ~ [e6,a6,c#7]@6 ~@2",
  Q: "[f#6,a6,d7] ~ [f#6,a6,d7] ~ [f#6,a6,d7] ~ [f#6,a6,d7]@2 ~@2 [e6,a6,c#7]@6", // D A
  R: "~@4 [e6,g#6,b6]@2 ~@2 [e6,a6,c#7]@5 ~@3", // E A
  S: "[d6,f#6,a6] ~ [d6,f#6,a6] ~ [d6,f#6,a6] ~ [f#6,a6,c#7] ~ [f#6,a6,c#7] ~ [f#6,a6,c#7] ~ [f#6,a6,d7] ~@3", // D F#m D
})).s("gm_percussive_organ").gain(0.57)

// chords · rock organ · "ORGAN FILL"
const rock_organ = note("<~@84 A B ~@34 C@4 ~@4 D E ~@6 C@4 ~@11>".pickRestart({
  A: "~ a6@7, ~@2 g#6 ~@13", B: "g#6 a6@5 ~@2",
  C: "[~@13 [c5,d5,e5] [f5,g5,a5] [b5,d6] [d#6,e6,f6,f#6,g6,g#6,a6] a6@2 g#6@2 a6@19 f#6@2 e6@11 ~@11, ~@15 c6@2 b6 ~@46]/4", // C F Bm
  D: "~@14 [g5,a5,b5,c6] [c6,d6,e6,f6]", E: "a6 g#6 a6@6, g6 ~@15",
})).s("gm_rock_organ").gain(0.49)

// chords · electric guitar clean · "GUITAR 1"
const electric_guitar_clean = note(`<
  ~@18 A B@2 C D B@2 C D B@2 E@2 F G H I F G H I F G H I F G J K L M N O L M N P@2 Q R S T Q R S T Q R S T Q R U M V W C
  D V W X@2 Y@2 C D Y@2 Z@3 ~@14 AA L M N O L M N AB L M N O L M N AB L AC N O L AC N AB L AC N O L AC N AB L AC N O L
  AC N AB AD@6 ~
>`.pickRestart({
  A: "~@4 [a2,e3,a3]!4", B: "[[a2,e3,a3]!4 [d3,f#3]!3 [d3,f#3]@2 [a2,e3]@2 [a2,e3,a3]!5]/2",
  C: "[a2,e3,a3]!4 [d3,a3,d4]!3 [f#3,a3,c#4,f#4]", D: "[f#3,a3,c#4,f#4] [f#3,a3,c#4,f#4]@2 [a2,e3,a3]!5",
  E: "[[a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 f#3 ~@11 e4@12, ~@7 a3@9]/2", // A5
  F: "[d3,a3,d4]@3 [a2,e3,a3] [a2,e3,a3]@3 ~", G: "[e2,b2,e3]@3 [a2,e3,a3] [a2,e3,a3]@3 ~",
  H: "[e2,b2,e3]@3 [f#2,c#3,f#3] [f#2,c#3,f#3]@3 ~", I: "[d3,a3,d4]@3 [d3,a3,d4] [d3,a3,d4]@3 ~",
  J: "[e2,b2,e3]@3 [f#2,c#3,f#3] [f#2,c#3,f#3]@3 [d3,a3,d4]", K: "[d3,a3,d4]!7 [a2,e3,a3]", L: "[a2,e3,a3]!8",
  M: "[d3,a3,d4]!3 [a2,e3,a3]!5", N: "[e2,b2,e3]!2 [g#2,d#3,g#3] [e2,b2,e3] [a2,e3,a3]!4",
  O: "[d3,a3,d4]!3 [f#3,a3,c#4,f#4]!2 [f#3,a3,c#4,f#4]@2 [a2,e3,a3]", // D5 F#m A5
  P: "[f#3 ~@11 e4@12 [d3,a3,d4]@6 [a2,e3,a3]@2, ~@3 a3@9 ~@4]/2", Q: "[a2,e3,a3]@3 ~ [e2,b2,e3]@3 [a2,e3,a3]",
  R: "[a2,e3,a3]@3 ~ [e2,b2,e3]@3 [f#2,c#3,f#3]", S: "[f#2,c#3,f#3]@3 ~ [d3,a3,d4]@3 [d3,a3,d4]",
  T: "[d3,a3,d4]@3 ~ [d3,a3,d4]@3 [a2,e3,a3]", U: "[f#2,c#3,f#3]@3 [d3,a3,d4]!5",
  V: "[a2,e3,a3]!4 [d3,a3,d4]!3 [a2,e3,a3]", W: "[a2,e3,a3]!4 [e2,b2,e3]!2 [g#2,d#3,g#3] [e2,b2,e3]",
  X: "[[a2,e3,a3]!4 [d3,f#3,a3,d4]!3 [e3,a3,c#4]@2 [e3,g#3,b3]!2 [a2,e3,a3]!5]/2", // A5 D A E A5
  Y: "[[a2,e3,a3]!4 [d3,f#3]!3 [d3,f#3]@2 [a2,e3]@2 [a2,e3,a3] [e2,b2,e3]!2 [g#2,d#3,g#3] [e2,b2,e3]]/2", // A5 D A5 E5 G#5 E5
  Z: "[[a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 [a2,e3,a3]@2 f#3 ~@5 a3@6 ~ [b3,e4]@20 ~@7, ~@5 [f#3,a3]@5 ~@2]/3", // A5 E5 F#m
  AA: "[d3,a3,d4]!5 [e3,a3,c#4] [e3,g#3,b3] [a2,e3,a3]", AB: "[d3,f#3,a3,d4]!3 [e3,a3,c#4]@2 [e3,g#3,b3]!2 [a2,e3,a3]",
  AC: "[d3,f#3]!3 [d3,f#3]@2 [a2,e3]@2 [a2,e3,a3]", AD: "[a2,e3,a3]/6",
})).s("gm_electric_guitar_clean").gain(0.28)

// chords · electric guitar clean · "GUITAR 1" · soft notes
const electric_guitar_clean_2 = note("<~@29 A B ~@23 C D ~@30 A E ~@63>".pickRestart({
  A: "~@8 [c#3,c#4] [c#3,f#3,c#4]!7", B: "[c#3,f#3,c#4]!16", C: "[c#3,c#4] [c#3,f#3,c#4]!15", D: "[c#3,f#3,c#4]!8 ~@8",
  E: "[c#3,f#3,c#4]!3 [c#3,c#4]!13", // F#5 C#
})).s("gm_electric_guitar_clean").gain(0.14)

// chords · overdriven guitar · "GUITAR 2"
const overdriven_guitar = note(`<
  ~@18 A ~@12 B C D@2 B C E@2 B C F@2 B C G ~@9 H@2 I@2 J@2 K@2 J@2 I@2 J@2 L M ~@16 N O P Q R S T U V@2 W X Y Z AA AB
  ~@24 AC ~@7 AC ~@7 AC ~@7
>`.pickRestart({
  A: "~@2 a2@2 [a#2,b2,d3] [c3,c#3,d3,d#3,e3,f3] [a2,e3,f#3,g3,g#3,a3] [a2,e3,a3] ~@8", // A# A5
  B: "~@4 a3@6 [e3,a3] ~@3 [e3,a3]@2, ~ e3@3 ~@4", C: "~@4 [e3,a3]@4 ~@2 [e3,a3] ~@3 [e3,a3]@2",
  D: "[~@4 b3@6 a3@2 b3@2 [b3,d4]@6 [b3,d4]@2 ~@6 e3 f#3 a3@2]/2", // Bm
  E: "[~@4 b3@6 a3@2 b3@2 [b3,e4]@6 [b3,e4]@2 ~@6 e3 f#3 a3@2]/2", // E5
  F: "[~@4 b3@6 a3@2 b3@2 b3@6 b3@2 ~@6 e3 f#3 a3@2]/2", G: "~@2 b3@2 ~ a3 b3 ~",
  H: "[~@12 a3@6 [e3,a3] ~@3 [e3,a3]@2 ~@4 [e3,a3]@4, ~@5 e3@3 ~@8]/2", // A5
  I: "[~@2 [e3,a3] ~@3 [e3,a3]@2 ~@4 b3@6 a3@2 b3@2 [b3,d4]@6 [b3,d4]@2 ~@2]/2", // A5 Bm
  J: "[~@4 e3 f#3 a3@2 ~@4 a3@6 [e3,a3] ~@3 [e3,a3]@2 ~@4 [e3,a3]@4, ~@5 e3@3 ~@8]/2", // A5
  K: "[~@2 [e3,a3] ~@3 [e3,a3]@2 ~@4 b3@6 a3@2 b3@2 [b3,e4]@6 [b3,e4]@2 ~@2]/2", // A5 E5
  L: "~@2 [e3,a3] ~@3 [e3,a3]@2 ~@4 b3@4", M: "~ a3 b3 ~@5",
  N: "~@4 e4@8 [a5,a#5,b5] [d#5,e5,f5,f#5,g5,g#5] [a#4,b4,c5,d5] [e4,f4,f#4,g4,g#4,a4]",
  O: "[c#4,d4,d#4] ~@6 f4 f#4@3 e4@2 d4@2 ~", P: "c#4@6 b3 ~ b3@8, c4 ~@15", Q: "~@7 d#4 e4@3 d4@2 c#4@2 ~",
  R: "b3@6 a3 ~ a3@8, a#3 ~@15", S: "~@7 f4 f#4@3 e4@2 d4@2 ~", T: "c#4@6 b3 ~ b3@4 a3@2 b3@2, c4 ~@15",
  U: "c#4@5 a3@7 e3@4", V: "[d3@5 [f#5,f#6]@11]/2", W: "~@8 d4@3 d4@3 c#4@2", X: "a3@15 ~",
  Y: "~@2 [a3,d4]@2 ~@2 [a3,d4] ~ [a3,d4]@7 ~, d3@15 ~", Z: "c#4", AA: "~@8 e4@3 d4@3 c#4@2", AB: "a3@3 e3@3 c#3@2",
  AC: "~@3 b2@2 ~@3",
})).s("gm_overdriven_guitar").gain(0.4)

// bass · electric bass pick · "BASS"
const bass = note(`<
  ~@18 A B@2 C D B@2 C D B@2 E@2 F G H I J G H I J G H I J G K L B M N O B M N P@2 Q R S T Q R S T Q R S T Q R U V W X
  Y@2 W X Z@2 W X Y@2 W X AA@2 AB AC AD AE AB AC AD AF AB AG AD AH AB AG AI L B M N O B M N AJ B M N O B M N AJ B M N O
  B M N AJ B M N O B M N AJ B M N O B M N AJ AK@6 ~
>`.pickRestart({
  A: "~@2 a1@2 [a#1,b1,d2] [c2,c#2,d2,d#2,e2,f2] [f#2,g2,g#2,a2] [e2,f2,f#2,g2,g#2,a2] [a1,d2,d#2] ~ a1 ~ a1 ~ a1 ~", // A# D
  B: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", C: "a1 ~ a1 ~ a1 ~ a1 ~ d2 ~ d2 ~ d2 ~ f#2 ~",
  D: "f#2 ~ f#2 ~ f#2 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  E: "[a1 ~ a1 ~ a1 ~ a1 ~ f#1@18 a1@2 [a#1,b1,d2] [c2,c#2,d2,d#2,e2,f2] [f#2,g2,g#2,a2] [e2,f2,f#2,g2,g#2,a2]]/2", // A#
  F: "d2@4 ~@2 a1 ~ a1@4 ~@4, d#2 ~@15", G: "e1@4 ~@2 a1 ~ a1@4 ~@4", H: "e1@4 ~@2 f#1 ~ f#1@4 ~@4",
  I: "d2@4 ~@2 d2 ~ d2@4 ~@4", J: "d2@4 ~@2 a1 ~ a1@4 ~@4", K: "e1@4 ~@2 f#1 ~ f#1@4 ~@2 d2 ~",
  L: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c#2 ~ b1 ~ a1 ~", M: "d2 ~ d2 ~ d2 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  N: "e1 ~ e1 ~ g#1 ~ e1 ~ a1 ~ a1 ~ a1 ~ a1 ~", O: "d2 ~ d2 ~ d2 ~ f#2@4 f#2 ~ f#2 ~ a1 ~",
  P: "[f#1@18 a1@2 [a#1,b1,d2] [c2,c#2,d2,d#2,e2,f2] [f#2,g2,g#2,a2] [e2,f2,f#2,g2,g#2,a2] d2@4 ~@2 a1 ~, ~@24 d#2 ~@7]/2", // A#
  Q: "a1@4 ~@4 e1@4 ~@2 a1 ~", R: "a1@4 ~@4 e1@4 ~@2 f#1 ~", S: "f#1@4 ~@4 d2@4 ~@2 d2 ~", T: "d2@4 ~@4 d2@4 ~@2 a1 ~",
  U: "f#1@4 ~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", V: "d2 ~ c#2 ~ b1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  W: "a1 ~ a1 ~ a1 ~ a1 ~ d2 ~ d2 ~ d2 ~ a1 ~", X: "a1 ~ a1 ~ a1 ~ a1 ~ e1 ~ e1 ~ g#1 ~ e1 ~",
  Y: "[a1 ~ a1 ~ a1 ~ a1 ~ d2 ~ d2 ~ d2 ~ f#2@4 f#2 ~ f#2 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~]/2",
  Z: "[a1 ~ a1 ~ a1 ~ a1 ~ d2@2 f#2@2 a2@2 c#2@4 b1@4 a1 ~ a1 ~ a1 ~ a1 ~ a1 ~]/2", AA: "[a1 ~ a1 ~ a1@4 f#1@24]/2",
  AB: "b1@3 b1 b1@2 e2@2", AC: "e2", AD: "c#2@3 c#2!2 a1 d2@2", AE: "d2", AF: "d2@3 a1@3 f#1@2", AG: "e2@3 e2 e2@4",
  AH: "d2@3 d2 d2@4", AI: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~", AJ: "d2@2 f#2@2 a2@2 c#2@4 b1@4 a1 ~",
  AK: "a1/6",
})).s("gm_electric_bass_pick").gain(0.46)

// drums · kick
const kick = s("bd").struct(`<
  ~@18 A B@2 C D B@2 C D B@3 E F@15 G H@3 G H@3 I J K@14 L D B@2 C D B@2 C M B@2 C D B@3 ~ F@14 N G H@3 G H@3 O H@3 G
  H@3 O H@3 G H@3 O H@3 G H@3 O H@3 G H@3 P I ~@6
>`.pickRestart({
  A: "~ x ~@2 x ~@3", B: "x!2 ~@2 x ~@3", C: "x!2 ~@2 x!2 ~ x", D: "x!2 ~ x!2 ~@3", E: "~@5 x ~@2", F: "x ~@2 x!2 ~@3",
  G: "x!2 ~ x!3 ~ x", H: "x ~@3 x!2 ~@2", I: "x", J: "~ x ~@2 x ~@2 x", K: "x ~@3 x ~@2 x", L: "x ~@3 x!2 ~ x",
  M: "~ x ~ x!2 ~@3", N: "x ~@2 x!3 ~ x", O: "x!2 ~ x ~ x ~ x", P: "x ~@2 x ~ x ~ x",
})).gain(0.75)

// drums · snare
const snare = s("sd").struct("<~@18 A B@10 C D B@23 ~ A B@30 C ~@8 E B@46 F G ~@7>".pickRestart({
  A: "~@4 x!2 ~@6 x ~@3", B: "~ x ~ x", C: "~ x ~@2", D: "~@12 x!2 ~@2", E: "~@3 x", F: "~@4 x ~@7 x!4",
  G: "~ x!2 ~@3 x ~",
})).gain(0.75)

// drums · hihat
const hihat = s("hh").struct("<[~ x] [x ~ x!2] [x!2 ~@2] ~@93 [x!8]!5 ~@50>").gain(0.6)

// drums · open hat
const open_hat = s("oh").struct("<~@2 [~ x ~@6] ~@98 [x!8]!2 [x!7 ~] ~@47>").gain(0.6)

// drums · crash
const crash = s("cr").struct(`<
  ~@18 A ~@3 B ~@3 B ~@2 A ~ C ~@14 D C ~@2 D C ~@2 C A ~@15 B ~@3 B ~@3 B ~@3 B ~@2 A ~@16 D C ~@2 D C ~@2 D C ~@2 D C
  ~@2 D C ~@2 D C ~@2 D C ~@2 D C ~@2 D C ~@2 D C ~@2 E C ~@6
>`.pickRestart({
  A: "~ x", B: "~@3 x!2 ~@3", C: "x", D: "~@7 x", E: "x ~@2 x ~ x ~ x",
})).gain(0.68)

// drums · ride
const ride = s("rd").struct(`<
  ~@18 A B@3 C B@3 C B@2 D ~ E B@14 F E B@2 F E B@2 ~ A B@15 C B@3 C B@3 C B@3 C B@2 D ~@17 E B@2 F E B@2 F E B@2 F E
  B@2 F E B@2 F E B@2 F E B@2 F E B@2 F E B@2 F E B@2 F ~@7
>`.pickRestart({
// … 7 more lines

More by The Hooters