Strudelify

Exodus

Bob Marley

KeyA minorTempo132 bpm
0:00/0:00
// Exodus — Bob Marley
// 132 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 200 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(132/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.

// other · piano · "tk1"
const piano = note(`<
  ~ A B@3 C@4 A B@3 D@5 ~@15 A E@3 F@3 ~ G H@3 I@3 ~@17 A J@2 ~ G J@2 K L@2 ~@2 G J@2 K L@2 M@2 ~@2 G J@2 K L@2 ~@2 G
  J@2 K L@2 ~@2 G J@2 K L@2 ~@22 G J@2 K N@2 O ~ G J@2 K N@2 ~@2 G J@2 K N@2 ~@2 G J@2 K N@2 ~@2 G J@2 K N@2 ~@2 G J@2 K
  N@2 ~@2 G J@2 ~@5 G J@2 K N@2 ~@2 G J@2 ~ P
>`.pickRestart({
  A: "~@5 [e2,e4]@3, ~@10 d#4 ~@5", B: "[[a1,a3]@22 ~ [b2,b3]]/3", C: "[[c3,c4] [d3,d4]@2 ~ [b2,b3] ~ g3 a3@25]/4",
  D: "[[c3,c4] [d3,d4]@2 ~ [b2,b3] ~ g3 a3@33]/5", E: "[[a1,a3]@37 ~@9 [b2,b3]@2]/3",
  F: "[[c3,c4]@2 [d3,d4]@7 ~ d4@2 g3@2 a3@33 ~]/3", G: "~@5 [e2,e4]@3", H: "[[a1,a3]@39 ~@7 [b2,b3]@2]/3",
  I: "[[c3,c4]@2 [d3,d4]@6 b3@3 ~ g3@2 a3@34]/3", J: "[a1,a3]/2", K: "~@7 [b2,b3]",
  L: "[[c3,c4]@2 [d3,d4]@5 ~ b3@3 ~ g3@2 a3@18]/2", M: "[~ d4 ~@2 g3@12, [b3,c4,e4], ~@3 d4@13]/2",
  N: "[[c3,c4]@2 [d3,d4]@5 ~ b3@3 ~ g3@2 a3@17 ~]/2", O: "c4@4 a3@2 ~@2 g3@2 g#3 ~ a3@2 ~@2",
  P: "~@2 [c3,c5]@2 e3@2 [g3,g5] ~ [a3,e4,c5,a5]@2 [a3,e4,c5,a5] ~ [a3,e4,c5,a5]@2 ~@2, ~@4 e5 ~@11", // C G Am
})).s("gm_piano").gain(0.44).pan(0.6)

// bass · fretless bass · "tk2"
const bass = note(`<
  ~@18 A B C D E F E G H I H I H I H I H I J K L M N O N P C Q C M C O R M S O E T E U H V W X W Y W Z W AA AB AC C M AD
  AE R M AF AG AH P R AI W AJ E AK AL AM L AN AO AP N AQ R AE C AR C AS C AT C AE W AU AV AW E AX AY AZ R AT BA BB R M
  BC AE AH M N AE W AK W ~ BD AU BE BF BG BH BI Z W BJ BK BL L BM R AS BN BO BP BQ BR BM BS AE C BM BT AE BD BU BV BW BE
  BJ J BL ~@2 BX ~ BY BX BZ CA AO M BC AE BS M BC AE CB Z BV CC BV Z BG Z CB Z BV T BV Z J CD BC M CE CF
>`.pickRestart({
  A: "a1@2 ~@2 g1 ~ a1@2 ~@2 g1 ~ a1@3 ~", B: "~@2 c2@2 a1@2 ~@2 g1 ~ g#1 ~ a1@2 ~@2",
  C: "a1@2 ~@2 g1 ~ a1@2 ~@2 g1 ~ a1@2 ~@2", D: "c2@2 ~@2 a1@2 ~@2 g1 ~ g#1 ~ a1@2 ~@2",
  E: "a1@2 ~@2 g1 ~ a1@2 ~@2 g1 ~ a1 ~ a1@2", F: "~@2 a1@2 c2 ~ e2 ~ g2 ~ g#2 ~ a2@2 ~@2",
  G: "~@2 a1 ~@3 e2 ~ g2 ~ g#2 ~ a2 ~@3", H: "a1@2 ~@2 g1 ~ a1@2 ~@2 g1 ~ a1@2 a1@2",
  I: "~@2 a1 ~ c2@2 e2@2 g2 ~ g#2 ~ a2@2 ~@2", J: "a1 ~ a1 ~ a1@2 ~@2 b1@3 ~ b1@3 ~", K: "c2@3 ~ c2@3 ~ d2@6 ~@2",
  L: "a1@2 ~@2 g1 ~ a1@3 ~ g1 ~ a1@3 ~", M: "~ c2 a1 ~ g1 g#1 a1 ~", N: "a1@2 ~@2 g1 ~ a1@3 ~ g1 ~ a1@2 ~@2",
  O: "c2@3 ~ a1@2 ~@2 g1@2 g#1 ~ a1@2 ~@2", P: "~@2 c2 ~ a1@2 ~@2 g1@2 g#1@2 a1@2 ~@2",
  Q: "c2@3 ~ a1@2 ~@2 g1@2 g#1@2 a1@2 ~@2", R: "a1@2 ~@2 g1@2 a1@2 ~@2 g1 ~ a1@2 ~@2",
  S: "a1@3 ~ g1@2 a1@2 ~@2 g1 ~ a1@2 ~@2", T: "~@2 a1@2 c2@2 e2 ~ g2@2 g#2 ~ a2@2 ~@2",
  U: "~@2 a1 ~ c2@2 e2 ~ g2@2 g#2 ~ a2@2 ~@2", V: "~@2 a1@2 ~@2 e2@2 g2@2 g#2 ~ a2@2 ~@2",
  W: "a1@2 ~@2 g1@2 a1@2 ~@2 g1 ~ a1 ~ a1@2", X: "~ a1 ~ e2 g2 g#2 a2 ~", Y: "~@2 a1@2 ~@2 e2@2 g2 ~ g#2 ~ a2@2 ~@2",
  Z: "~@2 a1@2 c2@2 e2 ~ g2@2 g#2@2 a2@2 ~@2", AA: "~@2 a1 ~ c2@2 e2 ~ g2@2 g#2@2 a2@2 ~@2",
  AB: "a1@2 a1 ~ a1@2 ~@2 b1@3 ~ b1@3 ~", AC: "c2@3 ~ c2@4 d2@2 e2@5 ~", AD: "a1@3 ~ g1@2 a1@3 ~ g1 ~ a1@2 ~@2",
  AE: "c2@2 a1 ~ g1 g#1 a1 ~", AF: "a1@2 ~@2 g1@2 a1@2 ~@2 g1 ~ a1@2 a1 ~", AG: "c2 ~ c2 ~ c2@3 ~ g1@3 ~ g#1@3 ~",
  AH: "a1@2 ~@2 g1@2 a1@2 ~@2 g1 ~ a1@3 ~", AI: "c2@4 a1@3 ~ g1@2 g#1@2 a1@3 ~",
  AJ: "~@2 a1@2 c2@2 e2@2 g2@2 g#2 ~ a2@3 ~", AK: "~@2 a1 ~ c2 ~ e2@2 g2@2 g#2@2 a2@2 ~@2",
  AL: "a1@2 a1 ~ a1@4 b1@3 ~ b1@3 ~", AM: "c2@3 ~ c2@3 ~ d2@2 e2@6", AN: "~@2 c2@2 a1@2 ~@2 g1@2 g#1@2 a1@3 ~",
  AO: "a1@2 ~@2 g1@2 a1@3 ~ g1 ~ a1@2 ~@2", AP: "c2@4 a1@3 ~ g1 ~ g#1 ~ a1@2 ~@2",
  AQ: "~@2 c2 ~ a1@2 ~@2 g1 ~ g#1 ~ a1@2 ~@2", AR: "~@2 c2@2 a1@2 ~@2 g1@2 g#1 ~ a1@2 ~@2",
  AS: "c2@4 a1@2 ~@2 g1@2 g#1 ~ a1@2 ~@2", AT: "~@2 c2 ~ a1@3 ~ g1@2 g#1 ~ a1@2 ~@2", AU: "~ a1 c2 e2 g2 g#2 a2 ~",
  AV: "a1@3 ~ g1 ~ a1@2 ~@2 g1 ~ a1 ~ a1@2", AW: "~@2 a1@2 c2@2 e2 ~ g2@2 g#2 ~ a2@3 ~",
  AX: "~@2 a1 ~ c2 ~ e2@2 g2 ~ g#2 ~ a2@2 ~@2", AY: "a1@3 ~ g1@2 a1@2 ~@2 g1@2 a1@2 a1@2",
  AZ: "~@2 a1@2 c2 ~ e2@2 g2@2 g#2@2 a2@2 ~@2", BA: "a1@3 ~ g1@2 a1@2 ~@2 g1@2 a1 ~ a1 ~",
  BB: "c2 ~ c2 ~ c2@3 ~ e1@4 g1@3 ~", BC: "a1 ~ g1 a1 ~ g1 a1 ~", BD: "a1@2 ~@2 g1@2 a1@2 ~@2 g1@2 a1 ~ a1@2",
  BE: "a1@2 ~@2 g1 ~ a1@2 ~@2 g1@2 a1 ~ a1@2", BF: "~@2 a1@2 c2@2 e2@2 g2@2 g#2@2 a2@3 ~",
  BG: "a1@2 ~@2 g1@2 a1@3 ~ g1@2 a1@2 a1@2", BH: "~@2 a1@2 c2@2 e2 ~ g2 ~ g#2@2 a2@2 ~@2",
  BI: "a1@2 ~@2 g1@2 a1@3 ~ g1 ~ a1 ~ a1@2", BJ: "~@2 a1@2 c2 ~ e2 ~ g2@2 g#2@2 a2@2 ~@2",
  BK: "a1 ~ a1 ~ a1@3 ~ b1@3 ~ b1@3 ~", BL: "c2@3 ~ c2@3 ~ d2@2 e2@5 ~", BM: "~@2 c2 ~ a1@2 ~@2 g1@2 g#1 ~ a1@2 ~@2",
  BN: "a1@2 ~@2 g1 ~ a1@2 ~@2 g1@2 a1@3 ~", BO: "~@2 c2 ~ a1@3 ~ g1@2 g#1@2 a1@2 ~@2",
  BP: "a1@2 ~@2 g1@2 a1@2 ~@2 g1 ~ a1 ~ a1 ~", BQ: "c2 ~ c2 ~ c2@4 e1@4 g1@4", BR: "a1 ~@3 g1@2 a1@2 ~@2 g1 ~ a1@2 ~@2",
  BS: "a1@2 ~@2 g1@2 a1@3 ~ g1@2 a1@2 ~@2", BT: "a1@2 ~@2 g1@2 a1@2 ~@2 g1 ~ a1 ~@3",
  BU: "~@2 a1 ~ c2@2 e2 ~ g2 ~ g#2 ~ a2@2 ~@2", BV: "a1@2 ~@2 g1@2 a1@3 ~ g1@2 a1 ~ a1@2",
  BW: "~@2 a1@2 c2@2 e2 ~ g2@2 g#2 ~ a2 ~@3", BX: "a1 ~@7", BY: "a1 ~@6 a1", BZ: "a1@2 ~@4 a1@2 ~@6 a1 ~",
  CA: "c2@3 ~@5 e1@7 ~", CB: "a1@3 ~ g1@2 a1@3 ~ g1 ~ a1@2 a1@2", CC: "~@2 a1@2 c2@2 e2@2 g2@2 g#2 ~ a2@2 ~@2",
  CD: "c2 ~ c2 ~ c2@2 ~@2 d2@2 e2@5 ~", CE: "a1@2 ~@2 g1@2 a1@3 ~ g1@2 a1@3 ~",
  CF: "~@2 c2@2 e2@2 g2@2 a2@2 a2 ~ a2@2 ~@2",
})).s("gm_fretless_bass").gain(0.44)

// chords · clavinet · "tk3"
const clavinet = note(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B A ~ A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~@8 A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "[c4,e4] ~ [a2,a3,c4] ~ g2 ~ [a2,c4,e4] ~@3 [g2,d4] ~ [c4,e4] ~ g3 ~, ~@6 a2 ~", // C Am G5 C
  B: "[c3,c4,e4] ~ g3 ~ [a2,a3,c4] ~@3 [g2,d4] ~ [g#2,a3,c4] ~ [a2,c4,e4] ~ g3 ~", // C Am G5 G# Am
})).s("gm_clavinet").gain(0.2)

// chords · flute · "tk5"
const flute = note(`<
  ~@10 A ~@2 B C ~@5 D@2 ~@2 E@2 ~@2 F@2 ~@2 G H A ~@2 I@2 ~@3 A ~@2 I@2 ~@5 J@2 ~@2 K L ~@2 M@2 N@2 O@2 A ~@2 I@2 ~ P Q
  R@8 ~@2 A ~@2 S@2 ~@3 A ~ T ~ A ~ U ~ A ~ U ~ A ~ V ~ W ~ W ~@2 X@2 ~@2 Y Z ~@3 AA@2 AB@2 AC@2 A ~@2 AD@2 ~@3 A ~@2
  AE@2 ~ AF@2 R@6 W ~ W ~ W ~@3 AG ~@3 AH@2 A ~@2 AI@2 ~@3 A ~@2 AI@2 ~@3 AJ@2 AK@10 W ~ W ~ AL@2 AM@2
>`.pickRestart({
  A: "[e4,g4,c5]@4 [e4,g4,c5]@2 [e4,g4,c5]@5 ~@5", B: "[e4,g4,c5]@2 [e4,g4,c5]@2 [d4,f4,a4]@2 [c4,e4,g4] [d4,f4,a4]",
  C: "~ [c4,e4,g4]@4 ~@3", D: "[[c4,c5]@2 [c4,c5]@4 [c4,c5]@4 [c4,c5]@3 ~ [a3,a4]@5 ~@13]/2",
  E: "[~@2 [e3,e4]@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@2 [a3,a4]@5 ~@13]/2", // E C A
  F: "[~@2 [a3,a4]@2 [a3,a4]@2 [a3,a4]@2 ~@2 a4@2 a4@2 [c4,c5]@4 [a3,a4]@3 ~@11, ~@5 a3@2 ~@9]/2", // A C A
  G: "[a3,a4]@3 ~ [a3,a4]@3 ~ [a3,a4]@3 ~ [a3,a4]@2 [a3,a4]@2", H: "[c4,c5]@3 [a3,a4]@5 ~@8",
  I: "[[e4,g4,c5]@2 [e4,g4,c5]@2 [d4,f4,a4]@2 [c4,e4,g4] [d4,f4,a4]@2 [c4,e4,g4]@4 ~@3]/2", // C Dm C Dm C
  J: "[~@8 [c4,c5]@3 ~ [c4,c5]@2 [a3,a4]@6 ~@12]/2", K: "~@4 a4@2 a4@2 [c4,c5]@3 ~ a3@2 [d4,d5]@2, ~@4 a3@4 ~@4 a4 ~@3",
  L: "[c4,c5] ~@3", M: "[[e4,g4,c5]@2 [e4,g4,c5]@3 ~ [e4,g4,c5]@4 [e4,g4,c5]@4 [c4,e4,a4]@5 ~@11 [a3,a4]@2]/2",
  N: "[[e4,e5]@2 [g4,g5]@4 [d4,d5]@6 [c4,c5]@2 [e4,e5]@5 ~@11 [g3,g4]@2]/2", // E G D C E G
  O: "[[c4,c5]!3 [a3,a4] [c4,c5]@2 [c4,c5] [a3,a4]@2 ~@7]/2", // C A C A
  P: "[c4,e4,a4] [c4,e4,a4]@2 [c4,e4,a4]@2 [c4,e4,a4]@2 [e4,g4,c5]", Q: "~ [c4,a4]@3 ~@12, e4@3 ~@13",
  R: "[[c4,e4,a4,c5]@3 ~ [c4,e4,a4,c5]@3 ~ [c4,e4,a4,c5]@3 ~ [c4,e4,a4,c5]@2 [e4,g4,c5,e5]@4 ~ [e4,c5]@3 ~@10, ~@18 [c4,a4]@3 ~@11]/2", // Am C F
  S: "[[e4,g4,c5]@4 [e4,g4,c5]@4 [d4,f4,a4]@3 ~ [c4,e4,g4]@2 [d4,f4,a4]@4 [c4,e4,g4]@8 ~@6]/2", // C Dm C Dm C
  T: "[d4,e4,a4]@3 ~ [c4,e4,a4]@2 [c4,e4,a4]@5 ~@5", U: "[c4,e4,a4]@3 ~ [c4,e4,a4]@2 [c4,e4,a4]@5 ~@5",
  V: "~ [c4,e4,a4]@3 ~ [c4,e4,a4]@2 [c4,e4,a4]@5 ~@4", W: "[c4,e4,a4] ~@3",
  X: "[~@6 [c4,e4,a4]@2 [e4,g4,c5]@3 ~ [e4,g4,c5]@2 [c4,e4,a4]@4 ~@14]/2", Y: "~@6 [e4,a4] [c4,e4,g4], ~@12 c4 ~@3",
  Z: "[e4,g4,c5]@3 ~ [c4,e4]@2 [f4,a4,d5]@2 [e4,g4,c5]@3 ~@5, ~@4 a4 ~@11", // C Dm C
  AA: "[[c4,c5]@2 [c4,c5]@3 ~ [c4,c5]@3 ~ [c4,c5]@4 [a3,a4]@5 ~@11 a3@2, ~@30 a4 ~]/2", // C A
  AB: "[[e4,e5] [g4,g5]@3 [d4,d5]@2 [c4,c5] [d4,d5]@2 [c4,c5]@2 ~@4 [a3,a4]]/2", // E G D C D C A
  AC: "[[c4,c5]@2 [c4,c5]@2 [c4,c5]@2 a4@2 [c4,c5]@3 ~ [c4,c5]@2 [a3,a4]@5 ~@13, ~@6 a3 ~@25]/2", // C A
  AD: "[[e4,g4,c5]@4 [e4,g4,c5]@4 [d4,f4,a4]@3 ~ [c4,e4,g4]@2 [d4,f4,a4]@4 [c4,e4,g4]@6 ~@8]/2", // C Dm C Dm C
  AE: "[[e4,g4,c5]@4 [e4,g4,c5]@4 [d4,f4,a4]@3 ~ [c4,e4,g4]@2 [d4,f4,a4]@4 [c4,e4,g4]@5 ~@9]/2", // C Dm C Dm C
  AF: "[[a3,a4]@3 ~ [a3,a4]@3 ~ [a3,a4]@3 ~ [a3,a4]@2 [c4,c5]@4 [a3,a4]@2 ~@12]/2", // A C A
  AG: "[a3,a4]@2 [g3,g4] [a3,a4] [g3,g4] [a3,a4]@2 ~", // A G A G A
  AH: "[[c4,c5]@3 ~ [a3,a4]@2 [c4,c5]@3 ~ [c4,c5]@3 ~ [a3,a4]@6 ~@12]/2", // C A C A
  AI: "[[e4,g4,c5]@2 [e4,g4,c5]@2 [d4,f4,a4]@2 [c4,e4,g4] [d4,f4,a4]@2 [c4,e4,g4]@3 ~@4]/2", // C Dm C Dm C
  AJ: "[[c4,e4]@3 ~ [c4,e4]@3 ~@2 [c4,e4]@3 [c4,e4]@2 [e4,g4]@4 ~ [c4,e4]@3 ~@10]/2", // C Em C
  AK: "[[c4,e4]@3 ~ [c4,e4]@3 ~ [c4,e4]@3 ~ [c4,e4]@2 [e4,g4]@4 ~ e4@3 ~@10, ~@18 c4@3 ~@11]/2", // C Em
  AL: "[[a3,a4]@3 ~ [a3,a4]@2 ~@2 [a3,a4]@3 ~ [a3,a4]@2 [c4,c5]@4 [a3,a4]@2 ~@12]/2", // A C A
  AM: "[[a3,a4] ~ [a3,a4] ~ [a3,a4] ~ [a3,a4] [c4,c5]@2 [a3,a4] ~@6]/2", // A C A
})).s("gm_flute").gain(0.3).pan(0.4)

// chords · lead 5 charang · "tk6"
const lead_5_charang = note(`<
  ~@7 A B C ~@9 D ~ D ~ D ~ E ~ D ~ F G D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~
  D ~ D ~ D ~ D ~ D ~ D H@3 ~@2 D ~ D ~ E ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ D I J@2 D ~ D ~ D ~ D ~ D ~@3 D ~ D
  ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ E ~ D ~ D K@2 L@2 ~ D ~ D ~ D ~ D ~@7 M ~ D ~ D ~ D ~ D ~@20
>`.pickRestart({
  A: "~@2 [d5,d#5] ~@5 d5@2 c5@5 ~", B: "~@4 [g#4,a4] ~@3 e4 ~ d4@4 ~@2, ~@10 e4 ~@5", C: "d4 ~@7 a4 ~@7",
  D: "[c4,e4]@4 a3 ~@11", E: "[c4,e4]@2 d4@4 c4 ~ d4 ~ c4@5 ~", F: "[c4,e4]@2 ~@2 [a3,d4,f#4]@11 ~", G: "a3 ~@15",
  H: "[~@5 a4@19]/3", I: "~@7 a4", J: "[~@2 b4@2 ~@2 c5@3 ~ d5@2 ~@2 e5@4 ~@14]/2",
  K: "[a3@2 ~@2 a3@2 ~@2 a3@3 ~ a3 ~ c4@4 ~ a3@5 ~@8]/2", L: "[a3@2 ~@2 a3@2 ~@2 a3@3 ~ a3 ~ c4@6 a3@2 ~@10]/2",
  M: "~ d5@3 c5 a4 g4 ~",
})).s("gm_lead_5_charang").gain(0.19).pan(0.4)

// chords · electric guitar jazz · "tk7"
const electric_guitar_jazz = note(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B A ~ A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~@8 A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "[c4,e4,a4] ~@5 [c4,e4,a4] ~@5 [c4,e4,a4] ~@3", B: "~@2 [c4,e4,a4] ~@5 [c4,e4,a4] ~@7",
})).s("gm_electric_guitar_jazz").gain(0.14).pan(0.4)

// chords · electric guitar muted · "tk8"
const electric_guitar_muted = note(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~@4 A B A B A B A B
  A B A B A B A C A B A B A B A B A B A B A B A B A B A B A B D E F B A B A B A B A B A B G H G H G H G H A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "~@2 [a3,c4] ~ [a3,c4] ~@3 [a3,c4] ~ [a3,c4] ~@3 [a3,c4] ~", // Am
  B: "[a3,c4] ~@3 [a3,c4] ~ [a3,c4] ~@3 [a3,c4] ~ [a3,c4] ~ [a3,c4] ~", C: "c4 ~@15",
  D: "g3 ~ g3!2 ~@2 g3!2 ~ g3!2 ~ a3 ~@2 g3", E: "~ g3!2 ~@2 g3!4 ~ g#3 ~ a3 ~@3",
  F: "g3 ~ [a3,c4] ~ [a3,c4] ~@3 [a3,c4] ~ [a3,c4] ~@3 [a3,c4] ~", // Am
  G: "[c4,e4,a4] ~ [a3,c4] ~ [a3,c4] ~ [c4,e4,a4] ~ [a3,c4] ~ [a3,c4] ~ [c4,e4,a4] ~ [a3,c4] ~", // Am
  H: "[a3,c4] ~ [c4,e4,a4] ~ [a3,c4] ~ [a3,c4] ~ [c4,e4,a4] ~ [a3,c4] ~ [a3,c4] ~ [a3,c4] ~", // Am
})).s("gm_electric_guitar_muted").gain(0.2).pan(0.4)

// other · electric guitar muted · "tk9"
const electric_guitar_muted_2 = note(`<
  ~@108 A B A B ~@38 A B A B A B ~@24 A B A B A B A B A B A B A B C D A B A B
>`.pickRestart({
  A: "g3 ~ g3!2 ~@2 g3!2 ~ g3!2 ~ a3@3 g3", B: "~ g3!2 ~@2 g3!4 ~ g#3@2 a3 ~@3",
  C: "g3 ~ g3!2 ~@2 g3!2 ~ g3!2 ~ g3@3 g3", D: "~ g3!2 ~@2 g3!4 ~ g3@2 g3 ~@3",
})).s("gm_electric_guitar_muted").gain(0.21).pan(0.4)

// other · electric guitar muted · "tk11"
const electric_guitar_muted_3 = note(`<
  ~@108 A@2 B@2 ~@38 A@2 B@2 C@2 ~@24 A@2 B@2 C@2 D@2 E@2 F@4 A@2 F@2 G@2
>`.pickRestart({
  A: "[a3 ~@3 a3 ~ a3@2 ~@2 a3 ~ a3 ~ c4@6 a3 ~@3 g3@2 g#3@2 a3 ~@3]/2",
  B: "[a3 ~@3 a3@2 a3@2 ~@2 a3 ~ a3 ~ c4@6 a3 ~@3 g3@2 g#3 ~@5]/2",
  C: "[~ a3@2 ~ a3@2 a3@2 ~@2 a3@2 a3 ~ c4@6 a3 ~@3 g3@2 g#3 ~@5]/2",
  D: "[a3 ~@3 a3@2 a3@2 ~@2 a3@2 a3 ~ c4@6 a3 ~@3 g3 ~ g#3 ~@5]/2",
  E: "[a3@2 ~@2 a3@2 a3 ~@3 a3@2 ~@2 c4@6 a3 ~@3 g3@2 g#3@2 a3 ~@3]/2",
  F: "[a3@2 ~@2 a3@2 a3@2 ~@2 a3 ~ a3 ~ c4@6 a3 ~@3 g3 ~ g#3@2 a3 ~@3]/2",
  G: "[a3@2 ~@2 a3@2 a3@2 ~@2 a3 ~ a3 ~ c4@6 ~@12]/2",
})).s("gm_electric_guitar_muted").gain(0.16).pan(1)

// other · trumpet · "tk12"
const trumpet = note(`<
  ~@3 A B ~@6 A B ~@2 C D ~@2 E ~@23 F G ~@2 H I ~@4 J ~@3 K L M ~ N L M ~ O ~@5 P D ~ L M Q N L M Q N ~ R ~@5 S D ~@2 A
  T ~@2 S U ~@2 A T ~@2 S U ~@2 V ~ V ~@9 N ~ N ~@3 N W X ~ N W X ~ N ~@2 Y Z AA AB ~ AC AD AB ~ AE W X ~ AE W X ~ AE
  ~@7 AF AG AH AG AH AG AH AG AI W X ~ N W X ~ N W X ~ AJ AK X ~ N W X ~ N W X AL AM W X ~ AN
>`.pickRestart({
  A: "~@3 e5", B: "a5 ~", C: "~@4 a5@2 g5 ~@3 a5@2 g5 ~ e5 ~", D: "g5@2 a5 ~@5",
  E: "~@2 c4 ~ e4 ~ g4 ~ a4@2 a4 ~ a4 ~@3", F: "~@3 e4", G: "a4@5 ~@3", H: "~@4 a4@2 g4@2 ~@2 a4@2 g4@2 e4 ~",
  I: "g4@2 a4 ~@5", J: "~@2 c4 ~ e4 ~ g4 ~ a4@2 a4@2 a4@2 ~@2", K: "~@2 c5 ~ e5 ~ g5 ~ a5@2 a5 ~ a5 ~@3",
  L: "a4@2 ~@2 g4 ~ a4@2 ~@2 g4 ~ a4 ~@3", M: "c5@4 a4@2 ~@2 g4@2 g#4@2 a4 ~@3",
  N: "~@2 c4 ~ e4 ~ g4 ~ a4@2 a4@2 a4 ~@3", O: "~@2 c5 ~ e5 ~ g5 ~ a5 ~ a5 ~ a5 ~@3",
  P: "~@4 a5@2 g5@2 ~@2 a5 ~ g5 ~ e5 ~", Q: "~@2 a4 ~@5", R: "~@2 c5 ~ e5 ~ g5 ~ a5@2 a5@2 a5@2 ~@2",
  S: "~@4 a5 ~ g5 ~@3 a5 ~ g5 ~ e5 ~", T: "a5@5 ~@3", U: "g5@4 a5 ~@11", V: "~@2 c4 ~ e4@2 g4 ~ a4@2 a4 ~ a4 ~@3",
  W: "a4@2 ~@2 g4@2 a4@2 ~@2 g4 ~ a4 ~@3", X: "c5@2 a4 ~ g4 g#4 a4 ~", Y: "e4@2 e4@2 e4 ~@3 f#4@2 ~@2 f#4@2 ~@2",
  Z: "g4@2 g4@2 g4@2 ~@2 a4 ~@3 g5@2 a5@2", AA: "~@6 a4@2 ~@2 g4@2 a4 ~@3", AB: "c5@4 a4 ~@3 g4@2 g#4@2 a4@2 ~@2",
  AC: "~@2 c4 ~ e4 ~ g4 ~ a4 ~ a4 ~ a4@2 ~@2", AD: "a4 ~@3 g4 ~ a4@2 ~@2 g4 ~ a4 ~@3",
  AE: "~@2 c4 ~ e4 ~ g4 ~ a4@2 a4 ~ a4@2 ~@2", AF: "~@8 a4 ~ a4@5 ~", AG: "a4 ~@3 g4 ~ a4 ~@3 g4 ~ a4 ~@3",
  AH: "~@2 g4 ~ a4 ~@5 g4 ~ a4 ~@3", AI: "~@2 g4 ~ a4 ~ g4 ~ a4@2 a4 ~ g4 ~@3", AJ: "~@12 g5@2 a5 ~",
  AK: "~@4 g4@2 a4@2 ~@2 g4 ~ a4 ~@3", AL: "e4!3 ~ f#4 ~ f#4 ~", AM: "g4!3 ~ a4 ~ g5 a5",
  AN: "~@2 c5 ~ e5 ~ g5 ~ a5@2 a5@2 a5 ~@3",
})).s("gm_trumpet").gain(0.33)

// … 230 more lines

More by Bob Marley