Strudelify

I shot the Sheriff

Bob Marley

KeyG minorTempo98 bpm
0:00/0:00
// I shot the Sheriff — Bob Marley
// 98 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 22, 4/4 at bar 23, 2/4 at bar 43, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 102 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(98/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 · piano · "tk1"
const piano = note(`<
  ~ A B A@3 C A@2 D E D E D E D E D F G H I J K L@2 J K L M N O P Q R S T S U V W@2 A B A@3 C A@2 X Y Z Y X Y X AA AB AC
  G AD ~@2 AE B AF AG AH@2 AF@2 AI E AI E AI E AI E AI AJ G AK ~ AL AM AN AO AL AM AP AQ AL AR AS AT AU AR AN AV ~
>`.pickRestart({
  A: "~@10 [bb3,d4,g4]!2 ~@4, ~@9 g3@3 ~@4", B: "~@10 [c4,eb4,g4]!2 ~@4, ~@9 c3@3 ~@4", C: "~@9 c3 [c4,eb4,g4] ~@5",
  D: "~@2 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@3 [f4,a4,d5] ~@3 [f4,a4,d5] ~", // Eb Dm
  E: "~@2 [g4,bb4,d5] ~@3 [g4,bb4,d5] ~@3 [g4,bb4,d5] ~@3 [g4,bb4,d5] ~", // Gm
  F: "~@2 [g4,bb4,d5] ~@3 [g4,bb4,d5] ~@3 [g4,bb4,d5] ~@3 d5 ~", // Gm
  G: "[g2,g5]@2 ~ [f2,f5]@2 ~ [d2,d5]@3 ~ [c2,c5] ~ [bb1,bb4] ~ [d2,d5] ~", // G F D C Bb D
  H: "[c2,c5]@2 ~ [bb1,bb4]@2 ~ [g1,g4]@8 ~@2", I: "~@8 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~",
  J: "~@2 [bb3,d4,g4]!2 ~@4 [c4,eb4,g4] ~@2 [c4,eb4,g4] ~@2 [c4,eb4,g4] ~", // Gm Cm
  K: "~@2 [c4,eb4,g4]!2 ~@4 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~", // Cm Gm
  L: "~@2 [bb3,d4,g4]!2 ~@4 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~", // Gm
  M: "~@2 [bb3,d4,g4]!2 ~@6 [g3,bb3,f4]!2 ~@2 [g3,bb3,f4] ~", // Gm Gm7
  N: "~@2 [a3,c4,f4]!2 ~@2 [gb4,a4,c5,eb5] ~@3 [g4,bb4,d5]!2 ~@2 [g4,bb4,d5] ~", // F Gbdim Gm
  O: "~@2 d4 [g3,bb3,d4,f4] ~ [bb3,d4] [g3,bb3,f4] ~@3 [g4,bb4,f5]!2 ~@2 [g4,bb4,f5] ~", // Gm7 Bb Gm7
  P: "~@2 [f4,a4,d5]!2 ~@2 [gb4,a4,c5,eb5] ~@3 [g4,bb4,d5]!2 ~@2 [g4,bb4,d5] ~", // Dm Gbdim Gm
  Q: "~@2 [g4,bb4,d5]!2 ~@2 [g4,bb4,d5] ~@3 [g4,bb4,f5]!2 ~@2 [g4,bb4,f5] ~", // Gm Gm7
  R: "~@2 [a4,d5,f5]!2 ~@2 [gb4,a4,c5,eb5] ~@3 [g4,bb4,d5]!2 ~@2 [g4,bb4] ~", // Dm Gbdim Gm
  S: "~@2 [g4,bb4] [g4,bb4,d5] ~@2 [g4,bb4,d5] ~@3 [g4,bb4,eb5]!2 ~@2 [g4,bb4,eb5] ~", // Gm Eb
  T: "~@2 [f4,a4,d5]!2 ~@2 [gb4,a4,eb5] ~@3 [g4,bb4,d5]!2 ~@2 [g4,bb4,d5] ~", // Dm Ebdim Gm
  U: "~@2 [f4,a4,d5]!2 ~@2 [gb4,c5,eb5] ~@3 [g4,bb4,d5]!2 ~@2 [g4,bb4,d5] ~", // Dm Cdim Gm
  V: "~@2 [g4,bb4,d5]!2 ~@4 [g2,g5]@2 ~ [f2,f5]@2 ~ [d2,d5]@2", // Gm G F D
  W: "[~@2 [c2,c5] ~ [bb1,bb4] ~ [d2,d5] ~ [c2,c5]@2 ~ [bb1,bb4]@2 ~ [g1,g4]@9 ~@9]/2", // C Bb D C Bb G
  X: "~@2 [g4,bb4,f5]!2 ~@2 [g4,bb4,f5] ~@3 [a4,d5,f5]!2 ~@2 [gb4,a4,c5,eb5] ~", // Gm7 Dm Gbdim
  Y: "~@2 [g4,bb4,d5]!2 ~@2 [g4,bb4,d5] ~@3 [g4,bb4,d5]!2 ~@2 [g4,bb4,d5] ~", // Gm
  Z: "~@2 [g4,bb4,f5,g5] [g4,bb4,f5] ~@2 [g4,bb4,f5] ~@3 [a4,d5,f5]!2 ~@2 [gb4,a4,c5,eb5] ~", // Gm7 Dm Gbdim
  AA: "~@2 [g4,bb4,d5]!2 ~@2 [g4,bb4,d5] ~@3 [g4,bb4,d5]!2 ~@4", // Gm
  AB: "~@2 [g4,bb4,f5]!2 ~@2 [g4,bb4,f5] ~@3 [a4,d5] [a4,d5,f5] ~@2 [gb4,a4,eb5] ~", // Gm7 D5 Dm Ebdim
  AC: "~@2 [g4,bb4,d5] [g4,bb4] ~@2 [g4,bb4,d5] ~@3 [g4,bb4,d5]!2 ~@4", // Gm
  AD: "[c2,c5]@2 ~ [bb1,bb4]@2 ~ g1@10, ~@6 g4@7 ~@3", AE: "~@10 [bb3,d4,g4]!2 ~@4, ~@9 g2@3 ~@4",
  AF: "~@10 [bb3,d4,g4]!2 ~@4, ~@9 g2@2 ~@5", AG: "~@9 g2 [bb3,d4,g4]!2 ~@4",
  AH: "[~@9 g2 [bb3,d4,g4]!2 ~@2 [c3,c4,eb4,g4]@17 ~]/2", // Gm Cm
  AI: "~@2 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@3 [a4,d5,f5] ~@3 [gb4,a4,c5,eb5] ~", // Eb Dm Gbdim
  AJ: "~@2 [g4,bb4,d5] ~@3 [g4,bb4,d5] ~@3 [g4,bb4,d5] ~@5", AK: "[c2,c5]@3 [bb1,bb4]@2 ~ g1@10, ~@6 g4@7 ~@3",
  AL: "~ g3 [bb3,d4,g4]!2 ~@12", AM: "~@2 [c4,eb4,g4]!2 ~@12, ~ c3@2 ~@13",
  AN: "~ g3 [bb3,d4,g4]!2 ~ [a3,f4] [bb3,d4,g4] ~@9", AO: "~ g3 [bb3,d4,g4]!2 [d4,f4]@2 [bb3,g4] ~@9",
  AP: "~ g3 [bb3,g4] [bb3,d4,g4] [a3,d4] ~ [bb3,d4,g4] ~@9, ~@2 f4 ~@5", // Eb Gm D5 Gm
  AQ: "~ g3 [bb3,d4,g4]!2 ~ [d4,f4] [bb3,g4] ~@9", AR: "~ c3 [c4,eb4,g4]!2 ~@12",
  AS: "~ g3 [bb3,d4,g4]!2 ~ [bb3,d4,f4] [bb3,d4,g4] ~@9", AT: "[bb3,d4,g4]!2 ~ [bb3,d4,g4] ~ [bb3,d4,f4] [d4,g4] ~@9",
  AU: "~ g3 [d4,g4] [bb3,d4,g4] ~@12", AV: "~@2 [bb3,d4,g4]!2 [a3,d4,f4]@2 [bb3,d4,g4] ~@9",
})).s("gm_piano").gain(0.38).pan(0.7)

// bass · synth bass 2 · "tk2"
const bass = note(`<
  ~ A ~ B C D ~ B E F G H I J K H L M N O P Q R S T U R S V W X Y Z AA Z Y AB AC AD AE@3 AF ~ B C D ~ B AG AH K H I F K
  AI AJ AK AL O AM ~@2 AN@2 B C D ~ B AG AH K H I F K AI AJ AK AL O AM AO R S V AP R S V AP R S V AP AQ S V AR@2
>`.pickRestart({
  A: "bb1@2 d2@2 g2@2 g1@2 ~@5 g2 bb2 c3", B: "~ d2 f2 d2 f2@2 g2 ~@8 d2", C: "f2!2 ~ f2 ~ d2 g2@2 ~@7 bb1",
  D: "d2@2 f2@2 g2@2 g1@2 ~@5 g2 bb2 c3", E: "f2!2 ~ f2 ~ d2 g2@2 ~@8", F: "eb3 bb2 eb2 ~@5 d3 a2 d2 ~@3 d2 f2",
  G: "g2 ~ d2!6 d2@2 d3 ~@5", H: "~ bb2 eb2 ~@5 d3 a2 d2 ~@3 d2 f2, eb3 ~@7", I: "g2 ~ d2!6 g2 ~ d2 ~@5",
  J: "eb3 bb2 eb2 ~@6 a2 d2 ~@3 d2 f2, ~@4 d3 ~@3", K: "g2 ~ d2!7 ~ d3 ~@5", L: "g2 ~ d2!6 ~@2 d2 ~ c3@2 d3 ~",
  M: "eb3@5 bb2 eb3 ~ d3@5 ~@3", N: "g2 ~ d2!6 g2 ~@7", O: "g2@3 f2@3 d2@4 c2@2 bb1@2 d2@2", P: "c2@3 bb1@3 g1@9 ~",
  Q: "~@8 bb1@2 d2@2 g2@2 g1 ~", R: "~@5 g2 bb2 c3 ~@8", S: "~@9 d2 f2 d2 f2@2 g2 ~", T: "~@7 d2 f2!2 ~ f2 ~ d2 g2@2",
  U: "~@7 bb1 d2@2 f2@2 g2@2 g1@2", V: "~@7 d2 f2!2 ~ f2 ~ d2 g2 ~", W: "~@9 bb2 eb2 ~@5, ~@4 eb3 ~@3",
  X: "~ a2 d2 ~@3 d2 f2 g2 ~ d2!6, d3 ~@7", Y: "d2 ~ d3 ~@6 bb2 eb2 ~@5, ~@4 eb3 ~@3",
  Z: "d3 a2 d2 ~@3 d2 f2 g2 ~ d2!6", AA: "g2 ~ d2 ~@5 eb3 bb2 eb2 ~@5", AB: "d3 a2 d2 ~@3 d2 e2 g2 ~ d2!6",
  AC: "g2 ~ d2 ~ c3@2 d3 ~ eb3@5 bb2 eb3 ~", AD: "d3@4 ~@4 g2!2 ~ d2 g2 ~ d2 g2",
  AE: "[~ d2 g2 ~@5 g2@3 f2@3 d2@4 c2@2 bb1@2 d2@2 c2@3 bb1@3 g1@10 ~@8]/3", AF: "bb1@2 d2@2 g2@2 g1 ~@6 g2 bb2 c3",
  AG: "f2!2 ~ f2 ~ d2 g2 ~@9", AH: "~ bb2 eb2 ~@6 a2 d2 ~@3 d2 f2, eb3 ~@3 d3 ~@3",
  AI: "~ bb2 eb2 ~@5 d3 a2 d2 ~@3 d2 e2, eb3 ~@7", AJ: "g2 ~ d2!6 g2 ~ d2 ~ c3@2 d3 ~", AK: "eb3@5 bb2 eb3 ~ d3@4 ~@4",
  AL: "g2!2 ~ d2 g2 ~ d2 g2 ~ d2 g2 ~@5", AM: "c2@3 bb1@3 g1@10", AN: "[bb1@2 d2@2 g2@2 g1 ~@6 g2 bb2 c3@2 ~@15]/2",
  AO: "~@4 bb1 d2 g2 g1", AP: "~@7 bb1 d2@2 f2@2 g2@2 g1 ~", AQ: "~@5 g2 bb2 c3@2 ~@7",
  AR: "[~@7 bb1 d2@2 f2@2 g2@2 g1@10 ~@8]/2",
})).s("gm_synth_bass_2").gain(0.49)

// chords · rock organ · "tk3"
const rock_organ = note(`<
  ~ A B A@3 B A@2 C D E F G H G I G J K L M N M@3 N M@2 O@7 P@3 Q@3 A B A@3 B A R S T G U G H G I G J K L ~@2 A B A@3 B
  A R S T G U G H G I G J K L V@7 W@3 X@4 Y Z@3
>`.pickRestart({
  A: "[g3,bb3,d4]!2 ~ [g3,bb3,d4] ~ g3 [g3,bb3,d4] ~@9", B: "[g3,c4,eb4]!2 ~ [g3,c4,eb4] ~ g3 [g3,c4,eb4] ~@9",
  C: "[bb4,eb5]@2 [f4,d5] [gb4,c5,eb5], [g4,f5]@3 ~, ~ a4", D: "[g4,bb4,d5]@5 ~@3",
  E: "[g4,bb4,eb5]@2 [f4,d5] [gb4,c5,eb5], f5@3 ~, ~ a4", F: "[g4,bb4,d5]@13 ~@3",
  G: "[g5,bb5,eb6]@2 [f5,d6] [gb5,c6,eb6], f6@3 ~, ~ a5", H: "[g5,bb5,d6]@3 ~", I: "[g5,bb5,d6]@11 ~@5",
  J: "[g5,bb5,d6]@9 ~@7", K: "g6@3 f6@3 d6@4 c6@2 bb5@2 d6@2", L: "c6@3 bb5@3 g5@10",
  M: "~@8 [g3,bb3,d4]!2 ~ [g3,bb3,d4] ~ g3 [g3,bb3,d4] ~", N: "~@8 [g3,c4,eb4]!2 ~ [g3,c4,eb4] ~ g3 [g3,c4,eb4] ~",
  O: "[~@8 [bb4,eb5]@8 [f4,d5]@4 [gb4,c5,eb5]@4 [g4,bb4,d5]@10 ~@6 [g4,bb4,eb5]@8 [f4,d5]@4 [gb4,c5,eb5]@4 [g4,bb4,d5]@13 ~@3 [g4,bb4,eb5]@8 [f4,d5]@4 [gb4,c5,eb5]@4 [g4,bb4,d5]@12 ~@4 [g5,bb5,eb6,f6]@8, ~@8 [g4,f5]@12 ~@28 a4@8 ~@24 a4@9 ~@23, ~@4 a4@2 ~@4 f5@3 ~@5 f5@3 ~@7]/7", // Eb5 Dm Cdim Gm Eb Dm Cdim Gm …
  P: "[[f5,d6]@4 [gb5,c6,eb6]@4 [g5,bb5,d6]@11 ~@5 [g5,bb5,eb6]@8 [f5,d6]@4 [gb5,c6,eb6]@4 [g5,bb5,d6]@8, a5@2 ~@4 f6@3 ~@3, ~@4 a5 ~]/3", // Dm Cdim Gm Eb Dm Cdim Gm
  Q: "[~@8 g6@3 f6@3 d6@4 c6@2 bb5@2 d6@2 c6@3 bb5@3 g5@10 ~@8]/3",
  R: "[g3,bb3,d4]!2 ~ [g3,bb3,d4] ~ g3 [g3,bb3,d4] ~@5 [d4,e4] [f4,g4,a4,b4] [c5,d5,e5,f5] [g5,a5,b5,c6]", // Gm Dsus2 G7 Dm7 Cmaj7
  S: "[bb5,eb6]@2 [f5,d6] [gb5,c6,eb6], [g5,f6]@3 ~, d6 ~@7 a5@8", T: "[g5,bb5,d6]@5 ~@3", U: "[g5,bb5,d6]@13 ~@3",
  V: "[~@8 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2 [bb3,d4,g4]@4 ~@2 [bb3,d4] ~ [c4,eb4,g4]@12 [eb4,g4] [c4,eb4,g4] ~@2 [c4,eb4] ~ [d4,g4] ~ [bb3,d4,g4] ~@3 [bb3,d4,g4]@10 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~ bb3 [bb3,d4,g4]@9 ~ [bb3,d4,g4]@3 [bb3,d4,g4] ~@2 [bb3,d4,g4]@5 ~ [bb3,d4,g4] ~ [c4,eb4,g4]@12 [c4,eb4,g4] [eb4,g4] ~@2 [c4,eb4,g4] ~@3 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2, ~@20 bb3 ~@35]/7", // Gm Bb Cm Eb Cm G5 Gm Cm …
  W: "[[bb3,d4,g4]@8 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2 [d4,g4]@8 ~@2 [bb3,d4,g4]@10 ~ bb3 [bb3,d4] ~ [c4,eb4,g4]@8 eb4!2, ~@13 bb3@9 ~@26]/3", // Gm G5 Gm Bb Cm
  X: "[~@2 [c4,eb4,g4] ~@2 [c4,eb4] ~@2 [bb3,d4,g4]@3 [bb3,d4,g4] ~@2 [bb3,d4,g4]@7 ~ [bb3,d4,g4]!2 ~@3 [bb3,d4,g4] ~@2 [bb3,d4,g4]@8 ~@2 [bb3,d4,g4]@5 ~ bb3@6 bb3 ~ [c4,eb4,g4]@10, ~@23 [d4,g4]@4 ~@5]/4", // Cm Gm Cm G5
  Y: "~@2 [c4,eb4,g4] ~@2 [c4,eb4,g4] ~@2 [bb3,d4,g4]@2 ~@4 [bb3,d4,g4] ~", // Cm Gm
  Z: "[~@2 [bb3,d4,g4] [bb3,d4] ~@2 [bb3,d4,g4] ~ [bb3,d4,g4]@5 ~ [bb3,d4,g4]@7 ~ [bb3,d4,g4] ~ [bb3,d4,g4]@3 [bb3,d4] ~@2 [bb3,d4,g4]@9 ~@9]/3", // Gm Bb Gm Bb Gm
})).s("gm_rock_organ").gain(0.27).pan(0.4)

// other · rock organ · "tk7"
const rock_organ_2 = note("<~@86 A B C ~ D E F@5 G H I J ~>".pickRestart({
  A: "~@8 c7@4 bb6 c7 g6 ~, ~@8 bb6 ~@7", B: "g6 f6 g6 ~ bb6 g6 ~ f6 ~ d6 bb5 ~ db6@2 c6 ~, ~@12 c6 ~@3",
  C: "bb5 g5 ~ [f5,g5] ~ bb5 g5@2 ~@8", D: "~@10 c7@2 bb6 g6 ~ f6, ~@10 bb6 ~@5",
  E: "~ d6 g6 ~ g6 f6 g6 bb6 g6 ~ f6 d6 bb5 ~@2 g5",
  F: "[[bb5,c6,d6] ~ [bb5,c6] ~ c6 f5 g5 f5 g5 bb5 g5 ~ g5@11 ~@29 g6@2 ~@2 g6@2 bb6 ~@3 c7@6 c7 bb6 c7 bb6 db7@4 c7 bb6 g6 ~, ~@2 d6@2 ~@20 [g5,bb5]@35 ~@21, ~@24 f6@28 ~@2 f6@4 ~@4 bb6 ~@9 c7 ~@7, ~@20 d6@9 ~@11]/5", // Bb Bbsus2 Gm
  G: "[c7,db7] ~ db7@2 c7 bb6 g6 ~ g6@3 f6 g6 f6 g6 ~, ~@2 c7 ~@5 f6 ~@7", // Dbmaj7
  H: "bb6 g6 f6 ~@2 bb5 c6 bb5 [bb5,d6] ~@2 [bb5,c6] ~ bb5 g5 ~, ~@2 d6 ~@5", // Bb Bbsus2
  I: "[bb5,d6] ~@2 [bb5,c6] ~ [g5,bb5] ~ g5 [bb5,c6,d6] ~@2 c6 ~ bb5 g5 f5", J: "g5 ~",
})).s("gm_rock_organ").gain(0.35).pan(0.6)

// chords · electric guitar muted · "tk8"
const electric_guitar_muted = note(`<
  ~ A B A@3 B A@2 C D E F G H I J E K ~@3 L M N@3 M N O P Q R S T O U O U N ~@2 V W X@3 W X@2 Y Z AA J AB AC Y AC Y AC
  ~@4 V W X@3 W X@2 Y Z AA J AB AC Y AC Y AC ~@3 L M N@3 M N@2 L M N@3 M N@2 ~
>`.pickRestart({
  A: "[bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@9", B: "[c4,eb4,g4] ~@2 [c4,eb4,g4] ~@2 [c4,eb4,g4] ~@9",
  C: "[eb4,g4,bb4]!5 ~@3 [d4,f4,a4]!3 [d4,f4] [d4,f4,a4] ~@3", // Eb Dm
  D: "[bb3,d4,g4]!2 [bb3,d4]!2 [bb3,d4,g4] ~@3 [bb3,d4,g4]!5 ~@3", E: "[eb4,g4,bb4]!5 ~@3 [d4,f4,a4]!5 ~@3",
  F: "[bb3,d4,g4] [bb3,d4] [bb3,d4,g4]!3 ~@3 [bb3,d4,g4]!5 ~@3", // Gm Bb Gm
  G: "[eb4,g4,bb4]!3 [eb4,g4] [eb4,g4,bb4] ~@3 [d4,gb4] [d4,f4,a4]!4 ~@3", // Eb D Dm
  H: "[bb3,d4,g4] [bb3,d4] [bb3,d4,g4] [bb3,d4] [bb3,d4,g4] ~@3 [bb3,d4,g4]!5 ~@3", // Gm Bb Gm Bb Gm
  I: "[eb4,g4,bb4]!3 [eb4,bb4] [eb4,g4,bb4] ~@3 [d4,f4,a4]!5 ~@3", // Eb Eb5 Eb Dm
  J: "[bb3,d4,g4]!5 ~@3 [bb3,d4,g4]!3 [bb3,d4] [bb3,d4,g4] ~@3", K: "[bb3,d4,g4]!3 ~ [bb3,d4,g4] ~@3 [bb3,d4,g4]!5 ~@3",
  L: "[bb3,d4,g4]!3 [bb3,d4] [bb3,d4,g4] ~@11", M: "[c4,eb4,g4]!5 ~@11", N: "[bb3,d4,g4]!5 ~@11",
  O: "[bb3,d4,g4]!5 ~@3 [bb3,eb4,g4]!5 ~@3", P: "[d4,f4,a4]!5 ~@3 g4 [bb3,d4,g4]!4 ~@3",
  Q: "[bb3,d4,g4] [bb3,d4] [bb3,d4,g4]!3 ~@3 [bb3,eb4]!2 [bb3,eb4,g4] [bb3,eb4] [bb3,eb4,g4] ~@3", // Gm Bb Gm Eb5 Eb Eb5 Eb
  R: "[d4,f4,a4]!3 ~ [d4,f4,a4] ~@3 [bb3,d4,g4]!5 ~@3", S: "[bb3,d4,g4]!3 [bb3,d4] [bb3,d4,g4] ~@3 [bb3,eb4,g4]!5 ~@3",
  T: "[d4,f4,a4]!3 [d4,f4] [d4,f4,a4] ~@3 [bb3,d4,g4]!5 ~@3", U: "[d4,f4,a4]!5 ~@3 [bb3,d4,g4]!5 ~@3",
  V: "~@8 [bb3,d4,g4]!3 [bb3,d4] [bb3,d4,g4] ~@3", W: "~@8 [c4,eb4,g4]!5 ~@3", X: "~@8 [bb3,d4,g4]!5 ~@3",
  Y: "[bb3,eb4,g4]!5 ~@3 [d4,f4,a4]!5 ~@3", Z: "g4 [bb3,d4,g4]!4 ~@3 [bb3,d4,g4] [bb3,d4] [bb3,d4,g4]!3 ~@3",
  AA: "[bb3,eb4]!2 [bb3,eb4,g4] [bb3,eb4] [bb3,eb4,g4] ~@3 [d4,f4,a4]!3 ~ [d4,f4,a4] ~@3", // Eb5 Eb Eb5 Eb Dm
  AB: "[bb3,eb4,g4]!5 ~@3 [d4,f4,a4]!3 [d4,f4] [d4,f4,a4] ~@3", AC: "[bb3,d4,g4]!5 ~@3 [bb3,d4,g4]!5 ~@3",
})).s("gm_electric_guitar_muted").gain(0.33).pan(0.2)

// chords · electric guitar clean · "tk9"
const electric_guitar_clean = note(`<
  ~ A B A C A B D E F G F H I J K L M L ~@2 N O P Q R S P Q T U T U V W X U Y U Z ~@2 AA AB AA@3 AB AA AC AD AE AD AE AD
  AE AD AE AD AF ~@4 AG AH AA AI AJ AB AA@2 F AK F L F AL F AK K AK ~@2 AM AN AO AP Q S P AQ Q AR P AS AT S AU AV AW ~
>`.pickRestart({
  A: "~@10 [bb3,d4,g4]!2 ~@4", B: "~@10 [c4,eb4,g4]!2 ~@4", C: "~@10 [d4,g4] [bb3,d4,g4] ~@4",
  D: "~@10 [bb3,d4,g4] [d4,g4] ~@4", E: "~@10 [bb3,d4,g4]!2 d4 ~@3", F: "~@2 [eb4,g4,bb4]!2 ~@6 [d4,f4,a4]!2 ~@4",
  G: "~@2 [bb3,d4,g4]!2 ~@6 d4 [bb3,d4,g4] ~@4", H: "~@2 [bb3,d4,g4]!2 d4 ~@5 [bb3,d4,g4]!2 ~@4",
  I: "~@2 [eb4,g4,bb4]!2 ~@6 [d4,f4,a4]!2 d4 ~@3", J: "~@2 [bb3,d4] [bb3,d4,g4] d4 ~@5 d4 [bb3,d4,g4] d4 ~@3",
  K: "~@2 [eb4,g4,bb4]!2 eb4 ~@5 [d4,f4,a4]!2 ~@4", L: "~@2 [bb3,d4,g4]!2 ~@6 [bb3,d4,g4]!2 d4 ~@3",
  M: "~@2 [eb4,g4,bb4]!2 eb4 ~@5 [d4,f4,a4]!2 d4 ~@3", N: "~@8 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~",
  O: "~@2 [d4,g4] [bb3,d4,g4] ~@4 [eb4,g4] ~@2 [c4,eb4,g4] ~@2 [c4,eb4] ~", // G5 Gm Eb Cm
  P: "~@2 [c4,eb4,g4]!2 ~@4 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~", // Cm Gm
  Q: "~@2 [bb3,d4,g4]!2 ~@4 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~", // Gm
  R: "~@2 [bb3,d4,g4] ~@5 [bb3,d4,g4] ~@2 [d4,g4] ~@2 [bb3,d4,g4] ~", // Gm G5 Gm
  S: "~@2 [bb3,d4,g4]!2 ~@4 [c4,eb4,g4] ~@2 [c4,eb4,g4] ~@2 [c4,eb4,g4] ~", // Gm Cm
  T: "~@2 [bb3,d4,g4]!2 ~@6 [eb4,g4,bb4]!2 ~@4", U: "~@2 [d4,f4,a4]!2 ~@6 [bb3,d4,g4]!2 ~@4",
  V: "~@2 [bb3,d4,g4]!2 d4 ~@5 [eb4,g4,bb4]!2 ~@4", W: "~@2 [d4,f4,a4]!2 ~@6 [d4,g4] [bb3,d4,g4] ~@4",
  X: "~@2 [bb3,d4] [bb3,d4,g4] ~@6 [eb4,g4,bb4]!2 ~@4", Y: "~@2 [bb3,d4,g4]!2 ~@6 [eb4,g4,bb4]!2 eb4 ~@3",
  Z: "~@2 [bb3,d4,g4]!2 ~@12", AA: "[bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@3 [bb3,d4,g4]!2 ~@4",
  AB: "[c4,eb4,g4] ~@2 [c4,eb4,g4] ~@2 [c4,eb4,g4] ~@3 [c4,eb4,g4]!2 ~@4", // Cm
  AC: "[bb3,d4,g4] ~@2 [bb3,d4] ~@2 [bb3,d4,g4] ~@3 [bb3,d4,g4]!2 ~@4", // Gm Bb Gm
  AD: "~@2 [eb4,g4,bb4]!2 ~@2 [eb4,g4,bb4]!2 ~@2 [d4,f4,a4]!2 ~@2 [d4,f4,a4]!2", // Eb Dm
  AE: "~@2 [bb3,d4,g4]!2 ~@2 [bb3,d4,g4]!2 ~@2 [bb3,d4,g4]!2 ~@2 [bb3,d4,g4]!2", // Gm
  AF: "~@2 [bb3,d4,g4]!2 ~@2 [bb3,d4,g4]!2 ~@2 [bb3,d4,g4]!2 ~@2 [bb3,d4,g4] ~", // Gm
  AG: "[bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@3 [d4,g4] [bb3,d4,g4] ~@4", // Gm G5 Gm
  AH: "[eb4,g4] ~@2 [c4,eb4,g4] ~@2 [c4,eb4] ~@3 [c4,eb4,g4]!2 ~@4", // Eb Cm
  AI: "[bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@3 [bb3,d4,g4] ~@5", // Gm
  AJ: "[bb3,d4,g4] ~@2 [d4,g4] ~@2 [bb3,d4,g4] ~@3 [bb3,d4,g4]!2 ~@4", AK: "~@2 [bb3,d4,g4]!2 ~@6 [bb3,d4,g4]!2 ~@4",
  AL: "~@2 [d4,g4] [bb3,d4,g4] ~@6 [bb3,d4] [bb3,d4,g4] ~@4", AM: "~@8 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2 [bb3,d4] ~",
  AN: "~@2 [d4,g4] [bb3,d4] ~@4 [c4,eb4] ~@2 [c4,eb4,g4] ~@2 [c4,eb4] ~", // G5 Bb Cm
  AO: "~@2 [c4,eb4,g4]!2 ~@4 [bb3,d4] ~@2 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~", // Cm Bb Gm
  AP: "~@2 [bb3,d4,g4] [bb3,d4] ~@4 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~", // Gm Bb Gm
  AQ: "~@2 [bb3,d4,g4]!2 ~@4 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2 [bb3,d4] ~", // Gm Bb
  AR: "~@2 [bb3,d4,g4]!2 ~@4 [c4,eb4,g4] ~@2 [c4,eb4] ~@2 [c4,eb4] ~", // Gm Cm
  AS: "~@2 [bb3,d4] [bb3,d4,g4] ~@4 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2 [bb3,d4] ~", // Bb Gm Bb
  AT: "~@2 [bb3,d4,g4]!2 ~@4 [bb3,d4,g4] ~@2 [bb3,d4] ~@2 [bb3,d4,g4] ~", // Gm Bb Gm
  AU: "~@2 [c4,eb4,g4]!2 ~@4 [d4,g4] ~@2 [bb3,d4] ~@2 [bb3,d4,g4] ~", // Cm G5 Bb Gm
  AV: "~@2 [bb3,d4,g4]!2 ~@4 [bb3,d4,g4] ~@2 [bb3,d4] ~@2 [bb3,d4] ~", // Gm Bb
  AW: "~@2 [bb3,d4] [bb3,d4,g4] ~@4 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~@2 [bb3,d4,g4] ~", // Bb Gm
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.6)

// chords · electric guitar clean · "tk9" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@4 A B ~ C ~ D E D F G H F ~@2 I ~@3 J K I L I K I@2 M N M O E N M I M ~@25 P Q F R S T F@3 M D I D U D M F I ~@3 V
  ~@12 W ~@3
>`.pickRestart({
  A: "~@10 bb3 ~@5", B: "~@12 bb3 ~@3", C: "~@11 bb3 ~@4", D: "~@4 eb4 ~@7 d4 ~@3", E: "~@4 d4 ~@5 bb3 ~ d4 ~@3",
  F: "~@12 d4 ~@3", G: "~@4 eb4 ~@11", H: "~@10 [bb3,g4] ~@5", I: "~@4 d4 ~@11", J: "~@2 bb3 ~ d4 ~@3 c4 ~@7",
  K: "~@4 c4 ~@11", L: "~@4 [bb3,d4] ~@6 bb3 ~@4", M: "~@4 d4 ~@7 d4 ~@3", N: "~@4 d4 ~@7 eb4 ~@3", O: "~@12 eb4 ~@3",
  P: "~@10 bb3 ~ d4 ~@3", Q: "c4 ~@11 c4 ~@3", R: "~@12 [bb3,d4] ~@3", S: "~@3 bb3 ~@8 d4 ~@3", T: "~@12 c4 ~@3",
  U: "~@2 bb3 ~ d4 ~@7 d4 ~@3", V: "~@2 bb3 ~@5 g4 ~@7", W: "~@8 bb3 ~@7",
})).s("gm_electric_guitar_clean").gain(0.2).pan(0.6)

// other · electric guitar jazz · "tk11"
const electric_guitar_jazz = note("<~@30 A@2 B C ~ D E F G H ~@62>".pickRestart({
  A: "[~@12 f4 g4 ~ c5@7 ~@10]/2", B: "~@9 c5@2 ~ c5 ~ bb4 ~", C: "g4 ~", D: "~@6 gb3 ~", E: "~@4 gb3 ~@7 gb3 ~@3",
  F: "~@4 [eb4,g4]@3 ~, ~@7 [g3,bb3]@6 ~@3", G: "~ f4@7 ~@2 f3@2 bb3 ~ g3 ~, [gb3,c4] ~", H: "c4@4 bb3 g3@3 ~@8",
})).s("gm_electric_guitar_jazz").gain(0.35).pan(0.7)

// bass · clavinet · "tk12" · Dmaj7
const bass_2 = note(`<
  ~@61
  [~@14 d2 f2]
// … 71 more lines

More by Bob Marley