Strudelify

Volcano

Jimmy Buffett

KeyG majorTempo84 bpm
0:00/0:00
// Volcano — Jimmy Buffett
// 84 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 77 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(84/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 · vibraphone
const vibraphone = note(`<
  ~ A B C D E F G H I J K L M N O H P Q R Q P Q S T U J V W P Q R Q P X R Y U J V Z U J AA H P Q R Q P Q R Q U J V H AB
  AC AD AE AD AF AD AE AD AE AD AG AH J V AI U J AA L
>`.pickRestart({
  A: "[d4,d5] [b3,b4] ~ [g3,g4] b4 [b3,d4,d5] ~ [b3,b4] ~@4 g4@2 ~@2", // D B G Bm B
  B: "[d4,g4,b4,d5] [b3,b4] ~ [g3,g4] ~ [b3,b4] [d4,d5] ~ [c4,c5] ~@3 d4 ~@3", // G B G B D C
  C: "[d4,d5] [b3,b4] ~ [g3,g4] ~ [b3,b4,d5] d4 [c4,c5] ~ [g3,g4] [e4,e5] ~@5", // D B G Bm C G E
  D: "[d5,e5] ~ b4 c5 ~ a4 g4 ~@2 g4!4 ~@3", // Dsus2
  E: "[b4,d5] ~@2 [g4,b4] ~@2 [g4,b4] ~@3 [g4,b4] [f#4,a4] ~ [f#4,a4] [g4,b4] ~", // Bm G F#m G
  F: "[b4,d5] ~@2 [g4,b4] ~@2 [f#4,a4] ~@3 [f#4,a4] g4 ~ g4 a4 ~", G: "b4 g4 b4 d5 ~ b4 g4 c5 ~ g4 c5 g4 e5 ~ c5 g4",
  H: "d5 ~ b4 c5 ~ a4 g4 ~@9", I: "[b4,d5] ~@2 [g4,b4] ~@2 b4 ~@3 b4 a4 ~ a4 b4 ~",
  J: "d5 ~@2 b4 ~@2 a4 ~@3 a4 g4 ~ g4 a4 ~", K: "b4 g4 b4 d5 ~ b4 g4 c5 ~ g4 c5 g4 e5 ~@3",
  L: "d5 ~ b4 c5 ~ a4 g4 ~@2 g4!4 ~@3", M: "d5 b4 ~ d5 ~ b4 ~@4 [g4,b4] a4 ~ a4 [g4,b4] ~",
  N: "[g4,d5] ~@2 b4 ~@2 [f#4,a4] ~@3 a4 g4 ~ g4 a4 ~", O: "b4 g4 ~ d5 ~ b4 g4 c5 ~ g4 c5 g4 e5 ~@3",
  P: "[d4,d5] [b3,b4] ~ [d4,d5] ~ [b3,b4] [g3,g4] ~ [c4,c5] ~ [e4,e5] ~ [d4,d5] ~@3", // D B D B G C E D
  Q: "d5 b4 ~ d5 ~ b4 g4 ~@3 a4 ~ g4 ~@3",
  R: "[d4,d5] [b3,b4] ~ [d4,d5] ~ [b3,b4] [g3,g4] ~ [c4,c5] ~ [c4,c5] ~ [b3,b4] ~@3", // D B D B G C B
  S: "[d4,d5] [b3,b4] ~ [d4,d5] ~ [b3,b4] [g3,b3,g4] ~ [c4,c5] ~ [c4,c5] ~ [b3,b4] ~@2 g4", // D B D B G C B
  T: "[b4,d5] b4 ~ d5 ~ b4 g4 ~@3 a4 ~ g4 ~@3", U: "d5 ~@2 b4 ~@2 b4 ~@3 b4 a4 ~ a4 b4 ~",
  V: "b4 g4 ~ d5 ~ b4 g4 c5 ~ g4 c5 g4 e5 ~ c5 g4", W: "d5 ~ b4 c5 ~ a4 g4 ~@3 g4 ~@5",
  X: "d5 b4 ~ d5 ~ b4 g4 ~ a4 ~ a4 ~ g4 ~@3", Y: "[d4,d5] [b3,b4] ~ d5 ~ b4 g4 ~@3 a4 ~ g4 ~@3",
  Z: "d5 ~ b4 c5 ~ a4 g4 ~@2 b4!4 ~@3", AA: "b4 g4 ~ d5 ~ b4 g4 c5 ~ g4 c5 g4 e5 ~ d5 c5",
  AB: "[b3,d5] [g3,b4] ~ [b3,d5] ~ [g3,b4] ~ [g3,b4] [c4,c5] ~ [d4,e4,e5] ~ [c#4,d4,d5] ~ [b3,b4] ~", // Bm G Bm G C Dsus2 Dmaj7 B
  AC: "[d4,d5] [b3,b4] ~ [b3,d5] ~ [g3,b4] ~ [g3,b4] [f#3,a4] ~ [f#3,a4] ~ [g3,b4] ~@3", // D B Bm G F#m G
  AD: "[b3,d5] [g3,b4] ~ [b3,d5] ~ [g3,b4] ~ [g3,b4] [c4,c5] ~ [e4,e5] ~ [d4,d5] ~ [b3,b4] ~", // Bm G Bm G C E D B
  AE: "[b3,d5] [g3,b4] ~ [b3,d5] ~ [g3,b4] ~ [g3,b4] [f#3,a4] ~ [f#3,a4] ~ [g3,b4] ~@3", // Bm G Bm G F#m G
  AF: "[b3,d5] [g3,b4] ~ [b3,c#4,d5] ~ [g3,b4] ~ [g3,b4] [f#3,a4] ~ [f#3,a4] ~ [g3,b4] ~@3", // Bm G Bm G F#m G
  AG: "[b3,d5] [g3,b4] ~ [b3,d5] ~ [g3,b4] ~ [g3,b4] [f#3,a4] ~ [f#3,a4] ~ [g3,g4] ~@3", // Bm G Bm G F#m G
  AH: "[g3,d5] ~@2 b4 ~@2 b4 ~@3 b4 a4 ~ a4 b4 ~", AI: "d5 ~ b4 c5 ~ a4 g4 ~@2 g4!2 [f#4,g4] g4 ~@3",
})).s("gm_vibraphone").gain(0.42).pan(0.6)

// chords · steel drums
const steel_drums = note(`<
  ~ 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 V AB AC AD AE@2 AF@2 AG AH AI AA AJ AK AL AA V AM AN@2 AO@2
  AN@2 AP AQ AR AA ~ AS AT AS AT AU AT AS AT AS AT ~ AV AW AX AA L AY AZ AA
>`.pickRestart({
  A: "~@12 [g3,b3,g4,b4] ~@3", B: "~@12 [f#3,a3,f#4,a4] ~@3", C: "[d4,d5] ~ [b3,b4] [c4,c5] ~ [a3,a4] [g3,g4] ~@9",
  D: "[b3,g4,a4,d5] ~@2 [g4,b4] ~@2 [g4,b4] ~@3 [g3,b3,g4,b4] [f#3,a3,f#4,a4] ~ [f#3,a3,f#4,a4] [g3,b3,g4,b4] ~", // G F#m G
  E: "[b3,d4,d5] ~@2 [b3,g4,b4] ~@2 [f#4,a4] ~@3 [a3,f#4,a4] [g3,e4,g4] ~ [g3,e4,g4] [f#4,a4] ~", // Bm Em F#m D C F#m
  F: "[b3,f#4,g4,b4] a4 g4 [d4,g4,d5] ~@2 [b3,g4,b4] [c4,c5] ~ [g3,g4] [g3,c5] [c4,g4] [d4,e4,g4,e5] ~ [c4,c5] g4", // Gmaj7 G5 Em C G C5 Em7 C
  G: "[d4,d5] ~ [b3,b4] [c4,c5] ~ [a3,a4,b4] [g3,g4] ~@2 [g3,b3,g4,b4]!4 ~@3", // D B C Asus2 G
  H: "b3 ~@2 [g3,b3,g4] ~@2 [b3,g4] ~@3 [g3,b3,g4,b4] [f#3,a3,f#4,a4] ~ [f#3,a3,f#4,a4] [g3,b3,g4,b4] ~", // G Em G F#m G
  I: "[b3,d5] ~@2 [g3,g4,b4] ~@2 [a3,f#4,a4] ~@3 [a3,f#4,a4] [g3,e4,g4] ~ [g3,e4,g4] [a3,f#4,a4] ~", // Bm G D C D
  J: "[b3,b4] g4 [g3,b4] [d4,d5] ~@2 [b3,g4] c5 ~ c4 g3 g4 [d4,e4,g4,e5] ~ c4 g4", // B G D Em Em7
  K: "[d4,d5] ~ [b3,b4] [c4,c5] ~ [a3,a4] [g3,g4] ~@2 [g3,g4,b4]!4 ~ g3 ~", // D B C A G
  L: "[b3,g4,d5] ~@2 [g3,g4,b4] ~@2 [g3,g4,b4] ~@3 [g3,g4,b4] [f#3,f#4,a4] ~ [f#3,f#4,a4] [g3,g4,b4] ~", // G F#m G
  M: "[b3,g4,d5] ~@2 [g3,g4,b4] ~@2 [f#3,f#4,a4] ~@3 [f#3,f#4,a4] [e4,g4] ~ [f#3,e4,g4] [f#4,a4] ~", // G F#m Em C F#m
  N: "[g3,a4,b4] g4 [g4,b4] [d4,g4,d5] ~ b3 g4 [g4,c5] ~ [c4,g4] c5 [g3,g4] [e4,g4,e5] ~ [c4,c5] g4", // G G5 C5 G Em C
  O: "[d4,d5] ~ [b3,b4] [c4,c5] ~ [a3,a4] [g3,g4] ~@2 [g3,b3,g4,b4]!4 ~@3", P: "~@15 [d4,g4]",
  Q: "[d4,d5] [b3,b4] b3 [d4,d5] ~ [b3,b4] [g3,g4] e4 ~@2 [a3,c4,a4,c5] ~ [g3,b3,g4,b4] ~@3", R: "~@15 g4",
  S: "[d4,b4,d5] [b3,b4] ~ [d4,d5] ~ [b3,b4] [g3,g4] d4 ~@2 [a3,f#4,a4] ~ [g3,g4] ~@3", T: "~@15 [b3,g4,b4]",
  U: "[d4,d5] [b3,b4] ~ [d4,g4,d5] ~ [b3,b4] [g3,g4] ~@3 [a3,c4,a4,c5] ~ [g3,b3,g4,b4] ~@3", V: "~@15 [g4,b4]",
  W: "[d4,d5] [b3,b4] ~ [d4,g4,d5] ~ [b3,b4] [g3,g4] b4 ~ f#4 [f#3,a3,f#4,a4] ~ [g3,g4] ~@3", // D B G5 B G F#m G
  X: "[b3,b4,d5] ~@2 [g3,g4,b4] ~@2 [g3,g4,b4] ~@3 [g3,g4,b4] [f#3,f#4,a4] ~ [f#3,f#4,a4] [g3,g4,b4] ~", // Bm G F#m G
  Y: "[b3,g4,d5] ~@2 [g3,g4,b4] ~@2 [f#3,f#4,a4] ~@3 [f#3,f#4,a4] [e4,g4] ~ [e4,g4] [f#4,a4] ~", // G F#m Em F#m
  Z: "[b3,g4,b4] [g3,g4] ~ [d4,g4,d5] ~ [b3,b4] g4 [c4,c5,c#5] ~ [c4,g4] [g3,c5] [c4,g4] [e4,e5] ~ [c4,c5] g4", // Em G G5 B C#maj7 C5 E C
  AA: "[d4,d5] ~ [b3,b4] [c4,c5] ~ [a3,a4] [g3,g4] ~@2 [g3,g4,b4]!4 ~@3", // D B C A G
  AB: "[d4,d5] [b3,b4] ~ [d4,g4,a4,d5,e5] ~ [b3,b4] [g3,g4] ~@3 [a3,c4,a4,c5] ~ [g3,b3,g4,b4] ~@3", // D B Dsus4 B G Am G
  AC: "~@15 [b3,g4,a4]", AD: "[d4,b4,d5] [b3,b4] b3 [d4,d5] ~ [b3,b4] [g3,g4] ~@3 [f#3,a3,f#4,a4] ~ [g3,g4] ~@3",
  AE: "[~@15 b4 [d4,d5] [b3,b4] ~ [d4,g4,d5] ~ [b3,b4] [g3,g4] ~@3 [a3,c4,a4,c5] ~ [g3,b3,g4,b4] ~@3, ~@15 g4@2 ~@15]/2", // D B G5 B G Am G
  AF: "[~@15 b4 [d4,d5] [b3,b4] ~ [d4,g4,d5] ~ [b3,b4] [g3,g4] ~@3 [f#3,a3,f#4,a4] ~ [g3,g4] ~@3, ~@15 g4@2 ~@15]/2", // D B G5 B G F#m G
  AG: "[b3,d4,b4,d5] ~@2 [g3,g4,b4] ~@2 [b3,g4,b4] ~@3 [b3,g4,a4,b4] [f#3,a3,f#4,a4] ~ [a3,f#4,a4] [g3,b3,g4,b4] ~", // Bm G Em F#m D G
  AH: "[c#4,g4,d5] ~@2 [b3,g4,b4] ~@2 [a3,f#4,a4] ~@3 [a3,f#4,a4] [g3,e4,g4] ~ [g3,e4,g4] [a3,f#4,a4] ~", // G Em D C D
  AI: "[b3,b4] g4 b4 [d4,g4] ~ [b3,b4] g4 [c4,c5] ~ [c4,g4] c5 [g3,g4] [e4,g4,e5] ~@2 g4, ~@3 d5@2 ~@11", // B G5 B C C5 G Em
  AJ: "[b3,c#4,d4,g4,b4,d5] ~@2 [g3,b3,g4,b4] ~@2 [g3,b3,g4,b4] ~@3 [g3,b3,g4,b4] [a3,f#4,a4] ~ [a3,f#4,a4] [b3,g4,b4] ~", // G D Em
  AK: "[d4,g4,d5] ~@2 [b3,g4,b4] ~@2 [a3,f#4,a4] ~@3 [a3,f#4,a4] [g3,e4,g4] ~ [g3,e4,g4] [a3,f#4,a4] ~", // G5 Em D C D
  AL: "[b3,b4] g4 b4 [d4,g4,d5] ~ [b3,b4] g4 [c4,c5] ~ [g3,g4] [c4,c5] g4 [e4,g4,e5] ~ [c4,c5] g4", // B G5 B C G C Em C
  AM: "[d4,d5] [b3,b4] ~ [d4,g4,d5] ~ [b3,b4] [g3,g4] ~@3 [a3,c4,a4,c5] ~ [b3,g4,b4] ~@3", // D B G5 B G Am Em
  AN: "[~@15 b4 [d4,d5] [b3,b4] ~ [d4,g4,d5] ~ [b3,b4] [g3,g4] ~@3 [a3,f#4,a4] ~ [g3,g4] ~@3, ~@15 g4@2 ~@15]/2", // D B G5 B G D G
  AO: "[~@16 [d4,b4,d5] [b3,b4] ~ [d4,g4,d5] ~ [b3,b4] [g3,g4] ~@3 [c4,a4,c5] ~ [b3,g4,b4] ~@3, ~@15 g4@2 ~@15]/2", // G B G5 B G F Em
  AP: "[d4,g4,d5] ~@2 [b3,g4,b4] ~@2 [g4,b4] ~ b3 ~ [b3,g4,b4] [a3,f#4,a4] ~ [a3,f#4,a4] [b3,g4,b4] ~", // G5 Em G Em D Em
  AQ: "[d4,g4,d5] ~@2 [b3,g4,b4] ~@2 [a3,f#4,a4] ~@3 [a3,f#4,a4] [g3,e4,g4] ~ [g3,g4] [a3,a4] ~", // G5 Em D C G A
  AR: "[b3,g4,d5] b4 g4 [d4,g4,d5] ~ [b3,c#4,b4] [g3,g4] [c4,c5] ~ [g3,g4] [c4,c5] g4 [e4,g4,e5] ~ [c4,c5] g4", // G G5 Bsus2 G C G C Em …
  AS: "~@13 [g3,g4,b4] ~ [g3,g4,b4]", AT: "[g3,g4,b4] ~@15", AU: "~@13 [g3,g4,b4] g3 [g4,b4]",
  AV: "[b3,g4,d5] ~@2 [g3,g4,b4] ~@2 [g3,a3,g4,b4] ~@3 [g3,g4,b4] [f#3,f#4,a4] ~ [f#3,f#4,a4] [g3,g4,b4] ~", // G F#m G
  AW: "[b3,g4,d5] ~@2 [g3,g4,b4] ~@2 [f#3,f#4,a4] ~@3 [f#4,a4] [e4,g4] ~ [e4,g4] [f#4,a4] ~", // G F#m Em F#m
  AX: "[b3,g4,b4] [g3,b4] g4 [d4,g4,d5] ~ [b3,b4] g4 c5 c4 g4 c5 g4 [e4,g4,e5] ~ [c4,c5] g4", // Em G G5 B Em C
  AY: "[b3,g4,d5] ~@2 [g3,g4,b4] ~@2 [f#3,f#4,a4] ~@3 [f#3,f#4,a4] [e3,e4,g4] ~ [e3,e4,g4] [f#3,f#4,a4] ~", // G F#m Em F#m
  AZ: "[g3,g4,b4] g4 b4 [b3,g4,d5] ~ b4 [g3,g4] [c4,c5] ~ [g3,g4] [g3,c5] [c4,g4] [d4,e4,g4,e5] ~ c5 g4", // G C G C5 Em7
})).s("gm_steel_drums").gain(0.44)

// bass · acoustic bass
const bass = note(`<
  ~ A B ~ C D E F G H I J K L M N O P Q R S P T P T U V W X P T P T P T P T Y Z AA AB AC AD AA X P T AE T AF T AE AG D
  AH AI X AE T P T P T P T P T P AJ AK Z AA C L AL AM AN
>`.pickRestart({
  A: "~@6 g1 ~", B: "~@6 d2 ~", C: "d2@2 b1 c2@2 a1 g1 ~@2 d2 e2 ~ g2@2 e2 ~", D: "g2 ~@2 g2 d2@2 ~@2 g2 ~@2 g2 d2 ~@3",
  E: "g2@2 ~ g2 d2 ~@3 d2@2 ~ d2 a1@2 ~@2, ~@12 b1 ~@3", F: "g2@2 ~ g2 d2@2 ~@2 c2@2 ~ c2 e2 ~ e2 ~",
  G: "d2@2 b1 c2@2 a1 g1@2 ~ d2 e2 ~ g2@2 e2 ~, ~@6 a1 ~@9", H: "g2 ~@2 g2 d2 ~@3 g2 ~@2 g2 d2@2 ~@2",
  I: "g2@2 ~ g2 d2@2 ~@2 d2@2 ~ d2 a1@2 ~ a1", J: "g2 ~@2 g2 d2 ~@2 d2 c2 ~@2 c2 e2 ~ e2 ~",
  K: "d2 ~ b1 c2@2 a1 g1 ~@2 d2 e2 ~ g2 ~@3", L: "g2 ~@2 g2 d2 ~@3 g2@2 ~ g2 d2 ~@3",
  M: "g2@2 ~ g2 d2@2 ~@2 d2@2 ~ d2 a1@2 ~@2", N: "g2@2 ~ g2 d2@2 ~@2 c2@2 ~ c2 e2 ~@3",
  O: "d2@2 b1 c2@2 a1 g1@2 ~ d2 e2 ~ g2 ~@3", P: "g2 ~@2 g2 d2 ~@2 d2 c2 ~ c2 ~ g2 ~@3",
  Q: "g2 ~@2 g2 d2@2 ~ d2 ~@2 d2 ~ g2@2 ~@2", R: "g2@2 ~ g2 d2@2 ~ d2 c2 ~ c2 ~ g2 ~@3",
  S: "g2@2 ~ g2 d2@2 ~ d2 ~@2 d2 ~ g2 ~@3", T: "g2 ~@2 g2 d2 ~@2 d2 ~@2 d2 ~ g2 ~@3",
  U: "g2@2 ~ g2 d2 ~@3 g2@2 ~ g2 d2 ~@3", V: "g2@2 ~ g2 d2 ~@3 d2@2 ~ d2 [a1,d2] ~@2 a1",
  W: "g2 ~@2 g2 d2@2 ~ d2 c2 ~@2 c2 e2 ~ e2 ~", X: "d2@2 b1 c2@2 a1 g1 ~@2 d2 e2 ~ g2 ~@3",
  Y: "g2@2 ~ g2 d2 ~@3 g2 ~@2 g2 d2 ~@3", Z: "g2@2 ~ g2 d2 ~@3 d2 ~@2 d2 a1 ~@3",
  AA: "g2 ~@2 g2 d2 ~@3 c2 ~@2 c2 e2 ~@3", AB: "d2 ~ b1 c2 ~ a1 g1 ~@2 d2 e2 ~ g2 ~@3",
  AC: "g2 ~@2 g2 d2 ~@3 g2 ~@2 g2 d2 ~@3", AD: "g2@2 ~ g2 d2 ~@3 d2@2 ~ d2 a1 ~@3",
  AE: "g2@2 ~ g2 d2 ~@2 d2 c2 ~ c2 ~ g2 ~@3", AF: "g2 ~@2 g2 d2 ~@2 d2 ~@2 c2 ~ g2 ~@3",
  AG: "g2 ~@2 g2 d2 ~@2 d2 ~ d2!2 ~ g2 ~@3", AH: "g2 ~@2 g2 d2 ~@3 d2 ~@2 d2 a1@2 d2 ~",
  AI: "g2 ~@2 g2 d2 ~@3 c2 ~@2 c2 e2 ~ e2 ~", AJ: "g2 ~@2 g2 d2 ~@2 d2 ~ d2 e2 ~ g2 ~ d2 ~",
  AK: "g2 ~@2 g2 d2 ~@3 g2@2 ~ g2 d2 ~@3, ~@8 f#2 ~@7", AL: "g2@2 ~ g2 d2@2 ~@2 d2@2 ~ d2 a1@2 d2 ~",
  AM: "g2 ~@3 d2 ~@3 c2 ~@2 c2 e2 ~@3, ~@3 g2@2 ~@11", AN: "d2@2 b1 c2@2 a1 g1 ~@2 g2!4 ~@3",
})).s("gm_acoustic_bass").gain(0.66).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@2 ~ B C@12 D E D E D E D F C@4 D E D E D E D F C@7 B D E D E G E D F C@15 H C@8
>`.pickRestart({
  A: "~@3 x", B: "x ~@2 x ~ x!2 ~@9", C: "x!4", D: "x!3 ~", E: "x ~@3 x ~@2 x!2 ~@7",
  F: "x ~@2 x ~ x ~ x!2 ~ x ~ x ~@3", G: "x ~@3 x!2 ~@2 x ~ x ~ x ~@3", H: "x ~@3 x ~ x!3 ~ x ~ x ~@3",
})).gain(0.78)

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

// drums · low tom
const low_tom = s("lt").struct("<~@5 A@12 ~@8 A@4 ~@8 A@7 B ~@8 A@4 ~@11 B A@7 B>".pickRestart({
  A: "~@3 x ~@3 x", B: "~@3 x ~@4",
})).gain(0.7)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@4 A B@3 C B@3 C B@3 C ~@8 B@3 C ~@8 B@3 C B@3 A ~@8 B@3 C ~@12 B@3 C B@3 D
>`.pickRestart({
  A: "x!3 ~ x ~ x ~", B: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", C: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~@2",
  D: "~ x ~ x ~ x ~ x ~ x ~ x ~@4",
})).gain(0.16)

// drums · mid tom
const mid_tom = s("mt").struct("<~ A@2 B C D@11 E ~@8 D@4 ~@8 D@7 F ~@8 D@4 ~@11 G D@8>".pickRestart({
  A: "~@3 x", B: "~@7 x", C: "~@5 x ~@2", D: "~ x ~ x", E: "~ x ~@2", F: "~@3 x ~ x ~@4 x ~@5", G: "~@5 x ~@10",
})).gain(0.7)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@4 A ~@3 A ~@3 A ~@3 A ~ A ~ A ~ A ~ B ~@3 A ~ A ~ A ~ A ~ B ~@3 A ~@3 A ~ A ~ A ~ A ~ B ~@3 A ~@15 A ~@4
>`.pickRestart({
  A: "~@7 x", B: "~@3 x ~@3 x",
})).gain(0.78)

// drums · high tom
const high_tom = s("ht").struct("<~@3 [~@13 x!2 ~] [~@9 x ~@6] ~@39 [x ~@8 x ~@6] ~@23 [~@3 x ~@12] ~@8>").gain(0.78)

// drums · crash
const crash = s("cr").struct(`<
  ~@5 A ~@3 A ~@3 A ~@3 A ~@7 A ~@2 B ~@8 A ~@2 B C@2 ~ D ~@4 E ~@3 A ~@2 B ~@2 A ~ A ~ A ~ A ~ A E A ~@2 B A ~@2 B
>`.pickRestart({
  A: "x", B: "x ~@2 x ~@2 x ~@9", C: "x ~@2 x", D: "~@7 x", E: "~@5 x!2 ~",
})).gain(0.78)

// drums · ride
const ride = s("rd").struct(`<
  ~@4 A B C@3 B C@3 B C@2 D ~@7 E B C@2 F ~@7 E B C@2 F ~@3 G ~@7 E B C@2 F ~@12 B C@2 F B C@2 F
>`.pickRestart({
  A: "~@14 x!2", B: "~@2 x!6", C: "x!8", D: "x ~ x!5 ~", E: "~@5 x!2 ~", F: "x!3 ~@5", G: "~@3 x ~@2 x ~@8 x",
})).gain(0.7)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@4 A B@12 ~ C ~ C ~ C ~ C B@4 ~ C ~ C ~ C ~ C B@7 D ~ C ~ C ~ C ~ C B@4 ~ C ~ C ~ C ~ C ~ C ~ C B@8
>`.pickRestart({
  A: "~@3 x ~@2 x!2", B: "x!2", C: "~@7 x", D: "x ~@2 x ~ x!2 ~@5 x ~ x ~",
})).gain(0.78)

// drums · bongos
const bongos = s("bongo:4").struct("<~@4 A ~@19 B C ~@10 B C ~@6 A ~@7 B C ~@14 B C ~@7>".pickRestart({
  A: "~@13 x!3", B: "~@14 x!2", C: "x",
})).gain(2.04)

// drums · bongos · soft notes
const bongos_soft = s("bongo:4").struct("<~@4 [~@3 x] ~@39 [~@3 x] ~@32>").gain(1.22)

// drums · congas
// … 42 more lines

More by Jimmy Buffett