Strudelify

Everybody Sunshine

Hasselhoff David

KeyB♭ majorTempo116 bpm
0:00/0:00
// Everybody Sunshine — Hasselhoff David
// 116 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 2 "Jup8-Brs" named as a brass, played on brass section (its lead 2 sawtooth patch is not one)
// note: Full arrangement: all 96 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): HeavyGui.
setcpm(116/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 · lead 2 sawtooth · "Ges.Jump"
const lead_2_sawtooth = note(`<
  A B C D E ~@3 F G H I J K L M N O P@3 Q R S T@2 U C V W U X Y Z ~ F G H I J K L M N O P@3 Q R S T@2 U C V W U X Y Z
  ~@7 AA AB AC@3 AD AE AF AG@2 AH AI AJ AK AH AL AM AN AH AI AJ AK AH AL AM AO ~@2
>`.pickRestart({
  A: "~@10 [f4,bb4]!3 ~ [bb4,d5] ~", B: "[d5,f5]@4 [bb4,d5]@2 ~@4 [f5,bb5]@4 [eb5,g5] ~",
  C: "[d5,f5]@4 [bb4,d5]@2 ~@4 [f4,bb4]!3 ~ [a4,c5] ~", D: "[bb4,d5]@3 ~ [d5,f5]@3 ~@3 [f4,d5] ~ [eb4,c5]@2 ~ [d4,bb4]",
  E: "[d4,bb4] ~@3", F: "~@10 [d4,f4] ~@3 [d4,f4] ~", G: "[d4,bb4]@3 ~ [d4,bb4]@2 ~@4 [a4,c5] ~@3 [bb4,d5] ~",
  H: "[bb4,d5]@4 [bb4,d5]@2 ~@4 [bb4,d5]@2 ~@2 [bb4,d5] ~", // Bb
  I: "[bb4,d5]@3 ~ [a4,c5]@2 ~@4 bb4@2 ~@2 [bb4,d5] ~, ~@10 f4 ~@5", J: "[bb4,d5]@9 ~ [d4,f4] ~ [d4,f4]@2 [d4,f4] ~",
  K: "[f4,bb4]@4 bb4@2 ~@4 [f4,bb4]@2 c5@2 [bb4,d5] ~, ~@4 f4 ~@7 a4 ~@3", // Bb5 Bb
  L: "[bb4,d5]@3 ~ [bb4,d5]@2 ~@4 [bb4,d5]@2 [bb4,d5]@2 [bb4,d5] ~", // Bb
  M: "[bb4,d5]@3 ~ [a4,c5]@2 ~@4 [f4,d5]@3 ~ c5@2, ~@14 eb4 ~", N: "[d4,bb4]@8 ~@2 [bb4,d5]@3 ~ [bb4,d5] ~",
  O: "[a4,c5]@4 [a4,c5]@2 ~@4 [bb4,d5]@3 ~ [c5,eb5] ~", // Am Bb Cm
  P: "[[d5,f5]@4 [bb4,d5]@2 ~@9 [eb5,g5]@8 ~ [d5,f5]@4 [bb4,d5]@2 [a4,c5]@10 ~@2 [d4,f4]@3 ~ [d4,f4] ~]/3", // Dm Bb Eb Dm Bb Am Dm
  Q: "[d4,bb4]@4 [d4,bb4]@2 ~@4 [bb4,d5]@3 ~ [bb4,d5] ~", R: "[d5,f5]@4 [d5,f5]@2 ~@4 [d5,f5]@3 ~ [d5,f5] ~",
  S: "[d5,f5]@4 [c5,eb5] ~@5 [bb4,d5]@3 ~ [a4,c5] ~", T: "[[a4,f5]@26 [f4,bb4]!3 ~ [bb4,d5] ~]/2",
  U: "[d5,f5]@4 [bb4,d5]@2 ~@4 [eb5,g5]@4 [eb5,g5] ~", V: "[bb4,d5]@3 ~ [bb4,d5]@2 ~@4 [bb4,d5] ~ [a4,c5]@2 ~ [a4,c5]",
  W: "[bb4,d5]@9 ~ [f4,bb4]!3 ~ [bb4,d5] ~", X: "[d5,f5]@4 [bb4,d5]@2 ~@4 [f4,bb4]!3 ~ [f4,c5] ~",
  Y: "[f4,d5]@3 ~ [f4,d5]@2 ~@4 [f4,d5] ~ [eb4,c5]@3 [eb4,c5]", Z: "[d4,bb4]@13 ~@3",
  AA: "~@10 [eb5,g5]@3 ~ [eb5,g5] ~", AB: "[d5,f5]@4 [d5,f5]@2 ~@4 [eb5,g5]@3 ~ [f5,ab5] ~",
  AC: "[[g5,bb5]@4 [eb5,g5]@2 ~@9 [ab5,c6]@8 ~ [g5,bb5]@4 [eb5,g5]@2 [d5,f5]@10 ~@2 [g4,bb4]@3 ~ [g4,bb4] ~]/3", // Gm Eb Ab Gm Eb Dm Gm
  AD: "[g4,eb5]@4 [g4,eb5]@2 ~@4 [eb5,g5]@3 ~ [eb5,g5] ~", AE: "[g5,bb5]@4 [g5,bb5]@2 ~@4 [g5,bb5]@3 ~ [g5,bb5] ~",
  AF: "[g5,bb5]@4 [f5,ab5] ~@5 [eb5,g5]@3 ~ [d5,f5] ~", AG: "[[d5,bb5]@26 [bb4,eb5]!3 ~ [eb5,g5] ~]/2",
  AH: "[g5,bb5]@4 [eb5,g5]@2 ~@4 [ab5,c6]@4 [ab5,c6] ~", AI: "[g5,bb5]@4 [eb5,g5]@2 ~@4 [bb4,eb5]!3 ~ [d5,f5] ~",
  AJ: "[eb5,g5]@3 ~ [eb5,g5]@2 ~@4 [eb5,g5] ~ [d5,f5]@2 ~ [d5,f5]", AK: "[eb5,g5]@9 ~ [bb4,eb5]!3 ~ [eb5,g5] ~",
  AL: "[g5,bb5]@4 [eb5,g5]@2 ~@4 [bb4,eb5]!3 ~ [bb4,f5] ~", // Gm Eb Eb5 Bb5
  AM: "[bb4,g5]@3 ~ [bb4,g5]@2 ~@4 [bb4,g5] ~ [ab4,f5]@3 [ab4,f5]", AN: "eb5@10 [bb4,eb5]!3 ~ [eb5,g5] ~, g4@13 ~@3",
  AO: "[g4,eb5]@13 ~@3", // Cm
})).s("gm_lead_2_sawtooth").gain(0.64)

// chords · brass section · "Jup8-Brs"
const brass_section = note(`<
  ~@4 A B C D E ~@25 F@2 ~@15 G@2 H@2 I J K L@2 M N O P Q N R S T ~@7 U@2 V@2 W X Y Z@2 AA AB AC AD AE AF AG ~ AH AI AJ
>`.pickRestart({
  A: "~@2 [f3,a3] [eb3,g3]", B: "~@4 [d4,f4,bb4] ~@5 [f4,bb4,d5]@2 ~@4",
  C: "[g4,bb4,eb5] ~@5 [f4,a4] ~@3 [f4,bb4,d5]@2 ~@4, ~@3 c5 ~@4", D: "~@2 [c4,f4,a4] ~@2 [f4,a4,c5] ~@2",
  E: "[c4,f4,a4]@5 ~ [c4,f4,a4]@2 ~@8", F: "[bb1,bb2] ~ [bb1,bb2] ~ [bb1,bb2] ~ [bb1,bb2] ~", G: "[~ f5, f4, ~ c5@3]/2",
  H: "[bb4@3 ~ bb4@3 ~ bb4 ~ bb4 d5 f5@8 ~@2 bb4 ~ d5 f5!2 d5 bb4@4]/2", I: "bb4@3 ~ bb4@3 ~ c5 f5!2 c5 a4@4",
  J: "bb4@7 ~ [bb3,bb4] [c4,c5] [d4,d5] [f4,f5] [bb4,bb5]@4", K: "bb4@4 ~@2 bb4!2 bb4@7 ~",
  L: "[bb4@5 ~@3 d5 f5!2 d5 bb4@11 ~ f5@6 ~ f5]/2", M: "bb5 ~ bb5!2 ~@6 [bb4,eb5]!3 ~ [eb5,g5] ~, ~ bb5@3",
  N: "[g5,bb5]@4 [eb5,g5]@2 ~@4 [ab5,c6]@3 ~ [ab5,c6] ~", O: "[g5,bb5]@3 ~ [eb5,g5]@3 ~@3 eb5!3 ~ [eb5,f5] ~",
  P: "[eb5,g5]@3 ~ [eb5,g5]@2 ~@4 [eb5,g5] ~ [d5,f5]@2 ~ [d5,f5]", Q: "[eb5,g5]@9 ~ eb5!3 ~ [eb5,g5] ~",
  R: "[g5,bb5]@4 [eb5,g5]@2 ~@4 eb5!3 ~ f5 ~", S: "[eb5,g5]@3 ~ [eb5,g5]@2 ~@4 g5@2 [ab4,f5]@3 [ab4,f5], ~@10 eb5 ~@5",
  T: "[g4,eb5]@3 ~", U: "[~ bb5, bb4, ~ f5@3]/2",
  V: "[eb5@3 ~ eb5@3 ~ eb5 ~ eb5 g5 bb5@8 ~@2 eb5 ~ g5 bb5!2 g5 eb5@4]/2", W: "eb5@3 ~ eb5@3 ~ f5 bb5!2 f5 d5@4",
  X: "eb5@7 ~ [eb4,eb5] [f4,f5] [g4,g5] [bb4,bb5] [eb5,eb6]@4", Y: "eb5@4 ~@2 eb5!2 eb5@7 ~",
  Z: "[eb5@5 ~@3 g5 bb5!2 g5 eb5@11 ~ bb5@6 ~ bb5]/2", AA: "eb6 ~ eb6!2 eb6@12",
  AB: "[f4,g4,bb4,eb5] ~ [g4,bb4,eb5]!2 [g4,bb4,eb5]@12", // Eb
  AC: "~@2 [g4,bb4,eb5] ~ [g4,bb4,eb5] ~ [g4,bb4,eb5]!2 [g4,bb4,eb5]@7 ~", AD: "~ [bb4,bb5] ~@2 [bb4,bb5] ~@3",
  AE: "~@2 [g4,bb4,eb5]!2 [g4,bb4,eb5]@10 ~@2", AF: "~@2 [eb5,eb6]!3 ~ [eb5,eb6] ~ [eb5,eb6]@7 ~",
  AG: "~@2 [eb5,eb6]@2 ~@2 [eb5,eb6] ~ [eb5,eb6]@7 ~", AH: "~@2 [g4,eb5] [bb4,eb5] [bb4,eb5]@12, ~@3 g4@12 ~",
  AI: "[f4,bb4,d5]@7 ~ [eb4,ab4,c5]@6 ~@2", AJ: "[g4,bb4,eb5]@2 ~@4 [g4,bb4,eb5]!2 [g4,bb4,eb5]@2 ~@6",
})).s("gm_brass_section").gain(0.56).pan(0.7)

// bass · fretless bass · "Bass-Brs"
const bass = note(`<
  ~@4 A B C D@2 C E F G H I F H J K L M H N F O P H Q R S Q H T U G H C E F G H I F H J K L M H N F O P H Q R S Q H T U
  V W X Y W V L Z AA AB AC AD V AE H U AF V W X Y W V L Z V W X Y W V L Z AG AH
>`.pickRestart({
  A: "~@8 f2@4 eb2@3 ~", B: "bb1@2 ~@2 bb1@3 ~ bb1@3 ~ bb1@3 ~", C: "bb1@3 ~ bb1@3 ~ bb1@3 ~ bb1@3 ~",
  D: "f1@3 ~ f1@3 ~ f1@3 ~ f1@3 ~", E: "bb1@3 ~ bb1@3 ~ bb1@3 ~ bb1@2 g1@2", F: "f1 ~ f1 ~ f1 ~ f1 ~",
  G: "bb1 ~ bb1 ~ bb1 ~ bb1 a1", H: "bb1 ~ bb1 ~ bb1 ~ bb1 ~", I: "bb1@3 ~ bb1@2 ~@2 bb1@2 ~@2 bb1@2 g1@2",
  J: "f1@2 ~@2 f1@3 ~ f1@4 g1@2 a1@2", K: "bb1 ~ bb1 ~ bb1!2 c2 d2", L: "eb2@2 ~@2 eb2@2 ~@2 bb1@2 ~@2 bb1@3 ~",
  M: "f1@2 ~@2 f1@3 ~ f1@3 ~ g1@2 a1@2", N: "bb1 ~ bb1 ~ bb1 ~ bb1 g1", O: "f1@2 ~@2 f1@2 ~@2 f1@2 ~@2 f1@3 ~",
  P: "f1@3 ~ f1@3 ~ f1@4 g1@2 a1 ~", Q: "bb1@3 ~ bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2", R: "bb1@2 ~@2 bb1@3 ~ f1@3 ~ f1@3 ~",
  S: "bb1@3 ~ bb1@2 ~@2 bb1@2 ~@2 bb1@3 ~", T: "bb1@2 ~@2 bb1@2 ~@2 f1@2 ~@2 f1@3 ~",
  U: "bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 bb1@3 ~", V: "eb2 ~ eb2 ~ eb2 ~ eb2 ~", W: "eb2@3 ~ eb2@2 ~@2 eb2@2 ~@2 eb2@2 ~@2",
  X: "eb2@2 ~@2 eb2@3 ~ bb1@3 ~ bb1@3 ~", Y: "eb2@3 ~ eb2@2 ~@2 eb2@2 ~@2 eb2@3 ~",
  Z: "eb2@2 ~@2 eb2@2 ~@2 eb2@2 ~@2 eb2@3 ~", AA: "bb1@2 ~@2 bb1@3 ~ bb1@4 c2@2 d2@2", AB: "eb2 ~ eb2 ~ eb2!2 f2 g2",
  AC: "ab2@2 ~@2 ab2@2 ~@2 eb2@2 ~@2 eb2@3 ~", AD: "bb1@2 ~@2 bb1@3 ~ bb1@3 ~ c2@2 d2@2",
  AE: "eb2 ~ eb2 ~ eb2 ~ eb2 c2", AF: "bb1@3 ~ bb1@3 ~ bb1@4 c2@2 d2 ~", AG: "bb1@3 ~ bb1@2 g1@2 ab1@2 ~@2 ab1@3 ~",
  AH: "eb2@2 ~@4 eb2!3 ~@7",
})).s("gm_fretless_bass").gain(0.64)

// other · string ensemble 2 · "Strings"
const string_ensemble_2 = note(`<
  ~@5 A@2 B@2 ~@8 C@2 D@7 E@3 F@4 G H@2 ~@8 C@2 D@7 E@3 F@4 G I@3 J@4 K L@2 M@7 I@3 J@4 K I@3 J@4 K N O
>`.pickRestart({
  A: "[f3,bb3,d4]/2", B: "[f2,f3,f5,f6]/2", C: "[f4,f5]/2", D: "[[eb4,eb5] [f4,f5]@13]/7", E: "[[bb4,bb5]@5 [f4,f5]]/3",
  F: "[[bb4,bb5]@7 [f4,f5]]/4", G: "[bb4,bb5]", H: "[[bb4,bb5]@31 ~]/2", I: "[[eb5,eb6]@5 [bb4,bb5]]/3",
  J: "[[eb5,eb6]@7 [bb4,bb5]]/4", K: "[eb5,eb6]", L: "[bb4,bb5]/2", M: "[[ab4,ab5] [bb4,bb5]@13]/7",
  N: "[bb4,bb5] [ab4,ab5]", O: "[eb5,eb6]@5 ~@3",
})).s("gm_string_ensemble_2").gain(0.28)

// chords · synth strings 2 · "Fl„che"
const synth_strings_2 = note(`<
  ~ A@3 B C@2 D@2 E@2 F G@3 F H I J K I C@2 L@3 M@3 N@4 J O@2 E@2 F G@3 F H I J K I C@2 L@3 M@3 N@4 J P@3 Q@4 R S R T S
  U@2 V@3 W@3 Q@4 R P@3 Q@4 R X Y
>`.pickRestart({
  A: "[[bb1,bb2,f3,bb3,d4]@11 [f1,f2,f3,a3,c4]]/3", B: "[bb1,bb2,f3,bb3,d4]@2 [f2,f3,f4,a4] [eb2,eb3,eb4,g4]",
  C: "[f3,bb3,d4]/2", D: "[f3,a3,c4]/2", E: "[d3,f3,bb3]/2", F: "[c3,f3,a3]", G: "[d3,f3,bb3]/3", H: "[d3,f3,bb3]",
  I: "[f3,a3,c4]", J: "[f3,bb3,d4]", K: "[g3,bb3,eb4] [f3,bb3,d4]", L: "[f3,a3,c4]/3",
  M: "[[bb3,d4]@5 [f3,a3,c4], f3 ~@47]/3", N: "[[f3,bb3,d4]@7 [f3,a3,c4]]/4", O: "[bb1,bb2,f3,bb3,d4]/2",
  P: "[[bb3,eb4,g4]@5 [bb3,d4,f4]]/3", Q: "[[bb3,eb4,g4]@7 [bb3,d4,f4]]/4", R: "[bb3,eb4,g4]", S: "[bb3,d4,f4]",
  T: "[c4,eb4,ab4] [bb3,eb4,g4]", U: "[bb3,eb4,g4]/2", V: "[bb3,d4,f4]/3", W: "[[eb4,g4]@5 [bb3,d4,f4], bb3 ~@47]/3",
  X: "[f3,bb3,d4]@7 ~ [eb3,ab3,c4]@7 ~", Y: "[eb3,g3,bb3]@11 ~@5",
})).s("gm_synth_strings_2").gain(0.35)

// chords · distortion guitar · "HeavyGui"
const distortion_guitar = note(`<
  ~@4 A ~@4 B C ~ D B C ~ E ~ F ~@6 G ~@10 B C ~ D B C ~ E ~ F ~@6 G ~@17 H ~@6 F ~@18
>`.pickRestart({
  A: "~@8 a3@4 g3@3 ~", B: "~@7 a2", C: "~@7 g2", D: "~@2 a3 ~ a3@2 g3 ~ g3@2 ~@4 eb3 ~", E: "~@14 a2 ~",
  F: "~@6 c3 d3", G: "~@6 g2 a2", H: "~@6 f3 g3",
})).s("gm_distortion_guitar").gain(0.5)

// chords · electric guitar muted · "RhytGuit"
const electric_guitar_muted = note(`<
  ~@4 A B@2 C@2 D B C B@3 C B C E F C B G C H I J K L M B@2 N O P Q D B C B@3 C B C E F C B G C H I J K L M B@2 N O R S
  T U V@2 W X B Y Z B V AA B E AB R S T U V@2 W X R S T U V@2 W X AC AD
>`.pickRestart({
  A: "~@8 [c3,f3]@4 [bb2,eb3]@3 ~", B: "[bb2,f3] ~ [bb2,f3]!3 ~ [bb2,f3]!3 ~ [bb2,f3]!3 ~ [bb2,f3]!2",
  C: "[f2,c3] ~ [f2,c3]!3 ~ [f2,c3]!3 ~ [f2,c3]!3 ~ [f2,c3]!2", // F5
  D: "[bb2,f3] ~ [bb2,f3]!3 ~ [bb2,f3]!3 ~ [bb2,f3] f3 [bb2,f3] ~ [bb2,f3]!2", // Bb5
  E: "[bb2,f3] ~ [bb2,f3]!3 ~ [bb2,f3]!3 ~ [bb2,f3]!2 [bb2,f3]@2 [bb2,f3]!2", // Bb5
  F: "[eb2,bb2] ~ [eb2,bb2]!2 [eb2,bb2]@2 [eb2,bb2]!2 [bb2,f3] ~ [bb2,f3]!3 ~ [bb2,f3]!2", // Eb5 Bb5
  G: "[bb2,f3] ~ [bb2,f3]!2 [a2,bb2,f3] ~ [bb2,f3]!3 ~ [bb2,f3]!3 ~ [bb2,f3]!2", // Bb5 Bbmaj7 Bb5
  H: "[f2,c3] ~ [f2,c3]!3 ~ [f2,c3]!3 ~ [f2,c3]!2 [f2,c3]@2 [f2,c3]!2", // F5
  I: "[f2,c3] ~ [f2,c3]!3 ~ [f2,c3]!2 [f2,c3]@2 [f2,c3]!3 ~ [f2,c3]!2", // F5
  J: "[bb2,f3] ~ [bb2,f3]!2 [bb2,f3]@2 [bb2,f3]!3 ~ [bb2,f3]!2 [bb2,f3]@2 [a2,e3]@2", // Bb5 A5
  K: "[bb2,f3] ~ [bb2,f3]!3 ~ [bb2,f3]!3 ~ [bb2,f3]!2 [bb2,f3]@2 [a2,e3]@2", // Bb5 A5
  L: "[bb2,f3] ~ [bb2,f3]!3 ~ [bb2,f3]!2 [f2,c3] ~ [f2,c3]!3 ~ [f2,c3]!2", // Bb5 F5
  M: "[a2,f3] ~ [bb2,f3]!3 ~ [bb2,f3]!3 ~ [bb2,f3]!3 ~ [bb2,f3]!2", // Dm Bb5
  N: "[bb2,f3] ~ [bb2,f3]!2 [bb2,f3]@2 [bb2,f3]!2 [f2,c3] ~ [f2,c3]!2 [f2,c3]@2 [f2,c3]!2", // Bb5 F5
  O: "[bb2,f3] ~ [bb2,f3]!3 ~ [bb2,f3]!3 ~ [bb2,f3]!2 [bb2,f3]@2 [bb2,f3] ~", // Bb5
  P: "[bb2,f3] ~ [bb2,f3]!2 [bb2,f3]@2 [bb2,f3]!2 [bb2,f3]@2 [bb2,f3]!2 [bb2,g3]@2 [bb2,g3]!2", // Bb5 Eb
  Q: "[bb2,f3]@2 [bb2,f3]!2 [bb2,f3]@2 [bb2,f3]!2 [bb2,f3]@2 [bb2,f3]!2 [bb2,f3]@2 [bb2,f3]!2", // Bb5
  R: "[eb3,bb3] ~ [eb3,bb3]!2 [eb3,bb3]@2 [eb3,bb3]!3 ~ [eb3,bb3]!2 [eb3,bb3]@2 [d3,a3]@2", // Eb5 D5
  S: "[eb3,bb3] ~ [eb3,bb3]!3 ~ [eb3,bb3]!3 ~ [eb3,bb3]!2 [eb3,bb3]@2 [d3,a3]@2", // Eb5 D5
  T: "[eb3,bb3] ~ [eb3,bb3]!3 ~ [eb3,bb3]!2 [bb2,f3] ~ [bb2,f3]!3 ~ [bb2,f3]!2", // Eb5 Bb5
  U: "[d3,bb3] ~ [eb3,bb3]!3 ~ [eb3,bb3]!3 ~ [eb3,bb3]!3 ~ [eb3,bb3]!2", // Gm Eb5
  V: "[eb3,bb3] ~ [eb3,bb3]!3 ~ [eb3,bb3]!3 ~ [eb3,bb3]!3 ~ [eb3,bb3]!2", // Eb5
  W: "[eb3,bb3] ~ [eb3,bb3]!2 [eb3,bb3]@2 [eb3,bb3]!2 [bb2,f3] ~ [bb2,f3]!2 [bb2,f3]@2 [bb2,f3]!2", // Eb5 Bb5
  X: "[eb3,bb3] ~ [eb3,bb3]!3 ~ [eb3,bb3]!3 ~ [eb3,bb3]!2 [eb3,bb3]@2 [eb3,bb3] ~", // Eb5
  Y: "[eb3,bb3] ~ [eb3,bb3]!3 ~ [eb3,bb3]!3 ~ [eb3,bb3]!2 [eb3,bb3]@2 [eb3,bb3]!2", // Eb5
  Z: "[ab2,eb3] ~ [ab2,eb3]!2 [ab2,eb3]@2 [ab2,eb3]!2 [eb3,bb3] ~ [eb3,bb3]!3 ~ [eb3,bb3]!2", // Ab5 Eb5
  AA: "[eb3,bb3] ~ [eb3,bb3]!2 [d3,eb3,bb3] ~ [eb3,bb3]!3 ~ [eb3,bb3]!3 ~ [eb3,bb3]!2", // Eb5 Ebmaj7 Eb5
  AB: "[bb2,f3] ~ [bb2,f3]!3 ~ [bb2,f3]!2 [bb2,f3]@2 [bb2,f3]!3 ~ [bb2,f3]!2", // Bb5
  AC: "[bb2,f3] ~ [bb2,f3]!3 ~ [bb2,f3]!2 [ab2,eb3] ~ [ab2,eb3]!3 ~ [ab2,eb3] ab2", // Bb5 Ab5
  AD: "[eb2,bb2]@5 ~ [eb2,bb2]!2 [eb2,bb2]@2 ~@6", // Eb5
})).s("gm_electric_guitar_muted").gain(0.42).pan(0.6)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@25 A ~@7 B ~@18 A ~@7 B ~@7 B ~@8 A ~@16 B ~>".pickRestart({
  A: "~@14 x!2", B: "~@8 x!8",
})).gain(0.44)

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

// drums · open hat
const open_hat = s("oh").struct("<~@4 [~@3 x] ~@91>").gain(0.49)

// drums · high tom
const high_tom = s("ht").struct("<~@25 A ~@7 B ~@18 A ~@7 B ~@7 B ~@8 A ~@16 B ~>".pickRestart({
  A: "~@10 x!3 ~@3", B: "x!8 ~@8",
})).gain(0.49)

// drums · tambourine
const tambourine = s("tb").struct("<~@17 A@9 B@8 A@2 ~@8 A@9 B@16 A@9 B@16 ~@2>".pickRestart({
  A: "~ x ~ x", B: "x!16",
})).gain(0.44)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@17 [x!8]!17 ~@10 [x!8]!51 x>").gain(1.94)

// drums · shaker
const shaker = s("sh").struct(`<
// … 11 more lines

More by Hasselhoff David