Strudelify

All For You

Sister Hazel

KeyA♭ majorTempo139 bpm
0:00/0:00
// All For You — Sister Hazel
// 139 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 122 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): Clean Guitar, Dist Guit, Dist Guit, Gt Harmonic (Lead).
setcpm(139/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 · "Steel String"
const acoustic_guitar_steel = note(`<
  A@2 B@2 C@2 B@2 D E F G H I J K@2 L@2 M N O@2 P@2 Q R@4 C@2 B@2 D E F G H I J S@2 O@2 M N O@2 P@2 T U V W X Y@2 Z AA@3
  AB@2 AC@2 AD@2 AE@2 AD@6 AF@5 C@2 B@2 D E F G AG I AH AI@2 AJ ~@9 L@2 M N O@2 P@2 L@2 M N O@2 P@2 Q AK
>`.pickRestart({
  A: "[~@8 f3@2 ~ [bb3,db4]@2 ~@2 bb3, ~@15 f4@11 [db4,f4]@6, ~@15 [bb3,db4]@7 eb4@10, ~@5 f3@2 f3, ~@13 bb3@2 ~]/2", // Bbm Db Bbm
  B: "[eb3@4 ~@2 [bb3,eb4]@4 ~@2 eb3@3 ~ f3@4 ~@2 [bb3,db4]@4 ~@4 bb3@2, g4@10 [bb3,eb4,g4]@5 db4@7 eb4@10, [bb3,eb4]@6 f4@9 f4@11 bb3@4 ~@2, ~@2 eb3@4 ~@2 bb3@3 ~@2 [db4,f4]@3, ~@5 f3@2 f3]/2", // Eb5 Bbm Eb Eb5 Db
  C: "[eb3@4 ~@2 [bb3,eb4]@4 ~@2 eb3@3 ~ f3@4 ~@2 [bb3,db4]@4 ~@4 bb3@2, g4@10 [bb3,eb4,g4]@5 [bb3,db4]@7 eb4@10, [bb3,eb4]@6 f4@8 ~ f4@11 [db4,f4]@6, ~ eb3@2 ~@2 f3@2 f3, ~@13 bb3@2 ~]/2", // Eb5 Bbm Eb Bbm Eb5 Db
  D: "eb3@4 ~@2 [bb3,eb4,f4]@4 ~@2 eb3@2 f3 ~, g4@5 ~@3, [bb3,eb4]@3 ~@2 [bb3,eb4,g4]@3, ~@2 eb3@3 ~@3", // Bbsus4 Eb5 Eb
  E: "f3@2 f3 [f3,ab3,bb3]@2 f3@2 f3, [ab3,c4]@3 ~@2 [ab3,c4]@3", // Bb7 Ab
  F: "bb2@2 ~ f3@2 ~ bb2 f3, db4@10 [f3,db4]@5 ~, [f3,bb3]@6 [bb3,c4]@9 ~, ~ bb2@2 ~", // Db Bb5 Bbsus2
  G: "c3@2 ~ [f3,ab3]@2 ~@2 f3, c4@5 [ab3,c4]@3, [f3,ab3]@3 bb3@5, ~ c3@2 c3, ~@5 f3@2 ~", // Fm Ab Fm
  H: "bb2@2 ~ [f3,bb3]@2 ~ bb2 f3, db4@5 [bb3,db4]@3, [f3,bb3]@3 c4@5, ~ bb2@2 ~, ~@5 f3@2 ~", // Bb5 Bbm Bb5
  I: "f3@2 f3 [f3,ab3]@2 f3@2 f3, [c3,ab3,c4]@3 bb3@3 ~@2, ~@5 [ab3,c4]@3", // Fm Ab
  J: "f3@2 f3 [f3,bb3,c4]@2 ~ bb2 f3, [bb2,db4]@5 f3@2 ~, bb3@3 ~@2 [bb3,db4]@3", // Fsus4 Bbm
  K: "[~@4 eb3@5 eb3@3 eb3@2 eb3@2 eb3@2 eb3@4 eb3@2 eb3@2 ~@2 [g3,bb3,eb4]@2 [g3,bb3,eb4]@2, ~@2 [ab3,bb3,eb4]@4 [ab3,bb3,eb4]@3 [g3,bb3,eb4]@3 [g3,bb3,eb4]@2 ~@2, ~@26 eb3@5 ~]/2", // Eb Absus2 Eb
  L: "[[c4,eb4,ab4]@4 [c4,eb4,ab4] ~ [db4,eb4,ab4]@4 [db4,eb4,ab4]@2 [db4,eb4,ab4] ~ [bb3,db4,ab4]@4 [bb3,db4,ab4]@2 [bb3,db4,ab4] ~ [bb3,eb4,ab4] ~@3 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [bb3,eb4,ab4] ~]/2", // Ab Dbsus2 Bbm7 Ebsus4 Eb Ebsus4
  M: "[c4,eb4,ab4]@4 [c4,eb4,ab4] ~ [db4,eb4,ab4]@4 [db4,eb4,ab4]@2 [db4,eb4,ab4] ~ [bb3,db4,ab4]@2", // Ab Dbsus2 Bbm7
  N: "~@2 [bb3,db4,ab4]@2 ~@2 [bb3,eb4,ab4]@2 ~@2 [bb3,eb4]@2 [bb3,eb4,ab4]@2 [bb3,eb4,ab4] ~, ~@5 g4@2 ~", // Bbm7 Ebsus4 Eb5 Ebsus4
  O: "[[c4,eb4,ab4]@4 [c4,eb4,ab4] ~ [db4,eb4,ab4]@4 [db4,eb4,ab4]@2 [db4,eb4,ab4] ~ [bb3,db4,ab4]@4 [bb3,db4,ab4]@2 [bb3,db4,ab4] ~ [bb3,eb4,ab4]@2 ~@2 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 [bb3,eb4,ab4] ~]/2", // Ab Dbsus2 Bbm7 Ebsus4 Eb Ebsus4
  P: "[[c4,eb4,ab4]@4 [c4,eb4,ab4] ~ [db4,eb4,ab4]@4 [db4,eb4,ab4]@2 [db4,eb4,ab4] ~ [bb3,db4,ab4]@4 [bb3,db4,ab4]@2 [bb3,db4,ab4] ~ [bb3,eb4,ab4]@2 ~@2 [bb3,eb4,g4] ~ [bb3,eb4,g4]@2 [bb3,eb4,ab4] ~]/2", // Ab Dbsus2 Bbm7 Ebsus4 Eb Ebsus4
  Q: "[c4,eb4,ab4]@4 ~@2 [db4,ab4]@3 ~ [eb4,ab4]@3 ~ [c4,ab4]@2", // Ab Db5 Ab5 Fm
  R: "[~@16 f3@4 ~@2 [bb3,db4]@4 ~@4 bb3@2 eb3@4 ~@2 [bb3,eb4]@4 ~@2 eb3@3 ~ f3@4 ~@2 [bb3,db4]@4 ~@4 bb3@2, [c4,ab4]@13 bb3 f3@2 [bb3,eb4]@2 eb3@4 ~@4 f3@4 f3@2, ~@15 f4@11 db4@21 db4@7 eb4@10, ~@15 db4@5 f3@6 f4@12 f4@9 f4@11 bb3@4 ~@2, ~@16 bb3@6 eb4@10 g4@10 [bb3,eb4,g4]@5 ~ bb3@6 ~@4 [db4,f4]@6]/4", // Bbm Eb5 Bbm Fm Eb5 Eb Db
  S: "[~@4 eb3@5 eb3@3 eb3@2 eb3@2 eb3@2 eb3@4 eb3@2 eb3@2 ~@2 [g3,bb3,eb4]@2 [g3,bb3,eb4] ~, ~@2 [ab3,bb3,eb4]@4 [ab3,bb3,eb4]@3 [g3,bb3,eb4]@3 [g3,bb3,eb4]@2 ~@2, ~@26 eb3@5 ~]/2", // Eb Absus2 Eb
  T: "[ab3,c4,eb4,ab4]@5 ~ [ab3,db4,eb4,ab4]@3 ~ [ab3,eb4,ab4]@4 [ab3,c4,eb4,ab4] ~", // Ab Absus4 Ab5 Ab
  U: "ab3@4 ~@8 ab3@2 [c4,eb4,ab4] ~, [c4,eb4,ab4]@3 [c4,eb4,ab4]@2 [c4,eb4,ab4]@2 ~, ~ ab3!2 ~", // Ab
  V: "db4 ~@4 db4 ~ ab3, ab3@5 ab3@2 ~, ab4@3 ab4@5, eb4@2 eb4@3 eb4@3, ~ db4@4 ~ db4@2",
  W: "~@2 c4 ~@2 c4 ~ f3, f2, ~ f3@3 f3@2 c4@2, ~@3 ab4@5, ~@3 [c4,f4]@2 f4@3", // F5
  X: "db4 ~@9 db4@2 ~@2 ab3@2, db3!2, eb4@3 ab4@5, ab3@2 ab3@3 ab3 db4@2, ~ db4@2 [db4,eb4]@2 eb4@3", // Dbsus2
  Y: "[~@2 ab3@2 ~@6 c4@2 ~@4 db4 ~@9 db4@2 ~@2 ab3@2, f3@4 f3@3 ab3@3 ab3@3 ab3 db4@2, ~ c4@2 ab4@5 ~ db4@2 [db4,eb4]@2 eb4@3, ~ ab3@2 c4 db3@2 db3@2, ~@3 c4@2 f4@3 eb4@3 ab4@5]/2", // Dbsus2
  Z: "ab3 ~@13 f3@2, c4@3 ab4@5, f3@2 f3@2 f3@3 ~, ~ ab3@2 ab3@3 ab3@2, ~@3 c4@2 c4@3",
  AA: "[db4 ~@4 db4 ~ ab3 ~ bb3 ~@5 bb3 eb3 ~@2 [bb3,eb4] eb3!2 [eb3,bb3,eb4,g4] ~, db3@2 db3@2 eb3@2 eb3!2 ~ eb3 ~@2, eb4@3 ab4@7 ~@3 ab4@4 ~@7, ab3@2 ab3@3 ab3 db4@2 ~@2 [bb3,eb4,ab4]@3 bb3@2 ~ [bb3,eb4]@3 ~ [bb3,eb4,ab4]@2 ~@2, ~ db4@2 [db4,eb4]@2 eb4@3 eb4@2 ~@3 eb4@3 g4@6 ~@2]/3", // Eb5 Eb Ebsus4 Eb5 Ebsus4 Dbsus2
  AB: "[[c4,eb4,ab4]@2 [c4,eb4,ab4]@2 ~@2 [db4,eb4,ab4]@4 [db4,eb4,ab4] ~@7 [db4,f4,ab4]@2 bb3 ~ [bb3,eb4,g4]@4 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 bb3 ~, ~@7 [db4,f4]@2 ~@7, ~@4 bb3 ~@3]/2", // Ab Dbsus2 Db Eb Db
  AC: "[[c4,eb4,ab4]@2 [c4,eb4,ab4]@2 c4 ~ [db4,eb4,ab4]@4 [db4,eb4,ab4] ~@7 [db4,f4,ab4]@2 bb3 ~ [bb3,eb4,g4]@4 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 bb3 ~, ~@7 [db4,f4]@2 ~@7, ~@4 bb3 ~@3]/2", // Ab Dbsus2 Db Eb Db
  AD: "[[c4,eb4,ab4]@2 [c4,eb4,ab4]@2 c4 ~ [db4,eb4,ab4]@4 [db4,eb4,ab4]@2 ~@6 [db4,f4,ab4]@2 bb3 ~ [bb3,eb4,g4]@4 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 bb3 ~, ~@7 [db4,f4]@2 ~@7, ~@4 bb3 ~@3]/2", // Ab Dbsus2 Db Eb Db
  AE: "[[c4,eb4,ab4]@2 [c4,eb4,ab4]@2 ~@2 [db4,eb4,ab4]@4 [db4,eb4,ab4]@2 db4 ~ db4@2 ~@2 [db4,f4,ab4]@2 bb3 ~ [bb3,eb4,g4]@4 [bb3,eb4,g4]@2 [bb3,eb4,g4]@2 bb3 ~, ~@7 f4@2 ~@7, ~@4 bb3 ~@3]/2", // Ab Dbsus2 Db Eb
  AF: "[[c4,eb4,ab4]@2 [c4,eb4,ab4]@2 ~@2 [db4,eb4,ab4]@4 [db4,eb4,ab4] ~@7 [db4,f4]@12 ~@2 f3@4 ~@2 [bb3,db4]@4 ~@4 bb3@2 eb3@4 ~@2 [bb3,eb4]@4 ~@2 eb3@3 ~ f3@4 ~@2 [bb3,db4]@4 ~@4 bb3@2, ~@14 [db4,f4]@4 ab4@24 bb3@2 f3@19 ~@5 f3@8 f3@4, ~@16 bb3@14 f4@12 db4@21 db4@7 eb4@10, ~@31 [bb3,db4]@7 eb4@10 g4@6 f4@9 f4@11 bb3@4 ~@2, ~@36 f3@6 f4@6 [bb3,eb4]@4 eb3@6 [bb3,eb4,g4]@5 ~ bb3@6 ~@4 [db4,f4]@6]/5", // Ab Dbsus2 Db Bbm Eb5 Bbm Db Bbm …
  AG: "bb2@2 ~ [f3,bb3]@2 ~@2 f3, db4@5 [bb3,db4]@3, [f3,bb3]@3 c4@5, ~ bb2@2 bb2, ~@5 f3@2 ~", // Bb5 Bbm Bb5
  AH: "f3@2 f3 [f3,bb3,c4]@2 ~@2 f3, [bb2,db4]@5 f3@2 ~, bb3@3 ~@2 [bb3,db4]@3, ~@3 bb2", // Fsus4 Bbm
  AI: "[~@2 bb3@3 bb3 bb3@2 bb3 bb3@2 bb3!5, ~@2 [eb4,ab4]@4 [eb4,ab4]@3 g4@5 ~@2, ~@9 eb4@3 ab4@4, ~@6 eb4 [eb4,g4]]/2", // Ab5 Eb
  AJ: "[c4,eb4,ab4]@3 ~@13", AK: "[c4,ab4] ~",
})).s("gm_acoustic_guitar_steel").gain(0.38)

// bass · electric bass pick · "Picked Bass"
const bass = note(`<
  ~@8 A B C D E B F G H I@2 J K L@2 M N O P ~@7 A B C D E B F G H I@2 J K L@2 M N Q P R S R T U V U W X Y Z AA AB AC AD
  AA AE AF AG AA AH AI AJ AK AL AM ~@6 A B C D E B F AN AO AP ~@9 AQ AR AQ AS AT@2 AQ AU AV@2 J K AW@2 J N O P
>`.pickRestart({
  A: "~@6 c1 ~", B: "f1@11 ~ f1@2 ~@2", C: "~@6 bb1@5 ~ bb1@2 ~@2", D: "f1@5 ~ f1 ab1", E: "~@6 bb1@5 ~@3 c2@2",
  F: "bb1@5 ~@9 c2 ~", G: "~ eb2@2 ~", H: "~ eb2 ~@6",
  I: "[ab1@5 ~ db2@4 db2@2 ~@2 bb1@4 bb1@2 ~@2 eb1@4 eb1@3 ~ ab1 ~]/2", J: "ab1@2 ~ db2@2 db2 ~ bb1",
  K: "~@2 db2 ~ d2 ~ eb2@4 db2 ~ c2@2 ~ ab1", L: "[ab1@5 ~ db2@3 ~ db2@2 ~@2 bb1@4 bb1 ~@3 eb1@4 eb1@2 ~@2 ab1 ~]/2",
  M: "ab1@4 ~@2 db2@4 db2@3 ~ bb1@2", N: "~@2 c2 ~ db2 ~ eb2@3 ~ db2 ~ c2 ~ ab1 ~", O: "ab1@5 ~ ab1@2 ~@2 ab1@2 ~@4",
  P: "ab1@13 ~@3", Q: "ab1@5 ~ ab1@3 ~ ab1@2 ~@4", R: "db2@15 ~", S: "f1@14 ab1 ~",
  T: "f1 ~ ab1 ~ bb1 ~ bb1@6 ab1 ~ f1@2", U: "db2", V: "f1@7 ~", W: "~@2 eb2!2 ~@3 eb2",
  X: "eb2@2 eb2@2 eb2@2 eb2@2 eb2@2 eb2@2 eb2@2 eb2 ~", Y: "ab1!2 ~ db2 ~ db2 ~ ab1",
  Z: "bb1 ~ bb1@2 ~@2 eb1@2 ~@2 eb1 ~ eb1@3 ~", AA: "ab1 ~ ab1@2 ~@2 db2@2 ~@2 db2@2 ~@2 ab1@2",
  AB: "bb1@2 db1@2 d1@2 eb1@3 ~ eb1 ~ eb1@3 ~", AC: "ab1@2 ab1@2 ~@2 db2@4 db2 ~@3 ab1@2",
  AD: "bb1 db2 d2 eb2 ~ eb2 eb2@2", AE: "bb1@2 db1@2 d1@2 eb1@3 ~ eb1 ~ eb1@2 ~@2",
  AF: "ab1@2 ab1@2 ~@2 db2@3 ~ db2@2 ~@2 ab1@2", AG: "bb1@2 ab1@2 f1@2 eb1@3 ~ eb1 ~ eb1@4",
  AH: "bb1@2 db2@2 d2@2 eb2@4 db2@2 c2@3 ~", AI: "ab1!2 ~ db2 ~ db2 ~ bb1", AJ: "~@2 bb1@2 ~@2 eb1@3 ~ eb1 ~ eb1@3 ~",
  AK: "ab1 ~ ab1@2 ~@2 db2@2 ~@2 db2 ~@3 ab1@2", AL: "bb1 db2 d2 eb2@2 db2 c2 ab1", AM: "bb1 ~", AN: "~@2 eb1@4 eb1!2",
  AO: "~ eb1!6 ~", AP: "ab1@3 ~@13", AQ: "ab1@4 ~@2 db2@3 ~ db2@2 ~@2 bb1@2", AR: "~@2 c2 ~ db2 ~ eb2@4 db2 ~ c2@3 ~",
  AS: "~@2 bb1@2 ~@2 eb1@2 ~@2 eb1@3 ~ g1@2",
  AT: "[ab1@4 ~@2 db2@2 ~@2 db2@2 ~@2 bb1@4 c2 ~ db2 ~ eb2@3 ~ db2@2 c2@2 ~@2]/2",
  AU: "~@2 bb1@3 ~ eb1@4 ~@2 eb1@2 ~@2", AV: "[ab1@5 ~ db2@4 db2 ~@3 bb1@4 bb1@3 ~ eb1@4 eb1@3 ~ ab1 ~]/2",
  AW: "[ab1@5 ~ db2@3 ~ db2@2 ~@2 bb1@4 bb1 ~@3 eb1@4 eb1@3 ~ ab1 ~]/2",
})).s("gm_electric_bass_pick").gain(0.55)

// bass · electric bass pick · "Picked Bass" · soft notes
const bass_soft = note(`<
  ~@8 A B C ~ D B E F G ~@8 H ~@8 A B C ~ D B E F G ~@8 H ~@6 H ~ I ~@24 A B C ~ D B E ~ J ~@26 H ~
>`.pickRestart({
  A: "~@7 eb1", B: "~@7 ab1", C: "bb1@2 ~@5 c2", D: "bb1@2 ~@4 bb1 ~", E: "~@3 bb1@2 ~ bb1 ~", F: "~@3 eb2",
  G: "eb2@2 ~@2 eb2@2 eb2@2 eb2@2 eb2@2 eb2@2 eb2 ~", H: "~@14 ab1 ~", I: "~@4 eb2!3 ~", J: "eb1 ~@6 eb1",
})).s("gm_electric_bass_pick").gain(0.35)

// chords · electric guitar clean · "Clean Guitar"
const electric_guitar_clean = note(`<
  ~@8 A@2 B ~ C@2 D ~ E F ~ F ~ F ~ F ~ G H ~@7 A@2 B ~ C@2 D ~ I F ~ J ~ F ~ F ~@2 K@2 L M N O P M Q@2 R@14 S@2 ~@7 A@2
  B ~ C@2 D ~@12 F ~ F ~ F ~ F ~ F ~ F ~ F ~ F ~ G H
>`.pickRestart({
  A: "[~@15 c4@15 ~@2]/2", B: "~@10 bb3@5 ~, ~@2 f3@5 ~, ~@6 db4@9 ~", C: "[~@6 ab4@8 c4@17 ~, ~@2 c4@5 ~@9]/2",
  D: "~@4 [f4,bb4]@3 ~, ~@3 db4@4 ~", E: "bb3@7 bb3 ab4@2 ~@6", F: "~ [ab3,eb4] ~@6", G: "~@14 eb4 ~", H: "eb4@9 ~@7",
  I: "bb3@7 bb3 ab4@3 ~@5", J: "~@2 [ab3,eb4]@3 ~@11", K: "[~@14 ab3 ~, ~@15 eb4@7 eb4@9 ~, ~@10 ab4@5 ~]/2",
  L: "~@6 ab3 ~, ~@2 ab4@5 ~, ~@3 eb4@4 ~", M: "~@6 ab3 ~", N: "~ c4@2 ~, ab4@3 ~, ~ eb4@5 ~@2", O: "~ ab3@5 ab3 ~",
  P: "~@6 eb4@9 ~, ~@4 ab4@11 ~", Q: "[~@8 ab4@10 ~@2 g4@4 ~@2 bb3@5 ~, ~@6 bb3@4 ~@8 eb4@13 ~]/2",
  R: "[~@4 ab3 ~@9 bb3@4 bb3@2 ~@12]/2",
  S: "[~@4 ab3 ~@9 bb3@4 bb3@2 bb3 ~ [bb3,eb4]@4 [bb3,eb4]@2 [bb3,eb4]@2 bb3 ~]/2", // Eb5
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.7)

// chords · electric guitar clean · "Clean Guitar" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@16 A ~@3 B ~@4 C ~@16 A ~@3 B ~@4 C ~@7 D E ~@31 F G ~@13 B ~@7 B ~@4 C ~
>`.pickRestart({
  A: "~@5 bb3@2 ~", B: "~@4 bb3 ~@11", C: "~@4 ab3 ~@11", D: "~ ab3@5 ~@2", E: "~@15 bb3", F: "~@7 bb3",
  G: "~@5 bb3 ~@10",
})).s("gm_electric_guitar_clean").gain(0.15).pan(0.7)

// chords · distortion guitar · "Dist Guit"
const distortion_guitar = note("<~@20 A ~@4 B C ~@19 A ~@60 A ~@7 A ~@4 B C>".pickRestart({
  A: "~@6 g3 ~", B: "~@14 eb3 ~", C: "eb3@7 ~",
})).s("gm_distortion_guitar").gain(0.26).pan(0.2)

// chords · distortion guitar · "Dist Guit"
const distortion_guitar_2 = note(`<
  ~@8 A@2 B ~ C@2 D ~ E F ~ F ~ F ~ F ~ G H ~@7 A@2 B ~ C@2 D ~ I F ~ J ~ F ~ F ~@6 K L ~@27 A@2 B ~ C@2 D ~@12 F ~ F ~
  F ~ F ~ F ~ F ~ F ~ F ~ G H
>`.pickRestart({
  A: "[~@15 c4@15 ~@2]/2", B: "~@10 bb3@5 ~, ~@2 f3@5 ~, ~@6 db4@9 ~", C: "[~@6 ab4@8 c4@17 ~, ~@2 c4@5 ~@9]/2",
  D: "~@4 [f4,bb4]@3 ~, ~@3 db4@4 ~", E: "bb3@7 bb3 ab4@2 ~@6", F: "~ [ab3,eb4] ~@6", G: "~@14 eb4 ~", H: "eb4@9 ~@7",
  I: "bb3@7 bb3 ab4@3 ~@5", J: "~@2 [ab3,eb4]@3 ~@11", K: "~@5 eb4@3", L: "ab3",
})).s("gm_distortion_guitar").gain(0.19).pan(0.7)

// chords · distortion guitar · "Dist Guit" · soft notes
const distortion_guitar_soft = note("<~@16 A ~@3 B ~@4 C ~@16 A ~@3 B ~@4 C ~@55 B ~@7 B ~@4 C ~>".pickRestart({
  A: "~@5 bb3@2 ~", B: "~@4 bb3 ~@11", C: "~@4 ab3 ~@11",
})).s("gm_distortion_guitar").gain(0.06).pan(0.7)

// chords · rock organ · "Organ 3"
const rock_organ = note("<~@43 A@2 B@2 C@2 D@2 E F G H G H G H G I J ~@60>".pickRestart({
  A: "[[c5,eb5,ab5]@6 [db5,eb5,ab5]@8 [bb4,db5,f5,ab5]@8 [bb4,eb5,ab5]@4 bb4 ~ [bb4,eb5,g5]@3 ~]/2", // Ab Dbsus2 Bbm7 Ebsus4 Eb
  B: "[[c5,eb5,ab5]@6 [db5,eb5,ab5]@8 [bb4,db5,ab5]@7 ~ [bb4,eb5,ab5]@4 bb4 ~ [bb4,eb5,g5]@4]/2", // Ab Dbsus2 Bbm7 Ebsus4 Eb
  C: "[[c5,eb5,ab5]@5 ~ [db5,eb5,ab5]@8 [bb4,db5,ab5]@7 ~ [bb4,eb5,ab5]@4 bb4 ~ [bb4,eb5,g5]@3 ~]/2", // Ab Dbsus2 Bbm7 Ebsus4 Eb
  D: "[[c5,eb5,ab5]@5 ~ [db5,eb5,ab5]@7 ~ [bb4,db5,ab5]@7 ~ [bb4,eb5,ab5]@5 ~ [bb4,eb5,g5]@3 ~]/2", // Ab Dbsus2 Bbm7 Ebsus4 Eb
  E: "[c5,eb5,ab5]@5 ~ [db5,ab5]@3 ~ [eb5,ab5]@4 c5 ~", F: "[c5,eb5,ab5]", G: "[db5,f5,ab5]", H: "[c5,f5,ab5]",
  I: "[bb4,eb5,ab5]", J: "[bb4,eb5,g5]@8 [bb4,eb5,ab5]@3 ~ [bb4,eb5,g5]@3 ~",
})).s("gm_rock_organ").gain(0.24).pan(0.2)

// chords · overdriven guitar · "Overdrive 1"
const overdriven_guitar = note("<~@62 A B C D A E F D C G C H A I C J K ~@43>".pickRestart({
  A: "[eb3,ab3]@2 [eb3,ab3]@2 ~@2 [ab2,db3]@4 [ab2,db3] ~@3 ab2@2", // Ab5 Db5
  B: "bb2 ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,eb3]@4 eb3@2 [bb2,eb3]@2 ~@2", C: "[eb3,ab3]!2 ~ [ab2,db3]@2 [ab2,db3] ~ ab2",
  D: "bb2 ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,eb3]@4 bb2@2 [bb2,eb3] ~@3", // Bb5 Eb5
  E: "bb2 ~ [bb2,f3]@2 [bb2,f3] ~ [bb2,eb3]@4 [bb2,eb3]@2 [bb2,eb3] ~ eb3 ~", // Bb5 Eb5
  F: "[eb3,ab3]@2 [eb3,ab3] ~@3 [ab2,db3]@4 [ab2,db3]@2 ~@2 ab2@2", // Ab5 Db5
  G: "bb2 ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,eb3]@4 [bb2,eb3]@2 [bb2,eb3] ~ eb3 ~", // Bb5 Eb5
  H: "bb2 ~ [bb2,f3]@2 [bb2,f3] ~ [bb2,eb3]@4 [bb2,eb3]@2 [bb2,eb3] ~@3", // Bb5 Eb5
  I: "bb2 ~ [bb2,f3]@2 [bb2,f3] ~ [bb2,eb3]@3 ~ [bb2,eb3]@2 [bb2,eb3]@2 ~@2", // Bb5 Eb5
  J: "bb2 ~ [bb2,f3] ~ [bb2,f3] ~ [bb2,eb3]@4 ~@2 [bb2,eb3]@2 eb3 ~", K: "bb2@3 ~@5",
})).s("gm_overdriven_guitar").gain(0.19).pan(1)

// chords · overdriven guitar · "Overdrive 1" · soft notes
const overdriven_guitar_soft = note("<~@63 A ~ B ~@3 B C ~@2 D ~@3 E ~@44>".pickRestart({
  A: "~@10 bb2@2 ~@2 eb3 ~", B: "~@10 eb3@2 ~@2 eb3 ~", C: "~@3 g2@2 ~@3", D: "~@14 eb3 ~",
  E: "~@10 [bb2,eb3]@2 ~@2 bb2 ~", // Eb5
})).s("gm_overdriven_guitar").gain(0.1).pan(1)

// other · distortion guitar · "Lead Dist Guit"
const distortion_guitar_3 = note("<~@62 A@2 B C D@4 E@3 F@2 G@2 H I ~@33 A@2 B C J@5 K>".pickRestart({
  A: "[ab3@4 c4@2 db4 ~ eb4!2 ~ eb4 eb4@2 eb4 eb4@3 eb4@4 eb4@2 eb4@2 f4 ~ f4@2 ab4 ~]/2", B: "ab4@2 g4 ~ g4@2 f4 ~",
  C: "f4@2 eb4 ~ c4 ~ eb4@2 ~@2 c4@6",
  D: "[ab3@4 c4 ~ bb3@4 db4@3 ~ c4@4 eb4@2 f4@2 g4@2 ab4@2 bb4 ~ bb4@9 ~ bb4@8 bb4@5 ~ ab4 bb4 ~ g4@3 ab4@3 ~ ab4 ~, ~@54 ab4@3 ~@7]/4",
  E: "[~@4 ab4@2 bb4 ~ c5@2 db5@2 eb5@2 eb5@7 ~ eb5@4 eb5@4 eb5@8 eb5@6 ~@2 [db5,eb5] c5]/3", // Dbsus2
  F: "[db5@4 ~@2 bb4 c5 db5 eb5 db5 c5 db5 c5 bb4 c5@2 ~ bb4@4 ab4 f4 ab4@4 f4@2 eb4 c4]/2",
  G: "[eb4@4 c4 bb3 c4 bb3 ab3 bb3 c4 eb4 f4 eb4 f4 ab4@5 ~ bb4@9 ab4@2]/2", H: "ab5@10 f5 eb5 f5 eb5 f5 ab5",
  I: "f5@9 ~@7",
  J: "[ab3@4 c4 ~ bb3@4 db4@3 ~ c4@4 eb4@2 f4@2 g4@2 ab4@2 bb4 ~ bb4@9 ~ bb4@8 bb4@5 ~ ab4 bb4 ~ g4@3 ab4@3 ~ ab4@4 ~@4 bb4@3 ~ bb4@5 ~, ~@54 ab4@3 ~@23]/5",
  K: "bb4@5 ~@3",
})).s("gm_distortion_guitar").gain(0.45)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@3 A ~@3 A@2 ~@20 A ~@3 A@2 ~@20 A B ~@2 B ~@5 A ~ A@2 ~@2 A@3 ~@2 C A ~@2 A ~@3 A@2 ~@9 A@6 ~@21
>`.pickRestart({
  A: "~@7 x", B: "~@3 x ~@4", C: "~@5 x ~ x",
})).gain(0.32)

// drums · rim
const rim = s("rim").struct("<~ A@14 ~@12 A@14 ~@37 A@14 ~@2 A@8 ~@20>".pickRestart({
  A: "~ x ~ x",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct("<~@15 A B C@7 D A ~@15 A B C@9 E F@8 G C@16 ~@14 H I ~@9 J C@16 A ~>".pickRestart({
  A: "~@3 x", B: "~@4 x ~@3 x ~@2 x!2 ~@3", C: "~ x ~ x", D: "~@3 x!2 ~@7 x ~@3", E: "~@3 x!2 ~@3 x ~@2 x ~@4",
  F: "~ x", G: "~@2 x ~ x!2 ~@2 x ~ x ~ x!2 ~@2", H: "~@6 x!2", I: "x!7 ~", J: "~@4 x ~@2 x ~@2 x ~ x ~ x!2",
})).gain(0.8)

// … 66 more lines