Strudelify

Rock Steady

Bryan Adams

KeyF majorTempo116 bpm
0:00/0:00
// Rock Steady — Bryan Adams
// 116 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 1 "DISTORTION" distortion guitar (copy of ch 3 "CLEAN GTR" electric guitar clean)
// note: Full arrangement: all 107 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
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.

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~ A B A B A@3 C A D E F G H G I J K L M D N O P A Q O R S T A B A U A V A W A D E X G H G Y Z AA AB AC AD AE O AF A AG
  O R AH AI AJ AK O AL A AK O AM AJ AN AO AP AQ AR AS AT AU AV AW O AX A AY O AM A AZ O AL A BA O BB BC BD O BE A BF O
  BG BH BI BJ BK@2
>`.pickRestart({
  A: "f1 ~ f1@2 ~@2 f1@2 f1 ~ f1@2 ~@2 f1@2", B: "f1 ~ f1@2 ~@2 f1 ~ f1 ~ a1@2 bb1@2 c2 ~",
  C: "f1 ~ f1@2 ~@2 f1@2 f1 ~ a1@2 bb1@2 c2 ~", D: "f1 ~ f1@2 ~@2 f1@2 f1 ~ a1@2 bb1@2 c2@2",
  E: "c2 ~ c2@2 ~@2 c2@2 c2 ~ c2@2 ~@2 c2@2", F: "c2 ~ c2@2 ~@2 c2@2 c2 ~ c2@2 ~@2 a1@2",
  G: "d2 ~ d2@2 ~@2 a1@2 d2 ~ d2@2 ~@2 f1@2", H: "bb1 ~ bb1@2 ~@2 f1@2 bb1 ~ bb1@2 ~@2 a1@2",
  I: "bb1 ~ bb1@2 ~@2 f1@2 bb1 ~ bb1@2 ~@2 bb1@2", J: "f1 ~ f1@2 ~@2 f1@2 f1 ~ a1@2 bb1@2 f1 ~",
  K: "c2 ~ c2@2 ~@2 c2@2 c2 ~ a1@2 c2@2 d2 ~", L: "d2 ~ d2@2 ~@2 a1@2 d2 ~ d2@2 c2@2 bb1@2",
  M: "bb1@3 ~ bb1@3 ~ d2@2 f2@2 d2 ~ e1@2", N: "c2 ~ c2@2 ~@2 c2@2 c2 ~ f1@2 a1@2 bb1@2",
  O: "bb1 ~ bb1@2 ~@2 bb1@2 bb1 ~ bb1@2 ~@2 bb1@2", P: "bb1 ~ bb1@2 ~@2 bb1@2 bb1 ~ bb1@2 ~@2 ab1@2",
  Q: "f1 ~ f1@2 ~@2 f1@2 f1 ~ f1@2 a1@2 bb1@2", R: "bb1 ~ bb1@2 ~@2 f1@2 bb1 ~ bb1@2 bb1@2 c2@2",
  S: "c2 ~ c2@2 ~@2 c2@2 c2 ~ c2@2 eb2@2 c2@2", T: "bb1 ~ bb1@2 ~@2 bb1@2 d2 ~ f2@2 d2 c2 [ab1,a1,b1] g1",
  U: "f1 ~ f1@2 ~@2 f1@2 bb1 ~ ab1@2 f1@2 eb1@2", V: "f1 ~ f1@2 ~@2 f1@2 f1@2 a1@2 bb1@2 c2@2",
  W: "f1 ~ f1@2 ~@2 f1@2 f1 ~ f1@2 eb1@2 f1@2", X: "c2 ~ c2@2 ~@2 c2@2 c2 ~ a1@2 c2@2 a1@2",
  Y: "bb1 ~ bb1@2 ~@2 bb1@2 d2 ~ f2@2 d2 c2 f1@2", Z: "f1 ~ f1@2 ~@2 f1@2 f1 ~ a1@2 bb1@2 f1@2",
  AA: "c2 ~ c2@2 ~@2 a1@2 c2 ~ c2@2 ~@2 a1@2", AB: "d2 ~ d2@2 ~@2 a1@2 d2 ~ d2@2 c2@2 a1@2",
  AC: "bb1 ~ bb1@2 bb1 ~ bb1@2 d2@2 f2@2 d2 c2 e1@2", AD: "f1 ~ f1@2 ~@2 eb1@2 f1 ~ a1@2 bb1@2 c2@2",
  AE: "c2 ~ c2@2 ~@2 g1@2 c2 ~ f1@2 f1@2 f1@2", AF: "bb1 ~ bb1@2 ~@2 ab1@2 bb1 ~ bb1@2 ~@2 eb1@2",
  AG: "f1 ~ f1@2 g1@2 f1@2 ab1@2 f1@2 bb1@2 ab1@2", AH: "c2 ~ c2@2 ~@2 bb1@2 c2 ~ c2@2 eb2@2 c2@2",
  AI: "bb1 ~ bb1@2 bb1@2 bb1@2 d2 ~ f2@2 d2 c2 [ab1,a1,b1] g1", AJ: "f1 ~ f1@2 ~@2 eb1@2 f1 ~ f1@2 ~@2 eb1@2",
  AK: "f1 ~ f1@2 ~@2 eb1@2 f1 ~ ab1@2 ab1 ~ bb1@2", AL: "bb1 ~ bb1@2 ~@2 bb1@2 bb1 ~ bb1@2 ~@2 eb1@2",
  AM: "bb1 ~ bb1@2 ~@2 f1@2 bb1 ~ bb1@2 bb1@2 eb1@2", AN: "f1 ~ f1@2 ~@2 eb1@2 f1 ~ ab1@2 bb1 ~ db2@2",
  AO: "db2 ~ db2@2 ~@2 db2@2 db2 ~ db2@2 ~@2 db2@2", AP: "db2 ~ db2@2 ~@2 db2@2 db2 ~ db2@2 ~@2 eb1@2",
  AQ: "ab1 ~ ab1@2 ab1 ~ ab1@2 ab1 ~ ab1@2 ab1 ~ gb1@2", AR: "ab1@2 bb1 ab1 b1 ab1 c2 ab1",
  AS: "db2 ~ db2@2 ~@2 db2@2 db2 ~ db2@2 db2 ~ db2@2", AT: "db2 ~ db2@2 db2 ~ db2@2 db2 ~ eb2@2 db2@2 c2@2",
  AU: "c2 ~ c2@2 c2 ~ c2@2 c2 ~ c2@2 c2 ~ g1@2", AV: "c2!5 g2 bb2 g2",
  AW: "[bb2,b2] c3@3 bb2@2 g2@2 f2@2 eb2@2 c2@2 c2 b1", AX: "bb1 ~ bb1@2 ~@2 ab1@2 bb1 ~ bb1@2 ab1@2 f1@2",
  AY: "f1 ~ f1@2 ~@2 f1@2 f1@2 ab1@2 ab1 ~ bb1@2", AZ: "f1 ~ f1@2 ab1@2 f1@2 c2 ~ eb2@2 c2 bb1 [gb1,g1,a1] f1",
  BA: "f1 ~ f1@2 ~@2 f1@2 ab1@2 f1@2 ab1 ~ bb1@2", BB: "bb1 ~ bb1@2 ~@2 f1@2 bb1@2 eb1@2 f1@3 ~",
  BC: "f1 ~ f1@2 ab1@2 f1@2 c3@2 ab2@2 f2@2 f2@2", BD: "f2 ~ eb2@2 c2@2 bb1@2 ab1@2 f1@2 ab1@2 bb1@2",
  BE: "bb1 ~ bb1@2 ~@2 ab1@2 bb1 ~ bb1@2 bb1 ~ eb1@2", BF: "f1 ~ f1@2 ab1@2 f1@2 c2 ~ eb2@2 c2@2 bb1@2",
  BG: "bb1 ~ bb1@2 ~@2 f1@2 bb1@2 f1@2 bb1@2 c2@2", BH: "c2 ~ c2@2 e2@2 c2@2 ab2@2 f2@3 ~ c2@2",
  BI: "bb1@2 bb1@2 ab1@2 f1@4 f1!6", BJ: "f1!16", BK: "[f1!2 f1@11 [ab1,bb1] f1 f2@5 ~@2 f1 e1 [db1,d1,eb1] c1 ~@6]/2",
})).s("gm_electric_bass_finger").gain(0.29)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  A@8 B@8 C@7 D@2 E@5 F@8 B@8 C@7 D@2 G@8 H@8 I@2 J@4 K@3 L@6 M@8 N@4 O@5 P@4
>`.pickRestart({
  A: "[~@14 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@2]/8", // F5
  B: "[~@2 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 c4@2 bb3@2 [c3,g3,bb3] ~@3 c4@2 bb3@2 [c3,g3,bb3] ~@3 c4@2 bb3@2 [c3,g3,bb3] ~@3 c4@2 bb3@2 [c3,g3,bb3] ~@3 [d3,a3,d4]@4 [d3,a3,d4] ~@3 [d3,a3]@4 [d3,a3,d4] ~@3 [c4,f4]@2 [bb2,bb3]@2 [bb2,f3,bb3] ~@3 [bb2,f3,bb3]@4 [bb2,f3,bb3] ~@3 [d3,a3,d4]@4 [d3,a3,d4] ~@3 [d3,a3]@4 [d3,a3,d4] ~@3 [f3,c4,f4]@2, ~@23 [c3,g3]@2 ~@2 [c3,g3]@2 ~@2 [c3,g3]@2 ~@2 [c3,g3]@2 ~@10 f3@2 ~@15]/8", // F5 C7 D5 F5 Bb Bb5 D5 F5 …
  C: "[[bb2,bb3]@2 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~ ab2@2 [f3,bb3]@2 [c3,f3]@2 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 bb3@2 g3@2 [c3,g3,c4] ~@3 c4@2 bb3@2 [c3,g3,bb3] ~@3 [d3,a3,d4]@4 [d3,a3,d4] ~@3 [d3,a3]@4 [d3,a3,d4] ~@3 [c4,f4]@2 [bb2,bb3]@2 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~ ab2@2 bb3@2 c3@2 [c3,f3,c4] ~@3 [f2,c3]@4 [f2,c3,f3]@2 ~@2 bb3@2 g3@2 [c3,g3,c4] ~@3 c4@2 bb3@2 ~@2 [c3,g3]@2 [c3,ab3]@2, ~@7 f2@2 ~@6 [c3,c4]@2 ~@2 [c3,g3]@2 ~@10 f3@2 ~@6 [f2,f3]@2 ~@6 [c3,c4]@2 ~@2 [c3,g3]@2 [f2,f3] ~@2, ~@107 bb2@2 ~@3]/7", // Bb Bb5 F5 C5 C7 D5 F5 Bb …
  D: "[[bb2,f3,bb3]@2 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~@3 [bb2,f3,bb3]@4 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~ ab2@2 [f2,f3,bb3]@2]/2", // Bb5
  E: "[[c3,f3,c4]@2 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~ ab2@2 f3@2 f3@2 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~@3 [bb2,f3,bb3]@4 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~@3 c4@2 bb3@2 [c3,g3,bb3] ~@5 bb3@2 [c3,g3,bb3] ~@3 [bb2,f3,c4]@2, ~@15 [bb2,bb3]@2 ~@14 [c3,g3]@2 ~@2 [c3,g3]@2 ~@3]/5", // F5 Bb5 C7 Bbsus2 Bb C5
  F: "[bb3 ~ [bb2,f3,bb3] ~@5 bb3@2 [bb2,f3,bb3] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@2, ~@3 [bb2,f3]@2 ~@59]/8", // Bb5 F5 Bb5
  G: "[[c3,f3,c4]@2 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~ ab2@2 f3@2 f3@2 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~@3 [bb2,f3,bb3]@4 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~@3 c4@2 bb3@2 [c3,g3,bb3] ~@5 bb3@2 [c3,g3,bb3] ~@3 c4@2 bb3 ~ [bb2,f3,bb3] ~@5 bb3@2 [bb2,f3,bb3] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 ab2@4 [ab2,eb3,ab3]@2, ~@15 [bb2,bb3]@2 ~@14 [c3,g3]@2 ~@2 [c3,g3]@2 ~@2 [bb2,f3]@2 ~@2 [bb2,f3]@2 ~@19]/8", // F5 Bb5 C7 Bb5 F5 Ab5 Bb C5 …
  H: "[[bb2,f3,bb3]@2 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~@3 [bb2,f3,bb3]@4 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~ ab2@2 [f3,bb3]@2 [c3,f3,c4]@2 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~ ab2@2 f3@2 f3@2 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~@3 [bb2,f3,bb3]@4 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~ ab2@2 [f3,bb3]@2 [c3,f3,c4]@2 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~ [db3,ab3,db4]@4, ~@15 f2@2 ~@14 [bb2,bb3]@2 ~@14 f2@2 ~@15]/8", // Bb5 F5 Bb5 F5 Db5 Bb
  I: "[[db3,ab3,db4]@2 [db3,ab3,db4] ~@3 [db3,ab3,db4]@4 [db3,ab3,db4] ~@3 [db3,ab3,db4]@4 [db3,ab3,db4] ~@3 [db3,ab3,db4]@4 [db3,ab3,db4,gb4] ~ [ab3,db4,f4]@2 [ab2,ab3,eb4]@2]/2", // Db5 Dbsus4 Db Ab5
  J: "[eb3@2 [eb3,ab3,eb4] ~@3 [eb3,ab3]@4 [eb3,ab3,eb4] ~@3 [eb3,ab3,eb4]@4 [eb3,ab3,eb4] ~@3 [eb3,ab3]@4 [eb3,ab3,eb4] ~ b2@2 ab3@2 ab3@2 [db3,ab3,db4] ~@3 [db3,ab3,db4]@4 [db3,ab3,db4] ~@3 [db3,ab3,db4]@4 [db3,ab3,db4] ~@3 [db3,ab3,db4]@4 [db3,ab3,db4,gb4] ~ [db3,db4,f4]@2 [bb2,f3,bb3]@2, ~@15 [db3,db4]@2 ~@15]/4", // Ab5 Db5 Dbsus4 Db Bb5 Db
  K: "[[c3,g3,c4]@2 [c3,g3,c4] ~@3 [c3,g3]@4 [c3,g3,c4] ~@3 [c3,g3,c4]@4 [c3,g3,c4] ~@3 [c3,g3]@4 [c3,g3,c4] ~@3 [c3,g3,bb3,e4]@5 ~ [c3,g3,bb3,e4]@4 [c3,g3,bb3,e4]@4 [c3,g3,bb3,e4]@2 [gb3,b3,eb4]@2]/3", // C5 C7 B
  L: "[[bb2,f3,bb3,d4]@2 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~@3 [bb2,f3,bb3]@4 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~ ab2@2 [f3,bb3]@2 [c3,f3,c4]@2 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~ ab2@2 f3@2 f3@2 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~@3 [bb2,f3,bb3]@4 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~ ab2@2 [f2,f3,bb3]@2, ~@15 f2@2 ~@14 [bb2,bb3]@2 ~@15]/6", // Bb Bb5 F5 Bb5 Bb
  M: "[[c3,f3,c4]@2 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~ ab2@2 f3@2 f3@2 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~@3 [bb2,f3,bb3]@4 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~ ab2@2 [f3,bb3]@2 [c3,f3,c4]@2 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~ ab2@2 f3@2 f3@2 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~@3 [bb2,f3,bb3]@4 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~ ab2@2 [f2,f3,bb3]@2, ~@15 [bb2,bb3]@2 ~@14 f2@2 ~@14 [bb2,bb3]@2 ~@15]/8", // F5 Bb5 F5 Bb5 Bb
  N: "[[c3,f3,c4]@2 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~ ab2@2 f3@2 f3@2 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~@3 [bb2,f3,bb3]@4 [bb2,f3,bb3] ~@3 [bb2,f3]@4 [bb2,f3,bb3] ~ ab2@2 [f2,f3,bb3]@2, ~@15 [bb2,bb3]@2 ~@15]/4", // F5 Bb5 Bb
  O: "[[c3,f3,c4]@2 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~@3 [c3,f3,c4]@4 [c3,f3,c4] ~@3 [c3,f3]@4 [c3,f3,c4] ~ ab2@2 f3@2 [f3,eb4]@2 [bb2,f3,bb3]@2 [f3,bb3,d4]@2 ~@2 eb4@2 [bb2,f3,bb3]@2 [f3,bb3,d4]@2 ~@2 eb4@2 [bb2,f3,bb3]@2 [f3,bb3,d4]@2 ~@2 eb4@2 [bb2,f3,bb3]@2 [f3,bb3,d4]@2 c4@2 bb3@2 [c3,g3,bb3]@2 [c3,g3,bb3,e4]@4 [c3,g3]@2 [c3,g3,bb3]@2 [c3,g3,bb3,e4]@4, ~@15 [bb2,bb3]@2 ~@2 [bb2,f3]@2 ~@2 [bb2,f3,bb3]@2 ~@2 [bb2,f3]@2 ~@2 [c3,g3]@2 ~@7]/5", // F5 F7 Bb5 Bb Bb5 Bb Bb5 Bb …
  P: "[[bb2,g3,bb3,e4] ~ [bb2,g3,bb3,e4]@2 ab2@2 ~@12 eb4@32 ~@4 [a3,eb4]@6 ~@4, ~@3 f2@22 ~@7, ~@17 [f3,a3]@34 ~@3 f3@4 ~@6]/4", // Edim Adim F
})).s("gm_electric_guitar_clean").gain(0.34).pan(0.8)

// chords · electric guitar clean · "CLEAN GTR" · soft notes
const electric_guitar_clean_2 = note(`<
  ~ A@10 ~@2 B ~ B C A ~ B C D ~ C@2 A@2 C@2 E@2 A@10 ~@2 B ~ B C A ~ B C D ~ C@2 A@2 C@2 E@2 A@2 C@2 A@2 C@2 A@2 ~@2
  F@2 ~@2 A@2 ~ C@2 A@2 C@2 A@2 C@2 A@2 C@2 A@2 C@2 A@2 C@2 ~@5
>`.pickRestart({
  A: "~@3 c4@2 ~@3", B: "~@3 d4@2 ~@3", C: "~@3 bb3@2 ~@3", D: "~@3 f3@2 ~@3", E: "~@3 c4 ~@4", F: "~@3 eb4@2 ~@3",
})).s("gm_electric_guitar_clean").gain(0.23).pan(0.8)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean_3 = note(`<
  ~ A@5 ~ B@3 ~ C@3 D E@2 F@2 G H I J K L M N K O@3 A@5 ~ B@3 ~ P@2 Q D E@2 F@2 G H I J K L M N K O@3 R@2 K L S T K U V
  W X Y Z AA AB AC@4 AD AE AF@2 AG AH AI AJ AK AE AF@2 AG AH AI AJ AK AE AF@2 AG AH AL AM@3 AN
>`.pickRestart({
  A: "[~ a3 f4 ~@2 a3 f4 ~@2 a3 f4 ~@2 a3 f4 ~@2 a3 f4 ~@2 a3 f4 ~@2 a3 f4 ~@2 a3 f4 eb4@3 ~@6, ~@3 eb4@3 ~ eb4@3 ~ eb4@3 ~ eb4@3 ~ eb4@3 ~ eb4@3 ~ eb4@3 ~@10]/5",
  B: "[~ a3 f4 ~@2 a3 f4 ~@2 a3 f4 ~@2 a3 f4 eb4@3 ~@6, ~@3 eb4@3 ~ eb4@3 ~ eb4@3 ~@10]/3",
  C: "[~ bb3 g4 ~@2 bb3 g4 ~@2 bb3 g4 ~@2 bb3 e4 c4@3 ~@6, ~@3 e4@3 ~ e4@3 ~ e4@3 ~@10]/3",
  D: "~ f3 d4 ~@2 f3 d4 ab3, ~@3 ab3@3 ~@2", E: "[c4 a3 f4 c4@3 bb3@3 f3 d4 ~@2 f3 d4 ab3, ~@11 ab3@3 ~@2]/2",
  F: "[~ a3 f4 ~@2 a3 f4 bb3@2 g3 e4 ~@2 g3 e4 bb3, f3@2 ~ eb4@3 ~@5 bb3@3 ~@2]/2", G: "a3!2 f4 c4 a3@2 c4@2",
  H: "bb3 f3 d4 ~@2 f3 d4 ab3, ~@3 ab3@3 ~@2", I: "~ a3 f4 ~@2 a3 eb4 ab3, f3@2 ~ eb4@3 ~@2",
  J: "g3!2 e4 ~@2 g3 e4 bb3, ~@3 bb3@3 ~@2", K: "[f3,ab3,d4]@3 ~", L: "~@3 f3, ~ f3@5 ~@2, ~ d4@3, ~@3 ab3@5",
  M: "a3 ~@2 eb4@5, f3@3 ~, eb4 f4@3, ~@2 a3@13 ~", N: "~@2 a3 bb3 ~@3 g3, ~@4 c4@3 ~, ~@5 f4@3, ~@3 eb4",
  O: "[~@6 f3 [g3,e4]@2 ~@7 f3 ~@2 ab3@5, ~@2 f3@10 ~@6 g3@13 ~ ab3@5 ~@11, ~@4 d4@10 ~@6 e4@10 d4@5 ~ d4@12, ~@6 ab3@8 bb3@7 ~ bb3@10 ~@2 f3@13 ~]/3", // C
  P: "[~ g3 e4 ~@2 g3 e4 ~@2 g3 e4 ~@2 g3 bb3 a3, ~@3 bb3@3 ~ bb3@3 ~ bb3@3 ~@2]/2", Q: "~@2 f4 d4@4 ~, c4@7 ~",
  R: "[~ a3 f4 ~@2 a3 f4 ~@2 a3 f4 ~@2 a3 f4 bb3, ~@3 eb4@3 ~ eb4@3 ~ eb4@3 ~@2]/2", S: "[a3,eb4]@15 ~, f3@3 ~",
  T: "~@2 [a3,eb4,f4]@5 eb4", U: "~ f3@2 f3, ~@4 [ab3,d4]@11 ~",
  V: "a3 ~@2 eb4@5, [f3,eb4]@3 ~@5, ~@2 a3@13 ~, ~@2 f4@5 ~", W: "~@4 [f3,a3,eb4]@2 [f3,a3,eb4]@3 ~ [f3,a3,eb4]@5 ~",
  X: "[db3,f3,b3]@3 ~", Y: "~@3 ab3, ~ ab3@5 ~@2, ~ f4@3, ~@3 b3@5", Z: "~@4 eb4@11 ~, gb3@15 ~, c3@3 ~",
  AA: "~@4 [gb3,c4]@2 [eb3,gb3,c4]@3 ~ [eb3,gb3,c4]@4 gb4@2", AB: "[ab3,b3,f4]@2 [ab3,b3,f4]@5 [f3,b3]",
  AC: "[b3@3 ~ [ab3,b3,f4]@6 [b3,gb4] ~ [b3,f4]@2 [g3,bb3,e4]@6 [g3,bb3,e4]@14 ~@4 bb3@4 ~@4 bb3@4 ~@6 g3@4 [g3,bb3,e4]@4, f3@4 ~@13 g3@4 g3@4 g3@2 bb3@2 ~@3, ~@18 e4@3 ~ e4@3 ~ e4@3 ~@3]/4", // Fdim B5 Bdim Edim
  AD: "[f3,ab3,d4]@3 eb4", AE: "f3 ~@2 ab3@3 ~ f3, ab3@3 ~@5, d4 d4@2 ~, ~ f3@5 ~@2",
  AF: "[~@2 f4 ~@5 a3@2 ~ eb4 ~ [eb4,f4] ~ [a3,eb4], f3@12 f4@7 ~ f4@4 ~@8, a3@8 a3@7 ~@9 a3@4 ~@4, eb4@6 eb4@7 ~ eb4@6 ~@12]/2", // Ebsus2 Adim
  AG: "d4@4 eb4 ~ eb4@2 [f3,ab3,d4]@4 ~@4, [f3,ab3] ~", // Ddim Fm
  AH: "~@3 ab3@2 [ab3,eb4] ~ [ab3,eb4], ab3@2 d4@3 ~@3, ~ f3@5 ~@2", // Ab5
  AI: "~@3 eb4@5, [f3,a3]@15 ~, eb4@3 ~@5, ~@2 f4@5 ~", // F
  AJ: "~@3 eb4@2 [f3,bb3,eb4] ~ [f3,bb3,eb4], ~ a3@4 ~@3, ~@2 f4@3 ~@3", AK: "[ab3,d4]@3 eb4, f3 ~@7",
  AL: "g3 ~@2 bb3@2 ~ bb3@2, [bb3,e4] e4@3, ~ g3@7", // Bbdim
  AM: "[[g3,bb3,e4]@2 [g3,bb3,e4]@2 ab3@2 ~ [c4,f4]@14 ~@10 [c4,f4]@15 ~@2, ~@2 [f3,a3]@5 ~@3 a3@5 ~]/3", // Edim F5 F
  AN: "~@3 [a3,c4,f4] ~@4", // F
})).s("gm_electric_guitar_clean").gain(0.27).pan(0.3)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~@2 A@4 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I@2 J@3 K@2 L@5 M N@2 O P@4 D@2 E@2 Q@2 G@2 R@2 I@2 J@3 K@2 S@6 T@4 U@2 V W X Y Z
  AA@2 AB@2 AC AD@3 AE@2 AF@2 AG@2 AH AI AJ@2 AK AL@2 AM@3 K@2 AN@3 AO AP@2 AQ
>`.pickRestart({
  A: "[~@10 [c4,f4]@3 ~ [c4,f4]@19 ~ [d4,g4]@11 ~ c4@15 [d4,e4] [a3,b3,c4] [f3,g3], ~@45 f4@16 ~@3]/4", // F5 G5 Dsus2 Am Fsus2
  B: "[e3 ~@7 [f3,c4]@2 f3@2 [eb3,bb3,eb4]@2 [c4,f4]@4 ~@2 d4@2 bb3@2 [f3,c4]@2 ~@2 d4@2 bb3@2, ~@9 f3@2 ~@2 f3@2 ~]/2", // F5 Eb5 F5
  C: "[[f3,c4] ~ d4 bb3 [f3,c4] f3 [eb3,bb3,eb4] [c4,f4]@2 ~ d4 bb3 [f3,c4] ~ d4 bb3, ~ f3@2 ~@6 f3@2 ~@2 f3@2 ~]/2", // F5 Eb5 F5
  D: "[[f3,c4] ~ d4 bb3 [f3,c4] f3 [f3,bb3] [g3,c4]@2 ~ a3 f3 [c3,g3] ~ a3 f3, ~ f3@2 ~@6 c3@2 ~@2 c3@2 ~]/2", // F5 Bb5 C5
  E: "[[c3,g3] ~ a3 f3 [c3,g3] a3@2 a3@9, ~ c3@2 ~@2 d4@11]/2", // C5
  F: "[[bb2,f3] ~ g3 ab3 [bb2,f3] bb2 [bb2,ab3] [a3,d4]@9, ~ bb2@2 ~@13]/2", // Bb5 Bb7 D5
  G: "[[bb2,f3] ~ g3 ab3 [bb2,f3] bb2 ~ [c4,f4]@3 a3 bb3 [f3,c4] f3 [f3,bb3] [bb2,ab3], ~@2 bb2@4 ~@6 a3@7 ~@13]/2", // Bb5 F5 Bb5 Bb7
  H: "[[c3,g3] ~ a3 f3 [c3,g3] g3 e4 d4@3 [d3,a3] ~ a3!2 [d3,c4] d3, ~ c3@2 ~@3 a3@4 ~ d3@2 ~@3]/2", // C5 D5 D7
  I: "[[bb2,f3]@2 ~@2 g3@2 ab3@2 [bb2,f3]@2 bb2@2 d4@2 c4@4 [f3,c4] ~ [f3,bb3]@2 bb3@2 [f3,c4]@2 f3@2 [f3,bb3]@2 [bb2,ab3]@2, ~ bb2@2 ~@3 f3@3 ~@7]/2", // Bb5 F5 Bb5 F5 Bb5 Bb7
  J: "[[c3,g3] ~ a3 f3 [c3,g3] c4 e4 [d4,f4,bb4]@13 ~ [d4,f4,bb4] [c4,eb4,ab4]@2, ~ c3@2 ~@21]/3", // C5 Bb Ab
  K: "[[a3,c4,f4]@25 ~ d4@2 [bb3,d4,f4]@4]/2", // F Bb
  L: "[[d4,f4,bb4]@12 ~ bb3 ~ c4@7 ~ f3@3 ab3@4 ~@3 f4@7, ~@14 g3@8 ~ bb2@7 ~ c4@9]/5", // Bb
  M: "~ c5@2 eb5 [ab4,eb5] eb5 c5 bb4, ~ ab4@3 ~ ab4@2 ~", // Ab5
  N: "[g4@2 f4@2 ~@2 f4 [c4,f4]@4 [c4,f4]@2 [g3,c4] ~@2, ~@4 c4@3 ~@9]/2", O: "[c4,f4]@2 b3 a3 ~@12",
  P: "[~@8 [f3,c4]@2 f3@2 [eb3,bb3,eb4]@2 [c4,f4]@4 ~@2 d4@2 bb3@2 [f3,c4]@2 ~@2 eb4@2 f4@4 [bb3,f4]@2 [ab3,f4]@2 [f3,f4]@2 [a3,bb3] ab3 f3@2 eb3@2 f3@4 ~@2 d4@2 bb3@2 [f3,c4]@2 ~@2 d4@2 bb3@2, ~@9 f3@2 ~@2 f3@2 ~@10 f3@2 ~@2 f3@2 ~]/4", // F5 Eb5 F5 Bb5 Db F Bbmaj7 F5
  Q: "[[bb2,f3]@2 ~@2 g3@2 ab3@2 [bb2,f3]@2 ~@4 d4@17 ~, ~@2 bb2@4 ~@4 a3@21 ~]/2", // Bb5
  R: "[[c3,g3] ~ a3 f3 [c3,g3] g3 d4 d4@3 [d3,a3] ~ a3!2 [d3,c4] d3, ~ c3@2 ~@3 a3@4 ~ d3@2 ~@3]/2", // C5 D5 D7
  S: "[[d4,f4,bb4]@24 ~@2 bb3@2 ~@2 c4@14 ~@2 f3@6 ab3@8 ~@6 f4@14 ~@2 c4 ~@3 f4@2 ~@2 c5@4 c5@2, ~@14 g3@8 ~ bb2@7 ~ c4@10 ~ c4@2 ~@4, ~@40 f4@2 ~@3 ab4@3]/6", // Bb
  T: "[c5@2 eb5@2 [ab4,c5]@4 eb5@2 [ab4,c5]@4 c5@2 c5@2 eb5@2 ab4@3 ~ [ab4,c5]@2 f4@2 a4@2 c4@6 c5@2 eb5@2 [c5,eb5]@2 [c5,eb5]@3 ~ eb5@5 ~ eb5@2 bb4@2 c5@2 ab4@2 ab4@2 [f4,a4]@2, ~@7 ab4@2 ~@5 f4@4 ~@14]/4", // Ab Cm F
  U: "[[bb3,f4]@2 ~@2 f5@2 [bb4,f5]@2 [bb4,f5]@2 [bb4,f5]@2 [bb4,d5]@2 g5@5 ~ f5@3 ~ d5@3 ~ bb4@2 f4@2, ~ [bb4,d5]@2 ~@13]/2", // Bb5 Bb
  V: "ab4@2 f4@2 ab4@3 ~ f4@4 [c4,f4]@4", W: "[b3,e4,ab4]@2 [b3,e4,ab4]@4 [a3,c4,f4]@5 ~ [g3,c4]@4",
  X: "[ab3,db4]@4 [db3,ab3] ~ [db3,bb3] ~", Y: "[db3,ab3] ~ [db3,bb3] ~ [db3,ab3] ~ [db3,bb3] [db3,ab3]",
  Z: "[ab2,eb3]@2 ~@2 [ab2,f3]@2 ~@2 [ab2,eb3]@2 ~@2 [ab2,f3] ~ [ab2,eb3]@2", // Ab5 Db Ab5 Db Ab5
  AA: "[~@4 [ab2,f3] ~@3 [ab2,eb3] ~@3 [ab3,db4]@6 ~@2 [db3,bb3]@2 ~@2 [db3,ab3]@2 ~@2 [db3,bb3]@2 ~@2]/2", // Db Ab5 Db5 Gb Db5 Gb
  AB: "[[db3,ab3] ~@3 [db3,bb3]@2 ~@2 [db3,ab3] ~@3 [db3,bb3] ~ [g3,c4]@4 [c3,g3]@2 [c3,g3]@2 [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~]/2", // Db5 Gb Db5 Gb C5
  AC: "[c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~", // C5
  AD: "[[c3,bb3] ~@3 [c3,a3] ~@3 [c3,bb3] ~@3 e4@2 [d4,f4,bb4]@26 ~@2 [d4,f4,bb4]@2 [c4,eb4,ab4]@4]/3", // C7 F C7 Bb Ab
  AE: "[[a3,c4,f4]@25 ~ d4@2 [bb3,c4,f4]@4]/2", AF: "[[d4,f4,bb4]@12 ~@3 [eb4,ab4], ~@13 c4@3]/2",
  AG: "[[a3,c4,f4]@3 ~]/2", AH: "~@2 [f4,bb4,d5]@6 [f4,bb4,d5]@7 ~",
  AI: "[f4,bb4,d5]@5 ~ [ab4,c5,eb5]@4 f4@2 f4 f4@3, ~@5 [ab4,c5]@2 ~", // Bb Ab
  AJ: "[~@6 [f4,bb4] [c4,f4,a4]@3 [c4,f4,a4]@2 g4@2 f4@2]/2", AK: "~ c5 eb5!6",
  AL: "[eb5@3 ~ d5@3 ~ c5@2 f4@2 a4@2 f4@4 f5@3 ~ f5@2 f5@2 f5@2 f5@2 f5@2]/2",
  AM: "[f5@3 ~ f5@3 ~@4 d5 [e4,b4,c5] ~ [d4,f4,bb4]@26 ~@2 [d4,f4,bb4]@2 [c4,eb4,ab4]@4, ~@2 f5 ~@9, ~@5 c4 ~@18]/3", // Cmaj7 Bb Ab
  AN: "[[d4,f4,bb4]@12 ~ bb3 ~ c4@7 ~@2, ~@7 g3@4 ~]/3", AO: "bb2!2 ab2 f2@5",
  AP: "[~@2 c4@2 f4@10 ~ f4@2 a4@2 ~ f4@12]/2", AQ: "~@7 [c4,f4]@6 ~@3, ~@6 a3@3 ~@7",
})).s("gm_overdriven_guitar").gain(0.24)

// chords · overdriven guitar · "OVERDRIVE" · soft notes
const overdriven_guitar_soft = note(`<
  ~@6 A@2 B@2 C@2 D ~ E ~ E F D G E H D ~@13 I@2 ~ J C@2 D ~ K ~ E F D G E H D ~@42 L ~@11
>`.pickRestart({
  A: "[~@5 c4 ~ f3@2 c4 ~ f3 ~ c4 ~ f3]/2", B: "[~ c4 ~ f3 ~ c4 ~ f3@2 c4 ~ f3 ~ c4 ~ f3]/2",
  C: "[~ c4 ~ f3 ~ c4 ~ c3@2 g3 ~ c3 ~ g3 ~ c3]/2", D: "~ g3 ~ c3 ~@4", E: "~ f3 ~ bb2 ~ f3 ~@2",
  F: "~@3 eb3 ~@2 f3@2 ~@2 c4@2 ~@4", G: "~@3 g3 ~ d3 ~ a3", H: "~@3 f3 ~ c4 ~@2",
  I: "[~@5 c4 ~ f3@2 c4 ~ f3 ~ c4 ~@2]/2", J: "~ c4 ~ f3 ~ c4 ~ f3", K: "~ f3 ~ bb2 ~@4", L: "~@11 e5 ~@4",
})).s("gm_overdriven_guitar").gain(0.18)

// drums · kick
const kick = s("bd").struct("<~ A@78 B A@22 C D E F G>".pickRestart({
  A: "x!2", B: "~ x!2 ~", C: "x!2 ~ x", D: "~@2 x ~ x ~ x ~@8 x", E: "~ x!2 ~ x ~ x!2 ~ x ~ x!2 ~ x ~", F: "x!3 ~@5",
  G: "~@4 x!2 ~@10",
})).gain(0.48)

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

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~ A B@2 C B@7 C B@3 C B@5 D ~@8 B C B C B@7 C E B@2 C B@3 C F ~@11 G@7 ~@10 A B@6 C ~@19
>`.pickRestart({
  A: "~@3 x ~ x ~ x", B: "~ x ~ x ~ x ~ x", C: "~ x ~ x ~ x ~@2", D: "~ x ~@6", E: "~ x ~@3 x ~ x", F: "~@3 x ~ x ~@2",
  G: "~@3 x",
})).gain(0.16)

// drums · mid tom
const mid_tom = s("mt").struct("<~@22 A ~@29 A ~@7 A ~ A B@7 A ~@8 A B@7 C ~@8 B@7 ~@4>".pickRestart({
  A: "~@7 x", B: "~@3 x", C: "~@4 x ~@2 x",
})).gain(0.48)

// drums · open hat
const open_hat = s("oh").struct(`<
// … 48 more lines

More by Bryan Adams