Strudelify

We Close Our Eyes

Go West

KeyF♯ majorTempo130 bpm
0:00/0:00
// We Close Our Eyes — Go West
// 130 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 132 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/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.

// bass · slap bass 2
const bass = note(`<
  ~ A@5 B C D A B E F G H I J G H I J G H I J K H L M N O P@2 Q R S T U V W X Y A B C D A B E F G H I J K H L M N O P@2
  Q R S T U V W Z AA AB@2 AC AA AD AE AF A B C D A B E P F G H I J K H L M N O P@2 AG R S T U V W P AG R S T U V W P AG
  R S T U V W P Y A B C D A B E Y
>`.pickRestart({
  A: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~", B: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ a1 ~",
  C: "a1 ~ a1 ~ a1 ~ a1 ~ b1 ~ a1 ~ a1 ~ a1 ~", D: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ f#1 ~",
  E: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ e1 ~", F: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ a#1 ~",
  G: "c#2 ~ d#2 ~ g#1 ~ a#1 ~ c#2 ~ a#1 ~ g#1 ~ a#1 ~", H: "~@2 a#1 ~ g#1 ~ a#1 ~@3 a#1 ~ g#1 ~ a#1 ~",
  I: "c#2 ~ f#2 ~ f2 ~ d#2 ~ f2 ~ a#1@2 c#2@2 d#2 ~", J: "~@2 d#2 ~ c#2 ~ d#2 ~@3 d#2 ~ c#2@2 a#1 ~",
  K: "c#2@2 d#2 ~ g#1 ~ a#1 ~ c#2@2 a#1 ~ g#1@2 a#1 ~", L: "c#2 ~ f#2@2 f2 ~ d#2 ~ f2@2 a#1@2 c#2@2 e2@2",
  M: "~@2 e2 ~ e2 ~ e2 ~@3 e2 ~ e2 ~ g#1 ~", N: "g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~ f#1 ~ g#1 ~",
  O: "a#1@2 b1 ~ a#1@2 g#1@2 a#1@2 g#1@2 f#1 ~ e1 ~", P: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~",
  Q: "~ a#2 f#2 a#1 b1 ~@2 f#2", R: "f2 ~ a#1 c#2 ~ d#2 d#1 ~", S: "~ a#1 f#2 a#1 b1 ~@3",
  T: "c#2 ~ c#2 g#1 a#1 c#2 f#2 d#2", U: "~ a#1 f#2 a#1 b1 ~@2 f#2", V: "f2@3 ~ a#1@2 c#2@3 ~ d#2@2 d#1@2 ~@2",
  W: "~ a#1 f#2 a#1 b1 a#1 g#1 e1", X: "~@2 e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~",
  Y: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ f#1 ~", Z: "f#1 f#2 ~ f#1 e2 ~@2 f#1", AA: "e2 ~ d#2 ~ c#2 d#2 f#1 b1",
  AB: "[~@2 b1 ~ b1 ~ b1 ~ b1@2 f#1 ~ f#1@2 e1@4 e1 ~ e1 ~ e1 ~ e1@2 c#2 ~ c#2@2 d#2@2]/2",
  AC: "f#1@2 f#2@2 ~@2 f#1@2 e2@3 ~@3 f#1@2", AD: "~@2 b1 ~ b1 ~ b1 ~ b1@2 f#2 ~ f#2@2 e2@2",
  AE: "~@2 e2 ~ e2 ~ e2 ~ e2@2 e1@2 ~@2 e2@2", AF: "~@2 e2 ~ e2 ~ e2 ~ e2@2 e2@2 e1@2 f#1@2",
  AG: "~ f#1 f#2 a#1 b1 ~@2 f#2",
})).s("gm_slap_bass_2").gain(0.66)

// other · lead 2 sawtooth
const lead_2_sawtooth = note(`<
  ~@4 A@2 B@2 C@2 D@2 ~@9 E F ~@3 G ~@2 H I H J K L M N O P Q@4 B@2 A@2 D@2 ~ E R ~@2 E R ~@2 H I H J K L M N O P S T U
  V@2 W U X Y Z@2 B@2 A@2 AA@4 E R ~@2 E R ~@2 H I H J K L M N O P S ~ K L M N O P S ~ K L M N O P S ~ A@2 B@2 C@2 AB@3
>`.pickRestart({
  A: "[~@7 [f#3,f#4]@3 [e3,e4] ~ [d#3,d#4] [c#3,c#4] ~ [f#2,f#3]]/2", // F# E D# C# F#
  B: "[[e3,e4]@2 [f#2,f#3]@2 [d#3,d#4]@2 [e3,e4]@2 [c#3,c#4]@2 [f#2,f#3]@2 [a2,a3]@2 [d3,d4]@6 [c#3,c#4]@2 ~@2 [b2,b3]@2 [a2,a3]@5 ~]/2", // E F# D# E C# F# A D …
  C: "[~@4 [f#3,f#4,a4]@3 ~@7 [f#3,f#4]@6 [e3,e4]@2 ~@2 [d#3,d#4]@2 [c#3,c#4]@2 ~@2 [f#2,f#3]@2]/2", // F#m F# E D# C# F#
  D: "[[e3,e4]@2 [f#2,f#3]@2 [d#3,d#4]@2 [e3,e4]@2 [c#3,c#4]@2 [f#2,f#3]@2 [a2,a3]@2 [d3,d4]@6 [c#3,c#4]@2 ~@2 [b2,b3]@2 [a2,a3]@3 ~@3]/2", // E F# D# E C# F# A D …
  E: "~@6 [g#4,a#4] ~ [g#4,a#4]@3 ~ [g#4,a#4]@3 ~", F: "~@4 [g#4,a#4]@3 ~@9", G: "[c#4,f4]@6 [c#4,f4] ~@9",
  H: "~@4 [b4,d#5,f#5] ~@11", I: "~@4 [a#4,c#5,f5] ~@11", J: "~@6 [g#4,b4,f#5] ~@3 [g#4,b4,f#5] ~@5",
  K: "~ a#3 f#3 a#2 b2 ~@2 f#3", L: "f3 ~ a#2 c#3 ~ d#3 d#2 ~", M: "~ a#2 f#3 a#2 b2 ~@3",
  N: "c#3 ~ c#3 g#2 a#2 c#3 f#3 d#3", O: "~ a#2 f#3 a#2 b2 ~@2 f#3", P: "f3@3 ~ a#2@2 c#3@3 ~ d#3@2 d#2@2 ~@2",
  Q: "[~ a#2 f#3 a#2 b2 a#2 g#2 e2@16 [f#3,f#4]@3 [e3,e4] ~ [d#3,d#4] [c#3,c#4] ~ [f#2,f#3]]/4", R: "~@3 [g#4,a#4] ~@4",
  S: "~ a#2 f#3 a#2 b2 a#2 g#2 e2", T: "f#2 f#3 ~ f#2 e3 ~@2 f#2", U: "e3 ~ d#3 ~ c#3 d#3 f#2 b2",
  V: "[~@2 b2 ~ b2 ~ b2 ~ b2@2 f#2 ~ f#2@2 e2@4 e2 ~ e2 ~ e2 ~ e2@2 c#3 ~ c#3@2 d#3@2]/2",
  W: "f#2@2 f#3@2 ~@2 f#2@2 e3@3 ~@3 f#2@2", X: "~@2 b2 ~ b2 ~ b2 ~ b2@2 f#3 ~ f#3@2 e3@2",
  Y: "~@2 e3 ~ e3 ~ e3 ~ e3@2 e2@2 ~@2 e3@2",
  Z: "[~@2 e3 ~ e3 ~ e3 ~ e3@2 e3@2 e2@2 [f#3,f#4]@6 [e3,e4]@2 ~@2 [d#3,d#4]@2 [c#3,c#4]@2 ~@2 [f#2,f#3]@2]/2", // F# E D# C# F#
  AA: "[[e3,e4]@2 [f#2,f#3]@2 [d#3,d#4]@2 [e3,e4]@2 [c#3,c#4]@2 [f#2,f#3]@2 [a2,a3]@2 [d3,d4]@6 [c#3,c#4]@2 ~@2 [b2,b3]@2 [a2,a3]@3 ~ e2@33 ~]/4", // E F# D# E C# F# A D …
  AB: "[[e3,e4] [f#2,f#3] [d#3,d#4] [e3,e4] [c#3,c#4] [f#2,f#3] [a2,a3] [d3,d4]@3 [c#3,c#4] ~ [b2,b3] [a2,a3] e2@9 [f#2,f#3]]/3", // E F# D# E C# F# A D …
})).s("gm_lead_2_sawtooth").gain(0.4)

// chords · synth brass 1
const synth_brass_1 = note(`<
  ~@4 A@2 B@2 C@2 D@2 ~ E ~ F ~ E ~ F ~@5 G ~ H ~@5 I J I K I L M N@3 B@2 O@2 D@2 ~ P ~ Q ~ P ~ Q ~@5 I J I K I L M R
  S@3 R T@5 B@2 O@2 D@2 ~@2 P ~ Q ~ P ~ Q ~@5 I J I K I L M ~ I J I K I L M ~ I J I K I L M ~ A@2 B@2 C@2 D@2 U
>`.pickRestart({
  A: "[~@7 f#5@3 e5 ~ d#5 c#5 ~ f#4]/2", B: "[e5@2 f#4@2 d#5@2 e5@2 c#5@2 f#4@2 a4@2 d5@6 c#5@2 ~@2 b4@2 a4@5 ~]/2",
  C: "[~@4 [f#4,c#5]@3 ~@7 [f#5,f#6]@6 [e5,e6]@2 ~@2 [d#5,d#6]@2 [c#5,c#6]@2 ~@2 [f#4,f#5]@2]/2", // F#5 F# E D# C# F#
  D: "[[e5,e6]@2 [f#4,f#5]@2 [d#5,d#6]@2 [e5,e6]@2 [c#5,c#6]@2 [f#4,f#5]@2 [a4,a5]@2 [d5,d6]@6 [c#5,c#6]@2 ~@2 [b4,b5]@2 [a4,a5]@3 ~@3]/2", // E F# D# E C# F# A D …
  E: "[f#4,a#4,c#5] ~@5 [c#4,f4,g#4] ~@9", F: "[c#4,f4,g#4] ~@5 [c#4,d#4,f#4] ~@9",
  G: "[f#4,c#5]@2 ~@2 [f4,g#4,a#4] ~@11, a#4 ~@15", H: "[f4,g#4,a#4] ~@5 [g#4,a#4,d#5] ~@9",
  I: "~@2 [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [a#3,c#4,f#4] ~ [b3,d#4,f#4] ~@7", // F# B
  J: "[c#4,f4,g#4] ~@3 [c#4,f4,g#4] ~@7 [d#4,f#4,a#4] ~@3", // C# D#m
  K: "[c#4,f4,g#4] ~@3 [c#4,f4,g#4] ~@3 [c#4,f4] ~@3 [c#4,f4,g#4]@2 [d#4,f#4,a#4] ~, ~@4 g#4 ~@3", // C# D#m
  L: "[c#4,f4,g#4] ~@5 [c#4,f4,g#4] ~@5 [d#4,f#4,a#4] ~@3", // C# D#m
  M: "~@2 [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [a#3,c#4,f#4] ~ [b3,d#4,f#4] ~ [d#4,f#4,b4] ~ [b3,d#4,f#4] ~@3", // F# B
  N: "[~@3 [g#3,b3,d#4,f#4]@12 f#5@3 e5 ~ d#5 c#5 ~ f#4]/3", // G#m7
  O: "[~@7 [f#5,f#6]@3 [e5,e6] ~ [d#5,d#6] [c#5,c#6] ~ [f#4,f#5]]/2", // F# E D# C# F#
  P: "[f#4,a#4,c#5] ~@5 [c#4,f4,g#4]@2 [c#4,f4,g#4] ~@3 [c#4,f4,g#4] ~@3", // F# C#
  Q: "[c#4,f4,g#4] ~@5 [c#4,d#4,f#4] ~ [c#4,d#4,f#4] ~@3 [c#4,d#4,f#4] ~@3", // C# D#m7
  R: "~ [f#4,a#4,c#5] ~ [c#4,f#4,a#4] [e4,g#4,b4] ~@3", // F# E
  S: "[~ [c#4,f#4] [d#4,g#4] [f#4,a4]@3 [e4,g#4] [e4,f#4,b4]@3 [e4,f#4,b4]@2 [e4,f#4,b4]@2 [e4,f#4,b4] [e4,g#4,b4]@3 [e4,g#4,b4]@2 [e4,g#4,b4]@2 [e4,g#4,b4]@2]/3", // F#5 G#5 F#m E Esus2 E
  T: "[~ [c#4,f#4] [d#4,g#4] [f#4,a4]@3 [e4,g#4] [e4,f#4,b4]@3 [e4,f#4,b4]@2 [e4,f#4,b4]@2 [e4,f#4,b4] [f#4,g#4,b4]@3 [f#4,g#4,b4]@2 [f#4,g#4,b4]@2 [f#4,g#4,b4] [f#4,g#4,b4]@8 f#5@3 e5 ~ d#5 c#5 ~ f#4]/5", // F#5 G#5 F#m E Esus2 G#m7
  U: "~@7 [a#4,c#5,f#5]", // F#
})).s("gm_synth_brass_1").gain(0.45)

// other · electric guitar muted
const electric_guitar_muted = note("<~@50 A B C D A E C ~@30 A B C D A E C ~@38>".pickRestart({
  A: "~@4 d#4 ~ c#4 ~ c#4@2 d#4 ~ g#3@2 a#3 ~", B: "c#4@2 d#4 ~@5 c#4 ~ a#3 ~ g#3@2 d#4 ~",
  C: "~@4 d#4 ~ c#4 ~ c#4@2 d#4 ~@5", D: "c#4@2 d#4 ~@5 f#4 ~ f#4 ~ f4@2 c#4 ~",
  E: "c#4@2 d#4 ~@5 c#4 ~ c#4 ~ c#4 ~ c#4 ~",
})).s("gm_electric_guitar_muted").gain(0.2).pan(0.3)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@4 A@2 B@2 C@2 D@2 ~@15 E F@5 G H I J K L M@4 B@2 A@2 D@2 ~@7 E F@5 G H I J K L N ~@8 A@2 B@2 A@2 D@2 O@2 ~@6 E F@5 G
  H I J K L N P G H I J K L N P G H I J K L N P Q@2 B@2 C@2 D@2 ~
>`.pickRestart({
  A: "[~@7 f#5@3 e5 ~ d#5 c#5 ~ f#4]/2", B: "[e5@2 f#4@2 d#5@2 e5@2 c#5@2 f#4@2 a4@2 d5@6 c#5@2 ~@2 b4@2 a4@5 ~]/2",
  C: "[~@2 [a4,c#5,f#5] ~@4 f#5@3 e5 ~ d#5 c#5 ~ f#4]/2", // F#m
  D: "[e5@2 f#4@2 d#5@2 e5@2 c#5@2 f#4@2 a4@2 d5@6 c#5@2 ~@2 b4@2 a4@3 ~@3]/2", E: "~@7 f#4",
  F: "g#4 f#4 c#5 f#4@2 g#4 f#4 c#5", G: "~ a#3 f#3 a#2 b2 ~@2 f#3", H: "f3 ~ a#2 c#3 ~ d#3 d#2 ~",
  I: "~ a#2 f#3 a#2 b2 ~@3", J: "c#3 ~ c#3 g#2 a#2 c#3 f#3 d#3", K: "~ a#2 f#3 a#2 b2 ~@2 f#3",
  L: "f3@3 ~ a#2@2 c#3@3 ~ d#3@2 d#2@2 ~@2", M: "[~ a#2 f#3 a#2 b2 a#2 g#2 e2@16 f#5@3 e5 ~ d#5 c#5 ~ f#4]/4",
  N: "~ a#2 f#3 a#2 b2 a#2 g#2 e2", O: "[~@4 [e3,b3,e4]@27 ~]/2", P: "~ [e3,b3,e4]@3",
  Q: "[~@2 [e3,b3,e4]@5 f#5@3 e5 ~ d#5 c#5 ~ f#4]/2", // E5
})).s("gm_distortion_guitar").gain(0.3).pan(0.7)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@8 A@2 B@2 ~@13 C ~@19 A@2 B@2 ~@20 D E@3 D F@4 ~@3 A@2 B@2 ~@42 A@2 B@2 G
>`.pickRestart({
  A: "[~@7 f#6@3 e6 ~ d#6 c#6 ~ f#5]/2", B: "[e6@2 f#5@2 d#6@2 e6@2 c#6@2 f#5@2 a5@2 d6@6 c#6@2 ~@2 b5@2 a5@3 ~@3]/2",
  C: "[a#4,c#5] ~@3 [f#4,a#4] ~@3 [c#5,f#5] ~@3 [f5,a#5] ~@3", D: "~ c#5 ~ a#4 b4 ~@3",
  E: "[~@2 f#4@2 g#4@2 a4@6 g#4@2 b4@15 ~ b4@18]/3", F: "[~@2 f#4@2 g#4@2 a4@6 g#4@2 b4@15 ~ b4@32 ~@2]/4",
  G: "~@14 f#6 ~",
})).s("gm_string_ensemble_1").gain(0.3)

// chords · lead 2 sawtooth
const lead_2_sawtooth_2 = note(`<
  ~@4 A@2 B@2 C@2 D@2 ~@8 E ~@4 F G ~@6 H I H J H K L M@3 B@2 A@2 D@2 ~@2 N ~@3 N ~@6 H I H J H K L ~ O@3 ~ P@5 B@2 A@2
  D@2 ~@3 N ~@3 N ~@6 H I H J H K L ~ H I H J H K L ~ H I H J H K L ~ A@2 B@2 C@2 D@2 Q
>`.pickRestart({
  A: "[~@7 f#4@3 e4 ~ d#4 c#4 ~ f#3]/2", B: "[e4@2 f#3@2 d#4@2 e4@2 c#4@2 f#3@2 a3@2 d4@6 c#4@2 ~@2 b3@2 a3@5 ~]/2",
  C: "[~@4 [f#4,f#5]@3 ~@7 f#4@6 e4@2 ~@2 d#4@2 c#4@2 ~@2 f#3@2]/2", // F#
  D: "[e4@2 f#3@2 d#4@2 e4@2 c#4@2 f#3@2 a3@2 d4@6 c#4@2 ~@2 b3@2 a3@3 ~@3]/2",
  E: "[a#4,c#5,f5]@2 ~@4 [f#4,a#4,c#5] ~@9", F: "d#4@2 ~@2 d#4@2 ~@2 d#5@2 ~@2 d#6 ~@3",
  G: "[f4,g#4,a#4]@6 [f4,g#4,a#4] ~@9", H: "~@2 [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [a#3,c#4,f#4] ~ [b3,d#4,f#4] ~@7",
  I: "[c#4,f4,g#4] ~@3 [c#4,f4,g#4] ~@7 [d#4,f#4,a#4] ~@3", // C# D#m
  J: "[c#4,f4,g#4] ~@3 [c#4,f4,g#4] ~@3 [c#4,f4] ~@3 [c#4,f4,g#4]@2 [d#4,f#4,a#4] ~, ~@4 g#4 ~@3", // C# D#m
  K: "[c#4,f4,g#4] ~@5 [c#4,f4,g#4] ~@5 [d#4,f#4,a#4] ~@3", // C# D#m
  L: "~@2 [f#4,a#4,c#5] ~ [f#4,a#4,c#5] ~ [a#3,c#4,f#4] ~ [b3,d#4,f#4] ~ [d#4,f#4,b4] ~ [b3,d#4,f#4] ~@3", // F# B
  M: "[~@3 [e3,b3]@12 f#4@3 e4 ~ d#4 c#4 ~ f#3]/3", N: "~@2 [c#4,f4,g#4,a#4]@4 [c#4,f4,g#4,a#4] ~@9",
  O: "[~@7 b5@8 b5@9]/3", P: "[~@14 b5@15 ~ b5@31 ~ f#4@6 e4@2 ~@2 d#4@2 c#4@2 ~@2 f#3@2]/5", Q: "~@7 f#3",
})).s("gm_lead_2_sawtooth").gain(0.35).pan(0.3)

// other · brass section
const brass_section = note(`<
  ~@4 A@2 B@2 C@2 D@2 ~@12 E ~@4 F G F H I J K L M N O@4 B@2 A@2 D@2 ~@9 F G F H ~@7 P Q@3 P R@5 B@2 A@2 D@2 ~@10 F G F
  H ~@24 A@2 B@2 C@2 D@2 S
>`.pickRestart({
  A: "[~@7 f#5@3 e5 ~ d#5 c#5 ~ f#4]/2", B: "[e5@2 f#4@2 d#5@2 e5@2 c#5@2 f#4@2 a4@2 d5@6 c#5@2 ~@2 b4@2 a4@5 ~]/2",
  C: "[~@2 [a4,c#5,f#5] ~@4 f#5@3 e5 ~ d#5 c#5 ~ f#4]/2", // F#m
  D: "[e5@2 f#4@2 d#5@2 e5@2 c#5@2 f#4@2 a4@2 d5@6 c#5@2 ~@2 b4@2 a4@3 ~@3]/2",
  E: "~@8 [d#5,f#5] ~ [d#5,f#5] ~ [c#5,f5] ~ [a#4,c#5] ~", F: "~@4 [b4,d#5,f#5] ~@11", G: "~@4 [a#4,c#5,f5] ~@11",
  H: "~@6 [g#4,b4,f#5] ~@3 [g#4,b4,f#5] ~@5", I: "~ a#5 f#5 a#4 b4 ~@2 f#5", J: "f5 ~ a#4 c#5 ~ d#5 d#4 ~",
  K: "~ a#4 f#5 a#4 b4 ~@3", L: "c#5 ~ c#5 g#4 a#4 c#5 f#5 d#5", M: "~ a#4 f#5 a#4 b4 ~@2 f#5",
  N: "f5@3 ~ a#4@2 c#5@3 ~ d#5@2 d#4@2 ~@2", O: "[~ a#4 f#5 a#4 b4 a#4 g#4 e4@16 f#5@3 e5 ~ d#5 c#5 ~ f#4]/4",
  P: "~ c#5 ~ a#4 b4 ~@3", Q: "[~@2 f#4@2 g#4@2 a4@6 g#4@2 b4@15 ~ b4@18]/3",
  R: "[~@2 f#4@2 g#4@2 a4@6 g#4@2 b4@15 ~ b4@32 f#5@6 e5@2 ~@2 d#5@2 c#5@2 ~@2 f#4@2]/5", S: "~@7 [a#4,c#5,f#5]",
})).s("gm_brass_section").gain(0.7).pan(0.7)

// chords · pad poly
const pad_poly = note("<~@40 A@2 ~@3 B@2 ~@85>".pickRestart({
  A: "[~@2 [b3,f#4]!9 ~ [b3,f#4]!2 [b3,f#4]@4 [b3,f#4]@4 [b3,f#4]@10]/2", // B5
  B: "[~@2 f#4@2 b3@2 c#4@2 a4@2 g#4@2 e4@2 f#4@9 ~@9]/2",
})).s("gm_pad_poly").gain(0.35)

// chords · pad choir
const pad_choir = note(`<
  ~@21 A B C ~ D ~ E F@4 G@2 ~@11 H@2 ~@3 A I J ~ A I K F@4 G@2 ~@24 A I J ~ A I K F@4 G@2 ~@32
>`.pickRestart({
  A: "[f#4,a#4,c#5]@2 ~@4 [f4,g#4,a#4]@3 ~@3 [f4,g#4,a#4]@3 ~", B: "~@4 [f4,g#4,a#4]@3 ~@9",
  C: "[c#4,f4,g#4]@2 ~@4 [c#4,d#4,f#4]@4 [c#4,d#4,f#4] ~ [c#4,d#4,f#4]@2 [c#4,d#4,f#4] ~", // C# D#m7
  D: "~@8 [f#4,a#4,c#5]@2 ~@2 [f5,g#5,a#5] ~@3", E: "~@7 f#4", F: "g#4 f#4 c#5 f#4@2 g#4 f#4 c#5",
  G: "[g#4 f#4 c#5 f#4@2 g#4 f#4 c#5@5 f#4@4]/2", H: "[~@2 f#5@2 b4@2 c#5@2 a5@2 g#5@2 e5@2 f#5@9 ~@9]/2",
  I: "~@6 [f4,g#4,a#4]@3 ~@7", J: "[c#4,f4,g#4]@2 ~@4 [c#4,d#4,f#4]@4 [c#4,d#4,f#4] ~ [c#4,d#4,f#4]@2 ~@2",
  K: "[c#4,f4,g#4]@2 ~@4 [c#4,d#4,f#4]@4 [c#4,d#4,f#4] ~ [c#4,d#4,f#4]@2 f#4@2", // C# D#m7
})).s("gm_pad_choir").gain(0.3).pan(0.1)

// drums · kick
const kick = s("bd").struct("<~ A@3 B C@8 A@20 D A@8 C@8 A@12 D A@15 C@9 A@12 D A@7 D A@7 D A@7 D A@7 E>".pickRestart({
  A: "x!4", B: "~@2 x!2 ~@12", C: "x!2", D: "~ x ~ x!2 ~@3", E: "x ~ x ~ x ~ x!2",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct("<A B@3 C B@36 D B@7 E B@27 D B@45 D B@7 F>".pickRestart({
  A: "~@5 x!2 ~", B: "~ x ~ x", C: "x!2 ~@2 x ~@5 x ~ x ~ x ~", D: "~@2 x ~@3 x!2", E: "~@4 x!3 ~", F: "~@2 x ~@2 x!3",
})).gain(0.45)

// drums · clap
const clap = s("cp").struct("<~@33 A ~@3 A ~@24 A ~@3 A ~@32 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@12>".pickRestart({
  A: "~@3 x",
})).gain(0.35)

// drums · low tom
const low_tom = s("lt").struct("<~@49 [~@3 x] ~@82>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~ [x!8]!3 ~ [x!8]!126 [x!7 ~]>").gain(0.25)

// drums · open hat
const open_hat = s("oh").struct("<[~@7 x] ~@131>").gain(0.45)

// drums · crash
const crash = s("cr").struct(`<
  ~ A@3 B C ~@2 D ~@11 E ~ A ~@18 F ~@7 E ~@19 C ~@3 C ~@3 F ~@28 G ~@7 G ~@7 G F ~@7 F
>`.pickRestart({
  A: "~ x", B: "~@5 x ~@8 x ~", C: "x", D: "~@2 x ~ x!4", E: "~@3 x", F: "~@7 x", G: "~ x ~@2",
})).gain(0.45)

// drums · ride
const ride = s("rd").struct("<~@25 [~ x ~@2] ~@59 [~ x ~@2] ~@46>").gain(0.4)
// … 14 more lines

More by Go West