Strudelify

Dear Mr. Fantasy

Traffic

KeyA majorTempo78 bpm
0:00/0:00
// Dear Mr. Fantasy — Traffic
// 78 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 7 "CLEAN GTR" electric guitar clean (copy of ch 3 "JAZZ GTR" electric guitar jazz)
// note: Full arrangement: all 80 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(78/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 · rock organ · "ORAGN 3"
const rock_organ = note(`<
  ~@5 A@4 B C D E@2 F D E@2 C D G H G I G I G I J@2 G K L M@2 K L E@2 N@2 G O K P Q R@2 S@2 T U V@2 G F D W@2 C D G X Y
  D X@2 Y D X@2 Y D X@2 Y D Z@2 ~
>`.pickRestart({
  A: "[~@12 a5@163 ~@2 c6@15, ~@88 a5 ~@7]/4", B: "a5@47 ~", C: "[g5,b5,d6]@47 ~", D: "[f#5,a5,d6]@47 ~",
  E: "[[e5,a5,c#6]@95 ~]/2", F: "[g5,b5,d6]@23 ~", G: "[e5,a5,c#6]@47 ~", H: "[f#5,a5,c#6]", I: "[f#5,a5,c#6]@47 ~",
  J: "[[g5,b5]@47 ~ [g#5,b5]@46 ~@2, d6@95 ~]/2", K: "[d5,g5,b5]@47 ~", L: "[d5,f#5,a5]@47 ~", M: "[e5,a5,c#6]/2",
  N: "[[g5,b5,d6]@47 [f#5,a5,d6]@46 ~@3]/2", O: "[a4,c#5,e5]@35 ~ [c#5,e5,a5]@11 ~", P: "[d5,f#5,a5]@23 ~",
  Q: "~@12 d#6@4 ~@5 d#6@3 e6@4 ~@5 e6@3 a6@4 g6 f6 [d6,e6] c6 ~@4, [e5,a5], ~@16 e6@4 ~@10 d#6@5 ~@13, ~@18 a6@5 ~@5 a6@6 ~@14", // Dsus2 A5
  R: "[~@12 a6@60 g6@23 ~]/2", S: "[a6@95 ~]/2", T: "a6@47 ~", U: "g6@47 ~", V: "[a6@47 ~]/2",
  W: "[[a5,c#6,e6]@95 ~]/2", X: "[e5,a5,c#6]", Y: "a5@23 ~ g5@23 ~, [b5,d6]@47 ~",
  Z: "[[e5,a5,c#6]@41 ~ [e5,a5,c#6]@54]/2", // A
})).s("gm_rock_organ").gain(0.33).pan(0.7)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU G
  AV AW J AX AY AZ N BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV@2 ~
>`.pickRestart({
  A: "a2@21 e2@3 a2@3 ~@3 a2@7 ~@3 a2@2 ~@3 d2@2 ~", B: "g2@20 ~ g2 ~@2 g2@2 ~@4 g2@9 ~@3 g2@6",
  C: "d2@21 a1@2 ~ d2@15 ~ g2@8", D: "a2@24 e2@3 f#2@2 ~ a2@3 c3@5 ~@2 a2@2 c3@6", E: "a2@22 e2@2 a2@5 ~ a2@8 ~@4 a2@6",
  F: "g2@19 ~@2 g2@13 ~@2 g2@12", G: "d2@19 ~ d2 ~ d2 ~ d2@15 ~@3 d2@6", H: "a2@16 ~@2 e2@5 ~ e2@4 ~@2 e2@6 g2@6 g#2@6",
  I: "a2@17 ~ a2@12 e2@6 d#2@6 d2@6", J: "g2@19 ~@2 g2 ~@2 g2@15 ~@3 g2@6", K: "d2@19 ~@2 d2 ~@2 d2@15 ~@3 d2@6",
  L: "a2@14 ~@3 d3@6 d3 e3@5 g3@6 ~ g3@6 e3@6", M: "a2@20 ~ e2@2 ~ a2@5 ~ a2@8 ~@2 a2@3 ~@2 a2@2 ~",
  N: "g2@16 ~@2 g2@8 ~@2 g2@11 ~ g2 ~ g2@3 ~@3", O: "d2@5 ~ d2@2 c#2@2 d2@2 d#2@2 e2@2",
  P: "a2@12 d2@3 e2@2 ~ g2@3 e2@2 ~ a2@3 ~@3 a2@6 e2@6 g2@6", Q: "a2@17 ~ a2@11 ~ g2@12 e2@6",
  R: "g2@15 ~@3 g2@8 ~ g2 ~@2 g2@8 ~@2 g2 ~ g2@2 ~@4", S: "d2@3 ~@3 d2@12 ~@4 d2 ~ d2@10 ~@2 d2@10 a2 ~",
  T: "a2@9 ~@3 a2@7 ~@2 a2 ~ c3@6 c3@6 ~ c3@3 d3@3 c3@4 ~@2",
  U: "f#2@10 ~@2 f#2@7 ~@3 f#2 ~ f#2@2 ~@4 f#2@7 ~@3 f#2 ~ f#2@3 ~ a2@2",
  V: "a2@7 ~@2 a2@5 ~ a2 ~@2 a2@17 ~ a2@9 c#2@2 ~",
  W: "f#2@9 c#2@2 ~ f#2@9 ~ c#2@2 f#2@9 c#2@2 ~ f#2@4 ~@2 f#2@3 ~ a2 ~",
  X: "a2@9 e2@2 ~ a2@3 a2 ~@2 a2@3 e2@3 a2@9 e2@2 ~ a2@3 ~ a2 ~ e2@3 f2@2 ~",
  Y: "f#2@9 c#2@2 ~ f#2@9 ~ c#2@2 f#2@9 c#2@2 ~ f#2@5 ~ c#2@6",
  Z: "a2@9 e2@2 ~ a2 ~@2 a2 ~@2 a2@3 e2@3 a2@9 e2@2 ~ a2@3 ~ g2@2 e2@5 ~",
  AA: "f#2@9 c#2@2 ~ f#2@9 ~ c#2@2 f#2@9 c#2@3 f#2@3 ~ f#2 ~ f#2@3 ~ g2 ~",
  AB: "g2@5 ~ g2@5 ~ g2@5 ~ g2@5 ~ g2@5 ~ g2@5 ~ g2@4 ~@2 g2@5 ~",
  AC: "e2@4 ~@2 e2@4 ~@2 e2@4 ~@2 e2@4 ~@2 e2@4 ~@2 e2@5 ~ d2@4 ~@2 d2@4 ~@2",
  AD: "a2@21 e2@2 ~ a2@3 ~@3 a2@9 ~@3 a2@5 ~", AE: "g2@18 ~@3 g2 ~@2 g2@2 ~@4 g2@10 ~@2 g2@6",
  AF: "d2@18 ~@3 a2@3 d2@10 ~@2 d2@11 ~", AG: "a2@21 ~@2 d3@6 d3@6 g3@6 g3@6 ~",
  AH: "a2@20 ~ a2 ~@2 a2@3 ~@3 a2@7 ~@2 a2 ~@2 a2@3 ~@3", AI: "g2@20 ~ d2@3 g2 ~@2 g2 ~@2 g2@7 ~@2 g2 ~@2 g2@6",
  AJ: "d2@16 ~@2 d2@11 ~ c#2@5 ~ d2@6 e2@6",
  AK: "a2@6 d2@3 e2@3 g2@3 e2@3 a2@4 ~@2 d2@3 e2@3 g2@3 e2@3 a2@4 ~@2 g2@5 ~",
  AL: "a2@9 ~@3 a2@8 ~ a2@6 ~@3 a2@8 ~@4 a2@6", AM: "g2@10 ~@2 g2@6 ~@3 g2 ~@2 g2@2 ~@4 g2@15 a1@2 ~",
  AN: "d2@11 ~ d2@8 ~ d2 ~@2 d2@2 ~@4 d2@9 ~@3 d2@3 ~@3", AO: "a2@5 ~ a2@15 ~ e2@2 a2@3 ~@3 a2@4 ~@2 a2@6 e2@5 ~",
  AP: "a2@10 ~@2 a2@7 ~@2 a2 ~@2 a2@13 ~@3 a2@2 ~@3 a2@3",
  AQ: "g2@5 ~ g2@2 ~@4 g2@9 ~ d2@2 g2@3 ~@3 g2@8 ~@2 g2 ~ g2@5 ~",
  AR: "d2@11 ~ d2@3 ~@3 d2@4 ~@2 d2@5 ~ d2@3 ~@3 d2@4 ~@2 d2 ~@5",
  AS: "d3@6 g3@3 e3@2 g3@6 ~ e3@5 ~ d3@4 ~@2 d3@5 ~ e3@4 ~@2 d3@6", AT: "a2@5 ~ a2@6 a2@25 ~@3 a2@8", AU: "g2@47 ~",
  AV: "a2@27 g2@14 ~ a2@6", AW: "a2@33 ~ a2@2 a2@11 ~", AX: "d2@19 ~@2 d2 ~@2 d2@14 ~ d2@2 ~ e2@6",
  AY: "a2@14 ~@3 d3@6 d3@5 ~ d3@6 ~ e3@12", AZ: "a2@23 ~ d3@4 e3@2 g3@3 e3@3 a3@5 ~ g3@6",
  BA: "d2@17 ~ d2@11 ~ d2@6 d3@6 d2@6", BB: "a2@9 e2@3 a2@16 ~@2 a2@6 c3@5 ~ d3@5 ~",
  BC: "a2@10 ~@2 a2@9 ~@3 c3@6 e3@3 c3@8 ~ a2@6",
  BD: "g2@4 ~@2 g2@4 ~@2 g2@5 ~ g2@5 ~ g2@3 g2@7 ~@2 g2@2 ~ g2@2 ~ g2@6",
  BE: "d2@3 ~@3 d2@8 ~ d2@2 ~ d2@3 ~@3 d2@3 ~@3 d2@2 ~@4 d2@3 ~ e2@2 g2@3 e2@2 ~",
  BF: "a2@12 a2@11 ~ a2@11 ~ a2@3 ~@3 a2@6", BG: "a2@9 ~@3 a2@9 ~@3 a2@6 d2@3 e2@3 g2@3 ~ e2@2 a2@4 ~@2",
  BH: "g2@10 ~@2 g2@10 ~@2 g2@3 ~@3 g2@4 ~@2 g2@4 ~@2 g2@5 ~",
  BI: "d2@4 ~@2 d2@4 ~@2 d2@3 ~@3 d2@4 ~@2 d2@3 ~@3 d2@4 ~@2 d2@4 ~@2 d2@5 ~",
  BJ: "a2@2 ~ a2@3 c#2@3 d2@3 d#2@3 e2@3 g2@3 g#2@3", BK: "a2@4 ~@2 a2@6 e2@3 a2@3 ~@3 e2@3 a2@4 ~@2 a2@6 e2@6 a2@6",
  BL: "g2@3 ~@3 g2@6 d2@3 ~ g2@3 ~@3 d2@2 e2@5 ~ d2@3 g2@8 ~ d2@3 ~ g2@2",
  BM: "d2@5 ~ d2 ~@2 d2 ~@2 d2@5 ~ d2@4 ~@2 d2@4 ~@2 d2@3 ~@3 d2@4 ~@2 d2@5 ~",
  BN: "a2@5 ~ a2@4 ~@2 d3@4 e3@2 g3@3 ~@2 g3@6 ~ g3@6 e3@6 d3@6, ~@11 e3 ~@12",
  BO: "a2@4 ~@2 a2@3 ~@3 a2@3 ~@3 a2@3 ~@3 g2@6 a2@6 c3@3 ~ c#3@2 a2@6",
  BP: "g2@4 ~@2 g2@3 ~@3 g2@3 ~@3 g2@3 ~@3 g2@4 ~@2 g2@2 ~@4 g2@6 e2@4 ~@2",
  BQ: "d2@4 ~@2 d2@4 ~@2 d2@4 ~@2 d2@3 ~@3 d2@6 e2@6 g2@6 a2@3 ~@3",
  BR: "c3@3 c#3@2 ~ a2@4 ~@2 a2@6 g2@6 c3@5 ~ d3@6 a2@6 g2@6",
  BS: "a2@4 ~@2 a2@4 ~@2 a2@4 ~@2 a2@4 ~@2 a2@4 ~@2 a2@5 d3@12 ~",
  BT: "g2@4 ~@2 g2@4 ~@2 g2@6 d3@6 g2@4 ~@2 g2@6 d3@6 g2@3 ~@3",
  BU: "d2@5 ~ d2@5 ~ d2@4 ~@2 d2@3 ~@3 d2@4 ~@2 d2@4 ~@2 d2@4 ~@2 d2@6",
  BV: "[a2@4 ~@2 a2@4 ~@2 a2@6 e2@6 a2@4 ~@2 a2@3 ~@3 a2@3 ~@3 a2@53 ~]/2",
})).s("gm_acoustic_bass").gain(0.44)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  ~ A@3 B C@3 D E F@3 G@2 H I J K L M N O P Q P Q P R@2 S@3 B T@3 U V W@2 X@4 Y C@3 D E Z@3 AA@2 H I AB K L M AC AD AE
  AF ~@14
>`.pickRestart({
  A: "[~@24 c#4@3 ~@6 d4@3 c#4@4 ~@2 e3@4 ~@14 d3@3 e3@3 ~@6 g2@3 ~@45 f#4@3 g4@2 ~@4 d4@7 ~@2 [d4,f#4]@6, a2@18 a3@21 ~ a3@5 ~ g3@7 ~ g3@6 ~@6 d3@11 ~ d3@15 e4@6 ~@6 f#4@15 ~@6 f#4@11 ~@7, ~@6 e3@36 b3@10 ~@36 b3@11 ~@3 a3@11 ~ a3@21 ~ a3@8, ~@6 a3@10 c#4@6 a2@26 g2@24 ~@3 g2@20 ~ d3@21 ~ d3@26, ~@9 e4@18 d4@3 e4@22 ~@5 g4@24 g4@9 g3@9 ~@13 d4@17 ~@15]/3", // D
  B: "~@15 e3@6 c#4@3 e2@3 f#2@2 ~ a2@3 c3@5 ~@2 a2@2 c3@6, a2@29 ~@19, ~@6 a3@19 ~@23, ~@3 c#4@4 ~@9",
  C: "[~@24 b3@3 ~@9 a3@4 d4@2 a3@4 ~@11 b3@3 d3@2 ~ e3@3 d3@6 ~@3 g3@3 ~@12 g3@5 ~ a3@6 ~@18 f#4@3 g4@3 ~@3 d4@7 ~@2 [d4,f#4]@6, a2@30 a3@5 ~ c#4@3 ~@3 c#4@3 ~ b3@11 ~@21 [g3,b3]@10 b3@12 ~@2 d4@8 ~@2 d4@17 ~@15, ~@22 e3@15 ~@17 [d3,g3]@6 ~@15 d3@20 ~ d3@46 ~@2, ~@24 e4@17 ~@16 g4@24 g4@13 ~@11 f#4@14 ~@7 f#4@12 ~@6, ~@24 a3@3 c#4@6 a2@14 ~ g2@24 g2@22 ~@20 a3@20 ~@2 a3@8]/3", // D G G5
  D: "~@21 e2@3 e2@3 f#2@3 a2@3 c3@5 ~@2 a2@2 c3@2 ~ c3@3, a2 ~, ~@6 e3@12 a3@5 ~@25, ~@6 a3@9 c#4@8 ~@25, ~@3 e4@7 ~@6",
  E: "~@18 [d4,e4] ~ c#4 c#4@2 e3, a2, ~@18 a3@11 ~ a3@15 ~@3, ~@22 c#4@5 c#4@6 e3@11 ~@4, ~@6 e4@3 ~ e4@2", // Dsus2
  F: "[~@12 d3@2 ~ e3@3 ~@39 d4@5 ~@4 a3@3 ~@3 f#4@3 g4@2 ~@11 a3@2 [d3,a3]@4 ~@8 a3@15 ~@3 c#4@3 ~@6 d4@3 ~@4 a3@2 e3@3 ~@3, g2@27 ~ g2@17 b3@5 ~@4 a3@11 ~@79, ~@18 d3@29 ~ d3@21 ~ d3@20 ~@6 a2@18 ~@3 a2@25 ~@2, ~@30 b3@8 ~@2 b3@2 g3@6 ~@16 d4@8 d4@8 ~ d4@16 ~@26 d4@5 ~@4 c#4@11 ~, ~@33 g4@17 ~@7 f#4@15 ~@6 f#4@15 ~ f#4@4 ~@28 e4@6 ~@12]/3", // D5
  G: "[e3@6 ~@18 c#4@3 d4@5 ~ d4@3 [c#4,e4]@4 c#4@6 ~@14 d3@3 e3@2 ~ d3@5 ~@19 g3@3 ~@3, a2@48 g2@23 ~ [g2,d3]@20 ~@4, ~@3 [a3,c#4]@5 c#4@3 e3@11 ~@5 g3@3 ~@18, ~@9 e4@27 ~@4 e4@12 ~@5 g4@22 ~@2 g4@12 ~@3, ~@18 a3@27 ~ b3@15 ~@17 b3@8 ~@2 b3@7 ~]/2", // C#m G5 A
  H: "a3@5 ~@11 d4@7 ~@10 f#4@7 ~@2 f#4@3 ~@3, d3 ~, ~@6 a3@17 ~ b3@16 ~@8, ~@6 d4@8 ~@16 d5@9 ~ d5@6 ~@2, ~@9 f#4@13 ~@5 f#4@5 ~@16",
  I: "~@9 e4@15 e2@3 f#2@3 a2@3 c3@6 ~ a2@2 c3@5 ~, a2@23 ~@25, ~@6 a3@17 ~@25",
  J: "~@24 c#4@3 ~@6 d4@3 ~@4 a3@6 ~@2, a2@16 c#4@8 ~@3 d4@5 ~@4 c#4@9 ~@3, ~@3 a3@9 a3@7 ~@5, ~@3 e3@6 [a2,e3]@14 ~, ~@9 e4@20 ~ e4@16 ~@2", // A5
  K: "~@12 d3@2 ~ e3@3 ~@15 g4@5 ~@4 b3@6, g2@25 ~@2 g2@17 ~@4, ~@6 [g3,b3]@6 ~@6 d3@29 ~, ~@9 g4@21 b3@8 ~@2 g4@8", // G
  L: "~@18 a3@2 ~@4 f#4@3 g4@2 ~@13 d4@4 ~@2, d3@10 ~ d3@13, ~@6 a3@10 d4@8 [a3,d4]@9 d4@7 e4@8, ~@9 f#4@14 ~@7 f#4@6 a3@10 ~@2", // D5
  M: "~@21 e3@3 [a2,e3]@23 ~, a2 ~, e3@18 a3@6 a3@17 ~@7, ~@3 c#4@6 e4@34 ~@5, ~@6 a3@9 c#4@16 ~@17", // A5
  N: "f#2@9 ~@3 f#2@7 ~@5 [f#3,a3]@6 ~@10 f#2@7 ~, ~@9 [f#3,a3]@12 ~ f#2@8 f#2@9 ~@9, ~@11 [f#3,a3]@4 ~", // F#m
  O: "a2@6 a4@5 ~ [d4,f#4]@3 [c4,e4]@3 a3@4 ~@2 [c4,e4]@3 [c4,e4]@3 c4@2 ~ [d4,f#4]@6 ~ e4@2 a3@4 ~@2, ~@6 e4@3 ~@31 c4@7 ~", // D C D
  P: "~@3 [f#3,a3]@3 ~@6 [f#3,b3]@5 ~ [f#3,a3]@3 ~@3 [f#3,a3]@3 ~@3 [f#3,a3]@2 ~ [f#3,b3]@5 ~@2 [f#3,a3]@6 ~@2, f#2@6 ~@3 f#2@11 ~@2 f#2@24 ~@2", // F#m B5 F#m B5 F#m
  Q: "~@3 [e4,a4]@9 [d4,f#4]@3 [c4,e4]@6 ~@3 [c4,e4]@3 [c4,e4]@3 a3@3 [c4,e4]@8 ~ a3@3 ~@3, a2@3 ~@13", // A5 D C
  R: "[[g2,b2]@5 ~@4 [g3,b3]@6 ~@3 b3@6 ~@9 g3@5 ~@4 [g2,b2]@3 ~@9 d3@5 ~ b3@6 e4@6 e2@3 f#2@2 ~ a2@3 c3@6 ~ a2@2 c3@5 ~, ~@6 [g2,b2]@17 ~ [g2,b2]@16 g3@9 ~@5 b2@18 ~@24, ~@9 g4@18 g4@19 ~@20 b3@17 ~@13, ~@15 d3@32 ~ e2@24 ~@24, ~@15 g3@12 b3@11 ~@2 b3@14 ~@6 [d3,g#3]@13 ~@23]/2", // G Ddim
  S: "[~@24 c#4@3 ~@6 d4@3 c#4@4 ~@2 e3@4 ~@14 d3@3 e3@3 ~@6 g2@3 ~@45 f#4@3 g4@2 ~@4 d4@7 ~@2 [d4,f#4]@6, a2@18 a3@21 ~ a3@5 ~ g3@7 ~ g3@6 ~@6 d3@11 ~ d3@15 e4@6 ~@6 f#4@15 ~@6 f#4@11 ~@7, ~@12 e4@15 d4@5 ~@10 b3@10 ~@36 b3@11 ~@3 a3@11 ~ a3@21 ~ a3@8, ~@22 a2@26 g2@24 ~@3 g2@20 ~ d3@21 ~ d3@26, ~@30 e4@22 ~@5 g4@24 g4@9 g3@9 ~@13 d4@17 ~@15]/3", // D
  T: "[~@24 b3@3 ~@9 a3@4 d4@2 a3@4 ~@11 b3@3 d3@2 ~ e3@2 ~ d3@6 ~@3 g3@3 ~@12 g3@5 ~ a3@6 ~@18 f#4@3 g4@3 ~@3 d4@7 ~@2 [d4,f#4]@6, a2@30 a3@5 ~ c#4@3 ~@3 c#4@3 ~ b3@11 ~@21 [g3,b3]@10 b3@12 ~@2 d4@8 ~@2 d4@17 ~@15, ~@22 e3@15 ~@17 [d3,g3]@6 ~@15 d3@20 ~ d3@46 ~@2, ~@24 e4@17 ~@16 g4@24 g4@13 ~@11 f#4@14 ~@7 f#4@12 ~@6, ~@24 a3@3 c#4@6 a2@14 ~ g2@24 g2@22 ~@20 a3@20 ~@2 a3@8]/3", // D G G5
  U: "~ a3@38 ~ e2@2 g2@6, [a2,e3]@13 ~@3", V: "a2@35 ~ d5@9 ~ c5@2",
  W: "[a4@3 a4@3 c5@21 ~@3 g4@8 ~ g4@8 g4@24 ~@7 g4@2 ~ e4@3 d4@2 ~ c4@9]/2",
  X: "[a3@8 ~@4 d4@6 g4@2 ~ d#4@3 g4@3 ~@4 e4@2 g4@2 ~ e4@2 d4@2 c4@2 c4@2 d4@2 c4@6 ~@2 a3@2 ~ g3@3 a3@6 c4@3 a3@3 c4@3 d4@5 ~ g4@3 g4@3 e4@3 g4@2 ~ a4@9 c5@3 a4@2 ~ d5@6 g5@2 ~ d#5@4 ~@2 a4@2 ~ d5@3 c5@3 a4@4 ~@2 g5@17 ~ g5@6 d4@5 ~ d5@2 ~@2 a4@2 d5@3 c5@3 a4@3 g4@3 e4@2 ~ d4@3, ~@15 g4 ~@45 c#5 ~@23 c5@2 ~@9]/4",
  Y: "c4@6 a3@2 ~ g3@3 a3@6 c4@2 ~ c4@4 a3@19 ~@4",
  Z: "[b2@10 ~@2 d3@2 ~ e3@3 ~@39 d4@5 ~@4 a3@3 ~@3 f#4@3 g4@3 ~@10 a3@2 [d3,a3]@4 ~@8 a3@15 ~@3 c#4@3 ~@6 d4@3 ~@4 a3@2 e3@3 ~@3, g2@27 ~ g2@23 ~@13 d4@8 d4@8 ~ d4@16 ~@26 d4@5 ~@4 c#4@11 ~, ~@18 d3@27 b3@5 ~@4 a3@11 ~@79, ~@30 b3@8 ~@2 b3@2 g3@6 d3@21 ~ d3@20 ~@6 a2@18 ~@3 a2@25 ~@2, ~@33 g4@17 ~@7 f#4@15 ~@6 f#4@15 ~ f#4@4 ~@28 e4@6 ~@12]/3", // D5
  AA: "[e3@6 ~@18 c#4@3 d4@5 ~ d4@3 [c#4,e4]@4 c#4@6 ~@14 d3@3 e3@3 d3@5 ~@19 g3@3 ~@3, a2@48 g2@23 ~ [g2,b2]@20 ~@4, ~@6 [a3,c#4]@10 c#4@6 e3@22 ~@4 b2@9 g4@22 ~@2 g4@12 ~@3, ~@9 e4@27 ~@4 e4@12 ~@2 g3@6 ~@36, ~@18 a3@27 ~ b3@15 ~@17 b3@8 ~@2 b3@7 ~]/2", // C#m G A
  AB: "~@18 e3@5 ~ a3@3 ~@6 d4@3 ~@4 a3@6 ~@2, a2@16 c#4@8 ~@3 a3@5 ~@4 c#4@9 ~@3, ~@2 a3@6 e3@7 ~, ~@3 e3@6 a2@14 ~, ~@9 e4@20 ~ e4@16 ~@2",
  AC: "[a2,e3]@11 ~ a2@9 ~@3 [a2,e3]@6 a2@3 ~@9 a2@5 ~, a3@15 ~, ~@21 c#4@18 ~ c#4@6 ~@2, ~@33 [a2,e3]@11 ~@4", // A5
  AD: "g2@6 ~@18 b2@6 ~@6 g3@11 ~, ~@6 g2@22 ~@2 g2@17 ~, ~ b2 b3@3 ~@3, ~@2 d3@5 ~, ~ g3@2 ~",
  AE: "d4@11 ~@16 a3@8 ~ c4@4 ~@2 c4@5 ~, d3@35 ~@13, a3@2 ~@2 a3@5 ~@7, ~@18 f#4@13 ~@17, ~@21 d4@13 ~@14",
  AF: "~@2 [e3,a3]@11 ~@3, a2@41 ~@7, ~@2 c#4@7 ~@7", // A5
})).s("gm_electric_guitar_jazz").gain(0.33).pan(0.6)

// chords · pan flute
const pan_flute = note("<~@21 A B C D E F G H I ~@50>".pickRestart({
  A: "f#4@9 c#4@2 ~", B: "[e4,c#5]@15 ~", C: "f#4@35 ~ c#4@8 ~@4", D: "[e4,c#5]@23 ~", E: "f#4@35 ~ c#4@9 ~@3",
  F: "[e4,c#5]@11 ~", G: "f#4@47 ~", H: "[d4,b4]@23 ~", I: "[d4,b4]@7 ~",
})).s("gm_pan_flute").gain(0.25).pan(0.4)

// other · harmonica
const harmonica = note(`<
  ~@2 A@2 B ~@7 C ~@18 D ~ E ~@4 F@2 ~ G H@2 ~@5 I ~@4 B J K L M N@2 O@2 P Q ~ R@2 S@2 T@2 U V W X Y Z@2 ~
>`.pickRestart({
  A: "[a4@95 ~]/2", B: "a4", C: "~@30 e5@4 ~@2 e5@11 ~", D: "~@6 e5@3 ~@2 d#5 e5@6 d5@3 ~@3 e5@11 ~@13",
  E: "e5@12 e5@10 ~@2 e5@9 ~@3 e5@6 b4@4 ~@2", F: "[e5@95 ~]/2", G: "~@15 e5@2 ~ e5@2 ~ e5@2 ~",
  H: "[e5@19 ~@8 a3@3 ~@6 a3@4 ~@5 a3@6 ~@3 a3@5 ~@4 a3@4 ~@3 a3@5 ~@21]/2", I: "~@11 e5@37", J: "g4@15 ~", K: "f#4",
  L: "a4@7 ~", M: "~ a4@3", N: "[g4@47 d4@43 ~@6]/2", O: "[c5@64 a4@2 g4@2 ~@2 a4@19 ~@7]/2", P: "~@4 e5@11 ~",
  Q: "e5@12 c5@2 a4@8 ~ a4@15 ~@10", R: "[a4@47 g4@48 ~]/2", S: "[f#4@42 ~@5 a4@31 ~@5 e5@13]/2", T: "[a4@23 g4@25]/2",
  U: "f#4@43 ~@5", V: "a4@10 ~@2 e5@11 c5", W: "~ a4@10 ~ a4@36", X: "g4", Y: "f#4@7 ~",
  Z: "[~@12 e5@20 ~@3 e5@5 c5@2 a4@53 ~]/2",
})).s("gm_harmonica").gain(0.38).pan(0.4)

// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@37 A B@3 C@4 D ~@19 E F@2 G H I J@2 K L M N O@2 ~>".pickRestart({
  A: "[a2,e3,a3]@38 ~ e2@2 ~ g2@6", // A5
  B: "[a2@35 ~ d5@9 ~@2 a4@3 ~ a4@3 c5@21 ~@3 g4@8 g4@8 ~ g4@24 ~@7 g4@2 ~ e4@3 d4@2 ~ c4@9, ~@23 c5 ~@48]/3",
  C: "[a3@8 ~@4 d4@6 g4@2 ~ d#4@3 g4@3 ~@4 e4@2 g4@2 ~ e4@2 d4@2 c4@2 c4 ~ d4@2 c4@6 ~@2 a3@2 ~ g3@3 a3@6 c4@3 a3@3 c4@3 d4@5 ~ g4@3 g4@3 e4@3 g4@2 ~ a4@9 c5@3 a4@2 ~ d5@6 g5@2 ~ d#5@4 ~@2 a4@2 ~ d5@3 c5@3 a4@4 ~@2 g5@17 g5@6 ~ d4@5 ~ d5@2 c5@2 a4@2 d5@3 c5@3 a4@3 g4@3 e4@2 ~ d4@3, ~@15 g4 ~@45 c#5 ~@34]/4",
  D: "c4@6 a3@2 ~ g3@3 a3@6 c4@2 ~ c4@3 a3@19 ~@5", E: "~@42 a2@4 g4 ~",
  F: "[g#4@10 ~@2 a4@6 a4@9 ~@3 a2@6 a4@3 ~@15 a2@5 ~ a4@6 ~ g#4 f4 ~@9 a4@5 ~ a4@12, ~@27 a4@9 ~@4 a4@8 a4@11 ~@7 b4@2 ~@28, ~@42 a2@11 ~@43]/2",
  G: "b4@2 ~ a4@9 a2@13 ~@4 a4@6 ~ b4@3 b4@9",
  H: "a4@4 f#4 ~ a2@4 ~@2 a2@6 ~@6 a2@5 ~ a2@4 ~@2 a2@4 ~@2 a4@6, ~@5 a3@4 a2@3 ~@12, ~@21 a3@12 ~ a3@4 ~@10",
  I: "~@6 a2@6 ~@6 g4@3 a4@8 ~ g4@10 e4@4 f#4@4, a4@17 ~@31, ~@12 a2@17 ~@19",
  J: "[d#4@12 d4@12 e4@5 ~ f#4@6 g4@5 a4@4 ~@2 a4@6 ~ a4@14 ~@8 a4@2 ~ c5@3 ~@2 e4@2 ~ [a4,c5]@3 ~@6, ~@75 [g4,c5]@2 ~ g4@3 ~@6 g4 ~@8]/2", // Am C5
  K: "d4@6 g4@2 ~@4 g4@3 e4@3 d4@3 ~@3 d#4@3 g4@2 ~ e4@3 d4@3 c4@2 ~ a3@2 ~ d4 c4@2 a3 g3@2",
  L: "a4@3 g4@2 ~ e4@2 ~ d4@4 ~@2 c4@3 a3@14 ~@16",
  M: "g2@6 ~@18 b2@6 ~@6 g3@11 ~, ~@6 g2@22 ~@2 g2@17 ~, ~ b2 b3@3 ~@3, ~@2 d3@5 ~, ~ g3@2 ~",
  N: "d4@11 ~@16 a3@8 ~ c4@4 ~@2 c4@5 ~, d3@35 ~@13, a3@2 ~@2 a3@5 ~@7, ~@18 f#4@13 ~@17, ~@21 d4@13 ~@14",
  O: "[~@2 [e3,a3]@11 ~ [a2,e3,a3]@18, a2@41 ~@55, ~@2 c#4@7 ~@23]/2", // A5
})).s("gm_overdriven_guitar").gain(0.32).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  A B C D E F C B C F G H E I J K L F M D L N O P Q R S T U V W C X Y Z AA AB AC AD AE AF AG AH AI AJ AK B G D E B G F E
  AL AM F V AN@3 AO AP AQ AR AN AS AT AU AN@9 ~@2
>`.pickRestart({
  A: "~@23 x", B: "x ~@10 x!2 ~@10 x", C: "x ~@20 x ~@2 x ~@5 x ~@15 x ~", D: "x ~@10 x!2 ~@7 x ~@2 x",
  E: "x ~@20 x ~@2 x ~@5 x ~@9 x ~@5 x ~", F: "x ~@10 x!2 ~@2 x ~@7 x", G: "x ~@20 x ~@2 x ~@21 x ~",
  H: "x ~@10 x!2 ~@4 x ~@5 x", I: "x ~@10 x!2 ~@2 x ~@4 x ~@2 x", J: "x ~@20 x ~@2 x ~@8 x ~@2 x ~@3 x ~ x ~@5",
  K: "x ~@7 x ~@2 x!2 ~@4 x ~@2 x!2 ~ x", L: "x ~@6 x!2 ~@7", M: "x ~@20 x ~@2 x ~@15 x ~@5 x ~",
  N: "x ~@10 x!2 ~@5 x ~ x ~@3", O: "x ~@11 x ~@3 x ~@4 x ~@2 x ~@8 x ~@6 x ~@5 x ~",
  P: "x ~@11 x ~@9 x ~ x ~@8 x ~@6 x ~@5 x ~", Q: "x ~@8 x ~@2 x ~@3 x ~@4 x ~@2 x ~@8 x ~@2 x ~@11",
  R: "x ~@11 x ~@3 x ~@4 x ~@2 x ~@3 x ~@4 x ~@2 x ~@3 x ~@7", S: "x ~@8 x ~@2 x ~@3 x ~@4 x ~@6 x ~@4 x ~@2 x ~@11",
  T: "x ~ x ~@3 x ~ x ~@2 x ~@2 x ~@3 x ~ x ~@3", U: "x ~@11 x ~@3 x ~@7 x ~@3 x ~@4 x ~@2 x ~@3 x ~@7", V: "x!5 ~@3",
  W: "x ~@10 x!2 ~@2 x ~@6 x!2", X: "x ~@10 x!2 ~@5 x ~@5", Y: "x!2", Z: "x ~@10 x ~@3 x ~@4 x ~@2 x",
  AA: "x ~@6 x ~@2 x ~ x ~@3", AB: "x ~@10 x ~@3 x ~@5 x ~@2", AC: "~ x ~ x ~@4", AD: "x ~@10 x ~@3 x ~@7 x",
  AE: "~@6 x ~@14 x ~@8 x ~@15 x ~", AF: "x ~@2 x ~@8 x ~@2 x ~@7 x", AG: "x!2 ~@2 x!3 ~", AH: "x ~@10 x!2 ~@11",
  AI: "x ~ x ~@4 x ~@2 x ~@4 x", AJ: "x ~@2 x ~@7 x!2 ~@2 x ~@8", AK: "x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x",
  AL: "x ~@10 x!2 ~@2 x ~@8", AM: "x ~@6 x!2 ~ x ~@4 x", AN: "x!8", AO: "x!7 ~", AP: "x ~@6 x!2 ~@2 x ~@2 x ~",
  AQ: "x ~@5 x ~@15 x ~ x ~@8 x ~@2 x ~@5 x ~@5", AR: "x ~ x ~@4 x!2 ~ x ~ x ~ x ~", AS: "x ~ x ~@4 x ~@2 x!2 ~@4",
  AT: "~@6 x ~@15 x ~ x ~@8 x ~@2 x ~@5 x ~@5", AU: "x ~ x ~@4 x!2 ~ x ~@3 x ~",
})).gain(0.38)

// drums · rim
const rim = s("rim").struct("<~ A@3 B A@7 B A B C@2 A@3 B@2 ~@24 A@3 B A@3 B@2 A@2 C ~@22>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@2 x ~@2 x ~@2",
})).gain(0.44)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A ~@7 A ~@3 B ~@3 C D E@2 F E F E@2 G H@2 I J K L K M K N@2 O P K N Q ~@3 A ~@3 A ~@3 R S@3 T K N U V W N W X Y Z
  AA AB@4 AC ~@2
>`.pickRestart({
  A: "~@18 x!2 ~ x ~@2", B: "~@18 x!2 ~@4", C: "~@26 x!2 ~ x!2 ~ x!2 ~@2 x ~@2 x ~@2 x ~@2 x ~@2", D: "~@5 x ~ x",
  E: "~ x ~ x ~ x ~ x", F: "~@3 x ~@5 x ~@5 x ~@3 x!5", G: "~@3 x ~@2 x ~@2 x ~@3 x!5 ~@6", H: "~ x ~ x",
  I: "~@6 x ~@8 x ~@3 x!2 ~@3", J: "~@4 x ~@2 x ~ x!3 ~@4", K: "~ x!3", L: "x ~@5 x ~@5 x ~@6 x!2 ~@3",
  M: "x ~@3 x ~@3 x!2 ~ x ~@4", N: "x!4", O: "x ~@5 x ~@5 x ~@2 x ~@3 x!2 ~@3", P: "~@12 x ~@20 x ~@4 x ~ x ~@7",
  Q: "x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~@2", R: "~@13 x!3", S: "x!16",
  T: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x!2 ~ x!2 ~ x!2 ~",
  U: "x ~@11 x ~@11 x ~@8 x ~@4 x ~ x ~ x ~ x!2 ~@2", V: "x!18 ~@6", W: "~@2 x ~ x ~ x!2",
  X: "~@12 x ~@8 x ~@6 x ~ x ~ x ~ x ~@3 x ~ x ~@3 x ~ x ~",
  Y: "~@12 x ~@8 x ~@4 x ~ x ~ x ~ x ~ x ~@3 x ~ x ~ x ~ x ~ x ~",
  Z: "~@12 x ~@8 x!2 ~@4 x!2 ~@4 x!2 ~@4 x!2 ~@3 x ~ x ~", AA: "~@12 x ~@8 x ~@5 x ~@4 x!2 ~@4 x ~ x ~ x ~ x!2 ~@2",
// … 43 more lines

More by Traffic