Strudelify
life is a highway cover art

Life Is A Highway: Refueled Duets

life is a highway

Rascal Flatts

KeyF majorTempo102 bpm
0:00/0:00
// life is a highway — Rascal Flatts
// 102 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (2/4 at bar 1, 4/4 at bar 1) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: ch 8 "Electric Guitar (Tablature)" named as a guitar, played on electric guitar clean (its electric bass finger patch is not one); ch 12 "Electric Guitar" named as a guitar, played on electric guitar clean (its electric bass finger patch is not one)
// note: duplicate parts dropped: ch 5 "Electric Guitar (Tablature)" overdriven guitar (copy of ch 15 "Electric Guitar" overdriven guitar)
// note: Transcription provider: pdmx. https://musescore.com/score/5847182; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 119 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): Electric Guitar, Electric Guitar.
setcpm(102/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 · distortion guitar · "Electric Guitar"
const distortion_guitar = note(`<
  ~@8 A B@2 C ~@13 D E F G H E F I ~@12 D E F G H E F J K L M@2 N L M O ~@9 P@2 Q R S@2 T U ~@3 V W ~@18 X@2 ~@3 Y Z AA
  AB AC AD AE AF AG AH AI AJ AK
>`.pickRestart({
  A: "~@10 [c4,db4] d4 ~@2 g4 ~", B: "[g4@11 f4 ~@4]/2", C: "~@4 c5 ~@5 a4@2 ~@4", D: "~@2 a3@3 g3@3 f3@2 ~@2 f3@4",
  E: "~@2 f3@3 e3@3 c3@2 ~@2 c3@4", F: "~@2 f3@3 c3@3 g3@2 ~@2 g3@4", G: "~@2 f3@3 [f2,c3,f3]@3 g3@2 ~@2 g3@4",
  H: "a3 c4 a3 g3 f3 ~ f3@2", I: "~ f3!2 c3 g3 ~ g3@2", J: "~ f3!2 c3 g3 ~ [c3,c4]@2", K: "~@2 a3@3 g3@3 ~@8",
  L: "~@2 [bb2,bb3]@3 [a2,e3,a3]@3 ~@8", M: "~@4 g3 ~ g3@2", N: "a3 ~ a3 g3 ~@4", O: "~@4 f3@2 c3@2 g3 ~@3 g3@4",
  P: "[~@2 c5@3 c5@3 c5@3 c5@3 c5@6 c5 a4 g4 a4!2 g4 ~ eb4@5]/2", Q: "~ d4@3", R: "db4 [db4,d4] c4@4 ~@6 d4@2 f4@2",
  S: "[f4 a4 c5@2 ~@2 f5@2 g5@10 g5@2 ~ g5@2 ~ g5@2 ~ g5@4 f5]/2", T: "d5 c5 f5!2 d5 c5 d5 c5 a4 c5 a4 c5 g4 f4 g4!2",
  U: "f4@7 f5 d5 a4 g4 f4 g4 f4 [c4,d4] c4", V: "d4 ~", W: "b4 ~", X: "[~@12 g4@8 f4 g4 g4@5 ~ eb4 ~@3]/2",
  Y: "~@10 c5@2 d5 ~ d5 ~", Z: "g5@8 ~ f5 g5 ~@2 d5 ~@2, ~@4 g5 ~@3", AA: "~ c5 ~@2 f5 ~@2 d5 ~ f5@2 ~@3 g5 ~",
  AB: "g5@2 g5@2 g5@2 f5 g5 ~ g5@2 g5@5", AC: "bb5 a5 ~ bb5 a5 ~ g5@2 ~ g5 d5@2 ~@4", AD: "g5@5 g5 f5 d5 ~@8",
  AE: "g4@4 f4 ~ g4 g4@7 ~@2", AF: "d4 ~@9 c5@2 d5 ~ d5 ~", AG: "g5@8 ~ g5!3 g5@4, ~@4 g5 ~@3",
  AH: "~@2 a5@3 ~@4 f5 d5 ~@5, ~@4 g5 ~@3", AI: "~@5 g4 f4 d4 ~@4 g5 ~ d5 ~",
  AJ: "g4 ~ d4 f4 g5 ~ d5 f5 ~ f4 d4 ~@5, ~@4 g4 ~@3", AK: "c5!2 d5 f5@8 ~@5",
})).s("gm_distortion_guitar").gain(0.3)

// chords · electric guitar clean · "Electric Guitar (Tablature)"
const electric_guitar_clean = note(`<
  ~ A B A C D E F@2 G E F H I J K L I J K@2 M N O P Q R S T U V S W X Y Z AA AB AC AD K AE AF AG AH Q R S T U V S AI AJ
  AK F AL AM AK F AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB AY AZ BC BD BE BF BG BH BI A@3 BJ@2 BK BL D E F H BM BN
  BO BP BQ BR BS BT G E F H D E F AL AM E F H BQ BR BU H
>`.pickRestart({
  A: "f2!2 [c4,f4,c5]@3 [c4,f4,c5]@3 [c4,f4,c5]@2 f2!2 [c4,f4,c5]!4", // F5
  B: "f2!2 [c4,f4,c5]@3 [c4,f4,c5]@3 [c4,f4,c5]@2 [bb1,b1,c2,db2,f2] [d2,eb2,e2,f2,gb2,g2] [ab2,a2,c4,f4,c5] [c4,f4,c5]!3, ~@3 bb2", // F5 Bbm F F5
  C: "f2!2 [c4,f4,c5]@3 [c4,f4,c5]@3 [c4,f4,c5] [d4,g4,d5] [bb1,b1,c2,db2,d4,g4,d5] [d2,eb2,e2,f2,gb2,g2,d4,g4,d5] [ab2,a2,d4,g4,d5] [c4,f4,c5]!3, ~@3 bb2", // F5 G5 Dsus4 F5
  D: "f2!2 [d2,c4,f4,c5]@3 [c2,c4,f4,c5]@3 [c4,f4,c5]@2 f2!2 [c4,f4,c5]!4, ~@2 bb1!2", // Dm7 F5
  E: "f2!2 [bb1,c4,f4,c5]@3 [a1,c4,f4,c5]@3 [c4,f4,c5]@2 f2!2 [c4,f4,c5]!4, ~@2 f1!2", // Bbsus2 F F5
  F: "f2!2 [bb1,c4,f4,c5]@3 [f1,c4,f4,c5]@3 [c4,f4,c5]@2 f2!2 [c4,f4,c5]!4, ~@2 c2!2", // Bbsus2 F5
  G: "~ f2 [f2,c4,f4,c5]@2 ~@2 c2@2 [c4,f4,c5]@2 f2!2 [c4,f4,c5]!4, [d2,f2] ~ d2 ~ bb1@2 bb1@2, ~@5 [c4,f4,c5]@3 ~@8", // F5 Dm F5
  H: "f2!2 bb1 a1 bb1 a1 f1@2 [c4,f4,c5]@2 f2!2 [c4,f4,c5]!4, ~@2 [c4,f4,c5]@3 [c4,f4,c5]@3 c2@4 c2@4", // F5
  I: "[bb1,bb2,f3,bb3]@2 [bb1,bb2,f3,bb3]@2 [bb1,bb2,f3,bb3]@2 [bb1,bb2,f3,bb3]@2 [bb1,bb2,f3,bb3]@2 [bb1,bb2,f3,bb3]@2 [bb1,bb2,f3,bb3]@2 ~ a1, ~@7 [bb1,bb2,f3,bb3]", // Bb5
  J: "[f1,f2,c3,f3]@2 [f1,f2,c3,f3]@2 [f1,f2,c3,f3]@2 [f1,f2,c3,f3]@2 [f1,f2,c3,f3]@2 [f1,f2,c3,f3]@2 [f1,f2,c3,f3]@2 ~ b1, ~@7 [bb1,f2,c3,f3]", // F5 Bbsus2
  K: "[c2,c3,g3,c4]!8", // C5
  L: "[c2,c3,g3,c4]@2 [c2,c3,g3,c4]@2 [c2,c3,g3,c4]@2 [c2,c3,g3,c4]@2 [c2,c3,g3,c4]@2 [c2,c3,g3,c4]@2 [c2,c3,g3,c4]@2 ~ a1, ~@7 [c2,c3,g3,c4]", // C5
  M: "~@2 d2@2 ~ d2 ~@2 d2@4 d2@4, [d3,a3], d2 a4@7, ~ [d4,e4]@15", // D5 Dsus2
  N: "~@2 c2@2 ~ c2 ~@2 c2@4 c2@4, [c3,g3], ~ [c4,d4]@15, ~ g4@7", // C5 Csus2
  O: "~@2 bb1@2 ~ bb1 ~@2 bb1@4 bb1@4, [bb2,f3], ~ [bb3,c4]@15, ~ f4@7", // Bb5 Bbsus2
  P: "[g1,g2,d3,g3]@2 [g1,g2,d3,g3]@2 [g1,g2,d3,g3]@2 [g1,ab1,a1,bb1,g2,d3,g3] [b1,c2,db2,d2,eb2,e2] [f2,gb2,g2,d3,g3] g2 [g2,d3,g3]@2 [g2,d3,g3]@2 [g2,d3,g3]@2", // G5 Gm G7 G5
  Q: "~@2 d2@2 ~ c2@2 ~ bb1@4 bb1@4", R: "~@2 bb1@3 a1@2 ~ f1@4 f1@4", S: "~@2 bb1@2 ~ f1@2 ~ c2@4 c2@4",
  T: "~@2 bb1 a1 bb1 a1 f1@2 c2@4 c2@4", U: "d2 f2 d2 c2 bb1@2 bb1@2", V: "~@2 bb1@3 a1@3 f1@4 f1@4",
  W: "~@2 bb1 a1 bb1 a1 f1@2 c2@2 c2@2 c2@2 c2@2",
  X: "[bb1,bb2,f3]@2 [bb1,bb2,f3]@2 [bb1,bb2,f3]@2 [bb1,bb2,f3]@2 [bb1,bb2,f3]@2 [bb1,bb2,f3]@2 [bb1,bb2,f3]@2 ~ a1, ~@7 [bb1,bb2,f3]", // Bb5
  Y: "[f1,f2,c3]!5 [a1,f2,c3] [bb1,f2,c3] [b1,f2,c3]", Z: "[c2,c3,g3]!7 [c2,c3,g3,c4]",
  AA: "[c2,c3,g3]@2 [c2,c3,g3]@2 [c2,c3,g3]@2 [c2,c3,g3]@2 [c2,c3,g3]@2 [c2,c3,g3]@2 ~@3 a1, ~@6 [c2,c3,g3] [c3,g3], ~@13 d2@2 ~", // C5
  AB: "[bb1,bb2,f3]@2 [bb1,bb2,f3]@2 [bb1,bb2,f3]@2 [bb1,bb2,f3]@2 ~ a1 [g1,bb2,f3]@2 [ab1,bb2,f3]@2 [a1,bb2,f3,bb3]@2, ~@4 [bb1,bb2,f3] ~@3", // Bb5 Gm7 Bb7 Bbmaj7 Bb5
  AC: "[f1,f2,c3,f3]@2 [f1,f2,c3,f3]@2 [f1,f2,c3,f3]@2 [f1,f2,c3,f3]@2 [f1,f2,c3,f3]@2 [f1,f2,c3,f3]@2 [f1,f2,c3,f3]@2 ~ bb1, ~@7 [f1,f2,c3,f3]", // F5
  AD: "[c2,c3,g3,c4]@2 [c2,c3,g3,c4]@2 [c2,c3,g3,c4]@2 [c2,c3,g3,c4]@2 ~ g1 [a1,c3,g3,c4]@2 [bb1,c3,g3,c4]@2 [b1,c3,g3,c4]@2, ~@4 [c2,c3,g3,c4] ~@3", // C5 Am7 C7 Cmaj7 C5
  AE: "d2@2 [d2,d3,a3,d4]@3 [d3,a3,d4]@3 d2@4 d2@4, ~@5 d2 ~@2 [d3,a3,d4]@8", // D5
  AF: "~@2 [c2,c3,g3,c4]@3 [c3,g3,c4]@3 c2@4 c2@4, ~@5 c2 ~@2 [c3,g3,c4]@8", // C5
  AG: "bb1@2 [bb1,bb2,f3,bb3]@3 [bb2,f3,bb3]@3 bb1@4 [bb1,b1,c2] [db2,d2,eb2,e2,f2,gb2] [g2,ab2,a2] ab2, ~@5 bb1 ~@2 [bb2,f3,bb3]@8", // Bb5
  AH: "[g2,d3,g3]@2 [g2,d3,g3]@2 [g2,d3,g3]@2 ~ eb2 ~ g1 ~ ab1 [g2,d3,g3]@2 [g2,d3,g3]@2, ~@3 [e2,g2,d3,g3] [d2,g2,d3,g3] [a1,g2,d3,g3] g1@2", // G5 Em7 G5 Dsus4
  AI: "~@2 bb1 a1 bb1 a1 f1@2 c2@2 c2@2 g1 a1 c2@2",
  AJ: "~ f2 [d2,c4,f4,c5]@3 [c2,c4,f4,c5]@3 [c4,f4,c5]@2 f2!2 [c4,f4,c5]!4, [d2,f2] ~@3 bb1@2 bb1@2", // Dm7 F5 Dm
  AK: "~ f2 [a1,c4,f4,c5]@2 ~@2 c2@2 [c4,f4,c5]@2 f2!2 [c4,f4,c5]!4, [bb1,f2] ~ g1 ~ f1@2 f1@2, ~@5 [c4,f4,c5]@3 ~@8", // F F5 Bb5 F5
  AL: "f2!2 bb1 a1 bb1 a1 f1@2 [c2,c4,f4,c5]@2 [a1,f2] f2 [c4,f4,c5]!2 [c2,c4,f4,c5] [c4,f4,c5], ~@2 [c4,f4,c5]@3 [c4,f4,c5]@3 ~@3 a1@3 ~@2", // F5 Dm F5
  AM: "~ f2 [f2,c4,f4,c5]@2 ~@2 c2@2 [bb1,c4,f4,c5]@2 ~ f2 [c4,f4,c5]!4, [d2,f2] ~ d2 ~@2 [bb1,f2] bb1@2, ~@5 [c4,f4,c5]@3 ~@8", // F5 Bbsus2 F5 Dm Bb5 F5
  AN: "f2!2 bb1 a1 bb1 a1 f1@2 [c4,f4,c5]!8, ~@2 [c4,f4,c5]@3 [c4,f4,c5]@3 c2@4 c2@4", // F5
  AO: "[g1,bb2,f3,bb3]@2 [g1,bb2,f3,bb3]@2 [g1,bb2,f3,bb3]@2 [g1,bb2,f3,bb3]@2 [g1,bb2,f3,bb3]@2 [g1,bb2,f3,bb3]@2 [g1,bb2,f3,bb3]@2 ~ g1, ~@7 [g1,bb2,f3,bb3]", // Gm7
  AP: "[bb1,bb2,f3,bb3]@2 [bb1,bb2,f3,bb3]@2 [bb1,bb2,f3,bb3]@2 [g1,bb2,f3,bb3]@2 [bb1,bb2,f3,bb3]@2 [bb1,bb2,f3,bb3]@2 [bb1,bb2,f3,bb3]@2 [bb1,bb2,f3,bb3] [c2,c3,g3,c4]", // Bb5 Gm7 Bb5 C5
  AQ: "[d2,d3,a3,d4]@2 [d2,d3,a3,d4]@2 [d2,d3,a3,d4]@2 ~ c2 ~ c2 [d2,d3,a3,d4]@2 [d2,d3,a3,d4]@2 [d2,d3,a3,d4] a1, ~@3 [d2,d3,a3,d4]!2 ~@3", // D5
  AR: "[c2,c3,g3,c4]@2 [c2,c3,g3,c4]@2 [c2,c3,g3,c4]@2 [c2,c3,g3,c4]@2 [c2,c3,g3,c4]@2 [c2,c3,g3,c4]@2 ~ e1 [f1,c3,g3,c4] ~, ~@6 [c2,c3,g3,c4] ~", // C5 Fsus2 C5
  AS: "[g1,bb2,f3,bb3]@2 [g1,bb2,f3,bb3]@2 [g1,bb2,f3,bb3]@2 ~ f1 ~ f1 [g1,bb2,f3,bb3]@2 [g1,bb2,f3,bb3]@2 ~ g1, ~@3 [g1,bb2,f3,bb3]!2 ~@2 [g1,bb2,f3,bb3]", // Gm7
  AT: "[bb1,bb2,f3,bb3]@2 [bb1,bb2,f3,bb3]@2 [bb1,bb2,f3,bb3]@2 [bb1,bb2,f3,bb3]@2 [bb1,bb2,f3,bb3]@2 [bb1,bb2,f3,bb3]@2 [bb1,bb2,f3,bb3]@2 [f2,gb2,g2,ab2,bb2,f3,bb3] [a2,bb2,b2,c3,db3,d3,g3,c4]", // Bb5
  AU: "[d3,f3,a3,d4]@2 ~ a1 [d3,e3,a3,d4]@2 ~ a1 [d3,a3,d4]@2 [d3,a3,d4]@2 [a2,d3,a3,d4]@2 [d3,a3,d4] ~, [eb3,e3] ~ [d3,a3,d4]@2 ~@2 [d3,a3,d4]@2 ~@8", // Dm Dsus2 D5 Emaj7 D5
  AV: "[c3,g3,c4]@2 ~ g2 ~ g2 [d2,c3,g3,c4]@2 [c2,c3,g3,c4]@2 [c2,c3,g3,c4]@2 [c2,c3,g3,c4]@2 [g2,ab2,c3,g3,c4] [a2,bb2], ~ [c3,g3,c4]!2 ~@5", // C5 Csus2 C5 Abmaj7 Bbmaj7 C5
  AW: "[b2,c3,g3,c4]@2 [c3,g3,c4]@2 [c3,g3,c4]@2 [c3,g3,c4]@2 [c3,g3,c4]@2 [c2,db2,d2,eb2,c3,g3,c4] [e2,f2,gb2,g2,ab2,a2] ~ [a2,bb2] [gb2,g2,ab2,c3,g3,c4] [e2,f2], ~@6 [bb2,b2,c3,g3,c4] ~", // Cmaj7 C5 Cm Bbmaj7 Ab7 Fmaj7 C7
  AX: "d2@2 d2@2 d2 a1 c2 a1 bb1@2 bb1@2 bb1@2 bb1!2, [bb2,f3,bb3], eb2 ~@15", AY: "bb1 a1 g1 c2 f1!4",
  AZ: "f1@2 bb1@2 ~ f1 ~@2 c2@2 c2@2 c2@2 c2@2", BA: "c2@2 bb1 a1 bb1 a1 f1@2 c2@2 c2@2 c2@2 c2@2", BB: "d2!3 c2 bb1!4",
  BC: "c2@2 bb1 a1 bb1 a1 f1@2 c2@4 c2@4", BD: "d2@5 d2 a1 d2", BE: "c2", BF: "bb1 ~ bb1 ~ bb1 ~ bb1 f1",
  BG: "g1@2 g1@2 g1@2 g1@2 g1@2 g1@2 g1@2 a2 ab2", BH: "g2@2 g2@2 g2@2 e2 eb2 d2 g1 a1 ab1 g1@4",
  BI: "f2!2 [c4,f4,c5]@3 [c4,f4,c5]@3 [c4,f4,c5]@2 f2!2 [c4,f4,c5]!4, c3 ~@3", // F5
  BJ: "[~ f2 f3 d3@2 ~ c3@2 [c4,f4,c5]@2 f2!2 [c4,f4,c5]!4 f2!2 [bb2,c4,f4,c5]@3 [a2,c4,f4,c5]@3 [f2,c4,f4,c5]@2 f2!2 [c4,f4,c5]!4, [f2,d3]@2 [c4,f4,c5]@3 [c4,f4,c5]@3 bb2@10 ~@14]/2", // F5 Bbsus2 F F5 Dm F5
  BK: "f2!2 [a1,c4,f4,c5]@3 [bb1,c4,f4,c5]@3 [c4,f4,c5]@2 f2!2 [c4,f4,c5]!2 [c3,db3,d3,eb3,c4,f4,c5] [e3,f3,gb3,g3,ab3,a3,c4,f4,c5], ~@4 c2@3 ~", // F Bbsus2 F5 Fmaj7
  BL: "[f2,bb3,b3,c4] f2 [c4,f4,c5]@2 f3 g3 g3@2 [c4,f4,c5]@2 f2!2 [c4,f4,c5]!4, ~@5 [c4,f4,c5]@3 c3@4 g2@4", // Fsus4 F5
  BM: "~ f2 f3 d3@2 a1 c3 a1 [c4,f4,c5]@2 f2!2 [c4,f4,c5]!3 [f2,c4,f4,c5], [f2,d3]@2 [c4,f4,c5]@3 [c4,f4,c5]@3 bb2@4 bb2@3 ~", // F5 Dm F5
  BN: "~ f2 [a2,c4,f4,c5]@2 ~@2 e2@2 [f2,c4,f4,c5]@2 ~ f2 [d2,c4,f4,c5] [c4,f4,c5] [c2,c4,f4,c5] [c4,f4,c5], [f2,bb2] ~ g2 ~@2 [e2,f2] ~@2, ~@5 [c4,f4,c5]@3 ~@8", // F F5 Dm7 F5 Bb5 Fmaj7 F5
  BO: "~ f2 [bb1,c4,f4,c5]@3 [f1,c4,f4,c5]@3 [c4,f4,c5]@2 f2!2 [c4,f4,c5]!4, [bb1,f2] ~@3 c2@2 c2@2", // Bbsus2 F5 Bb5
  BP: "f2!2 [bb1,c4,f4,c5]@2 ~@2 f1@2 [c4,f4,c5]@2 f2!2 [c4,f4,c5]!4, ~@2 a1 ~ c2@2 c2@2, ~@5 [c4,f4,c5]@3 ~@8", // Bbsus2 F5
  BQ: "~ f2 [d2,c4,f4,c5]@2 ~@2 c2@2 [bb1,c4,f4,c5]@2 ~ f2 [bb1,c4,f4,c5] [c4,f4,c5] [bb1,c4,f4,c5] [c4,f4,c5], [d2,f2] ~ d2 ~@2 [bb1,f2] ~@2, ~@5 [c4,f4,c5]@3 ~@8", // Dm7 Bbsus2 F5 Bbsus2 F5 Dm Bb5 F5
  BR: "~ f2 [a1,c4,f4,c5]@2 ~@2 c2@2 [f1,c4,f4,c5]@2 ~ f2 [f1,c4,f4,c5] [c4,f4,c5] [f1,c4,f4,c5] [c4,f4,c5], [bb1,f2] ~ f1 ~@2 [f1,f2] ~@2, ~@5 [c4,f4,c5]@3 ~@8", // F F5 Bb5 F F5
  BS: "f2!2 [bb1,c4,f4,c5]@3 [f1,c4,f4,c5]@3 [c2,c4,f4,c5]@2 ~ f2 [c2,c4,f4,c5] [c4,f4,c5] [c2,c4,f4,c5] [c4,f4,c5], ~@5 [c2,f2] ~@2", // Bbsus2 F5
  BT: "~ f2 bb1 a1 bb1 a1 f1@2 [c2,c4,f4,c5]@2 ~ f2 [g1,c4,f4,c5] [a1,c4,f4,c5] [c2,c4,f4,c5] [c4,f4,c5], [c2,f2]@2 [c4,f4,c5]@3 [c4,f4,c5]@3 ~@2 [c2,f2]@2 ~@4", // F5 Csus4 F F5
  BU: "f2!2 [bb1,c4,f4,c5]@3 [c4,f4,c5]@3 [c2,c4,f4,c5]@2 ~ f2 [c2,c4,f4,c5] [c4,f4,c5] [c2,c4,f4,c5] [c4,f4,c5], ~@5 f1 ~@4 [c2,f2]@2 ~@4", // Bbsus2 F5
})).s("gm_electric_guitar_clean").gain(0.3)

// chords · overdriven guitar · "Electric Guitar"
const overdriven_guitar = note(`<
  ~@5 A B C@2 D B C E ~@6 F@2 G H I J A B C@2 D B C E K@2 L@2 M N F@2 G H O ~ A B C@2 D B C E A B C@2 D B C E ~@9 A B
  C@2 D B C E P Q R S@2 ~@8 A B C@2 D B C E A B C@2 D B C E A B C@2 D B C E A B C@2
>`.pickRestart({
  A: "~@2 [d3,a3,d4]@3 [c3,g3,c4]@3 [bb2,f3,bb3]@2 ~@2 [bb2,f3,bb3]@4", // D5 C5 Bb5
  B: "~@2 [bb2,f3,bb3]@3 [a2,e3,a3]@3 [f2,c3,f3]@2 ~@2 [f2,c3,f3]@4", // Bb5 A5 F5
  C: "~@2 [bb2,f3,bb3]@3 [f2,c3,f3]@3 [c3,g3,c4]@2 ~@2 [c3,g3,c4]@4", // Bb5 F5 C5
  D: "[d3,a3,d4] [f3,c4,f4] [d3,a3,d4] [c3,g3,c4] [bb2,f3,bb3] ~ [bb2,f3,bb3]@2", // D5 F5 D5 C5 Bb5
  E: "~ [bb2,f3,bb3]!2 [f2,c3,f3] [c3,g3,c4] ~ [c3,g3,c4]@2", F: "~@6 [c3,g3,c4]!2", G: "a4", H: "e5",
  I: "[bb2,f3,bb3,d4,f4,bb4]", J: "[g2,d3,g3,b3,d4,g4]", K: "[f4@14 g4 a4]/2", L: "g4/2", M: "f4@3 ~@13",
  N: "~@6 g4@2 g4@2 f4 bb3@4 bb3", O: "d5 g4@9 f4 d4@5", P: "[d3,a3,d4,e4,a4]", Q: "[c3,g3,c4,d4,g4]",
  R: "[bb2,f3,bb3,c4,f4]", S: "[g2,d3,g3,b3,d4,g4]/2",
})).s("gm_overdriven_guitar").gain(0.3)

// chords · electric guitar clean · "Electric Guitar"
const electric_guitar_clean_2 = note(`<
  ~@8 A B@2 C ~@11 D ~ E F G H I F G J ~@12 E F G H I F G K L M N@2 O M N P ~@9 Q@2 R S T@2 U V ~@3 W X ~@18 Y@2 ~@3 Z
  AA AB AC AD AE AF AG AH AI AJ AK AL
>`.pickRestart({
  A: "~@10 [c4,db4] d4 ~@2 g4@2", B: "[g4@11 f4@4 ~]/2", C: "~@2 c5@3 a4 ~@2", D: "~@7 f1",
  E: "~@2 a3@3 g3@3 f3@2 ~@2 f3@4", F: "~@2 f3@3 e3@3 c3@2 ~@2 c3@4", G: "~@2 f3@3 c3@3 g3@2 ~@2 g3@4",
  H: "~@2 f3@3 [f2,c3,f3]@3 g3@2 ~@2 g3@4", I: "a3 c4 a3 g3 f3 ~ f3@2", J: "~ f3!2 c3 g3 ~ g3@2",
  K: "~ f3!2 c3 g3 ~ [c3,c4]@2", L: "~@2 a3@3 g3@3 ~@8", M: "~@2 [bb2,bb3]@3 [a2,e3,a3]@3 ~@8", N: "~@4 g3 ~ g3@2",
  O: "a3 ~ a3 g3 ~@4", P: "~@2 f3 c3 g3 ~ g3@2",
  Q: "[~@2 c5@3 c5@3 c5@3 c5@3 c5@6 ~ a4 ~ a4 ~ g4 ~ eb4@5, ~@10 c5 g4 a4 ~@3]/2", R: "~ d4@3",
  S: "db4 [db4,d4] c4@4 ~@6 d4@2 f4@2", T: "[~ a4 c5@2 ~@2 f5@2 g5@10 g5@2 ~ g5@2 ~ g5@2 ~ g5@4 f5, f4 ~@15]/2",
  U: "~ c5 ~ f5 d5 c5 d5 c5 ~ c5 ~ c5 ~ f4 ~ g4, d5 f5 ~@2 a4!2 g4!2", V: "f4@7 f5 d5 a4 g4 f4 g4 f4 [c4,d4] c4",
  W: "d4 ~", X: "b4 ~", Y: "[~@12 g4@8 f4 g4 g4@5 ~ eb4 ~@3]/2", Z: "~@10 c5@2 d5 ~ d5 ~",
  AA: "g5@8 g5 f5 g5 ~@2 d5 ~@2", AB: "~ c5 ~@2 f5 ~@2 d5 ~ f5@2 ~@3 g5@2", AC: "g5@2 g5@2 g5@2 f5 g5 ~ g5@2 g5@5",
  AD: "bb5 a5 ~ bb5 a5 ~ g5@2 ~ g5 d5@2 ~@4", AE: "g5@5 g5 ~ d5 ~@8, ~@3 f5 ~@4", AF: "g4@4 f4 ~ g4 g4@7 ~@2",
  AG: "d4 ~@9 c5@2 d5 ~ d5 ~", AH: "g5@8 g5!4 g5@4", AI: "~@2 a5@4 ~@3 f5 d5@2 ~@4, ~@4 g5 ~@3",
  AJ: "~@5 g4 ~ d4 ~@4 g5@2 d5@2, ~@3 f4 ~@4", AK: "g4@2 ~ f4 g5 ~ d5 f5 ~ f4 d4@2 ~@4, ~ d4 ~@2 g4 ~@3",
  AL: "c5!2 d5 f5@8 ~@5",
})).s("gm_electric_guitar_clean").gain(0.3)

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

// drums · snare
const snare = s("sd").struct(`<
  A B@3 C B D B E B@3 F B@3 D B@3 G B@3 H B@3 I B@3 I B@3 J B D B I B@3 K B D B I B@3 L B@3 M B@3 N B@3 O B P ~ Q ~ B@3
  I B@3 I B@2 R@2 S B@3 ~ B@3 T B D B I B@3 I B D B I B@3 L B@3 M B@3 N B@3 I
>`.pickRestart({
  A: "~@8 x!5 ~@3", B: "~ x ~ x", C: "~@5 x!2 ~ x!5 ~@2 x", D: "~@4 x ~@4 x ~@2 x ~@3", E: "~@4 x ~@4 x!2 ~@2 x!2 ~",
  F: "~@6 x ~ x ~@3 x!4", G: "~@4 x ~@4 x!2 ~ x ~@3", H: "x ~ x ~@3 x ~ x ~ x ~ x ~@2 x",
  I: "~@4 x ~@3 x ~ x ~ x ~@2 x", J: "~@4 x ~ x ~@2 x ~@2 x ~ x ~", K: "~ x ~@6", L: "~@2 x ~ x ~@3 x ~ x ~ x!4",
  M: "~@4 x ~@3 x!5 ~@2 x", N: "~@4 x ~@3 x ~@2 x!2 ~@2 x", O: "~@4 x ~@4 x ~@2 x ~@2 x", P: "~@4 x ~@2 x ~@4 x ~@3",
  Q: "~@4 x ~@7 x ~@2 x", R: "~@3 x", S: "x ~ x ~ x ~@2 x!2 ~@2 x!2 ~@3", T: "~@10 x!6",
})).gain(0.3)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@4 A ~@3 B ~@3 C ~@11 D ~@3 D ~@3 D ~@7 D ~@3 E ~@3 D ~@7 D ~@3 D ~@8 F ~@3 D ~@3 D ~@4 G ~@3 H ~@3 I ~@3 D ~@3 D ~@3
  D ~@7 D ~@3 D ~@3 D
>`.pickRestart({
  A: "~@2 x ~ x ~@2 x ~@6 x ~", B: "~@12 x ~@2 x", C: "~@5 x ~@2", D: "~@7 x", E: "~@5 x!3 ~@2 x!2 ~@2 x!2",
  F: "~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2", G: "~@10 x ~@2 x!2 ~", H: "~ x ~ x ~ x ~ x", I: "~@3 x ~@4",
})).gain(0.3)

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

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A B@2 ~@16 C ~@3 D E ~@5 E ~@13 E ~ E ~ E ~ E ~ E ~ E ~ E ~ E ~@5 C ~ F@2 ~ E ~ E ~@3 E ~@14 E ~ E ~@3 E ~ E ~ E ~@3
  E ~ E ~ E ~ E ~ E ~ E ~ E ~
>`.pickRestart({
  A: "~ x!7", B: "x!8", C: "~@7 x", D: "~@5 x ~@10", E: "~@5 x ~@2", F: "~ x ~ x ~ x ~ x",
})).gain(0.3)

// drums · high tom
const high_tom = s("ht").struct("<~@44 A ~@15 B ~@8 C ~@12 D ~@3 E ~@3 F ~@23 B ~@4>".pickRestart({
  A: "~@2 x!2", B: "~@9 x ~@6", C: "x!4", D: "~@5 x ~@9 x", E: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x",
  F: "~@4 x ~@2 x!2 ~@7",
// … 14 more lines