Strudelify

Who Knows What Tomorrow May Bring

Traffic

KeyD♭ majorTempo84 bpm
0:00/0:00
// Who Knows What Tomorrow May Bring — Traffic
// 84 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 68 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(84/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 · "ORGAN 3"
const rock_organ = note(`<
  ~ A B C@2 D E F G H@2 I@2 J@2 K L M N O@4 P Q R S T@2 U@2 V W K L M X Y Z AA@2 AB AC AD AE AF AG@5 AH AI AJ AK AL AM
  AN AO AP AQ@7 ~
>`.pickRestart({
  A: "~@6 [db6,db7] ~@3 bb6 ~ f6 ~@3", B: "~@2 db6@6 ~@4 g6 e6 db6 ~, ~@6 gb6 ~",
  C: "[~@6 [db6,db7] ~@3 bb6 ~ f6 ~ eb6 db6@3 ~@6 g6 e6 db6 ~ gb6 ~@3, ~@12 gb6 ~@3]/2", // Db
  D: "e6 f6 db7 ~@7 f6 ~ db7 bb6 ~ e6", E: "~@2 db6@4 bb5 ~ [gb6,g6] e6 db6 ~ gb6 ~ e6 ~",
  F: "db6 ~ db6 ~@9 ab5 bb5 db6 e6", G: "db6!2 ~@10 [gb6,g6] e6 db6 ~", H: "[~@16 g5@15 ~, ~ [a5,db6,e6]@7]/2",
  I: "[[f5,a5,c6,eb6]@31 ~]/2", J: "[[f5,ab5,bb5,d6]@7 ~]/2", K: "[f5,a5,c6]", L: "[db5,e5,a5]", M: "[d5,f5,bb5]",
  N: "[eb5,b5] [gb5,b5] [eb5,gb5,b5] ~@5, gb5 ~ eb5 ~@13", // Abm B5 B
  O: "[~@5 f6 [b6,c7,db7] ~@3 bb6 db6 f6 db6 eb6 db6@3 ~@4 db6 ~ [gb6,g6] e6 db6 ~ gb6 ~ f6@4 db7 ~@5 ab6 bb6 db7 e7 ~ db7 eb7 db7@3 ~@6 [gb6,g6] e6 db6 ~ b5 ab5 gb5 ~, ~@30 e6 ~@33]/4", // Gmaj7
  P: "e5 f5 db6 ~@9 ab5 bb5 db6 e6", Q: "db6 ~@5 ab5 bb5 db6 ~ db6 ~ ab5 bb5 db6 e6",
  R: "db6 ~ db7 ~@2 bb6 ~@4 [e6,f6] ~ db6 eb6 db6 ~", S: "db6 ~@5 [f6,ab6,bb6,b6] ~@3 e6 ~ b5 ab5 ~@2",
  T: "~ [e5,a5,db6]@3", U: "~ [f5,a5,c6]@3", V: "~ [f5,bb5,d6]@3", W: "~@4 [f5,bb5,d6]@11 ~",
  X: "[eb5,gb5] ~ [gb5,b5]@2 [eb5,gb5,b5]@2 ~@10, b5@2 eb5 ~@13", Y: "~@6 [db6,db7] ~@3 bb6 ~@3 [e6,f6] ~",
  Z: "db6 eb6 db6@3 ~@3 [gb6,g6] e6 db6 ~ b5 ab5 gb5 ~", // Gmaj7
  AA: "[[e5,f5] ~ db6 ~@5 ab5 bb5 db6 e6 ~ db6 eb6 db6@2 ~@5 [gb6,g6] e6 ~ b5 ab5 gb5 e5 ~ gb5 ~]/2", // Fmaj7 Gmaj7
  AB: "[e5,f5] ~ db6 ~@7 ab5 bb5 db6 e6@3", AC: "db6 eb6 db6 ~@7 [ab6,b6]!2 ~@4",
  AD: "~@2 b6 ~ [gb6,g6] e6 db6 ~ db6@2 e6 db6 ~ eb6 ~@2", AE: "db6@2 ~@4 e6 gb6 [g6,ab6,b6] [ab6,b6]!7",
  AF: "[g6,ab6,b6] ~ [g6,ab6,b6] ~@6 db6 [g6,ab6,b6] ~ [gb6,g6] e6 db6 ~", // G Gmaj7
  AG: "[db6!2 ~@2 db7 bb6 ~@4 g6 ~@43 g6 [e6,gb6] db6@2 ab6@11 b6 ab6 gb6 e6 ~ gb6 e6 db6 b5 ab5 gb5, ~@10 ab6@48 g6 ~@21]/5", // Esus2
  AH: "f5@2 db6 ~@5 ab5 b5 db6 e6 ~@4, e5 ~@15", AI: "~@2 b6 [g6,ab6] ~ gb6 ~ e6 ~ db6 b5 ab5 gb5 e5 ~@2",
  AJ: "~@2 db6 ~ bb5 db6 ~ bb5 ~ e5 ~ db5 ~ eb5 db5 ~", AK: "~@2 e5 ~ e5!2 ~@4 [ab5,b5]!2 gb5 ~@3",
  AL: "~ ab5 g5 [db5,e5,gb5] g5 [gb5,g5] [db5,e5] ~ [gb5,g5] [db5,e5] ab5 [gb5,g5] e5 [db5,ab5] [gb5,g5] [db5,e5], ~@4 ab5@2 ~ ab5@2 ~@7", // Gb7 Gmaj7 Dbm Gmaj7 Dbm Gmaj7 Db5 Gmaj7 …
  AM: "g5 [e5,gb5,g5] db5 [g5,ab5]!2 db5 [g5,ab5] [e5,gb5,g5] db5 [e5,g5] [gb5,g5] [db5,e5] g5 [gb5,g5] [db5,e5] ~, ab5@2 ~@7 ab5@2 ~ ab5@2 ~@2", // Em Abmaj7 Em Gmaj7 Dbm Gmaj7 Dbm
  AN: "[db6,eb6,e6] [db6,e6] ~ [db6,e6] ~@12", AO: "~@3 db6 b6 ~@2 [g6,ab6] ~ gb6 ~ e6 db6 b5 ab5 gb5",
  AP: "[e5,f5] ~ db6 ~ db6 e6 ~@4 [g6,ab6] b6 [gb6,g6] e6 db6 ~", // Fmaj7 Abmaj7 Gmaj7
  AQ: "[[g6,ab6] b6 [gb6,g6] e6 db6 ~ [g6,ab6] b6 ab6 [e6,gb6,g6] db6 ~ [g6,ab6] b6 [gb6,g6] e6 ~@6 ab6@12 ab6@4 ab6@4 ab6@4 ab6@4 ab6@3 b6 ab6@3 b6 ab6@3 b6 ab6@3 b6 ab6@3 b6 ab6@3 b6 ab6 gb6 e6 ~ ab6@3 b6 ab6 gb6 e6 ~ ab6@3 ~ ab6 gb6 e6 db6 [db6,ab6]@18, ~@15 db6@61 ~ db6@8 db6@8 ~@19, ~@22 g6 ~@11 g6 ~@3 g6 ~@3 g6 ~@3 g6 ~@3 g6 ~@3 g6 ~@3 g6 ~@3 g6 ~@3 g6 ~@3 g6 ~@7 g6 ~@7 g6 ~@2 b6@2 ~@21]/7", // Abmaj7 Gmaj7 Abmaj7 Em Abmaj7 Gmaj7 Db5
})).s("gm_rock_organ").gain(0.38).pan(0.2)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  A B C B D E D B F G@2 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 AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BF BG ~
>`.pickRestart({
  A: "~@8 b1@4 c2@3 c2", B: "db2@2 db2 ~@4 ab1 db2@2 db2 ~@4 db2", C: "gb2@2 gb2 ~@4 gb2 b1 ~@2 b1 c2 ~@2 c2",
  D: "gb2 ~ gb2 ~@4 gb2 b1 ~@2 b1 c2 ~@2 c2", E: "db2 ~ db2 ~@4 ab1 db2 ~ db2 ~@4 db2",
  F: "gb2@2 gb2 ~@4 gb2 b1 ~@2 b1 bb1@2 ~ bb1", G: "a1!2 ~@2 a1!2 ~@2", H: "f1!2 ~@2 f1!2 ~@2",
  I: "f1@2 f1@2 ~@4 f1@2 f1!2 c2@2 b1@2", J: "bb1@2 bb1@2 ~@3 f1 bb1@2 bb1@2 ~@3 f1",
  K: "bb1@2 bb1@2 ~@3 f1 bb1@2 c2@2 d2@2 f2@2", L: "f1!8", M: "a1!8",
  N: "bb1@2 bb1@2 bb1@2 bb1@2 bb1@2 bb1@2 bb1@2 bb1 ~", O: "b1 ~ b1 ~ b1 ~@3 b1@4 c2@3 c2",
  P: "db2@2 db2@2 ~@3 ab1 db2@2 db2@2 ~ ab1 db2 bb1", Q: "gb1 ~ gb1@2 ~@3 db2 b1@2 ~ b1 c2@2 ~ c2",
  R: "db2@2 db2@2 ~@3 ab1 db2@2 db2@2 ~@3 db2", S: "gb1@2 gb1@2 ~@3 db2 b1@2 ~ b1 c2@2 ~ c2",
  T: "db2@2 db2 ~@2 eb2 f2 ab2 db3@2 db3@2 ~ db2 ab2 g2", U: "gb2@2 gb2@2 ~@2 db2 c2 b1@2 ~ b1 c2@2 ~ c2",
  V: "db2@2 db2@2 ~@3 ab1 db2@2 db2 ~@2 ab1 db2 g1", W: "gb1@2 gb1@2 ~@2 db2 c2 b1@2 ~ b1 bb1 ~@2 bb1",
  X: "a1@2 a1@2 a1 ~@2 e1 a1@2 e1 g1 ~ g1 a1 e1", Y: "a1@2 a1@2 ~@3 e1 a1@2 a1!2 ~ a1!2 ~",
  Z: "f1@2 f1 ~ f1@2 ~ c2 f2@2 f1 c2@2 c2 eb2@2", AA: "f1@2 f1@2 f1@2 ~ c2 f2!2 ~ c2 ~ c2 b1@2",
  AB: "bb1@2 bb1@2 ~@3 f1 bb1!2 ~ f1 ~ f1 ab1 ~", AC: "bb1@2 bb1@2 ~@3 f1 bb1 ~ bb1@2 bb1 f2 g2@2",
  AD: "f1 ~ f1@2 f1@2 f1 c2 f2@2 f2@2 c2@2 f1@2", AE: "a1@2 a1@2 a1@2 a1@2 a1@2 a1@2 a1 ~ a1@2",
  AF: "bb1 ~ bb1@2 bb1@2 bb1@2 bb1 ~ bb1@2 bb1 ~ bb1@2", AG: "b1@2 b1@2 b1@2 ~@2 b1@3 ~ c2@3 c2",
  AH: "db2@2 db2@2 ~@3 ab1 db2 ~ db2 ~@2 db2 ab1 g1", AI: "gb1@2 gb1 ~@2 db2 ~ c2 b1@2 ~ b1 c2@2 ~ c2",
  AJ: "db2@2 db2 ~@2 eb2 f2 ab2 db3 ab2 db3@2 ab2 db2 ~ db2", AK: "gb2@2 gb2@2 ~ gb2 db2 c2 b1@2 ~ b1 c2@2 ~ c2",
  AL: "db2@2 db2@2 ~@2 f1 gb1 ~ gb1 ab1@2 db2 bb1 ab1 g1", AM: "gb1@2 gb1@2 ~@3 gb1 b1!2 ~ b1 c2@2 c2@2",
  AN: "db2@2 db2 ~@2 f2 ab2 bb2 db3 bb2 db3@2 bb2 ab2 f2 eb2", AO: "gb2@2 gb2 ~ gb2@2 ~@2 b1 gb1 ~ b1 c2!2 ~ c2",
  AP: "db2@2 db2 ~@2 f2 ab2 bb2 db3 bb2 db3 db2 ab2@2 g2@2", AQ: "gb2@2 bb1 b1 ~ c2 db2@2 gb2!2 ~ gb2 g2!2 ~ g2",
  AR: "ab2 ~ ab2 ~@3 db2 b1 db2!2 ab1!2 db2@2 ab1@2", AS: "gb1@2 gb1 ~@4 gb1 b1!2 ~ b1 c2!2 ~ c2",
  AT: "db2@2 db2 ~@2 f2 ab2 b2 db3 f3@3 db3 b2 ab2@2", AU: "gb2@2 gb2 ~ gb2@2 ~ gb2 b1!2 ~ b1 c2!2 ~ c2",
  AV: "db2@2 db2 ~@3 f1 ab1 ~ ab1 b1@2 db2@2 ab1@2", AW: "gb1@2 gb1 db2 gb2@2 ~@2 b1!2 ~ b1 c2!2 ~ c2",
  AX: "db2@2 db2 ~@2 ab1 b1 db2 ab2 db3@2 db2 ab2 db2 g2@2", AY: "gb2@2 bb1 db2 ~ eb2@2 gb2 b1@2 b1!2 c2 c2@2 c2",
  AZ: "db2@2 db2 ~ ab2 bb2 b2 ab2 ~ db2!2 ab2@2 db2 g2@2", BA: "gb2@2 gb2@2 gb2 db2 gb2@2 b1!2 ~ b1 c2!2 ~ c2",
  BB: "db2@2 db2@2 ab2 bb2 b2!2 ~ ab2 ab2@2 db3 b2 ab2 ~", BC: "~@2 f2@2 e2@2 e2@2 b1!2 b1@2 c2!2 c2@2",
  BD: "db2 ~ db2@2 ab2 bb2 b2 ab2 db2@2 ~ db2 ab2@2 g2@2", BE: "gb2 bb1 ~ b1 ~ c2 db2 ~ b1!4 c2!4",
  BF: "db2@2 db2@2 db2 ~ f1 gb1 ~ gb1 ab1 ~ db2 ab1!2 g1", BG: "gb1@2 gb1@2 bb1 db2!2 ~ b1!4 c2!4",
  BH: "db2 ~ db2@2 ~ db2 ab2 b2 ~ ab2 db2!2 ab2@2 g2@2", BI: "gb2 bb1@3 b1 db2!2 ~ [b1,gb2]!4 [c2,g2]!4",
})).s("gm_fretless_bass").gain(0.44)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  A B C D E F G@2 H I J K@2 L@2 M N O P Q R@2 S T U V W X@6 Y Z AA AB AC AD AE AF AG AH AI AJ AK@2 AL@2 AM AN AO AP AQ@2
  AR@2 AS@2 AT AU AV@4 AW@2 ~
>`.pickRestart({
  A: "~@2 [b2,gb3] [c3,g3]", B: "[db3,ab3]@4 [f4,f5] ~@3 [db3,ab3]@2 [db3,ab3]@2 ~ [f4,f5] ~@2, ~@6 ab3 ~",
  C: "gb3@2 gb3@2 ~ e4 ~@2 [b2,gb3]@4 [c3,g3]@3 g3, bb3@2 [gb3,bb3,e4] ~@5", // B5 C5 Gb7
  D: "~@2 [ab3,b3]@2 ~ [f4,f5] ~@6 f4 f5 ~@2, db3@3 ~@5, ~@2 ab3 ~ ab3@3 ~", // Abm F
  E: "~@2 gb3@2 ~ gb4 ~@2 [b2,gb3]@4 [c3,g3]@3 g3, [bb3,e4]@2 gb3 ~@5", // B5 C5 Bbdim
  F: "ab3@2 ~@2 f4 f5 ~@2 ab3@2 [db3,ab3]@2 ~ [f4,f5] ~ bb3, db3@3 ~@3 [db3,ab3] ~, ~@2 [ab3,b3]@4 ~ b3@5 ~@4", // Db5 F Db5 Abm
  G: "[[gb3,bb3]@2 [gb3,bb3]@2 ~ gb4 ~ gb3 [b2,gb3]@4 [c3,g3]@3 ~ ab3@2 ab3@2 ~ f5 ~ b3 ab3@2 ab3@2 ~ [b3,f4,f5] ~@2, ~@4 [gb3,bb3]@2 ~@9 db3@7 ~@4 db3@4 ~@2, ~@16 f4@4 [ab3,b3]@2 ~ f4@5 [ab3,b3]@2 ~@2]/2", // Gb B5 C5 Bdim Gb Abm
  H: "[gb3,bb3]@2 ~@2 [bb3,e4,gb4]@2 ~@2 [gb3,eb4,gb4,eb5]@2 ~ f3 [bb2,f3,d4,f4,d5]@2 ~ e3, ~@2 gb3@4 ~ [b2,gb3]@2 ~@7", // Gb Gb7 Ebm Bb B5
  I: "~@2 e4@2 db5 ~@2 [e3,db4] e3@2 ~ db5 [db4,e4,db5] ~@2 [e3,g3,db4], a2@5 ~@3 a2@5 ~@3, ~@10 [e3,db4,e4]@3 ~@3", // Dbm Dbdim Dbm
  J: "~@3 e4 [db4,e4,db5] ~@2 e3 ~@3 db4 [db4,e4,db5] ~@3, a2@5 ~@3 [a2,e3]@2 [a2,e3]@3 ~@3, e3@2 e3@3 ~@11, ~ db4@3 ~@5 db4@2 ~@5", // Dbm A5
  K: "[~@3 [eb4,a4] eb4@3 ~@4 a4 eb4 a3@2 a3 a3@2 ~ [eb4,a4] [eb4,a4]@3 [eb4,a4] ~ g4@2 [eb4,g4] [eb4,g4]@4, [c3,eb3]@7 eb4@3 [eb4,a4]@2 ~ eb4@5 a3@6 a3@7 ~, ~@2 a3@5 a3@6 ~@3 c3@8 ~@8, ~@4 a4@6 ~@2 a4@7 ~@5 eb4@3 ~@5, ~@8 [c3,eb3]@8 eb3@15 ~]/2", // Ebdim Eb Cm Ebdim Cm
  L: "[f3@2 ~ [d4,f4] f4@3 ~ [f3,ab3]@2 ~ [d4,f4] [ab3,d4,f4]@3 d4 [f3,ab3,d4]@2 ~ [f4,d5] [ab3,d4,f4,d5]@3 ~ [f3,ab3]@2 d4 [d4,f4,d5] f4 f4@2 ~, bb2 bb2, ~@4 [d4,d5]@6 f3@4 ~ f4@4 ~@4 f4@3 f3@6, ~@12 d5@7 ~@7 ab3@2 [ab3,d4,d5]@4]/2", // Dm Fm Dm Ddim Dm Ddim Fm Dm …
  M: "[f2,f3] ~@3 b3 c4 f4 c4 ab3 g3 f3 d3 f3@3 ~", N: "c4 db4 e4 a4 ab4@2 g4 e4 g4 e4 d4 a3 d4 c4 a3 g3",
  O: "[db4,d4] ~ bb4 ~ eb5@2 db5 bb4!2 ab4 bb4@2 bb4 ab4 f4 ~, ~ f4@2 ~@13", // Dmaj7
  P: "[eb4,gb4,b4] ~ [eb4,gb4,b4] ~ [eb4,gb4,b4] ~@3 [b2,gb3]@4 [c3,g3]@3 g3", // B B5 C5
  Q: "ab3@2 ~@2 f4 f5 ~ [ab3,f5] [db3,ab3]@2 [db3,ab3]@2 [db3,ab3,f4] [f4,f5] ~ ab3, db3@3 ~@5, ~@2 ab3@4 ~ f4@5 ~@4", // Db Db5 Db F
  R: "[[gb3,bb3]@2 gb3@2 [gb3,bb3]@2 ~ eb4!2 [eb4,eb5]@2 ~@2 [e4,e5]@2 ~ [db3,ab3]@2 ab3@2 ~ f5 ~ [ab3,b3] db3@2 db3@2 ~ [f4,ab4,f5] ~ [bb3,gb4], ~@8 [b2,gb3]@3 e4@2 ~@2 f4@5 [ab3,f4]@2 ~ f4@6 ~@3, ~@12 [c3,g3]@3 ~@3 db3@4 ~@2 ab3@4 [db3,ab3]@2 ~@2]/2", // Gb Eb E Db5 Abm Fm Ebm B5 …
  S: "gb3@2 gb3@2 ~ [bb3,e4,gb4] ~@2 [b2,gb3]@4 [c3,g3]@3 ab3, [bb3,e4]@2 [gb3,bb3] ~@5", // Gb7 B5 C5 Bbdim Gb
  T: "[ab3,f4]@4 ~ f5 ~ ab3 [db3,ab3]@2 ab3@2 [ab3,b3,f4] [b3,f4,ab4,f5] ~ db3, db3@3 ~@2 db3@2 ~, ~@4 [ab3,f4]@2 ~ f4@5 ~@4", // Db Db5 Fdim Db
  U: "gb3@2 gb3@2 ~ [e4,gb4] ~@2 [b2,gb3]@2 [gb3,a3,eb4,gb4] ~@2 [bb3,e4,g4] [c3,g3,bb3,e4] ~, bb3@2 [gb3,bb3] ~@3 [c3,g3] ~", // Esus2 B5 Ebdim Edim C7 Gb C5
  V: "[db3,ab3]@2 ~@2 f4 f5 ~@2 [db3,ab3]@2 ab3@2 [ab3,f4,ab4] [f4,f5] ~ ab3, ~@2 [db3,ab3]@4 ~ f4@5 ~@4, ~@5 db3@2 ~", // Db5 Db F Db5
  W: "[gb3,bb3]@2 gb3@2 ~ [e4,gb4] ~@3 [eb4,eb5] ~@3 [d4,d5]@2 db4, ~@4 [gb3,bb3,e4,gb4]@2 ~@2 [b2,gb3,eb4]@2 ~@2 [bb2,f3]@3 ~", // Gb Esus2 Eb D Gb7 B Bb5
  X: "[[e3,g3]@2 ~@2 [db4,e4,db5]@3 ~ a2 ~ [a2,e3]@2 ~ db4 [e3,db4] ~ e3@2 e3@2 [e3,db4,e4,db5]@3 ~ [a2,e3]@2 e3@2 [e3,db4] [db4,e4,db5] ~@2 c3@2 ~@2 [eb3,a3,eb4,a4]@3 ~@3 [eb3,a3]@2 ~@4 c3@2 ~@2 [a3,eb4]@3 ~ [f2,eb3]@3 [db4,db5] [a2,e3,db4,db5]@2 ~@2 f3@2 ~@2 d4@3 f3 f3@2 f3@2 ~@4 f3@2 ~@2 [d4,f4,d5]@3 f4 f3@2 f3@2 [f3,d4,f4] [d4,f4,d5] [bb2,f3,d4] ~, ~@2 [a2,e3]@5 [db4,e4,db5]@2 ~@3 a2@6 a2@6 ~@2 a2@4 ~@2 f2@8 [f2,c3]@8 f2@8 ~@22 f3@2 ~@2 f3@6 ~@8, ~@12 e3@2 ~@20 c3@6 ~@6 eb3@2 ~@2 c3@6 [c3,a3] ~@7 bb2@8 bb2@16 bb2@6 ~@2, ~@13 db5@7 ~@19 [eb3,a3]@3 ~@2 [eb3,a3]@3 a3@5 [eb3,a4]@5 ~@9 f3@4 ~ d4@3 ~@2 [f3,d4]@3 d4@5 ~@3 d4@3 ~@6, ~@13 e4@2 [db4,e4]@5 ~@3 [db4,e4,db5]@6 ~@2 [a3,eb4]@5 ~@3 [eb4,a4]@6 [eb4,a4]@7 ~@3 [a3,eb4]@2 ~@6 [d4,d5]@5 d5@9 d5@7 ~@3 d5@6 ~@3]/6", // Em Dbm A5 Dbm A5 Dbm Ebdim Adim …
  Y: "~@4 b3 c4 f4 c4 bb3 ab3 f3 eb3 f3 ~ ab3 f3", Z: "c4 ~ e4 a4 [ab4,a4]@2 g4 e4 ~ e4 d4 a3 d4 c4 a3 ~, ~ db4@2 ~@13",
  AA: "d4 f4 bb4 eb5 eb4 db4 eb4 db4 bb3@2 bb3 ab3 bb3@4",
  AB: "[eb4,gb4,b4] ~ [eb4,gb4,b4] ~ [eb4,gb4,b4] ~@2 gb3 [b2,gb3]@4 [c3,g3]@3 ab3", // B B5 C5
  AC: "[db3,ab3]@2 [db3,ab3]@2 [ab3,b3,f4] f5 ~ [ab3,b3,f4] [ab3,b3,f4]@2 ~ [ab4,f5] [f4,ab4,f5] [f4,f5] ~@2, ~@4 db3@3 ~, ~@5 [ab3,b3]@2 ~, ~@5 f4 ~@2", // Db5 Fdim Db Fm F Abm
  AD: "[gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3,gb4] [bb3,e4,gb4] ~ [gb3,a3,eb4] eb4@2 eb4 ~@3 [c3,g3,e4,g4] ~, ~@4 [b2,gb3]@2 [c3,g3] ~, ~@8 a3 ~@4 [e4,e5]@2 ~", // Gb Gb7 Ebdim C B5 C5 E
  AE: "[db3,ab3]@2 ab3@2 [ab3,b3,f4] [f4,f5] ~ [ab3,b3] [db3,ab3]@2 ab3@2 ~ [f4,ab4,f5] ~@2, ~@2 db3@4 ~ f4@5 [ab3,b3,f4]@2 ~@2, ~@5 db3@2 ~", // Db5 Fdim F Abm Db5 Fm Fdim
  AF: "[gb3,bb3]@2 gb3@2 ~ [e4,gb4] ~ eb4 [a3,eb4]@2 [eb4,eb5]@2 [c3,g3,e4] [g3,bb3,e5]@2 [b3,f4], e4@4 [gb3,bb3,e4]@2 ~@2 gb3@4 ~ e4 ~@2", // Gb Esus2 Adim Eb C Edim Bdim Gb7
  AG: "[db3,ab3]@2 ab3@2 [ab3,b3,f4] f5 ~ [b3,f4]@2 ~@2 [ab4,f5] [ab3,b3,f4,ab4,f5] f5 ~@2, b3@4 ~@3 ab3 ~ f5@2 ~@5, ~ db3@2 ~@2 [ab3,f4] ~@2", // Db5 Fdim Bdim Db Fdim Db
  AH: "[gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3,e4,gb4]!2 ~ [gb3,a3,eb4] [b2,gb3,a3]@2 [gb3,a3] ~@2 bb3 [c3,g3,bb3]@2, ~@6 [c3,g3] ~", // Gb Gb7 Ebdim B7 Gbm C7 C5
  AI: "[db3,ab3]@2 [db3,ab3]@2 [db3,ab3,b3] [ab3,f4,f5] ~ [b3,f4]@3 [ab3,b3]@2 [ab3,b3,f4,ab4] [f4,f5] ~@2, [b3,f4]@4 ~@3 ab4@5 ~@4, ~@5 db3@2 ~", // Db5 Db7 Db Bdim Abm Fdim F Bdim
  AJ: "[gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3,gb4]@2 ~@2 a3 [a3,eb4,gb4] ~ [gb3,a3,eb4] [g3,e4,g4] [c3,g3,e4,g4]@2 [db3,g3], ~@7 b4@4 ~@5, ~@7 gb4@2 ~@3 bb3@3 ~, ~@2 [b2,gb3] ~", // Gb Ebdim C Dbdim B5
  AK: "[[db3,ab3]@4 [ab3,b3,f4] f5 ~@4 [db3,ab3]@2 [db3,ab3,b3,f4] [f4,f5] ~ bb3 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3,e4] [e4,gb4] ~ [eb4,gb4] eb5 eb5@2 [b2,gb3,eb4] [g3,e4] [e4,e5] ~ [e4,e5], f4@3 ~@4 [ab4,f5]@6 ~@19, ~@7 b3@4 ~@18 g3@2 ~, ~@8 ab3@2 ~@14 [b2,gb3,eb4]@3 ~ c3@4, ~@9 f4@3 ~@3 e4@5 ~@12]/2", // Db5 Fdim Db5 Db7 F Gb Gb7 Esus2 …
  AL: "[[db3,ab3]@2 [db3,ab3]@2 [ab3,f4] f5 ~ ab3 [db3,ab3]@2 [db3,ab3]@2 ~ [f4,f5] ~@2 gb3@2 ~@3 gb4 ~ [gb3,a3] ~ eb5 ~ [b2,gb3,eb5] [e4,e5] [bb3,e4,e5]@2 [c3,g3], ~@7 [b3,f4]@5 [db3,ab3,b3,f4]@2 ~ bb3@5 [bb3,e4,gb4]@2 ~ eb4@4 ~@5, ~@18 gb3@4 ~ gb4@2 ~@7, ~@24 [b2,gb3]@3 ~ [c3,g3]@3 ~]/2", // Db5 Db Db5 F Gbm B E Bbdim …
  AM: "ab3@2 ab3@2 [ab3,b3,f4] f5 ~@2 [db3,ab3]@2 [db3,ab3]@2 ~ [f4,f5] ~ [gb3,bb3,e4], db3@5 ~@2 f5@6 ~@3, ~@7 b3@4 ~ [db3,ab3,b3,f4]@2 ~@2, ~@7 ab4@2 ~@7", // Fdim Db5 F Gb7 Db7
  AN: "gb3@2 gb3@2 ~ [e4,gb4] ~ [a3,eb4,gb4] eb4 [eb4,gb4]@2 [b2,gb3] ~ [e4,g4,e5]@2 [c3,g3,bb3], bb3@4 [gb3,bb3,e4]@2 ~@2 [b2,gb3]@3 ~ [g3,e4]@2 ~@2", // Esus2 Ebdim Ebm B5 Em C7 Gb7 B5 …
  AO: "ab3@2 ab3@2 ab3 f5 ~ ab3 ab3@2 [ab3,b3]@2 ~ f5 ~ [bb3,e4,gb4], db3@6 ~ b3@3 ~@2 [ab3,b3,f4,ab4]@2 ~@2, f4@4 ~@3 f4@5 ~@4, ~@4 db3@3 ~", // Abm Gb7 Fdim
  AP: "[gb3,bb3]@2 [gb3,bb3]@2 ~ gb4 ~@2 [gb3,eb4]@2 [gb3,eb4]@2 [c3,g3]@2 [g3,bb3,e4] ~, ~@4 gb3@3 b4@2 ~@7, ~@4 [bb3,e4]@2 ~ gb4@4 ~@5, ~@2 [b2,a3] ~", // Gb Ebm C5 Edim Bbdim B7
  AQ: "[[db3,ab3,b3]@2 [db3,ab3,b3]@2 [ab3,b3,f4] f5 ~ [b3,f4] [ab3,b3]@2 [db3,ab3,b3]@2 ~ [f4,f5] ~ e4 [gb3,bb3,e4]@2 [gb3,bb3]@2 [gb3,bb3,e4,gb4]@2 ab3 [eb4,gb4] [b2,a3,eb4]@3 [b2,gb3,eb4] e4 ~@2 [c3,g3], ~@7 [ab4,f5]@6 ~@2 gb4@5 ~@4 gb4 ~@4 [g4,e5]@2 ~, ~@8 f4@4 [db3,ab3,b3]@2 ~@9 gb3@4 ~ g3@2 e4@2]/2", // Db7 Fdim Bdim Abm Db7 F Gb7 Gb …
  AR: "[ab3@2 [ab3,b3]@2 ~ f5 ~@2 [db3,ab3]@2 ab3@2 ~ f5 [db3,ab3] bb3 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3,e4,gb4]@2 ~ gb4 [gb3,eb4] ~@2 a3 [c3,g3,bb3,e4] bb3 [c3,g3,bb3] g3, db3@3 ~@2 db3@2 ~@5 [b2,a3,gb4]@2 ~@2, ~@4 [ab3,b3,f4]@2 ~ [f4,ab4]@5 [ab3,b3,f4,ab4]@2 ~ [e4,gb4]@5 ~@5 [gb3,eb4]@2 ~@2 [e4,g4]@3, ~@13 gb3 ~@2]/2", // Abm Db5 Gb Gb7 Ebm C7 B7 Fdim …
  AS: "[ab3@2 [ab3,b3]@2 ~ f5 ~ [b3,ab4] [ab3,b3]@2 ~@3 f5 ~@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3,e4,gb4]@2 ~ [gb3,gb4] [gb3,a3] [gb3,a3,eb5]@2 [eb4,b4] c5 [bb3,g4,c5]@2 e5, db3@4 [ab3,b3,f4,ab4]@2 ~ f4@3 [ab3,b3,f4,ab4]@2 [ab3,b3,f4,ab4]@2 ~@18, ~@4 db3@3 ~@5 b2@2 [c3,g3,e4]@2, ~@11 [ab4,f5]@2 ~@2 gb4@5 ~@3 eb4@4 ~@5]/2", // Abm E Abm Gb Gb7 Gb Gbm Ebdim …
  AT: "[db3,ab3,b3]@2 [db3,ab3]@2 [ab3,b3,f4] f5 ~ ab3!2 ~ [ab3,b3]@2 ~ [ab4,f5] ~ [bb3,e4,gb4], ~@2 b3 ~@4 f4@5 ~@4, ~@7 b3@3 ~@2 [ab3,b3,f4,ab4]@2 ~@2, ~@8 db3@5 ~@3", // Db7 Db5 Fdim Abm Db Gb7 Fdim
  AU: "[gb3,bb3,e4]@2 [gb3,bb3]@2 [gb3,bb3,e4,gb4]@2 [gb3,bb3,e4] ~ [b2,gb3,eb4] gb3 [gb3,eb4]!2 [g3,bb3,e4] e5!2 [c3,g3,bb3], ~@7 b4@2 b2@3 c3@3 ~, ~@13 [g3,e4]@3", // Gb7 Gb Gb7 B Ebm Edim C7 C
  AV: "[[ab3,b3]@2 [ab3,b3]@2 [db3,ab3,b3,f4] f5 ~ [ab3,f5]@3 ab3@2 ~ f5 ~ [bb3,e4] [gb3,bb3]@2 [gb3,bb3]@2 ~ gb4 ~ [eb4,gb4,b4] [a3,eb4] [eb4,eb5]@2 [b2,gb3,eb4] ~@3 e4, db3@4 ~@3 [b3,f4]@5 [ab3,b3,f4]@2 ~ gb4@5 ~@8 g3@2 g3@2, ~@10 db3@4 ~@6 [gb3,bb3,e4,gb4]@2 ~@2 [b2,gb3]@3 ~ [c3,e4]@4, ~@29 e5@3]/2", // Abm Db7 Db Bbdim Gb B Adim Eb …
  AW: "[~@2 f4@2 [db3,ab3,b3] f5 ~ [ab3,b3] db3@2 ~@2 [ab3,b3,f4,ab4] [f4,ab4,f5] eb3 ~ gb3@2 [gb3,bb3]@2 [gb3,bb3,e4,gb4]@2 [gb3,bb3,e4] ~@3 [b2,gb3,a3] [b2,gb3,a3,eb4] ~@3 [e4,g4,e5], [db3,ab3]@4 ~@3 f4@5 ~@3 e4@5 ~@5 eb5@3 ~ e5@2 ~, ~@8 [ab3,b3]@4 ~@3 bb3@3 ~@10 g3@2 g3@2, ~@5 db3@2 ~@5 [b2,gb3,a3] ~ [c3,e4]@2]/2", // Db7 Abm Fdim Fm Gb Gb7 B7 Em …
})).s("gm_electric_guitar_jazz").gain(0.25).pan(0.9)

// chords · electric guitar jazz · "JAZZ GTR" · soft notes
const electric_guitar_jazz_2 = note(`<
  ~ A B C D E ~ F ~ G H I ~ J K ~@3 L M N O P Q R S T U V W X ~@3 Y ~ Z AA AB AC AD AE AF AG@2 AH AI O AJ AK AL AM AN AO
  AP ~ AQ AR@2 AS AT AU AV AU AV AW AX ~
>`.pickRestart({
  A: "~@7 b3@3 ~@2 b3@2 ~@2, ~@7 ab3 ~@8", B: "e4@2 gb4 ~@5", C: "ab3@2 ~@2 f4@2 ~ b3 [db3,b3]@2 db3@2 b3 ~@2 eb3",
  D: "gb3 ~ bb3 ~@5, gb4 ~@15", E: "~@2 f4@2 ~@3 ab3 ~@4 b3@2 ~@2", F: "~@7 ab3 ~@8", G: "~@7 a2 ~@2 db5 ~@4 a2",
  H: "~@7 a2 g3@2 ~@6", I: "~ a3 ~@14", J: "~ [ab3,d4] ~@5 f3", K: "~ ab3 ~@6", L: "~@8 eb4 ~@7", M: "~@15 eb3",
  N: "e4@4 e4@2 ~@5 e5@2 ~@2 db3", O: "~@15 gb3", P: "gb4@5 db4 ~@10", Q: "~@12 ab4 ~@3", R: "gb4@2 e4 ~@5",
  S: "b3@2 ~@5 ab3 ~@8", T: "~@11 d4@2 ~@3", U: "a2@2 ~@10 db4 ab3!2 ~", V: "ab3@2 ~@5 a3 ~@4 e4 a3 ~ eb3",
  W: "eb3 ~@3", X: "~ eb3 ~@6", Y: "~@8 g4 ~@7", Z: "~@8 [a3,eb4]@3 ~ e4@3 ~", AA: "~@10 ab4 ~@5",
  AB: "~@4 e4 ~@3 gb4@2 a3 ~@5", AC: "~@2 b3 ~@5 b3@4 ab4@2 ~@2", AD: "~@4 gb4@2 ~ b3 ~@4 bb3 ~ c3 ~",
  AE: "~@4 ab3 b3 ~@2", AF: "[e4,gb4]@4 ~@3 b2 ~@8",
  AG: "[~@4 f4 ~@2 ab3@3 ~@2 f5 ~@2 bb3 e4@4 e4@2 ~ [gb3,a3] ~@4 c3 ~@3, ~@15 gb4@5 ~@3 eb4@2 ~@7]/2", // Gbm
  AH: "~@3 f4 ~@3 ab3 db3@2 ~@6", AI: "c3@2 ~@2 gb4 db3 ~ b2 ~@8", AJ: "~@12 [bb3,g4] ~@2 bb3",
  AK: "~@2 b3@2 ~@3 ab3 ~@8, f4 ~@3", AL: "~@4 gb4@2 ~ gb3 ~@8", AM: "~@4 [b3,f5] ~@11", AN: "~@6 f4 ~@5 c5 ~@3",
  AO: "~@4 [ab4,f5] ~@7 f4@2 ~ [ab3,bb3]", AP: "~@7 a3 ~@2 eb5@2 c3@3 ~", AQ: "~@7 [gb3,a3,eb4] ~@4 g4 ~@3",
  AR: "[~@7 ab3 ~@6 ab3 e4@5 ~@3 b2 ~@4 bb3 ~@3, ~@15 bb3 ~@16]/2", AS: "~@4 f5 ~@9 db3 ~",
  AT: "~@9 eb4 ~@6, ~@7 gb4@4 ~@5", AU: "~@4 db3 ~ ab4 ~", AV: "~@7 [gb3,a3] ~@8", AW: "~ f5@4 ~@11",
  AX: "~@4 eb4 ~@2 bb3",
})).s("gm_electric_guitar_jazz").gain(0.11).pan(0.9)

// drums · kick
const kick = s("bd").struct(`<
  A B C B C B C B C D@6 E@3 F B C B C B C B C G@3 H D@2 E@3 F B C B C B C B I B I B I B I B J B J B K B C B L B L B L B
  L ~
>`.pickRestart({
  A: "~@8 x ~@3 x ~@2 x", B: "x ~ x ~@4 x!2 ~ x ~@4 x", C: "x ~ x ~@4 x!2 ~@2 x!2 ~@2 x",
  D: "x ~ x ~@4 x!2 ~ x ~@2 x ~ x", E: "x!8", F: "x ~ x ~ x ~@3 x ~@3 x ~@2 x", G: "x ~ x ~@2 x ~ x!2 ~ x ~@4 x",
  H: "x ~ x ~@2 x ~ x!2 ~ x ~@2 x ~ x", I: "x ~ x ~@5 x!2 ~ x!3 ~ x", J: "x ~ x ~@4 x!2 ~@3 x ~@3",
  K: "x ~ x ~@4 x!2 ~@2 x!3 ~ x", L: "x ~ x ~@4 x!9",
})).gain(0.49)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@15 [~@2 x!5 ~] [~@7 x] ~@29 [~@7 x ~@8] ~ [~@7 x ~@8] ~@19>").gain(0.27)

// drums · hihat
const hihat = s("hh").struct("<~ A@15 B@2 C A@15 B@2 C A@7 C D C D C D C D A D A D A@3 D E D E D E D E ~>".pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x ~ x ~ x!3 ~", C: "x!3 ~@5", D: "~ x!7", E: "x!5 ~@3",
})).gain(0.22)

// drums · crash
const crash = s("cr").struct("<~@45 A ~ A ~ A ~ A ~ A ~ A ~@3 A ~ A ~ A ~ A ~@2>".pickRestart({
  A: "x",
})).gain(0.33)

// drums · shaker
const shaker = s("sh").struct("<~ [x!16]!17 [x!3 ~@5] [x!16]!17 [x!3 ~@5] [x!16]!30 ~>").gain(0.27)

stack(rock_organ, bass, electric_guitar_jazz, electric_guitar_jazz_2, kick, snare, snare_soft, hihat, crash, shaker)

More by Traffic