Strudelify

Riding on a Railroad

James Taylor

KeyG majorTempo148 bpm
0:00/0:00
// Riding on a Railroad — Taylor James
// 148 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 8 "JAZZ GTR" electric guitar jazz (copy of ch 3 "STEEL GTR" acoustic guitar steel)
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(148/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 · "A.PIANO 2"
const piano = note(`<
  ~@20 A B C@2 D@3 E F@2 G H I J K L M@2 N O P Q R@2 S@2 T U V W X Y Z AA AB AC AD@2 AE AF AG AH AI AJ@2 AK AL@3 AM AN@2
  AO@2 AP AQ AR AS@4 AT AU AV AW AX AY AZ BA BB BC BD BE@2 BF@3 BG BH BI BJ ~@3
>`.pickRestart({
  A: "[e3,g3,b3,d4,b4]@14 e5 ~", B: "g5@2 b4 ~@7 [e3,g3,b3,d4] ~@5, ~ e5@3",
  C: "[~@18 [g3,a3,d4,e4] ~@5 [g4,c#5]@7 ~, [g3,a3,d4,e4]@12 ~@12 [g3,c#4]@5 ~@3, ~@5 d5@7 ~@4]/2", // Gsus2 Gdim Gsus2 Gdim
  D: "[c4@7 ~@3 c4@2 c5@2 ~@2 d4@6 [g3,c4]@6 ~@2 d4@2 b3@6 g3@3 ~@5 [a#4,d5]@2, [f3,a3,f4,c5]@6 ~ g4@7 ~ g4@5 ~@4, ~@8 c3@6 ~@2 g2@5 ~@3]/3", // C5 A# F
  E: "b4 ~ [g2,g3,a#4] ~ a4@2 ~@6 f#3@2 ~@2, ~@2 d5@4 ~@2 [f#2,g4,d5]@7 ~", // Gm Gmaj7
  F: "[[e2,e4,b4]@6 e3 ~ [d4,g4]@2 b3 ~ d4 ~ [b3,e4]@4 b3 ~ d4 ~ [b3,e4]@4 ~@2 [d4,g4]@2 e4 ~, ~@14 [e2,e3]@11 ~ e3@4 ~@2]/2", // E5 G5 E5 G5 E
  G: "[d4,a4]@15 ~, a2@11 ~@5", H: "[a2,b3,d4]@7 ~ [a2,g3,c#4,f#4]@7 ~", I: "[f2,g3,c4,f4]@5 g3 c4 f4",
  J: "e4@2 c4@2 d4 ~ d4@6 c3 ~ [c3,d4] ~, c3@11 ~@5, ~@6 [c4,g4]@9 ~", // Csus2 C5
  K: "[b3,d4,g4]@6 g3 ~ [d4,f#4,a4]@6 f#3 ~, g2@5 ~@3 f#3@5 ~@3", // G D
  L: "[e3,e4]@4 b3@2 e4@2 [a2,g3,a3,c#4,e4]@7 ~, g4@7 ~@9, b3@2 ~@4 e3 ~@9", // E A7
  M: "[[d3,d4]@10 ~@8 d4@3 ~@7 c3@4, [f#4,a4]@6 d4@2 c3@5 ~@3, ~@10 d3@4 [f#4,a4]@7 ~ [d4,f#4,a4]@9 ~]/2", // D F#m D
  N: "[g2,d4,g4]@4 b4@2 ~@2 d4@2 ~@2 f#3 ~@3, ~ [f#4,b4], ~@4 f#2@3 ~, ~@11 d4@3 ~@2", // G5 B5
  O: "[e2,e4,g4]@6 e3 ~@3 [c#4,f#4,b4]@6, ~ a2", P: "[d3,d4]@9 ~@3 d4@2 [f#4,a4] ~, a4@3 ~, ~@10 d3@5 ~",
  Q: "[d4,g4]@4 c4 ~@9 c3 ~, [c3,e4]@3 ~, c4@3 ~@3 [c4,d4,g4]@10", // G5 C Csus2
  R: "[g2@6 g3 ~ [a#4,b4,d5] ~ a#4@2 [a4,d5] ~ a4 ~@3 g3@3 ~ d3 ~ [c#5,g5] ~@3 [d5,g5]@3 ~, ~@10 d5 ~@3 [g4,d5]@6 ~@4 d5@2 ~@6, ~@8 g2@3 ~@5]/2", // A# D5 C#dim G5
  S: "[~@4 g4@4 ~@2 [b4,d5]@2 g4 ~ e2@10 ~@2 g4 ~ e5@3 ~, [e2,d5]@4 e3@3 [b4,e5]@6 ~@3, ~@6 e3 ~]/2", // Bm E7 E5
  T: "b2@8 ~@2 b2 ~ b4@2 d4@2, d5@3 ~@5", U: "[f#4,b4]@2 [b2,d4] ~@3 [f#4,b4]@4 ~@2 [b2,f#4,b4]@3 ~, ~@6 d4@3 ~ d4@5 ~",
  V: "[c3,c4,d4,g4]@10 ~@2 [c4,d4,g4]@3 ~, ~@10 c3@5 ~", W: "[b3,d4,g4]@6 g3 ~ [b3,d4,f#4]@7 ~, g2@5 ~@11",
  X: "[b3,g4]@6 e3 ~ [a2,c#4,f#4]@8, [e3,e4]@2 ~@2 g3@3 ~", // Em F#m E
  Y: "~@2 f#4 a4 ~@2 e4 g4, d3@8 c3@7 ~, ~@2 d4@5 ~ g4@4 ~@4, ~@10 c4@5 ~",
  Z: "~@4 d4@2 f#4 ~ [a2,a3,c4,e4]@7 ~, b2@7 ~@9, f#4 ~@3, ~@2 b3@5 ~@9", // Am
  AA: "d4@4 b3@2 [g2,d4] ~ [f#3,d4]@4 b3@2 d4 ~, [g2,g3]@6 ~@2 f#2@7 ~", // G5 D G
  AB: "[g3,d4]@8 ~@4 d3 ~ [a#4,e5]@2, e2@3 ~, e3 ~@3", AC: "b4@2 [a#4,d5]@2 a4 ~ [g4,d5]@9 ~, ~@2 [e3,g3,b3,d4]@9 ~@5",
  AD: "[[g3,a3,d4,e4]@9 ~@7 [g3,a3,d4,e4]@3 ~@5 [a3,c#5]@2 [b3,d5]@2 [c#4,d#5]@2 [d4,e5]@2, ~@10 e5@13 ~@9]/2", // Gsus2 A Bm C#sus2 Dsus2
  AE: "[a4,c5]@15 ~, f3@11 ~@5", AF: "[g3,c4]@10 e4 ~ e5 ~ g5 ~, g4 ~",
  AG: "[g3,b3,d4,d5]@4 ~@2 [g3,b3,d4,g5,b5,d6] ~ [c4,g5,c6,e6] ~@3 [g3,c4,e4,g5,c6,e6] ~ [g5,b5,d6]@2, b4@2 ~@6 [g3,e4]@2 ~@4 [g3,b3,d4] ~", // G C G C G
  AH: "[g3,g5]@2 [a3,a5,c6]@2 [a#3,a#5,c#6]@2 [b3,b5,d6]@7 ~@3, b5 ~@15", // G Am A#m Bm
  AI: "[e3,g3,b3,d4,g5,e6]@3 ~ [e3,g3,b3,d4,g5,e6]@3 ~@3 [g3,d4,d6]@4 e5 ~", // Em7 G5
  AJ: "[b5@2 a#5 ~ a5 g#5 g5@2 e5@2 d5@2 ~@6 [g3,a3,d4,e4]@5 ~ [g3,a3,d4,e4]@5 ~@3, e3@5 ~@11, ~@6 g3@4 d4 ~ e5@18 ~@2]/2", // Gsus2
  AK: "~@6 [a3,c#4,e4,c#5]@3 ~ [g3,a3,c#4,e4,d5]@4 d#5@2", // A A7
  AL: "[[f3,a3]@2 c5@2 a4@2 [f3,a3,c4] ~ c5@4 a4@2 [g3,c4,g4]@8 e4 ~ c5@4 e5@2 [b3,d4,d5]@6 ~@2 [g3,b3,d4,c#6] ~@3 [b3,d4,g5] ~ g6@2 ~@2, e5 ~@13 e4@6 ~@8 c4 ~@9 g6@2 ~@4 c#6 ~@3]/3", // F C5 Bm G
  AM: "g5 ~ [b3,d4,g5,d6]@3 ~ [g3,d4,a#5] ~ [a#5,d6] ~ [g3,a5,d6] ~ [g5,d6]@2 e5 ~, ~@2 c#6 ~@3 [b5,d6]@2 ~@8", // G Gm A# Gsus2 G5 Bm
  AN: "[[e3,g3,e5,b5]@14 [g3,b3,d4] ~@3 [e3,g3,b3,d4] ~@7 [e3,g3,b3,d4,e5] ~ [e5,e6]@2 b5 ~, [b3,d4]@6 ~ [e5,e6]@2 [e5,b5]@4 ~@3]/2", // Em G Em7 E Bm E E5
  AO: "[[g3,a3,d4,e4]@9 ~ [a3,d4,e4] ~ a5@2 ~@4 a3 ~@3 [a4,e5]@5 ~@5, ~@12 d#5 ~ e5@8 [a3,e4] ~@9, ~@16 g5@5 ~@11]/2", // Gsus2 Asus4 A5
  AP: "[f3,a3,f4,c5]@10 c4 ~ f5@2 c5 ~, c4 ~", AQ: "[g3,c4]@10 e4 ~ c5@2 [b4,d5] ~, [g4,e5]@13 ~@3",
  AR: "~@2 [g3,b3,d4] ~ e6 ~ [d6,g6] ~@3 [g3,b3,d4,d6] ~ e6 ~ [g3,d4,d6,g6]@2, ~ d6 ~@6", // G G5 G G5
  AS: "[~@2 [b3,d4,b5,e6] ~@3 [g3,b3,d4,a#5,d6] ~ [a#5,d6] ~ [b3,a5,d6] ~ [g5,d6]@2 ~@2 [e3,g3,b3,d4,b5]@10 [b4,g5]@3 ~ [e3,g3,b3,d4,b4,g5]@8 b3 ~ e5@5 ~ [g3,a3,d5]@12 [d4,e4] ~@5, ~@6 b5@2 ~@6 e5@12 ~@20 [d4,e4]@11 ~@7]/4", // E7 G A# Bm7 G5 Em7 Em Em7 …
  AT: "~@6 [g3,a3,c#4,c#5]@4 g4 ~ [g3,a3,c#4,c#5]@3 ~, ~@3 f#5 ~@4", AU: "[f3,a3,f4,c5]@10 c4 ~ c5@2 g4 ~, c4@7 ~@9",
  AV: "[c3,d4,g4]@10 g3 ~ d4@4, g3 ~", // Csus2
  AW: "g2 ~ [g2,d3] ~ [a#3,c#4] [b3,d4]@2 ~ [c4,e4]@3 ~ [g3,b3,d4] ~@3, ~@4 g3@2 ~@2 g3 ~@7", // G5 A#m Bm C G
  AX: "~@2 [d3,b3,d4] ~@3 d3 ~ [d4,g4]@3 ~ [d4,f#4]@3 ~, ~ g2@2 ~@5", AY: "[e2,b3,e4,g4]@14 e3 ~",
  AZ: "~@10 [d4,g4]@2 e4 ~ d4@2", BA: "[a2,e4]@5 ~@3", BB: "~@2 e4 ~@3 [g3,c#4,f#4]@5 ~ [g3,c#4,e4]@3 ~, ~@6 a2 ~@9",
  BC: "[f2,c3]@10 c3 ~ [f4,c5]@4, [c4,f4]@7 ~@9", BD: "[c3,e4,g4]@10 [g3,c4] ~ [e4,g4]@4, g3 ~",
  BE: "[[d3,b3,d4]@4 ~@2 d3 ~ [a#4,d5] ~ a#4@2 [a4,d5] ~ [g3,b3,g4,d5]@5 ~@3 [g3,b3,d4] ~ [d5,g5]@7 ~, g2@6 ~@2 b4@2 d5 ~@21]/2", // G A# D5 G G5
  BF: "[~@8 [g3,b3,d4,e4] ~ [g3,b3,e4,b4,e5]@3 ~ [g3,b3,d4,e4]@2 ~@3 b3 ~@2 [g3,b3,d4,e4,e5]@3 ~ [g3,b3,d4,e4,d5]@3 ~ [g3,a3,d4,e4,e5]@12 [d4,e4] ~@5, ~@10 d4 ~@3 [e5,a5]@4 ~@30, ~@14 b4 ~@3 [g3,d4,e4,d5,g5]@3 ~@27]/3", // Em7 Em Em7 Gsus2 Dsus2 A5 Em7
  BG: "~@10 [g3,a3,c#4,c#5,f#5]@5 ~", BH: "[c5,f5]@3 ~ a5@6 c4 ~ c6@2 a5 ~, [f3,a3]@5 ~@3, c4@7 ~@5 a5 ~@3",
  BI: "[g3,c4,e5,g5]@9 ~ [c4,e5,g5] ~@3 c4 ~, ~@5 [g3,e4]@2 ~", // C
  BJ: "~@2 [g3,b3,c#6,d#6] ~ d6 ~ [b3,d4,d6] ~ d6@2 ~@6, ~ [d4,g6] ~@6", // Gaug Bm G5
})).s("gm_piano").gain(0.38)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@28 A B C D E F G H I J G H I J K L M N O P F G H Q R G S T U V W X Y Z AA B AB AC AD F AE AF AG AH AI AJ AD F K AK A
  AL AM AN AO AP AQ AR AS AT AU AV AW AX AQ AY AS AT AU AV AW AX AZ ~@3
>`.pickRestart({
  A: "e2@7 b1", B: "e2@6 g2 g#2", C: "a2@7 e2", D: "a1@3 g1", E: "f1@7 b1", F: "c2@6 b1 a1", G: "g1 f#1", H: "e1 a1",
  I: "d2", J: "c2", K: "g1@5 b1 d2 f#2", L: "g2@6 f#2 b1", M: "e2@7 ~ b2@6 d3@2", N: "e3@3 f#3 g3@2 f#3 e3",
  O: "b2@4 a2@2 f#2 f#1", P: "b1@5 ~ b2@2 a2@2 f#2@2 e2@2 d2@2", Q: "d2 c2", R: "b1 a1", S: "~@4 g2 a2 b2 d#3, e1@15 ~",
  T: "e3@6 f#3 g3", U: "a3@6 g3 f#3", V: "e3@3 d3 c#3 b2 a2 g2", W: "f2@6 a2 b2", X: "c3@6 b2 a2",
  Y: "g2@9 ~ e2@2 d2@2 b1@2", Z: "g1@8 f#1@7 ~", AA: "e1@7 b1", AB: "a2@12 e2 ~ e2@2", AC: "a1@6 a2 g2",
  AD: "f2@6 e2 d2", AE: "g1@6 b1 d2", AF: "g2@4 g2@2 f#2 b1", AG: "e2@4 b2@3 d3", AH: "e3@7 ~ d3@4 b2@2 a#2@2",
  AI: "a2@4 e2@2 ~ e2", AJ: "a1@3 e2 d2 c#2 d2 e2", AK: "g2@3 a2 b2 a2 g2 f#2", AL: "e2 ~ e2@4 g2 g#2", AM: "a2",
  AN: "~ e2 a1@3 g2 e2 d2", AO: "f2@9 ~@3 f2@2 b2@2", AP: "c3@5 c2 e2 f#2", AQ: "g2@5 a2 b2 d3",
  AR: "e3 g3 e3 d3 b2 a2 g2 f#2", AS: "e2@7 ~ e2@6 b1@2", AT: "e2@3 ~ e2@2 ~@2 e2@4 g2@2 g#2@2", AU: "a2@7 ~ a2@6 e2@2",
  AV: "a1 ~ a1@2 e2 d2 b1 a1", AW: "f1@6 a1 b1", AX: "c2@4 d2 e2 f2 f#2", AY: "e3 g3 e3 d3 b2 a2 g2 b1", AZ: "g2@5 ~@3",
})).s("gm_acoustic_bass").gain(0.38)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A@8 B@6 C@2 D E@7 B@6 C@2 D F@3 G@4 H I@5 J@5 K L@6 B@6 C@2 D E@7 B@6 C@2 D E@7 B@6 C@2 D M@2 ~@3
>`.pickRestart({
  A: "[~@2 g4 ~@2 c3 ~@4 g3 ~@8 g4@2 ~@9 d4 ~@4 [d4,g4]@2 g4@2 ~@4 g4@2 ~@5 [d4,e4]@3 d4 ~@4 [g3,b3]@3 [g3,c#4,e4]@2 [g3,b3], g2@6 g4@16 g4@8 g4@7 ~@5 g4@4 g4@10 g4@12 g3@12 e2@16 a2@16 a2@15 ~, ~@4 d4@16 d4@8 [g3,d4]@8 [g3,d4]@7 ~ [g3,d4]@8 [g3,d4]@8 g3@8 e3@24 d4@4 ~@10 e4@4 e4@7 ~@11, ~@4 g3@9 ~ g3@5 ~@3 g3@2 g2@8 g2@16 g2@8 f#2@8 e2@14 g4@6 d4@6 g4@4 g4@4 ~@10 d4@8 ~@12, ~@4 d3@6 ~@2 d3@4 g2@8 d3@11 ~ d3@12 ~@14 d4@7 ~@5 d4@10 g3@15 ~ [e3,g3]@15 ~ e3@10 ~@2]/8", // G5 Dsus2 G C#dim G G5 Em
  B: "[~@2 [f3,a3,c4]@3 f3!2 ~@3 g3@3 ~@5 [g3,d4,g4]@3 g4@2 ~@11 g4 g4@2 ~@5 [d4,g4] [d4,g4]@2 ~@2 g4, f2@8 c3@8 g2@8 g2@4 f#2@4 e2@7 g4 e2@8, c3@10 f4@7 ~@3 e3@8 e3@4 ~@36 d3@28, ~@10 [c3,a3,c4]@4 c4@7 ~@5 g3@10 ~@6 [g3,d4]@10 [g3,d4]@8 [g3,d4]@8 g3@6 g4@2 g3@8 g3@6 g4@2 g3@4, ~@26 [c4,e4]@4 [c4,e4]@4 ~@12 g4@22 d4@6 d4@9 ~@7 d4@6]/6", // F G5 F G5 C
  C: "[~@2 [g3,d4,e4]@3 [d4,e4] ~@4 [g3,b3]@3 [c#4,e4]@2 b3, a2@7 e4@6 ~@3, ~ e3@3 a2@4, ~@10 g3@9 ~@7 [e3,g3]@6, ~@12 d4@7 ~@13]/2", // Em7 Dsus2 G C#m Em
  D: "~@2 [a3,f4]@3 a3 [f2,a3]@2, f2@5 f4@2 ~, ~ [f3,c4]@3", // Dm F F5
  E: "[~@2 c4@3 c4!3 ~@2 [g3,d4,g4]@3 d4 ~@13 [d4,g4]@2 g4@2 ~@4 g4@2 ~@5 [d4,e4]@3 d4 ~@4 [g3,b3]@3 [g3,c#4,e4]@2 [g3,b3], c3@16 g2@16 g2@8 f#2@7 ~ e2@14 g4@6 d4@6 g4@2 d4@4 ~@10 e4@4 e4@7 ~@11, ~@4 g3@16 ~@6 [g3,g4]@9 ~ [g3,d4]@8 d4@8 g3@12 e2@16 a2@16 a2@15 ~, ~@2 e3@6 ~@2 d3@6 ~@6 g3@4 e3@13 g4@2 ~@5 d4@4 ~@6, ~@10 e4@8 ~@10 d4@8 g4@18 ~@4 d4@10 g3@15 ~ [e3,g3]@15 ~ e3@10 ~@2]/7", // G5 Dsus2 G C#dim G G5 Em
  F: "[~@2 c4@3 c4!3 ~@6 d4@2 ~@2 [d3,g3,b3]@2 c#4@2 [g3,c#4]@2, c3@2 g2 f#2 e2 [a2,e3], ~ g3@4 [g3,d4,g4]@2 [g3,g4]@2 ~@3, ~@4 e3@12 ~@4 d3@13 ~@15, ~@10 e4@8 ~@18 e4@11 ~]/3", // G Gdim A5 G5 G
  G: "[a3@2 ~ f#4@2 ~ d4 ~ c3@2 a3 f#4@2 ~ d4 ~@3 g3 ~@5 e3@2 [e3,g3,b3]@2 g3@2 [g3,c#4]@2, [d3,d4]@6 d3@9 ~@5 c3@10 [d3,g3]@5 ~ d3@8 d4@4 b2@6 ~@2 a2@8, ~@4 a3@10 a3@5 ~@3 [a3,d4]@7 ~@3 g2@8 f#2@8 e2@8 ~@8, ~@6 d4@6 ~@2 d4@8 ~@14 [d4,g4]@8 g4@8 e4@11 ~, ~@10 f#4@6 ~@10 f#4@6 ~@6 g3@13 ~@5 e3@6 ~@2]/4", // Em Gdim D G5 D5 G5
  H: "[a3,d4,f#4]@3 [a3,d4,f#4]@3 [a3,d4,f#4] ~, d3", // D
  I: "[[e3,g3,d4]@6 e3@5 ~ e3@2 ~@10 g4@6 ~@8 g4@4 g4@4 d4@2 e2@4 ~@4 b3@6 ~@2 e2@4 ~@2 e4@4 ~@2 e2@4, c3@14 d3@16 [d3,g4]@8 d3@17 ~ [d3,g3]@24, g4@12 g4@11 ~@29 e2@10 b3@6 e2@6 e4@4 ~@2, ~@6 [g3,d4]@18 [g3,d4]@14 [g3,d4]@8 g3@10 e4@14 b3@9 ~, ~@8 g2@8 g2@8 b2@10 b2@5 ~]/5", // Em7 G5
  J: "[b2@4 f#3@3 ~ [f#3,b3]@6 b3@2 [b3,d4]@6 [b3,d4,f#4]@6 [b3,d4,f#4]@2 [a2,d3] ~ [c3,e3,c4]@8 [c3,e3,c4]@5 ~@3 b2@4 b2@3 ~@5 [d3,g3]@2 ~@6 g3@4 [a2,g3,c#4]@6 d3@2, ~@4 b2@18 [b2,f#3]@8 ~@16 d3@14 ~@2 g3@6 ~@4 e3@5 ~@3, ~@8 f#4@14 ~@18 e4@6 ~@2 g2@7 ~ f#2@8 [e2,b2,d3]@7 ~@9, ~@8 d4@8 ~@14 b3@2 ~@14 b3@6 g4@11 ~@5 e4@11 ~, ~@14 f#3@8 ~@8 g3@9 ~ g3@12 [g3,b3]@8 b3@11 ~@9]/5", // B5 Bm D5 C G5 A7 B5 E7 …
  K: "[d4,f#4]@5 ~ [d4,f#4]@2 [e3,c4,e4]@6 c4 ~, [d3,a3] g3, ~@2 c3 ~", // D C D5
  L: "[b3@2 b3 ~ [c4,e4]@2 [c4,e4] ~@3 d3@2 ~@7 [d4,g4]@2 g4@2 ~@4 g4@2 ~@5 [d4,e4]@3 d4 ~@4 [g3,b3]@3 [g3,c#4,e4]@2 [g3,b3], [d4,f#4]@8 ~@6 g3@13 ~ [g3,b3,g4]@8 e3@24 d4@4 ~@10 e4@4 e4@7 ~@11, [b2,f#3]@6 ~@2 [a2,a3,a4]@6 [d3,b3]@6 [b3,g4]@8 ~@8 g3@12 e2@16 a2@16 a2@15 ~, ~@8 g2@4 [f#2,d3]@4 e2@7 g4@3 d4@3 g4@2 g4@2 ~@5 d4@4 ~@6, ~@42 d4@10 g3@15 ~ [e3,g3]@15 ~ e3@10 ~@2]/6", // C G5 Dsus2 G C#dim G D G …
  M: "[~@2 c4@3 c4!3 ~@2 [g3,d4,g4]@3 ~@3, c3 g2, ~ g3@4 ~@3, ~ e3@3 ~ d3@3, ~@5 e4@4 ~@7]/2", // G5
})).s("gm_acoustic_guitar_steel").gain(0.31).pan(0.6)

// chords · banjo
const banjo = note(`<
  ~@4 A@2 B@2 C@2 D@4 B@2 C@2 D@4 B@2 C@2 E@4 B@2 C@2 F@2 G@2 H@2 I@2 D@4 J@2 K@3 L@2 M@3 B@2 C@2 D@4 B@2 C@2 D@4 B@2
  C@2 E@4 B@2 C@2 F@2 G@2 H@2 N@2 D@4 J@2 O@3 ~@3
>`.pickRestart({
  A: "[~@3 d4@2 ~@2 g4 e4@2 b3 ~@2 e4@2 ~, e4@5 ~ d4@3 ~@2 e4@2 ~@3, ~@4 b3@5 ~ b3@9 ~@5 g4@6 ~@2]/2",
  B: "[~@2 b3 ~@2 e4@2 ~@3 e4 ~@3 b3@2, e4 g3 g3@2, ~ d4@2 d4@8 b3@3 ~@2, ~@14 e4@5 ~@5 g4@7 ~]/2",
  C: "[a#3 d4 g3 d4@2 ~@3 e3 ~@2 e3 d3 ~ a#3 a3, ~@5 g3@2 g3@2 ~@7, ~@12 d4@8 d4@7 ~@5]/2",
  D: "[~@15 g4 ~@3 d4@2 ~@2 g4 e4@2 b3 ~@2 e4@2 ~, g3@6 g3@6 g3@4 g3@6 g3@6 g3@6 ~@2 b3@5 ~ b3@9 ~@13, ~ g4@3 g4@3 g4@2 g4@3 g4@3 ~@13 g4@3 ~, ~@2 d4@3 ~@5 d4@3 d4@3 e4@5 ~ d4@3 ~@2 e4@2 ~@3]/4",
  E: "[~@15 g4 ~@3 d4@2 ~@2 g4 e4@2 b3 ~@2 e4@2 ~, g3@3 g3@3 g3@2 g3@3 g3@3 g3@3 ~@15, ~ g4@3 g4@3 g4@2 g4@3 g4@3 ~ e4@5 ~ d4@3 ~@2 e4@2 ~@3, ~@4 d4@6 ~@10 d4@6 d4@7 ~@3 b3@5 ~ b3@9 ~@5 g4@6 ~@2]/4",
  F: "[~@15 g4, g3@3 g3@3 g3@2 g3@3 a3@3 a3@2, ~ g4@3 g4@3 g4@2 g4@3 g4@3 ~, ~@2 d4@3 ~@5 d4@3 c#4@3]/2",
  G: "[~@3 a3@2 ~@2 a3 a3@2 b3 ~@2 e4@2 ~, a3@6 ~@4 b3@9 ~@5 a3@6 ~@2, ~@4 d4@5 ~@3 d4@6 ~@4 d4@4 ~@6]/2",
  H: "[~@2 b3 ~@2 g4@2 ~@3 e4 ~@3 c#4@2, g4 g3 g3@2, ~ d4@2 d4@8 b3@3 ~@2, ~@14 g4@5 ~@5 e4@7 ~]/2",
  I: "[g3 d4 f#3 d4@2 ~@3 g3 ~@2 e3 d3 ~ a#3 a3, ~@5 f#3@2 f#3@2 ~@7, ~@12 d4@8 d4@7 ~@5]/2",
  J: "[~@2 b3 ~@2 f#4@2 ~@3 e4 ~@3 b3@2, f#4 f#3 f#3@2, ~ d4@2 d4@8 b3@3 ~@2, ~@14 f#4@5 ~@5 f#4@7 ~]/2",
  K: "[e4 c4 g3 d4@2 ~@2 g3 ~@15 e4, ~@5 g3@2 ~ g3@3 g3@3 g3@2 g3@3 g3@3 g3@2, ~@6 d4@4 d4@3 ~@5 d4@3 c#4@3, ~@9 g4@3 g4@3 g4@2 g4@3 e4@3 ~]/3",
  L: "[~@3 d4@2 ~@2 g4 f#4@2 b3 ~@2 e4@2 ~, a3@5 ~ d4@3 ~@2 e4@2 ~@3, ~@4 b3@5 ~ b3@9 ~@5 a3@6 ~@2]/2",
  M: "[~@2 g3 ~@2 g4@2 g4 ~@3 d4@2 ~@2 g4 e4@2 b3 ~@2 e4@2 ~, g4@8 g3@12 b3@5 ~ b3@9 ~@5 g4@6 ~@2, ~ d4@2 d4@5 e4@5 ~ d4@3 ~@2 e4@2 ~@3]/3",
  N: "[f3 c4 f3 d4@2 ~@2 f#3 g3 ~@2 e3 d3 ~ a#3 a3, ~@5 f3@2 ~@9, ~@12 d4@8 d4@7 ~@5]/2",
  O: "[e4 c4 g3 d4@2 ~@2 g3 ~@12 e4@3 ~, ~@5 g3@2 ~ g3@3 g3@3 g3@2 g3@3 g3@3 ~@2, ~@6 d4@4 d4@3 ~@5 d4@3 ~@3, ~@9 g4@3 g4@3 g4@2 g4@3 ~@4]/3",
})).s("gm_banjo").gain(0.22).pan(0.3)

// chords · banjo · soft notes
const banjo_soft = note(`<
  ~@5 A ~@2 B C D@2 ~ A ~@2 B C D@2 ~ A ~@2 B C D@2 ~ A ~@2 B C D@2 ~ E ~@2 F C D@2 ~ A ~@2 B D@2 ~ G ~@2 A ~@2 B C D@2
  ~ A ~@2 B C D@2 ~ A ~@2 B C D@2 ~ A ~@2 B C D@2 ~ E ~@2 H C D@2 ~ A ~@2 B D@2 ~@3
>`.pickRestart({
  A: "~@2 d4@3 ~@7 b3@2 e4@2", B: "~@4 f3@3 ~", C: "~ g3@3 ~ e3 ~@2", D: "[~@5 d4@5 ~@6]/2",
  E: "~@2 d4@3 ~@7 c4@2 d4@2", F: "~@4 d3@3 ~", G: "~@2 d4@3 ~@7 c4@2 e4@2", H: "~@4 c3@3 ~",
})).s("gm_banjo").gain(0.11).pan(0.3)

// other · violin
const violin = note(`<
  ~@10 A@2 B@2 C D E F G H I@2 J K L@2 M N O P ~ Q R S T U V ~@14 W X Y Z@2 AA@2 AB AC AD AE AF AG AH@2 AB AI AJ AK@3 AL
  AM AN AO AP AQ@2 AR AS@2 AT AU AV@2 AW AX AY AZ@2 BA BB BC BD BE@2 BF@2 ~@5
>`.pickRestart({
  A: "[~@5 d5@11]/2", B: "[b4@31 ~]/2", C: "g4", D: "e4@15 ~", E: "f4", F: "e4", G: "d4",
  H: "g3@2 b3@2 d4@2 e4@2 g4@2 b4@2 d5@2 e5 ~", I: "[g5@8 ~@2 g5@2 a5@2 a5@7 ~@2 a5@2 g5@2 e5@2 ~ d5@2]/2",
  J: "d5@2 g5@9 ~ a5@3 ~", K: "b5@4 a5@2 g5@3 ~ a5@2 g5@2 e5 ~", L: "[a5@10 g5@2 e5 ~ g5@8 ~@2 b5@2 a5@2 g5@2 a5@2]/2",
  M: "g5@5 ~@3 b5@2 a5@2 g5@2 a5@2", N: "g5@2 f5@5 ~ d5@8", O: "b4@7 c5", P: "d5 g4",
  Q: "b4 c5 b4 c5 b4 [b4,c5] c5 [b4,c5] b4 [b4,c5] c5 b4 [b4,c5] c5 b4@2", R: "f4@15 ~", S: "g4@15 ~", T: "g4 f#4",
  U: "e4 g4", V: "f#4@15 ~", W: "d5 c5", X: "b4 a4", Y: "g4@8 f#4@7 ~", Z: "[e4@31 ~]/2", AA: "e4/2", AB: "a3",
  AC: "g3@11 ~@5", AD: "d4@2 e4@3 ~ g4 ~ g4@3 ~ b4@4", AE: "d5@4 c5@4 b4@4 a4@3 ~", AF: "g4@10 b3@5 ~", AG: "b3@7 ~",
  AH: "[a3@7 g3]/2", AI: "g3 a3 g3 a3", AJ: "b3@3 d4", AK: "[e4@7 ~ g4@4 e4@28 ~@2 e4@2 g4@2 a4 ~]/3", AL: "b4",
  AM: "~@2 e6@2 a#5 a5 g5 a5", AN: "g5@4 f5@3 ~ d5@2 a#4@2 a4@2 g#4@2", AO: "g4@3 a4 g4 e4 d4 e4",
  AP: "b4@2 d5@2 e5@2 g5 ~ b4@2 c5@2 c#5@2 d5@2", AQ: "[g5@3 ~ b5@2 g5@2 b5@4 g5@8 e6@3 ~ e6@8]/2",
  AR: "g5@3 ~ e6@2 ~@2 e6@3 ~ a#5@2 a5@2", AS: "[g5@6 a5@2 g5@5 b5 ~ c6@2 ~ b5@2 c6@2 b5@2 a5@2 g5@2 a5@2 e5 ~]/2",
  AT: "a5@7 ~", AU: "~ a5 g5 d5 a#4 a4 g4 e4", AV: "[b4 d5@2 e5 d5 b4 a4 g4@2 a4 g4 a4 b4 d5 e5 d5]/2",
  AW: "b5@3 a5 g5@4", AX: "~@2 g5@2 a5@2 g5 ~ g5@2 d6@2 a#5@2 a5@2", AY: "b5@4 a5@3 ~",
  AZ: "[~@4 a5@2 g5@2 a5 a#5 ~ g5@2 ~ a5@6 g5@2 a5@2 g5@2 e5 ~ b5@2 b5@2, ~@11 a5 ~@20]/2",
  BA: "a5 g5 e5 d5 a#4 a4 g4 e4", BB: "g4 f#4 g4 ~ a4 g4 a4 ~ b4 a4 b4 ~ c5 b4 ~ c5",
  BC: "c#5 c5 ~ c#5 d5 c5 d5 ~ e5 d5 e5 ~ f#5 e5 f#5 ~", BD: "f#5 e5 f#5 ~ f#5 e5 f#5 ~ f#5 e5 f#5 ~ f#5 e5 f#5 ~",
  BE: "[f#5 e5 f#5 ~ f#5 e5 f#5 ~ g5 a5 b5 ~ d6 e6 ~ f#6@16 ~]/2",
  BF: "[g6@2 g6@2 f#6@2 g6@2 a6@2 g6@2 a6@2 b6@17 ~]/2",
})).s("gm_violin").gain(0.33).pan(0.6)

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

// drums · rim
const rim = s("rim").struct("<~@28 [~ x]!8 ~@68>").gain(0.38)

// drums · snare
const snare = s("sd").struct("<~@36 A@15 B ~@18 B A@14 C A@7 D A@7 ~@3>".pickRestart({
  A: "~ x", B: "~@4 x ~@2 x", C: "~@2 x ~@2 x!3", D: "~ x ~@2 x ~ x ~",
})).gain(0.44)

// drums · hihat
const hihat = s("hh").struct("<~@28 A@7 B A@8 ~@9 C D E@2 F@3 G@2 H I G I G I@3 A@11 J A@3 K A@14 L ~@3>".pickRestart({
  A: "x!4", B: "x ~@3 x ~@3 x ~@3 x ~@2 x", C: "~@12 x!2 ~ x", D: "x ~ x!3 ~@3", E: "x ~@2 x!2 ~@3",
  F: "x ~@2 x!2 ~@2 x", G: "x ~ x!3 ~@2 x", H: "x ~@2 x!2 ~ x!2", I: "x ~ x!3 ~ x!2", J: "x ~@3 x ~@3 x ~@6 x", K: "x",
  L: "x!3 ~",
})).gain(0.27)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@35 A ~@19 B@5 C@2 D ~ C ~ C ~@14 E ~@22>".pickRestart({
  A: "~@7 x", B: "~ x ~ x", C: "~@3 x", D: "~ x ~@2", E: "~@12 x!2 ~@2",
})).gain(0.16)

// drums · low tom
const low_tom = s("lt").struct("<~@53 [~@3 x!2 ~@3] ~@50>").gain(0.49)

// drums · mid tom
const mid_tom = s("mt").struct("<~@52 [x ~@6 x] x ~@50>").gain(0.44)

// drums · high tom
const high_tom = s("ht").struct("<~@52 [~@5 x!2 ~] ~@51>").gain(0.44)

// drums · tambourine
const tambourine = s("tb").struct("<~@62 [~ x]!8 ~@34>").gain(0.22)

// drums · splash
const splash = s("cr").struct("<~@52 [~ x ~@2] ~@32 [~ x ~@2] ~@18>").gain(0.44)

// … 7 more lines

More by James Taylor