Strudelify

Coloured Rain

Traffic

KeyD majorTempo88 bpm
0:00/0:00
// Coloured Rain — Traffic
// 88 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 6, 4/4 at bar 6, 2/4 at bar 15, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 54 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(88/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 · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  A B@4 C@4 D@2 E F@7 G@3 H I J@2 K L M N O P Q R S@2 T U@2 V W X Y Z@8 AA@3
>`.pickRestart({
  A: "~@25 g4@17 g4@6", B: "[g4@23 ~ a#4@23 g4@23 ~ g4@17 g4@6 g4@23 a#4@23 ~ d4@6 d#4@6 f4@11 a#4@23 ~ e4@4]/4",
  C: "[~@2 f4@6 g4@12 c5@23 c5@12 c5@11 ~ d#5@11 d#5@11 ~ a#4@11 a#4@6 c5@6 d5@11 ~ a#4@11 ~ a4@3 a#4@3 a4@2 a#4@3 a4@3 a#4@3 a4@3 a#4@3 a4@3 a#4@3 a4@3 a#4@3 a4@3 a#4@3 a4@3 a#4@3 a4@3 a#4@2 a4@3]/4",
  D: "[a#4@3 a4@3 a#4@3 a4@3 a#4@3 a4@3 a#4@3 a4@3 a#4@3 a4@3 a#4@3 a4@3 a#4@3 a4@15 ~@2 a4@3 a#4@3 a4@21 ~@2 f#4@6 g4@5]/2",
  E: "~ a4@6 b4@6 c5@6 b4@6 a4@6 g4@5 f#4@6 g4@6",
  F: "[a4@6 b4@6 c5@6 b4@6 a4@5 g4@6 f#4@6 g4@6 a4@6 f#4@6 g4@12 g4@11 f#4@11 ~ f#4@12 e4@11 e4@12 d4@11 ~ d4@12 e4@11 ~ e4@11 f#4@11 ~ f#4@11 ~ g4@11 g4@11 ~ a4@23 ~ d3@11 d3@5 c3@2 ~ c3@5 ~ g2@2 ~ g2@5 g2@5 ~ a2@5 d3@11 ~ d3@5 c3@2 ~ c3@5 ~ g2@3 g2@5 g2@5 ~ a2@5]/7",
  G: "[d3@11 ~ d3@5 c3@2 ~ c3@5 ~ g2@2 g2@4 ~@2 g2@5 ~ a2@5 d3@10 ~@2 d3@5 c3@3 c3@5 ~ g2@2 g2@5 ~ g2@5 ~ a2@5 d3@11 ~ d3@5 c3@2 ~ c3@5 ~ g2@2 g2@5 ~ g2@5 ~ a2@5 d3@9]/3",
  H: "~@2 d3@5 ~ c3@2 ~ c3@5 g2@2 ~ g2@5 ~ g2@5 a2@5 ~ d3@11 ~",
  I: "d3@5 c3@2 ~ c3@5 g2@3 g2@5 ~ g2@5 a2@5 ~ d3@11 d3@4",
  J: "[~@2 c3@2 ~ c3@5 g2@3 g2@5 ~ g2@5 a2@5 ~ f#4@5 ~ g4@5 a4@5 ~ b4@5 c5@6 ~@17 g#4@5 ~ a4@5 b4@5 ~ c#5@4]/2",
  K: "~@24 g4@17 ~ g4@6", L: "g4@2 a#4!2", M: "g4@23 ~ g4@18 g4@6", N: "g4@18 g4@6 a#4@23 ~", O: "d4 d#4 f4@2 a#4@4",
  P: "e4 f4 g4@2 c5@4", Q: "c5@3 c5 d#5@2 d#5@2", R: "a#4@11 ~ a#4@6 c5@6 d5@12 a#4@12",
  S: "a4 a#4 a4 a#4 a4 a#4 a4 a#4 a4 a#4 a4 a#4 a4 a#4 a4 a#4", T: "a4@5 ~ a4 a#4 a4@7 ~",
  U: "f#4 g4 a4 b4 c5 b4 a4 g4", V: "f#4 g4 a4 f#4 g4@2 g4@2", W: "f#4!2 e4!2", X: "d4@11 ~ d4@12 a4@11 ~ a4@12",
  Y: "a4@11 ~ a4@12 a4@11 ~ a4@12",
  Z: "[a4@12 a4@12 d3@12 d3@5 ~ c3@2 ~ c3@6 g2@2 ~ g2@6 g2@6 a2@6 d3@12 d3@6 c3@2 ~ c3@6 g2@3 g2@6 g2@5 ~ a2@5 ~ d3@12 d3@6 c3@2 ~ c3@6 g2@3 g2@5 ~ g2@6 a2@6 d3@11 ~ d3@6 c3@3 c3@6 g2@2 ~ g2@6 g2@6 a2@6 d3@12 d3@6 c3@3 c3@6 g2@2 ~ g2@6 g2@5 ~ a2@5 ~ d3@11 ~ d3@6 c3@3 c3@6 g2@2 ~ g2@6 g2@5 ~ a2@5 ~ d3@11 ~ d3@6 c3@2 ~ c3@6 g2@3 g2@6 g2@5 ~ a2@5 ~ d3@11 ~ d3@6 c3@2 ~ c3@3]/8",
  AA: "[~@3 g2@3 g2@6 g2@5 ~ a2@5 ~ d3@96 ~@24]/3",
})).s("gm_distortion_guitar").gain(0.38).pan(0.9)

// bass · synth bass 2 · "SYN BASS 2"
const bass = note("<A B C@3 D@8 E@6 F@7 G H I J K L M N O@3 P Q R S T U V@8 W@3>".pickRestart({
  A: "~@25 c2@23", B: "g1@6 d1@6 g1@12 d#1@5 a#1@6 g1@6 d#1@6 c2",
  C: "[~@5 g1@6 a1@6 c2@6 c2@17 f1@6 g1@18 d1@5 d#1@12 a#1@6 g1@6 a#1@17 ~ f1@6 a#1@17 b1@6 c2@4]/3",
  D: "[~@14 g1@5 c2@23 ~ f1@24 g#1@23 a#1@46 ~ a1@140 d1@46 ~ d1@46 ~ d1@13]/8",
  E: "[~@11 g1@23 f#1@24 e1@23 d1@24 c#1@23 b1@23 ~ a1@23 g1@24 d1@45 d1@44]/6",
  F: "[~ d1@44 ~ d1@44 d1@44 ~ d1@44 ~ d1@44 ~ d1@44 ~ d1@22 f1@21 ~@2 e1@21]/7", G: "~@2 g1@22 c2@11 ~ c2@12",
  H: "g1@11 ~ g1@11 ~ d#1@10 ~@2 d#1@7 ~@2 d#1@2 ~", I: "c2@6 g1@6 a1@5 ~ c2@4 ~@2 c2@17 ~ g1@4 ~@2",
  J: "g1@17 ~ d1@5 ~ d#1@24", K: "a#1@11 ~ a#1@3 f1@3 g1@3 a#1@2 ~", L: "c2@12 e1@5 ~ g1@5 ~ c2@22 ~@2", M: "f1 g#1",
  N: "~ a#1@47", O: "[a1@71 ~]/3", P: "d1", Q: "d1@47 ~", R: "d1@24 g1@23 ~", S: "f#1@23 ~ e1@24",
  T: "d1@23 ~ c#1@23 ~", U: "b1@24 a1@23 ~", V: "[g1@24 d1@48 d1@47 ~ d1@47 ~ d1@47 ~ d1@47 ~ d1@47 ~ d1@47 ~ d1@24]/8",
  W: "[~ d1@4 ~]/3",
})).s("gm_synth_bass_2").gain(0.49)

// other · alto sax
const alto_sax = note(`<
  A B@4 C@4 D E@7 F@2 G H@2 I@2 J@2 K L M N O P Q R S T U V W X Y Z@2 AA@4 AB@2 AC@5
>`.pickRestart({
  A: "~@25 c4@17 g3@6",
  B: "[d4@23 ~ d#4@17 f4@6 d#4@6 d4@6 c4@6 g3@6 c4@17 g3@6 d4@23 d#4@23 ~ f3@6 g3@6 a#3@11 d4@23 ~ c4@4]/4",
  C: "[~@2 d4@6 e4@11 g4@24 a4@11 ~ a4@11 g#4@12 d#4@11 ~ f4@11 f4@6 g4@6 a4@12 f4@11 ~ g4@17 ~ e4@2 d4@3 ~ e4@22 ~ c4 ~ d4 c4 d4 ~ c4 d4]/4",
  D: "~ c4 d4 c4@2 d4 c4@2 d4 c4 d4 ~@2 d4 ~ c4 d4 ~ c4 d4 c4 ~ d4 c4 ~ d4 c4 d4 ~ c4 d4 ~ c4 d4 ~ c4 d4 c4 ~ d4 c4 ~ d4 c4 ~ d4 c4 d4, ~@6 c4 ~@17",
  E: "[~ c4 d4 ~ c4 d4 ~ c4 d4 ~ c4 d4 ~ c4 ~ d4 c4 d4 ~ c4 d4 ~ c4 d4 ~ c4 d4 ~ c4 d4 c4 d4 ~@5 f#4@24 g4@12 ~@12 f#4@22 f4@12 ~@12 f#4@23 ~ d4@11 ~ d4@11 d4@11 ~ d4@11 ~ d4@11 ~ d4@11 d4@11 ~ d4@11 ~ e4@11 e4@11 ~ f#4@11 ~ f#4@11 ~ g4@11 g4@11 ~ a4@17]/7",
  F: "[~@33 a3@2 a#3 ~@2 g4@2 ~ c5@17 ~ a4@12 g4@2 ~ g4@2 a4@2 g4@2 e4@2 g4@5 e4 ~ g4 e4 d4 e4@4, ~@35 c4@2 f4@2 ~ a4@2 ~@16 g4@2 ~@36, ~@36 d4@3 ~@34 e4@2 ~@21]/2",
  G: "~@3 d4@2 c4 d4@2 c4@2 a3@2 ~ a3@2 ~@2 f4@2 ~ a4@2 ~ d5@5 a4 a#4 b4@10 ~@8, ~@12 g3@3 c4@2 ~@31, ~@16 d4@2 ~ g4@2 ~ c5@2 ~@24",
  H: "[~ g5@11 ~@3 b4 ~ g4@2 ~@2 g4 ~@2 d4 ~@2 g4@2 a4 ~ a4 ~ [c4,d4]@2 a3@2 g3@2 a3 ~ d4 f4@2 ~ a4@2 ~ f4@2 ~ c4@3 a3@2 ~ a3 ~ d4@9 f4 ~ d4@2 f4 g4@2 f4@2 g#4 a4@11 ~@2 g4@2 g#4 a4@2, ~ f#5 ~@12 a4@2 ~ a4 ~@2 a4@2 ~ f4@2 ~ f4@2 ~@2 c5@2 [f4,g4]@2 ~@6 c4@2 ~@2 g4@2 ~ g4@2 ~ d4@3 ~@3 g3@2 c4@2 ~@15 d4 ~@20]/2", // Csus2 Fsus2
  I: "[~ g4 g#4@2 a4@2 ~@2 g#4 a4@2 ~@2 g#4 a4@5 ~ g4@2 a4 g4 f4@2 g4@2 f4@2 ~ g#4 a4@4 g4 ~ f4 ~ c4@4 d4@19 c4@3 g3@2 ~@2 g3@5 ~@2 a3 ~@2 a3@12 ~@4, c5@2 ~@4 c5@2 ~@3 c5@2 ~@83, ~@7 g4@2 ~@3 g4@2 ~@25 d4@2 ~@38 b3@2 ~@15]/2",
  J: "[~ g3@9 ~ b3@2 c4@3 d4@3 e4@3 f4@3 g4@4 ~ f#4@5 ~ g4@5 a4@5 ~ b4@5 ~ c5@6 ~@16 g#4@6 a4@5 b4@5 ~ c#5@4, ~@5 a3 ~@42]/2",
  K: "~@24 c4@17 ~ g3@6", L: "d4@23 ~ d#4@18 f4@6", M: "e4 d4 c4 g3 c4@2 c4 g3", N: "d4@23 ~ d#4@12 d#4@11 ~",
  O: "f3@6 g3@6 a#3@11 ~ d4@23 ~", P: "c4@6 d4@6 e4@11 ~ g4@24", Q: "a4@3 a4 g#4@2 d#4@2",
  R: "f4@11 ~ f4@6 g4@6 a4@12 f4@12", S: "g4@18 e4@2 ~ d4@3 ~ e4@22 ~",
  T: "c4 ~ d4 ~ c4 d4 c4 ~ d4 c4 ~ d4 c4@2 d4 ~ d4 ~ c4 d4 ~@2 d4 ~ c4 d4 ~ c4 d4 c4 ~ d4 c4 ~ d4 c4 d4 ~ c4 ~ d4 c4 d4 ~ c4 d4 ~ c4, ~@15 c4@2 ~@4 c4@2 ~@25",
  U: "d4 ~ c4 d4 ~ c4 d4 c4 ~ d4 ~ c4 d4 ~ c4 d4 ~ c4 d4 ~ c4 d4 ~ c4 ~ d4 c4 d4 ~ c4 d4 ~ c4 d4 ~ c4 ~ d4 c4 d4 ~ c4 d4 ~@5",
  V: "f#4@2 g4 ~", W: "f#4@23 f4@13 ~@12", X: "f#4@24 d4@11 ~ d4@11 ~", Y: "d4@11 ~ d4@11 ~ d4@11 ~ d4@10 ~@2",
  Z: "[d4@11 ~ d4@11 c#4@24 b3@24 ~ a3@24]/2",
  AA: "[g3@22 ~@7 g#4 a4@23 ~ g4@2 ~ f4@3 g4@3 f4@2 ~ g4@3 f4@2 g#4 ~ a4@6 ~ f4 ~@2 c4@6 ~ d4@18 c4@3 d4@3 ~ f4@3 c4@2 ~ d4@2 f4@3 c4@2 ~ d4@24 ~@4 g4 ~@3 c#5 d5@15 ~@2 g5@5 ~ c5 d5@3 g4@2 ~, ~@79 g4@2 ~ d4@2 ~@95 f#5 ~@12]/4",
  AB: "[a4@4 ~ g4@6 e4@2 ~ c4@2 a3@2 ~ a3@3 [c4,d4]@2 f4@2 ~@2 f4@2 d4@2 ~ g3@2 a#3 c4 d4@9 ~ c4@2 d4@2 a3@3 g3@3 f3@2 ~ g3@6 f3@6 d3@8 g3 ~ a3@2 d4@10 ~ c4, ~@5 f#4 ~@7 d4@2 ~@3 g3@3 ~@5 a4@2 ~@68, ~@27 g4@2 ~@3 a3@2 ~@17 c4 ~@44]/2", // Csus2
  AC: "[~@2 c4 a3@3 g3@2 f3@2 g3@2 ~ g3 ~@2 d3@24 ~@2 c3 ~@2 c3@5 ~ g2 ~@2 g2@3 ~@2 g2@5 ~ a2@5 ~ d3@12 ~ d3@6 c3@2 ~ c3@5 ~ g2@2 ~ g2@4 ~ g2@6 ~ a2@5 ~ d3@84 ~@36, ~ d4@2 ~@9 a3@2 ~ f3@2 ~@223]/5",
})).s("gm_alto_sax").gain(0.38).pan(0.8)

// chords · rock organ · "ORGAN 3"
const rock_organ = note("<~@8 A@2 B ~@6 C@2 D E F@2 G@2 ~@9 H I J ~@6 K L M N O P Q R S@3>".pickRestart({
  A: "[~@22 e3 ~ d4 [e4,f4] [g4,a4,b4] [c5,d5] [a5,c6,e6,a6]@5 ~ [g5,b5,d6,g6]@5 ~@8 f3 ~@2 [e4,g4] [a4,b4] [e5,a5,c6,e6]@4 ~ [d5,g5,b5,d6]@4 ~@9 g3 ~ d4 [e4,f4] g4 [c5,e5,a5]@5 ~ [b4,d5,g5]@6 [c5,e5,a5]@5 [a4,c5,e5]@4, ~@22 [f3,g3]@2 c4@2 ~@13 [a5,c6,e6,a6]@9 b3@2 f4@2 ~@11 [e5,a5,c6,e6]@9 c4@2 ~@22, ~@23 [a3,b3]@2 ~@22 [g3,a3]@2 [c4,d4]@2 ~@20 [a3,b3]@2 ~@23]/2", // Fmaj7 G Csus2 Am G Em Asus2 Am …
  B: "~@2 [g4,b4,d5]@5 ~ [a4,c5,e5]@29 ~@11", // G Am
  C: "[~@12 [a4,d5,f5]@7 ~@2 [a4,d5,f5]@7 ~ [b4,e5,g5]@2 ~ [b4,e5,g5]@2 ~@3 [b4,e5,g5] ~@2 [b4,e5,g5]@16 ~ [a4,d5,f5]@7 ~@2 [a4,d5,f5]@7 ~ [b4,g5]@2 ~ [b4,e5,g5]@2 ~@3 [b4,e5,g5] ~@2 [b4,e5,g5]@11, ~@74 e5 ~@21]/2", // Dm Em Dm Em
  D: "~@6 [a4,d5,f5]@8 [a4,d5,f5]@6 ~@3 [b4,e5,g5]@2 ~ [b4,e5,g5]@2 ~@3 [b4,e5,g5] ~@2 [b4,e5,g5]@14", // Dm Em
  E: "~@3 [a4,d5,f5]@7 ~@2 [a4,f5]@6 ~@2 [b4,g5]@2 ~ [b4,g5]@2 ~@3 [b4,e5,g5] ~@2 [b4,e5,g5]@15 ~@2, ~@11 d5@6 ~@3 [e5,a5] ~@2 e5 ~@24", // Dm Em A5
  F: "[[a4,d5,f5]@7 ~ [a4,d5,f5]@6 ~@3 [e5,g5] ~@2 [b4,e5,g5]@2 ~@3 [b4,e5] ~@2 [b4,e5,g5]@15 ~@2 [a4,d5,f5]@7 ~ [a4,d5,f5]@7 ~@2 [b4,e5,g5]@2 [b4,e5,g5]@2 ~@4 [b4,e5,g5] ~@2 [b4,e5,g5]@15 ~@2 [a4,d5,f5]@6, ~@17 b4@2 ~@77]/2", // Dm Em E5 Em Dm Em Dm
  G: "[~@2 [a4,d5,f5]@8 ~ [b4,e5] ~ g5 e5 ~@4 [b4,e5,g5] ~@2 [b4,e5,g5]@15 ~@2 [a4,d5,f5]@7 ~ [a4,d5,f5]@8 ~ [e5,g5] ~@2 [b4,e5,g5] ~@4 [b4,e5] ~@2 [b4,e5,g5]@11 ~@18, ~@11 g5@2 b4@2 ~@41 b4@2 ~@38]/2", // Dm E5 Em Dm Em E5 Em
  H: "~@30 e3 ~ d4 [e4,f4] [g4,a4,b4] [c5,d5] [a5,c6,e6,a6]@5 ~ [g5,b5,d6,g6]@5 ~, ~@15 [f3,g3] c4 ~@7, ~@31 [a3,b3]@2 ~@15", // Fmaj7 G Csus2 Am G Fsus2 Asus2
  I: "~@7 f3 ~@2 e4 [g4,a4] b4 e6@4 ~ [d5,g5,b5,d6]@4 ~@9 g3 ~ d4 [e4,f4] g4 [c5,e5,a5]@5 ~ [b4,d5,g5]@6, [a5,c6,e6,a6]@12 [e5,a5,c6]@4 ~@8 [e5,a5,c6,e6]@11 ~@13, ~@7 g3@2 c4@2 ~@21 [a3,b3]@2 ~@14, ~@8 [a3,b3]@2 [d4,f4]@2 ~@21 c4@2 ~@13", // Gsus2 G Fmaj7 Am G Am Asus2 Dm
  J: "[c5,e5,a5]@6 [a4,c5,e5]@6 [g4,b4,d5]@5 ~ [a4,c5,e5]@30", K: "~@30 [a4,d5,f5]@7 ~@2 [a4,d5,f5]@7 ~@2",
  L: "[b4,e5,g5]@2 ~ [b4,e5,g5]@2 ~@4 [b4,e5,g5] ~@2 [b4,e5,g5]@17 ~ [a4,d5,f5]@7 ~@2 [a4,d5,f5]@7 ~@2", // Em Dm
  M: "[b4,g5]@2 ~ [b4,e5,g5]@2 ~@4 [b4,e5,g5] ~@2 [b4,e5,g5]@15 ~@3 [a4,d5,f5]@8 ~ [a4,d5,f5]@7 ~@2, e5 ~@47", // Em Dm
  N: "[b4,e5,g5]@2 ~ [b4,e5,g5]@2 ~@4 [b4,e5,g5] ~@2 [b4,e5,g5]@16 ~@2 [a4,d5,f5]@7 ~@2 [a4,d5,f5]@7 ~@2", // Em Dm
  O: "[b4,g5]@2 ~ [b4,g5]@2 ~@4 [b4,e5,g5] ~@2 [b4,e5,g5]@16 ~@2 [a4,d5,f5]@8 ~ [a4,d5,f5]@6 ~@3, [e5,a5] ~@2 e5 ~@44", // Em Dm A5
  P: "[e5,g5] ~@2 [b4,e5,g5]@2 ~@4 [b4,e5] ~@2 [b4,e5,g5]@16 ~@2 [a4,d5,f5]@7 ~@2 [a4,d5,f5]@7 ~@2, b4 ~@23", // Em E5 Em Dm
  Q: "[b4,e5,g5]@2 ~ [b4,e5,g5]@2 ~@4 [b4,e5,g5] ~@2 [b4,e5,g5]@16 ~@2 [a4,d5,f5]@7 ~@2 [a4,d5,f5]@9", // Em Dm
  R: "[b4,e5] ~@2 [e5,g5] ~@5 [b4,e5,g5] ~@2 [b4,e5,g5]@15 ~@3 [a4,d5,f5]@7 ~@2 [a4,d5,f5]@9, g5@2 ~ b4@2 ~@43", // E5 Em Dm
  S: "[[e5,g5] ~@2 [b4,e5,g5] ~@5 [b4,e5] ~@2 [b4,e5,g5]@12 [a4,d5,f5]@95 ~@25, b4 ~@71]/3", // Em E5 Em Dm
})).s("gm_rock_organ").gain(0.27).pan(0.3)

// chords · drawbar organ · "ORGAN 1"
const drawbar_organ = note("<~@10 A@5 B@4 C@6 D E F G H I J K L M N@2 O P Q@8 R@7>".pickRestart({
  A: "[~@38 [d5,f#5]@23 [c5,f5]@22 ~@2 [d5,f#5]@23 [c5,f5]@22 ~ [a4,d5,f#5]@24 g4@23 ~@23 g4@39, ~@38 a4@45 ~ a4@46 ~@25 [b4,d5]@85]/5", // D F5 D F5 D Bm
  B: "[~@9 [a4,c#5,e5]@94 ~@45 d6@22 c6@11 d6@10 ~, ~@103 [d5,a5]@89]/4", // A D5
  C: "[~ a5@32 c6@4 b5@6 a5@30 b5@5 ~ g5@11 ~ d5@44 d6@23 c6@11 g5@7 ~@26 c6@6 b5@6 a5@10 ~ a5@23 g5@22 [a4,d5,f#5]@18, d5@89 ~@46 [d5,a5]@45 ~ d5@42 ~@2 d5@45 ~@18, d6@34 ~@56 a5@43 ~@48 a5@31 ~@76]/6", // D D5
  D: "~@2 [c5,f5,a5]@3 ~@9 e5@10, ~@27 [b4,g#5]@20 ~", E: "~@2 [d5,g5,b5]@7 ~@16 g4@23, ~@24 [c5,e5]@23 ~",
  F: "[g4,b4,d5]@23 ~ [g4,a#4,d#5]@23 ~", G: "~ g4@20 ~@3 [g4,e5]@24, [c5,e5]@21 ~@2 c5@24 ~",
  H: "[g4,b4,d5]@23 ~@2 g4@23, ~@12 [a#4,d#5]@11 ~", I: "[f4,a#4,d5]", J: "[g4,c5,e5]", K: "[a4,c5]@23 ~ [g#4,c5]@23 ~",
  L: "[a#4,d5]", M: "c5, a4@3 ~", N: "[~ [e5,a5]@95]/2", O: "[d5,f#5]@12 [c5,f5]@11 ~, a4@23 ~",
  P: "[d5,f#5]@24 [c5,f5]@23 a4, a4@47 ~", // D F5
  Q: "[[d5,f#5]@24 g5@23 f#5@25 g5@47 ~ [c#5,e5,a5]@96 ~@48 d6@24 c6@12 d6@10 ~@2 [a5,d6]@35 c6@3 b5@6 ~ a5@27, ~@24 [b4,d5]@95 ~@97 [d5,a5]@95 ~ d5@72]/8", // D A D5 Bm D5
  R: "[~@6 b5@6 g5@11 ~ [d5,a5]@46 ~@2 d6@24 c6@12 g5@7 ~@28 c6@6 b5@7 a5@11 ~ a5@24 g5@24 [d5,a5]@96 ~@24, ~@72 [d5,a5]@48 ~ d5@45 ~@2 d5@48 ~@120, ~@121 a5@33 ~@182]/7", // D5
})).s("gm_drawbar_organ").gain(0.27).pan(0.4)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar_2 = note("<~@13 A@5 ~@14 B@2 C@2 ~@3 D E F G H ~@10>".pickRestart({
  A: "[~@11 [g4,b4]@5 ~ a4@5 [b4,d5]@10 ~@2 [b4,d5]@11 ~ [g4,b4]@6 [a4,c5]@6 [b4,d5]@10 ~@2 [b4,d5]@10 ~ [g4,b4]@6 [a4,c5]@6 ~ [b4,d5]@10 ~ [a4,c#5]@6 [b4,d5]@5 ~ [c#5,e5]@11 ~ [c#5,e5]@10 ~ [c#5,e5]@10 ~@2 [c#5,e5]@11 ~ [c#5,e5]@10 ~ [c#5,e5]@10 ~@2 [c#5,e5]@13 ~@40, ~@8 c5@3 ~@109]/5", // G Bm G Am Bm G Am Bm …
  B: "[f4@24 g#4@23 d4@10 ~@3 d4@6 e4@6 f4@11 d4@9 ~@4]/2", C: "[[e4,g4]@13 ~@11]/2",
  D: "~@12 [g4,b4]@3 [a4,c5]@3 [b4,d5]@5 ~", E: "[b4,d5]@11 ~ [g4,b4]@6 [a4,c5]@6 [b4,d5]@10 ~@2 [b4,d5]@11 ~",
  F: "[g4,b4]@6 [a4,c5]@6 ~ [b4,d5]@10 ~ [a4,c#5]@6 [b4,d5]@6 [c#5,e5]@11 ~", // G Am Bm A Bm C#m
  G: "[c#5,e5]@10 ~@2 [c#5,e5]@10 ~@2 [c#5,e5]@11 ~ [c#5,e5]@10 ~@2", H: "[c#5,e5]@5 ~ [c#5,e5]@7 ~@11",
})).s("gm_distortion_guitar").gain(0.31).pan(0.2)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@26 A B@2 C D E ~@22>".pickRestart({
  A: "~@24 g4@16 ~ c5@7",
  B: "[b4@11 ~ g4@10 ~@2 g4@6 a#4@5 d#5@5 ~@2 [d#5,g5]@5 ~ e5@10 ~ [g4,c5]@11 ~ g4@16 ~@2 c5@7, ~@47 c5@11 ~@38]/2", // D# C5
  C: "b4@11 ~ g4@9 ~@3 g4@6 a#4@6 d#5@5 ~ g5@6",
  D: "[a#4,d5]@5 ~ c5@5 ~ d5@11 ~ [d5,f5]@24, ~@5 d#5@6 f5@11 ~ a#5@24 ~", // A# Dm
  E: "[c5,e5]@6 [d5,f5]@6 [e5,g5]@11 ~ [e5,g5,c6]@24", // C Dm Em C
})).s("gm_string_ensemble_1").gain(0.38).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@5 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 X V AA AB AC AD@2 AE AF AG AH AI AF@3 AH@4 AJ ~@2
>`.pickRestart({
  A: "~@43 x ~@4", B: "~@5 x!2 ~@6 x!2 ~", C: "x ~@13 x ~@2 x ~@20 x ~@2 x ~@6", D: "~@13 x ~@2 x ~@5 x ~@17 x ~@7",
  E: "~@4 x!2 ~@6 x!2 ~@2", F: "~@7 x ~@11 x ~@4", G: "~@3 x", H: "~@11 x ~@16 x ~@5 x ~@13",
  I: "~@4 x ~@5 x ~@17 x ~@4 x ~@14", J: "~@3 x ~@5 x ~@16 x ~@5 x ~@15", K: "~@2 x ~@5 x ~@16 x ~@5 x ~@16",
  L: "~@7 x ~@10 x ~@10 x ~@5 x ~@4 x ~@7", M: "~@4 x ~@4 x ~@5 x ~@10 x ~@5 x ~@4 x ~@10",
  N: "x ~@5 x ~@5 x ~@10 x ~@5 x ~@4 x ~@10 x ~@2", O: "~@3 x ~@5 x ~@10 x ~@5 x ~@4 x ~@5 x ~@4 x ~@5",
  P: "x ~@5 x ~@4 x ~@5 x ~@5 x ~@4 x ~@5 x ~@4 x ~@5 x ~@2",
  Q: "~@3 x ~@4 x ~@5 x ~@4 x ~@5 x ~@5 x ~@4 x ~@5 x ~@4 x", R: "~@5 x ~@5 x ~@4 x ~@5 x ~@5 x ~@4 x ~@5 x ~@4 x ~@3",
  S: "~@2 x ~@5 x ~@4 x ~@5 x ~@4 x ~@11 x ~@4 x ~@5 x", T: "~@4 x ~@22 x ~@5 x ~@4 x ~@5 x ~@3",
  U: "~@2 x ~@7 x ~@4 x ~@2 x ~@5 x ~@23", V: "x ~ x ~@4 x!2 ~@6 x", W: "x ~@11 x ~@9 x ~ x ~@20 x ~@2",
  X: "x ~ x ~@4 x!2 ~ x ~@4 x", Y: "x ~ x ~@4 x!2 ~@5 x ~", Z: "x!2 ~ x!2 ~ x ~", AA: "x ~ x!4 ~@2",
  AB: "x ~@6 x!2 ~@2 x ~@3 x", AC: "x!2 ~ x!2 ~@3", AD: "x", AE: "x ~@3 x!3 ~", AF: "x!3 ~ x!3 ~", AG: "x!3 ~ x!4",
  AH: "x!8", AI: "x!4", AJ: "x!5 ~@3",
})).gain(0.44)

// drums · snare
const snare = s("sd").struct(`<
  ~@5 A B C D E F G H I J K L M N O P Q R S T U V W X W@2 Y W@2 Z AA AB AC AD AA AE@2 AF AG W@3 AH AE@3 AI ~@2
>`.pickRestart({
  A: "~@13 x ~@3 x ~@4 x ~@25", B: "~@7 x ~@22 x ~@17", C: "~@5 x ~@23 x ~@18", D: "~@5 x ~@22 x ~@8 x ~@10",
  E: "~ x ~@7 x ~@6", F: "~@2 x ~@17 x ~@2 x ~@24", G: "~@25 x ~@2 x ~@19", H: "~@6 x!2 ~@8",
  I: "~@5 x ~@17 x ~@10 x ~@11 x ~", J: "~@10 x ~@11 x ~@10 x ~@11 x ~@2", K: "~@9 x ~@10 x ~@11 x ~@11 x ~@3",
  L: "~@8 x ~@10 x ~@13 x ~ x ~ x ~ x ~ x ~ x ~@4", M: "~@9 x ~@10 x ~@3", N: "~@15 x ~@21 x ~@10",
  O: "~@6 x ~@10 x ~@6", P: "~@9 x ~@21 x ~@10 x ~@5", Q: "~@6 x ~@10 x ~@10 x ~@10 x ~@8",
  R: "~@2 x ~@11 x ~@10 x ~@10 x ~@10 x", S: "~@10 x ~@11 x ~@10 x ~@10 x ~@3", T: "~@8 x ~@10 x ~@21 x ~@6",
  U: "~@2 x ~ x!4 ~@11 x ~@4", V: "~@7 x ~@28 x ~@11", W: "~ x ~ x", X: "~@3 x ~@4 x ~@9 x ~@5",
  Y: "~@4 x ~@5 x ~@2 x!3", Z: "~@2 x ~@2 x ~@10", AA: "~@3 x", AB: "~@4 x ~@4 x!7", AC: "~@10 x!2 ~@4",
  AD: "~@10 x!2 ~ x ~@2", AE: "x!4", AF: "x ~@5 x ~@5 x ~@5 x ~@4 x", AG: "~ x!11 ~@6 x ~@5", AH: "~ x!3",
  AI: "x!2 ~@2",
})).gain(0.49)

// drums · low tom
const low_tom = s("lt").struct("<~@17 A ~@7 B ~@2 C ~@5 D ~@19>".pickRestart({
  A: "~@5 x ~@42", B: "~@11 x ~@12", C: "~@9 x!3 ~@12", D: "~@23 x",
})).gain(0.38)

// drums · hihat
const hihat = s("hh").struct("<A B C D E F ~@5 G@2 ~@24 H@2 I ~@14>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@11 x ~@22 x ~@13", D: "~@10 x ~@22 x ~@14", E: "~@9 x ~@22 x ~@15", F: "~ x ~@4",
  G: "x!2 ~@2", H: "~ x!3", I: "~ x ~@2",
})).gain(0.49)

// drums · mid tom
const mid_tom = s("mt").struct("<~@5 A ~@4 B C D ~@3 E F ~@7 G ~@2 H ~@5 I ~@2 J K L ~@14>".pickRestart({
  A: "~@25 x ~@5 x ~@2 x ~@2 x ~@2 x ~@7", B: "~@26 x ~@2 x ~ x ~@3 x ~@12", C: "~@31 x ~@16",
  D: "~@24 x ~@2 x ~ x ~@2 x ~@15", E: "~@47 x", F: "~ x ~ x ~@44", G: "~@5 x ~@6", H: "~@7 x!2 ~@15", I: "~@20 x!3 ~",
  J: "~@12 x!4", K: "~@7 x", L: "~@19 x ~@28",
})).gain(0.44)

// drums · high tom
const high_tom = s("ht").struct("<~@16 [~@43 x ~ x ~@2] ~@8 [~@8 x!2 ~@14] ~@8 [~@18 x!2 ~@4] ~@19>").gain(0.44)

// drums · crash
const crash = s("cr").struct(`<
  ~@5 A ~@2 B C D E F G ~@3 H ~@7 I J ~ K ~@3 L ~@2 L ~ L@2 M ~@3 K ~@7 K ~@2
>`.pickRestart({
  A: "~@43 x ~@4", B: "~@7 x ~@4", C: "~ x ~@3 x ~@10", D: "~@19 x ~@4", E: "~@3 x", F: "~@35 x ~@12", G: "~@11 x ~@36",
  H: "~@7 x ~@40", I: "~@4 x ~@22 x ~@20", J: "~ x ~@10 x ~@11", K: "~ x", L: "x", M: "x!2",
})).gain(0.44)

// drums · ride
const ride = s("rd").struct(`<
  ~@6 A B C D E ~@2 F G H I J K L M N O P Q R S T U T@2 V W T V W T ~@2 X T@3 Y T@7 Z ~@2
>`.pickRestart({
  A: "~@7 x ~@5 x ~@4 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5", B: "x ~@5 x ~@5 x ~@4 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x",
  C: "~@2 x ~@2 x ~@2 x ~@2 x ~@12", D: "~@27 x ~@5 x ~@5 x ~@4 x ~@3", E: "~ x ~@2 x ~@2 x ~@16",
  F: "~@17 x ~@5 x ~@5 x ~@5 x ~@4 x ~@5 x ~", G: "~@4 x ~@5 x ~@5 x ~@5 x ~@5 x ~@4 x ~@5 x ~@5 x ~@2",
  H: "~@3 x ~@5 x ~@5 x ~@5 x ~@5 x ~@4 x ~@5 x ~@5 x ~@3", I: "~@2 x ~@5 x ~@5 x ~@4 x ~@5 x ~@5 x ~@16",
  J: "~@12 x ~@5 x ~@5 x ~@4 x ~@5 x ~@4 x ~@5 x ~", K: "~@4 x ~@4 x ~@5 x ~@5 x ~@4 x ~@5 x ~@4 x ~@5 x ~@4",
// … 30 more lines

More by Traffic