Strudelify
One Way Wind cover art

Aglow

One Way Wind

Cats

KeyE majorTempo108 bpm
0:00/0:00
// One Way Wind — Cats
// 108 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 99 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): STEEL GTR.
setcpm(108/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, A@4 for four bars: edit a riff to change every repeat.

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  ~ A B C D@2 B C D@2 E F G H I J K H@2 L F H@2 L F M N H O H@2 P Q H@2 P R H S J P R D B C D A B C D@2 H F K H T F Q
  H@2 U F H@2 U M J V H O H@2 P Q H@2 P R E U M P@3 R H@2 P C H@2 P@2 H W P@2 H X
>`.pickRestart({
  A: "e2@4 ~@2 e2 ~ b1@3 ~ e2@3 ~", B: "a1@4 ~@2 a1 ~ e2@4 a1@3 ~", C: "b1@4 ~@2 b1 ~ f#2@4 b1@3 ~",
  D: "e2@4 ~@2 e2 ~ b1@4 ~@2 b1 ~", E: "e2@4 ~@2 e2 ~ e2@4 ~@2 e2 ~", F: "a1@4 ~@2 a1 ~ a1@7 ~",
  G: "b1@4 ~@2 b1 ~ b1@4 ~@2 b1 ~", H: "e2@4 ~@2 e2 ~ e2@4 b1@3 ~", I: "e2@4 ~@2 e2 ~ e2@8",
  J: "a1@4 ~@2 a1 ~ a1@4 ~@2 a1 ~", K: "b1@4 ~@2 b1 ~ b1@7 ~", L: "g#1@4 ~@2 g#1 ~ g#1@7 ~",
  M: "a1@4 ~@2 a1 ~ a1@3 ~ e2@4", N: "g1@4 ~@2 g1 ~ g1@7 ~", O: "e2@4 ~@2 e2@6 b1@3 ~", P: "b1@4 ~@2 b1 ~ b1@3 ~ f#2@4",
  Q: "b1@4 ~@2 b1 ~ b1@3 ~ c#2@3 ~", R: "b1@4 ~@2 b1 ~ c#2@3 ~ d#2@3 ~", S: "g#1@4 ~@2 g#1 ~ g#1@3 ~ d#2@4",
  T: "e2@4 ~@2 e2 ~ e2@3 ~ e2@2 b1@2", U: "g#1@4 ~@2 g#1 ~ g#1@4 ~@2 g#1 ~", V: "g1@4 ~@2 g1 ~ g1@5 ~ g1 ~",
  W: "e2@4 ~@2 e2 ~ e2@3 ~ b1@2 ~@2", X: "e2@3 ~@3 e2@10",
})).s("gm_fretless_bass").gain(0.33).pan(0.2)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~ A B C D@3 C E@3 B F@4 G@3 H B I@3 J@2 K L@4 M@2 L@2 M@2 A H B M@2 A B C L@2 B C E@3 N C L@2 B C L@2 H B L@2 H J@2 O
  L@4 P@4 Q@3 H R@5 S@4 L@2 M@2 L@2 M@2 L@2
>`.pickRestart({
  A: "[b3,e4,g#4]@15 ~", B: "[c#4,e4,a4]@15 ~", C: "[b3,d#4,f#4]@15 ~", D: "[[b3,g#4]@31 ~ [c#4,a4]@15 ~, e4@47 ~]/3",
  E: "[b3,e4,g#4]/3", F: "[[d#4,f#4]@16 g#4@31 ~ [c#4,a4]@15 ~, b3@47 ~@17, ~@16 e4@47 ~]/4",
  G: "[[d#4,f#4] [e4,g#4]@2, b3@47 ~]/3", H: "[b3,d#4,g#4]@15 ~", I: "[e4@31 ~ d#4@15 ~, [b3,g#4]@47 ~]/3",
  J: "[[c#4,e4,a4]@31 ~]/2", K: "[b3,d4,g4]", L: "[[b3,e4,g#4]@31 ~]/2", M: "[[b3,d#4,f#4]@31 ~]/2",
  N: "[c#4,e4,a4]@15 ~, b3 ~@15", O: "[b3,d4,g4]@15 ~", P: "[[b3,d#4,f#4]@31 [b3,e4,g#4]@31 ~@2]/4",
  Q: "[[b3,d#4,f#4]@31 [b3,e4,g#4]@16 ~]/3", R: "[[c#4,e4,a4]@14 ~ [b3,d#4,f#4]@63 ~@2]/5",
  S: "[[b3,e4,g#4]@31 [b3,d#4,f#4]@32 ~]/4", // E B
})).s("gm_synth_strings_1").gain(0.1).pan(0.4)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~ A B C D E F G D H I J K D L M N O P Q R H S T U V W A X Y Z AA AB AC AD AE AF AG AH B AI AF AJ J N AK AL AM AN AO AP
  AQ F AR AS AT AU AV AW AK AX M AY AZ BA BB BC BD AL AD BE E BF BG O H BH N BI BJ AU K BK BL G H BM BN BO AD AK AF BP
  BQ@2 BN BK BQ BR
>`.pickRestart({
  A: "[g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4] ~", // E
  B: "[a3,c#4,e4,a4]@2 ~@2 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@4 [a3,c#4,e4,a4]@4 [a3,c#4,e4,a4] ~", // A
  C: "[f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4] ~", // B
  D: "[g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4] ~", // E
  E: "[g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4] ~", // E
  F: "[a3,c#4,e4,a4]@2 ~@2 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2 ~@2 [a3,c#4,e4,a4]@2 ~@2 [a3,c#4,e4,a4] ~", // A
  G: "[f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4] ~ [f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4] ~", // B
  H: "[g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4] ~", // E
  I: "[g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4] ~", // E
  J: "[a3,c#4,e4,a4]@4 [a3,c#4,e4,a4] ~ [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@4 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4] ~", // A
  K: "[f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4] ~ [f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4] ~", // B
  L: "[g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4] ~", // E
  M: "[a3,c#4,e4,a4]@4 [a3,c#4,e4,a4] ~ [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2 ~@2 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4] ~", // A
  N: "[f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4] ~ [f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4] ~", // B
  O: "[g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4] ~", // E
  P: "[g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4] ~", // E
  Q: "[g#3,b3,d#4,g#4]@4 [g#3,b3,d#4,g#4] ~ [g#3,b3,d#4,g#4]@2 [g#3,b3,d#4,g#4]@2 ~@2 [g#3,b3,d#4,g#4]@2 [g#3,b3,d#4,g#4] ~", // G#m
  R: "[a3,c#4,e4,a4]@4 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@4 [a3,c#4,e4,a4]@4 [a3,c#4,e4,a4] ~", // A
  S: "[g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4] ~", // E
  T: "[g#3,b3,d#4,g#4]@4 [g#3,b3,d#4,g#4] ~ [g#3,b3,d#4,g#4]@2 [g#3,b3,d#4,g#4]@2 [g#3,b3,d#4,g#4]@2 [g#3,b3,d#4,g#4]@2 [g#3,b3,d#4,g#4] ~", // G#m
  U: "[a3,c#4,e4,a4]@2 ~@2 [a3,c#4,e4,a4] ~ [a3,c#4,e4,a4]@2 ~@2 [a3,c#4,e4,a4]@4 [a3,c#4,e4,a4] ~", // A
  V: "[a3,c#4,e4,a4]@2 ~@2 [a3,c#4,e4,a4] ~ [a3,c#4,e4,a4]@2 ~@2 [a3,c#4,e4,a4]@2 ~@2 [a3,c#4,e4,a4] ~", // A
  W: "[g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@4 [g3,b3,d4,g4]@2 ~@2 [g3,b3,d4,g4] ~", // G
  X: "[g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 ~@2", // E
  Y: "[g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4] ~", // E
  Z: "[g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4] ~", // E
  AA: "[f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4] ~ [f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4] ~", // B
  AB: "[f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4] ~", // B
  AC: "[g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 ~@2", // E
  AD: "[g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4] ~", // E
  AE: "[a3,b3,c#4,d#4,e4,a4,b4]@4 [f#3,b3,d#4,b4] ~ [f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4] ~", // A B
  AF: "[f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4] ~ [f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4] ~", // B
  AG: "[g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4] ~", // E
  AH: "[g#3,b3,d#4,g#4]@4 [g#3,b3,d#4,g#4] ~ [g#3,b3,d#4,g#4]@4 [g#3,b3,d#4,g#4]@4 [g#3,b3,d#4,g#4] ~", // G#m
  AI: "[f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4] ~", // B
  AJ: "[g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4] ~", // E
  AK: "[g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4] ~", // E
  AL: "[g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4] ~", // E
  AM: "[a3,c#4,e4,a4]@2 ~@2 [a3,c#4,e4,a4] ~ [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4] ~", // A
  AN: "[f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4] ~ [f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4] ~", // B
  AO: "[g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4]@2 ~@2", // E
  AP: "[g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4] ~", // E
  AQ: "[g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4] ~", // E
  AR: "[f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4] ~ [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4] ~", // B
  AS: "[g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4] ~", // E
  AT: "[g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4] ~", // E
  AU: "[a3,c#4,e4,a4]@4 [a3,c#4,e4,a4] ~ [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4] ~", // A
  AV: "[f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4] ~", // B
  AW: "[g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [f#3,c#4,f#4,g#4,a4] ~", // E F#m
  AX: "[g#3,b3,d#4,g#4]@4 [g#3,b3,d#4,g#4]@2 [g#3,b3,d#4,g#4]@4 [g#3,b3,d#4,g#4]@4 [g#3,b3,d#4,g#4] ~", // G#m
  AY: "[g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4] ~", // E
  AZ: "[g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4] ~", // E
  BA: "[g#3,b3,d#4,g#4]@2 ~@2 [g#3,b3,d#4,g#4]@2 [g#3,b3,d#4,g#4]@2 [g#3,b3,d#4,g#4]@2 ~@2 [g#3,b3,d#4,g#4]@2 [g#3,b3,d#4,g#4] ~", // G#m
  BB: "[a3,c#4,e4,a4]@4 [a3,c#4,e4,a4] ~ [a3,c#4,e4,a4]@4 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4] ~", // A
  BC: "[a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@2 [a3,c#4,e4,a4]@4 [a3,c#4,e4,a4]@4 [a3,c#4,e4,a4] ~", // A
  BD: "[g3,b3,d4,g4]@4 [g3,b3,d4,g4] ~ [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4]@2 [g3,b3,d4,g4] ~", // G
  BE: "[g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4] ~", // E
  BF: "[f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4] ~ [f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4] ~", // B
  BG: "[f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4] ~", // B
  BH: "[f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4] ~ [f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4] ~", // B
  BI: "[g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4] ~", // E
  BJ: "[g#3,b3,d#4,g#4]@2 ~@2 [g#3,b3,d#4,g#4] ~ [g#3,b3,d#4,g#4]@2 [g#3,b3,d#4,g#4]@2 [g#3,b3,d#4,g#4]@4 [g#3,b3,d#4,g#4] ~", // G#m
  BK: "[f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4] ~ [f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4] ~", // B
  BL: "[f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4]@2 [f#3,b3,d#4,b4] ~ [f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4] ~", // B
  BM: "[g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4] ~", // E
  BN: "[f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4] ~ [f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4] ~", // B
  BO: "[f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4] ~ [f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4] ~", // B
  BP: "[f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4] ~ [f#3,b3,d#4,b4]@4 [f#3,b3,d#4,b4]@2 ~@2 [f#3,b3,d#4,b4] ~", // B
  BQ: "[g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4]@4 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4]@2 [g#3,b3,e4,g#4] ~", // E
  BR: "[g#3,b3,e4,g#4]@5 ~ [g#3,b3,e4,g#4]@8 ~@2", // E
})).s("gm_acoustic_guitar_steel").gain(0.11).pan(0.3)

// chords · acoustic guitar steel · "STEEL GTR" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@2 A B C ~ D ~ C E@2 ~ F C@2 G H I ~ J ~ E C ~ K D L ~ M C N O P Q C R S T ~ A H S ~@2 H U V A B W I ~ D H V@2 ~@2 X
  U ~ G Y Z AA ~@3 V C N ~@2 AB I E AB H V AC ~ F H ~@2 E N S B C U S P N@2 S H N ~
>`.pickRestart({
  A: "~ [a3,c#4,e4,a4] ~@6", B: "~@4 [f#3,b3,d#4,b4] ~@3", C: "~@4 [g#3,b3,e4,g#4] ~@3",
  D: "~ [a3,c#4,e4,a4] ~@2 [a3,c#4,e4,a4] ~ [a3,c#4,e4,a4] ~", E: "~ [g#3,b3,e4,g#4] ~@2 [g#3,b3,e4,g#4] ~@3",
  F: "~ [f#3,b3,d#4,b4] ~@4 [f#3,b3,d#4,b4] ~", G: "~@5 [a3,c#4,e4,a4] ~@2", H: "~ [f#3,b3,d#4,b4] ~@6",
  I: "~@4 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4] ~", J: "~@5 [g#3,b3,d#4,g#4] ~@2",
  K: "~ [a3,c#4,e4,a4] ~@2 [a3,c#4,e4,a4] ~@3", L: "~@6 [g3,b3,d4,g4] ~", M: "~@14 [g#3,b3,e4,g#4] ~",
  N: "~ [g#3,b3,e4,g#4] ~@6", O: "~@4 [f#3,b3,d#4,b4] ~ [f#3,b3,d#4,b4] ~", P: "~@6 [f#3,b3,d#4,b4] ~",
  Q: "~@8 [g#3,b3,e4,g#4]@2 ~@4 [g#3,b3,e4,g#4] ~", R: "f#3 ~@7 [f#3,b3,d#4,b4]@2 ~@6",
  S: "~ [f#3,b3,d#4,b4] ~@2 [f#3,b3,d#4,b4] ~@3", T: "~ [g#3,b3,e4,g#4] ~@3 [g#3,b3,e4,g#4] ~@2",
  U: "~ [g#3,b3,e4,g#4] ~@2 [g#3,b3,e4,g#4] ~ [g#3,b3,e4,g#4] ~", V: "~@6 [g#3,b3,e4,g#4] ~",
  W: "~@2 [g#3,b3,e4,g#4]@2 ~@6 [g#3,b3,e4,g#4]@2 ~@2 [g#3,b3,e4,g#4] ~", X: "~@8 [g#3,b3,e4,g#4]@2 ~@4 [g#3,b3,e4] ~",
  Y: "~@5 [g#3,b3,e4,g#4] ~@2", Z: "~ [g#3,b3,e4,g#4] ~@4 [g#3,b3,e4,g#4] ~",
  AA: "~ [g#3,b3,d#4,g#4] ~@3 [g#3,b3,d#4,g#4] ~@2", AB: "~ [f#3,b3,d#4,b4] ~@2 [f#3,b3,d#4,b4] ~ [f#3,b3,d#4,b4] ~",
  AC: "~ [g#3,b3,d#4,g#4] ~@6", // G#m
})).s("gm_acoustic_guitar_steel").gain(0.06).pan(0.3)

// other · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_3 = note("<A B C D E B F G E H ~@31 A B C D E B F G E H ~@48>".pickRestart({
  A: "~@3 f#4", B: "g#4@9 ~ g#4 ~ g#4@3 ~", C: "a4@13 ~ [g#4,a4] g#4", D: "f#4 g#4 a4 b4 c#5 d#5 c#5 d#5",
  E: "e5@10 b4@2 c#5 b4 a4@2", F: "a4@15 ~", G: "e5@2 d#5@2 c#5@2 d#5@2 [c#5,d#5] c#5 b4@2 c#5@2 d#5@2", H: "g#4 ~",
})).s("gm_acoustic_guitar_steel").gain(0.36)

// other · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_4 = note(`<
  ~ A B C A D ~ E A ~ D A F A G A H A I E J ~ B K L ~@2 A@2 D@2 E ~ A ~ M ~@2 M L N ~ A O D ~ A ~ E ~ A P ~@2 Q ~ A M
  ~@2 M A@2 ~@2 A B R A ~ D S M ~ T ~@2 U ~ C A V W X E Y ~ D Z ~@3 E ~@2 D ~@2 AA
>`.pickRestart({
  A: "~ e4 ~@6", B: "~@6 e4 ~", C: "~@6 d#4 ~", D: "~@6 b3 ~", E: "~ d#4 ~@6", F: "~@4 d#4 ~@3", G: "~@3 e4",
  H: "~@4 d#4 ~ d#4 ~", I: "~@4 g#4@2 b3 ~", J: "~ e4 ~@4 c#4 ~", K: "~@2 d#4@3 ~@11", L: "~@6 c#4 ~",
  M: "~ d#4 ~@4 b3 ~", N: "~@8 f#4@5 ~@3", O: "~@2 e4@2 ~@6 e4@3 ~@3", P: "~@2 e4@3 ~@7 b3@2 ~@2, ~@4 g#4@3 ~",
  Q: "~@4 e4 ~@3", R: "~ b3 ~@6", S: "~@4 e4 ~ e4 ~", T: "~@2 e4@3 ~@11", U: "~@4 f#4@2 b3 ~", V: "~@4 f#4@3 ~",
  W: "~@8 f#4@3 ~@5", X: "~@4 f#4 ~ f#4@2", Y: "~@4 a4 ~@3", Z: "~ d#4 ~@4 d#4 ~", AA: "~@2 e4@2 b3 ~@3 b3@6 ~@2",
})).s("gm_acoustic_guitar_steel").gain(0.1).pan(0.7)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@18 A B C D@2 E F C D A ~ G@2 H@2 I G H@2 A B C J@2 ~@17 K L M N@2 O P M ~@3 G@2 H@2 G@2 H@2 K L M Q R S T G@2 Q U
  G@2 Q V W G Q X G Y
>`.pickRestart({
  A: "[e4,e5]", B: "[d#4,d#5]", C: "[c#4,c#5]", D: "[b3,b4]", E: "[g#3,g#4]@15 ~", F: "[a3,a4]",
  G: "[e5,e6]@5 ~ [b4,b5]@4 [g#4,g#5]@2 [f#4,f#5]@2 [e4,e5]@2", H: "[[b4,b5]@21 ~ [f#4,f#5]@6 [d#4,d#5]@3 ~]/2",
  I: "[e5,e6]@3 [b4,b5]@2 [g#4,g#5] [f#4,f#5] [e4,e5]", J: "[b4,b5]@3 [f#4,f#5]@2 [d#4,d#5] [c#4,c#5] [b3,b4]",
  K: "[e5,e6]@15 ~", L: "[d#5,d#6]", M: "[c#5,c#6]", N: "[b4,b5]/2", O: "[g#4,g#5]@15 ~", P: "[a4,a5]",
  Q: "[b4,b5]@15 ~", R: "[b4,b5]@6 [f#4,f#5]@4 [d#4,d#5]@2 [c#4,c#5]@2 [b3,b4] ~",
  S: "[b4,b5]@6 [f#4,f#5]@4 [d#4,d#5]@2 [c#4,c#5] ~ [b3,b4] ~", // B F# D# C# B
  T: "[b3,b4]@4 ~@2 [d#4,d#5]@3 [f#4,f#5] ~@2 [f#4,f#5] [b4,b5] [d#5,d#6] ~", // B D# F# B D#
  U: "[b4,b5]@5 ~ [f#4,f#5]@4 [b4,b5] ~ [b4,b5] [d#5,d#6] [f#5,f#6] ~", // B F# B D# F#
  V: "[b4,b5]@5 [f#4,f#5]@4 ~ [b4,b5] ~ [b4,b5] [d#5,d#6] [f#5,f#6] ~", // B F# B D# F#
  W: "[e5,e6]@5 ~ [b4,b5]@3 [g#4,g#5]@2 ~ [f#4,f#5]@2 [e4,e5]@2", // E B G# F# E
  X: "[b4,b5]@6 [f#4,f#5]@3 ~ [b4,b5] ~ [b4,b5] [d#5,d#6] [f#5,f#6] ~", Y: "[e5,e6]@3 ~@3 [e5,e6]@4 ~@6",
})).s("gm_string_ensemble_1").gain(0.16)

// other · tremolo strings · "TREMOLOSTR" · B E B G# E B E B …
const tremolo_strings = note(`<
  ~@28
  [[b3,b4]@6 [e4,e5]@5 ~ [b3,b4] [g#4,g#5] [e4,e5] [b4,b5]]
  [[e5,e6]@5 ~@11]
  ~@37
  [[b4,b5]]
  [[g#4,g#5]]
  [[b3,b4]@6 [e4,e5]@5 ~ [b3,b4] [g#4,g#5] [e4,e5] [b4,b5]]
  ~@29
>`).s("gm_tremolo_strings").gain(0.21)

// drums · kick
const kick = s("bd").struct("<~ [x ~@2 x!2 ~@3]!97 [x ~@2 x ~@4]>").gain(0.45)

// drums · rim
const rim = s("rim").struct("<~ A@8 B A@22 B A@8 C A@16 B A@8 B D A@12 B A@2 D A@13 E>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!2 ~", C: "~ x!2 ~@3 x ~", D: "~@2 x ~@2 x!3", E: "~ x ~@6",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B@8 A B@2 C B@3 D A B@2 D B@2 D B@2 E B A D B@3 D B D B@4 C A B@8 A B@2 D B@4 A B@2 C B@2 D B@4 A D B C B D B F
  B@7 A D B F B D B D B@2 D B D G
>`.pickRestart({
// … 20 more lines

More by Cats