Strudelify
Boat on the River cover art

1987 · Cornerstone

Boat on the River

Styx

KeyG minorTempo86 bpm
0:00/0:00
// Boat on the River — Styx
// 86 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 69 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): Guitar.
setcpm(86/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 · bandoneon · "Harmonica"
const bandoneon = note(`<
  ~@8 A@2 ~ B ~@6 C D@2 E F D@2 G H I J K L M N O P D@2 Q R ~@7 S I J K L M N O P D@2 T U V@2 T W Q X Y Z AA@2
>`.pickRestart({
  A: "[~@6 eb5@2 d5 ~@7, ~@3 g5@3 ~@2]/2", B: "g5@9 ~@7, d5@5 ~@11", C: "~@9 g4 d5@2 bb4@2 a4@2",
  D: "[g3,bb3,d4,g4,g5]/2", E: "~ [a4,c5], [f3,a3,c4,f4,f5]", F: "[gb4,a4,c5]@6 bb4 a4, [d4,gb5]",
  G: "[f3,a3,c4,f4,f5]", H: "[g3,bb3,d4,g4,g5]", I: "~@4 a4@3 [c4,f4], [f3,a3,c4,f4,f5]@7 ~",
  J: "~@8 c5@4 bb4@2 a4 ~, [a3,d4,gb4], a4@3 ~", K: "d5@6 g5 g4, [d4,bb4], g4@7 ~",
  L: "c5@10 c5 d5 eb5@2 d5 c5, e4, g4@7 ~", M: "[eb4,g4,eb5]", N: "d5@5 g5 d4 d5, [d4,g4]@3 g4",
  O: "[a4,db5]@5 a4 e5 g5, e4", P: "[d5,gb5]@13 ~@3", Q: "[f3,f4,f5] [gb4,c5,gb5], [a3,c4]", R: "[g3,bb3,d4,g4,g5]@7 ~",
  S: "[g3,bb3,d4]", T: "[f3,f4,f5] [f4,c5], [a3,c4], ~@8 f5 ~@7", U: "[bb3,d4,g4,g5]", V: "[g3,bb3,d4,g4,f5]/2",
  W: "[bb3,d4,g4,g5] ~ [g4,bb4,d5] ~ [g4,bb4,d5] c5 bb4 c5 [g4,bb4,d5] ~ [d4,g4,bb4]@2 [d4,g4,bb4]@3 ~", // Gm
  X: "[bb3,d4,g4,g5] ~ [g4,bb4,d5,g5] ~ [g4,bb4,d5,g5] [c5,f5] [bb4,d5] [c5,f5] [g4,bb4,d5,g5] ~ [d4,g4,bb4,d5] ~ [d4,g4,bb4,d5]@2 ~@2", // Gm F5 Bb F5 Gm
  Y: "~@2 [a4,c5,gb5]!2 ~@2 [a4,c5,gb5] ~@3 [a4,c5,gb5]!2 ~@2 [a4,c5,gb5] ~", // Gbdim
  Z: "~ g4 a4 bb4 a4@2 g4@2 ~ d5 g5 d5 bb5@2 g5@2, ~@4 bb4 ~@11",
  AA: "[[a5,bb5] g5@2 bb5 a5 g5 a6 bb6 a6 g6 gb6 a6 g6@16 ~@4, ~ a5 ~@30]/2", // Bbmaj7
})).s("gm_bandoneon").gain(0.26).pan(0.6)

// chords · bandoneon · "Harmonica"
const bandoneon_2 = note("<~@38 A@3 B C A@2 D A ~@20 E@2>".pickRestart({
  A: "~@2 [g4,bb4,d5,g5] ~@3 [g4,bb4,d5,g5] ~@3 [g4,bb4,d5,g5] ~@3 [g4,bb4,d5,g5] ~", // Gm
  B: "~@2 [f4,bb4,c5,f5] ~@3 [f4,bb4,c5,f5] ~@3 [f4,bb4,c5,f5] ~@3 [f4,bb4,c5,f5] ~", // Fsus4
  C: "~@2 [bb4,c5,gb5] ~@3 [bb4,c5,gb5] ~@3 [bb4,c5,gb5] ~@3 [bb4,c5,gb5] ~", // Cm7b5
  D: "~@2 [f4,bb4,c5,f5] ~@3 [f4,bb4,c5,f5] ~@3 [bb4,c5,g5] ~@3 [bb4,c5,g5] ~", E: "[~@3 [g3,bb3,d4,g4]@4 ~]/2",
})).s("gm_bandoneon").gain(0.41).pan(0.6)

// chords · acoustic guitar nylon · "Guitar"
const acoustic_guitar_nylon = note(`<
  ~ A B@2 C D B@2 C E F G H I J G K L M G N I J G K L M O P Q R S T U V G H W X G H I J G K Y E O P Q R S T U V G H Z AA
  G H Z G W X AB X AC@2
>`.pickRestart({
  A: "[g4,bb4]@2 d5 ~@2 d5 ~@3 d5 ~@3 d5 g5 bb5, ~@3 [g5,bb5]@2 ~ g5@2 [g4,bb4]@3 bb5@2 ~@3, ~@4 [g4,bb4]@3 bb5@2 ~ g5@2 [g4,bb4]@3 ~", // Gm
  B: "[~ eb5 ~@3 eb5 ~@3 eb5 ~@3 eb5 ~@3 d5 ~@3 d5 ~@3 d5 ~@3 d5 g5 bb5, [g4,c5]@2 g5@2 [g4,c5]@3 c6@2 ~ g5@2 [g4,c5]@3 c6@2 ~ g5@2 [g4,bb4]@3 bb5@2 ~ g5@2 [g4,bb4]@3 ~, ~@3 c6@2 ~ g5@2 [g4,c5]@3 c6@2 ~ g5@2 [g4,bb4]@3 bb5@2 ~ g5@2 [g4,bb4]@3 bb5@2 ~@3]/2", // C5 Gm C5 Gm
  C: "~@5 db5 ~@7 db5 e5 a5, [e4,a4]@2 e5@2 [e4,a4]@3 a5@2 db5@2 a5@2 ~@3, ~ db5@2 a5@2 ~ e5@2 [e4,a4]@2 e5@2 [e4,a4]@3 ~", // A5
  D: "~ d5 ~@3 d5 ~@3 d5 ~@3 d5 g5 bb5, [g4,bb4]@2 g5@2 [g4,bb4]@3 bb5@2 ~ g5@2 [g4,bb4]@3 ~, ~@3 bb5@2 ~ g5@2 [g4,bb4]@3 bb5@2 ~@3", // Gm
  E: "g4@2 [bb4,d5] [g4,bb4,d5,g5]@2 [g4,bb4] [g4,bb4,d5] [bb4,d5,g5] bb4 a4 [bb4,d5,g5] [g4,bb4,d5,g5]@2 [g4,bb4] [g4,bb4,d5] [bb4,d5,g5], bb4 ~@7 [g4,d5]@3 ~@5", // Bb Gm G5
  F: "bb4 a4 [bb4,d5,g5] [g4,bb4,d5,g5]@2 [g4,bb4] [g4,bb4,d5] [bb4,d5,g5] ~ a4 [bb4,d5,g5] [g4,bb4,d5,g5]@2 [g4,bb4] [g4,bb4,d5,g5]@2, g4@3 ~@5 [g4,bb4,d5]@2 ~@6", // Gm
  G: "g4@2 [bb4,d5] [g4,bb4,d5,g5]@2 [g4,bb4] [g4,bb4,d5] [bb4,d5,g5] bb4 a4 [bb4,d5,g5] ~ a4 [g4,bb4] [g4,bb4,d5] [bb4,d5,g5], bb4 ~@7 [g4,d5]@3 [g4,bb4,d5,g5]@2 ~@3", // Bb Gm G5 Gm
  H: "bb4 a4 [bb4,d5,g5] [g4,bb4,d5,g5]@2 [g4,bb4] [g4,bb4,d5] [bb4,d5,g5] ~ a4 [bb4,d5,g5] bb4!2 ~ [g4,a4,bb4,d5,g5]@2, g4@3 ~@5 [g4,bb4,d5]@2 ~ [g4,d5,g5]@3 ~@2", // Gm G5
  I: "f4@2 [a4,c5] [f4,a4,c5,f5]@2 [f4,a4] [f4,a4,c5] [a4,c5,f5] [f4,c5]@2 [a4,c5,f5] [f4,a4,c5,f5]@2 [f4,a4] [f4,a4,c5] [a4,c5,f5], ~@8 a4 ~@7", // Am F F5 F
  J: "a4@2 [gb4,d5,gb5] [gb4,a4,d5,gb5]@2 [a4,d5] [bb4,d5,gb5] [gb4,d5,gb5] [a4,d5,gb5]@2 [gb4,d5,gb5] ~@2 [a4,d5] [gb4,a4,d5,gb5]@2, d5 ~@7 c5@3 [gb4,a4,d5,gb5]@2 ~@3, ~@6 bb4 ~", // D D5 Bbaug D D5 D
  K: "bb4 a4 [bb4,d5,g5] [g4,bb4,d5,g5]@2 [g4,bb4] [g4,bb4,d5] [bb4,d5,g5] ~ a4 [bb4,d5,g5] bb4 c4 ~ [bb3,g4,bb4,d5,g5]@2, g4@3 ~@5 [g4,bb4,d5]@2 ~ [g4,d5,g5]@3 ~@2", // Gm G5
  L: "~@2 [a4,c5] [f4,a4,c5,f5]@2 [f4,a4] [f4,a4,c5] [a4,c5,f5] [c4,f4,c5]@2 [a4,c5,f5] ~ bb3 [f4,a4] [a3,f4,a4,c5] [a4,c5,f5], [c4,f4]@4 ~@4 a4 ~@2 [f4,a4,c5,f5]@2 ~@3", // Am F F5 F F5 F
  M: "bb4 ~ [bb4,d5] [g4,bb4,d5,g5]@2 [g4,bb4] [g4,bb4,d5] [bb4,d5,g5] bb4 a4 [bb4,d5,g5] [g4,bb4,d5,g5]@2 [g4,bb4] [g4,bb4,d5] [bb4,d5,g5], [g3,g4]@4 ~@4 [g4,d5]@3 ~@5", // Bb Gm G G5
  N: "bb4 a4 [bb4,d5,g5] [g4,bb4,d5,g5]@2 [g4,bb4] [g4,bb4,d5] [bb4,d5,g5] ~ a4 [bb4,d5,g5] bb4 [c4,bb4] ~ [g4,a4,bb4,d5,g5]@2, g4@3 ~@5 [g4,bb4,d5]@2 ~ [g4,d5,g5]@3 bb3 ~", // Gm C7 Gm G5
  O: "f4@2 [a4,c5] [f4,a4,c5,f5]@2 [f4,a4] [f4,a4,c5] [a4,c5,f5] a4 f5 [a4,c5,f5] [f4,a4,c5,f5]@2 [f4,a4,f5] [f4,a4,c5] [a4,c5,f5], a4 ~@7 [f4,c5]@3 ~@5", // Am F F5
  P: "gb4@2 [a4,d5,gb5] [gb4,a4,d5,gb5]@2 [gb4,a4] [gb4,a4,d5] [a4,d5,gb5] [gb4,c5,d5]@2 [c5,d5,gb5] c5 bb4 ~ [gb4,a4,d5,gb5]@2, a4 ~@10 [gb4,d5,gb5]@3 ~@2", // D Gbm D D7 D
  Q: "g4@2 [bb4,d5] [g4,bb4,d5,g5]@2 [g4,bb4] [g4,bb4,d5] [bb4,d5,g5] [g4,d5]@2 [bb4,d5,g5] [g4,bb4,d5,g5]@2 [g4,bb4] [g4,bb4,d5] [bb4,d5,g5], ~@8 bb4 ~@7", // Bb Gm G5 Gm
  R: "e4@2 [g4,c5,e5] [e4,g4,c5,e5]@2 [e4,c5] [g4,c5,e5]!2 [e4,c5,e5]@2 [g4,c5,e5] [e4,g4,c5,e5]@2 [e4,c5] [e4,g4,c5,e5]@2, c5 ~@15", // C
  S: "[c5,eb5,g5,c6] [eb5,g5,c6] [c5,eb5,g5,c6] [eb5,g5,c6] [c5,eb5,g5,c6] [eb5,g5,c6] [c5,eb5,g5,c6] [eb5,g5,c6] [c5,eb5,g5,c6] [eb5,g5,c6] [c5,eb5,g5,c6] [eb5,g5,c6] [c5,eb5,g5,c6] [eb5,g5,c6] [c5,eb5,g5,c6] [eb5,g5,c6]", // Cm
  T: "[bb4,d5,g5,bb5] [d5,g5,bb5] [bb4,d5,g5,bb5] [d5,g5,bb5] [bb4,d5,g5,bb5] [d5,g5,bb5] [bb4,d5,g5,bb5] [d5,g5,bb5] [bb4,d5,g5,bb5] [d5,g5,bb5] [bb4,d5,g5,bb5] [d5,g5,bb5] [bb4,d5,g5,bb5] [d5,g5,bb5] [bb4,d5,g5,bb5] [d5,g5,bb5]", // Gm
  U: "[g4,db5,e5,a5] [db5,e5,a5] [g4,db5,e5,a5] [db5,e5,a5] [g4,db5,e5,a5] [db5,e5,a5] [g4,db5,e5,a5] [db5,e5,a5] [g4,db5,e5,a5] [db5,e5,a5] [g4,db5,e5,a5] [db5,e5,a5] [g4,db5,e5,a5] [db5,e5,a5] [g4,db5,e5,a5]@2", // A7 A A7 A A7 A A7 A …
  V: "[a4,d5,gb5,a5]!2 [bb4,d5,gb5,bb5] [a4,d5,gb5,a5]", // D Bbaug D
  W: "f4@2 [a4,c5] [f4,a4,c5,f5]@2 [f4,a4] [f4,a4,c5] [a4,c5,f5] [c4,d5]@2 [a4,d5,gb5] ~@2 a4 [a3,a4,d5] [a4,d5,gb5], ~@8 [a4,gb5] ~@2 [a4,d5,gb5]@2 ~@3, ~@6 bb3 ~", // Am F Csus2 D D5 D
  X: "[g3,g4]@2 [bb4,d5] [g4,bb4,d5,g5]@2 [g4,bb4] [g4,bb4,d5] [bb4,d5,g5] bb4 a4 [bb4,d5,g5] ~ a4 [g4,bb4] [g4,bb4,d5] [bb4,d5,g5], bb4 ~@7 [g4,d5]@3 [g4,bb4,d5,g5]@2 ~@3", // G Bb Gm G5 Gm
  Y: "~@2 [a4,c5] [f4,a4,c5,f5]@2 [f4,a4] [f4,a4,c5] [a4,c5,f5] [gb4,c5]@2 [a4,c5,gb5] [gb4,a4,c5,gb5]@2 [gb4,a4] [gb4,a4,c5] [a4,c5,gb5], [c4,f4]@4 ~@4 a4 ~@7", // Am F Gbdim Gbm Gbdim F5
  Z: "f4@2 [a4,c5] [f4,a4,c5,f5]@2 [f4,a4] [f4,a4,c5] [a4,c5,f5]!2 ~ [f4,a4,c5,f5] ~ f4 [f4,a4] [a4,c5] [a4,c5,f5], ~@7 f4@3 ~ [a4,c5,f5]@2 ~@3", // Am F Am F
  AA: "gb4@2 [a4,c5] [gb4,a4,c5,gb5]@2 [gb4,a4] [gb4,a4,c5] [a4,c5,gb5] [gb4,c5]@2 [a4,c5,gb5] [gb4,a4,c5,gb5]@2 [gb4,a4] [gb4,a4,c5] [a4,c5,g5], a4 ~@7 a4 ~@7", // Am Gbdim Gbm Gbdim Gbm Gbdim Am7
  AB: "[d4,a4,c5,gb5]@2 [a4,c5] [d4,a4,c5,gb5]@2 [d4,a4] [d4,a4,c5] [a4,c5,gb5] [c4,c5]@2 [a4,c5,gb5] ~@2 a4 [a3,a4,c5] [a4,c5,gb5], ~@8 [a4,gb5] ~@2 [a4,c5,gb5]@2 ~@3, ~@6 bb3 ~", // D7 Am D7 D5 D7 Gbdim C Gbdim …
  AC: "[g4@2 [bb4,d5] [g4,bb4,d5,g5]@2 [g4,bb4] [g4,bb4,d5] [bb4,d5,g5] [g4,bb4,d5]@2 [bb4,d5,g5] ~ [g4,bb4,d5,g5]@16 ~@4, bb4 ~@31]/2", // Bb Gm
})).s("gm_acoustic_guitar_nylon").gain(0.11).pan(0.2)

// other · acoustic guitar nylon · "Guitar"
const acoustic_guitar_nylon_2 = note("<~@38 A B C D E F G H I J ~@21>".pickRestart({
  A: "~@13 gb3 g3 a3", B: "bb3@2 c4 d4@2 g4 ~@2 g4@3 a4@2 bb4 b4 [c5,d5]",
  C: "d5@3 a4@2 bb4 ~ g4 ~ a4 bb4 c5 d5 bb4 a4 bb4", D: "[b4,c5] c5!4 bb4 ~ a4!2 bb4 [f4,a4] f4 ~ f4@2 f4",
  E: "gb4!2 ~ gb4!2 ~ g4 a4!2 ~ a4 bb4 d5 bb4 a4 bb4", F: "bb4!6 c5 ~ d5!4 c5 ~ bb4 ~", G: "d5!6 eb5!2 d5!4 c5@2 bb4@2",
  H: "a4!12 bb4 ~ bb4 ~", I: "~ f5!3 d5 c5 bb4 a4 g4 a4 bb4 c5 d5 bb4 a4 bb4, ab4 ~@7", J: "c5@5 ~@11",
})).s("gm_acoustic_guitar_nylon").gain(0.29)

// chords · acoustic guitar steel · "Guitar"
const acoustic_guitar_steel = note(`<
  ~ A B C D C E C F G ~ G H I J G H I G@2 H I J G H I G K L M N ~@2 O ~ G H P G@2 H I J G H I G K L M N ~@2 O ~ G H Q R
  G H Q G P G S G@2 ~
>`.pickRestart({
  A: "~@2 [bb3,g4] d4@2 [g3,bb3] [bb3,d4] [d4,g4] d4@2 [bb3,d4] [d4,g4]@2 [g3,bb3] [bb3,d4]@2", // Eb Gm Bb G5 Bb G5 Gm Bb
  B: "bb3 ~ [c4,eb4] [eb4,g4]@2 [g3,c4] [c4,eb4] [eb4,g4] eb4@2 [c4,eb4] [eb4,g4]@2 [g3,c4] [c4,eb4]@2", // Cm Eb C5 Cm Eb Cm Eb C5 …
  C: "~@2 [bb3,d4] [d4,g4]@2 [g3,bb3] [bb3,d4] [d4,g4] d4@2 [bb3,d4] [d4,g4]@2 [g3,bb3] [bb3,d4]@2", // Bb G5 Gm Bb G5 Bb G5 Gm …
  D: "~@2 [a3,db4] [db4,e4]@2 [e3,a3] [a3,db4] [db4,e4] db4@2 [a3,db4] [db4,e4]@2 [e3,a3] [a3,db4] [db4,e4]", // A Dbm A5 A Dbm A Dbm A5 …
  E: "bb3 ~ [c4,eb4] [eb4,g4]@2 [g3,c4] [c4,eb4] [eb4,g4] eb4@2 [c4,eb4] [eb4,g4]@2 [g3,c4] [c4,eb4] [eb4,g4]", // Cm Eb C5 Cm Eb Cm Eb C5 …
  F: "~@2 [a3,db4] [db4,e4]@2 [e3,a3] [a3,db4] [db4,e4] db4@2 [a3,db4] [db4,e4]@2 [e3,a3] [a3,db4]@2", G: "~@2 g4 ~@13",
  H: "~@13 [g3,bb3] ~@2", I: "a3 ~ f4 ~@13", J: "~@2 a4 ~@3 [a3,a4] a4 ~@2 a4 ~@5", K: "~@2 f4 ~@13",
  L: "d3@3 ~@2 d3 ~@2 a3@2 a3 a3@2 [d3,a3] ~@2", M: "bb3 ~ g4 ~@13", N: "g3@3 ~@2 g3 ~@2 g3@2 ~@3 g3 ~@2",
  O: "~@3 g3@2 g3 ~@5 g3@2 g3 ~@2", P: "a3 ~ f4 ~@7 c4 c4@2 gb3 [gb3,c4,gb4]@2", Q: "a3 ~ f4 ~@11 [f3,f4]@2",
  R: "~@2 gb4 ~@13", S: "~@2 gb4 ~@3 gb4 ~ d3@2 ~ d3@2 d3 [d3,gb4]@2",
})).s("gm_acoustic_guitar_steel").gain(0.19).pan(0.9)

// other · acoustic guitar nylon · "Guitar"
const acoustic_guitar_nylon_3 = note(`<
  ~@43
  [g5!6 a5 ~ bb5!4 a5 ~ g5 ~]
  [bb5!6 c6!2 bb5!4 a5@2 g5@2]
  [f5!8 gb5!4 g5 ~ g5@2]
  [f5 ~@15]
  ~@22
>`).s("gm_acoustic_guitar_nylon").gain(0.31)

// other · orchestral harp · "Harp"
const orchestral_harp = note("<~@10 A@2 ~@22 B C ~@18 B C ~@13>".pickRestart({
  A: "[~@8 g5@5 ~@3, ~@13 d4@13 ~@6, ~@15 g4@11 ~@6]/2", B: "~@14 [f4,g4] [c4,d4,e4]", C: "[g3,a3,b3] ~@15",
})).s("gm_orchestral_harp").gain(0.18)

// other · viola
const viola = note("<~@51 A B C D E F G H I J K L M N O P ~@2>".pickRestart({
  A: "eb5@2 ~ eb5@3 f5@2 eb5@3 d5@2 c5@3", B: "d5@2 ~ d5@3 eb5@2 d5@4 ~@2 a4 bb4",
  C: "db5@2 ~ db5@3 d5@2 db5@2 ~ db5@2 ~ gb5 ~", D: "gb5@7 ~@9", E: "~@4 d5 ~ d5 d5@4 ~ c5 bb4@3",
  F: "g5@2 ~ g5@3 g5 ~ g5@3 d5@2 ~ f5@2", G: "f5 ~@2 f5@2 ~ f5 ~ f5@4 ~@2 f5!2", H: "gb5@2 ~ gb5@3 a5@4 gb5@5 ~",
  I: "~@2 d5@3 ~ d5 ~ d5@4 c5 bb4@3", J: "g5@2 ~ g5@3 g5@2 g5 ~@2 d5@2 ~ f5@2", K: "f5 ~@2 f5@2 ~ f5 ~ f5@4 eb5 d5@3",
  L: "d5@6 ~@9 d5", M: "f5@2 ~ f5@2 ~ f5 ~ f5@3 f5@3 f5 ~", N: "g5@10 ~@5 d5",
  O: "gb5@2 ~ gb5@3 gb5@2 d5@3 ~ g5@2 g5 ~", P: "g5 ~@15",
})).s("gm_viola").gain(0.22).pan(0.4)

// other · viola
const viola_2 = note("<~ [g2@15 ~]!8 ~@60>").s("gm_viola").gain(0.51)

// bass · contrabass
const bass = note("<~ [g1@15 ~]!8 ~@60>").s("gm_contrabass").gain(0.27)

// bass · electric bass finger · "Bass"
const bass_2 = note(`<
  ~ A@8 B C B C D E B C D C B C D E B C D C D E B F G C B H C@2 I J@2 K L M J K N K O P K Q R K S T J K O U J K V K N K
  W X Y@2
>`.pickRestart({
  A: "g1", B: "g1@7 ~ g1@6 ~@2", C: "g1@3 ~ g1@3 ~", D: "f1@7 ~ f1@6 ~@2", E: "d2@3 ~ d2@3 ~", F: "c2@3 ~ c2@3 ~",
  G: "c2@7 ~ c2@6 ~@2", H: "d2@13 ~@3", I: "f1@7 ~ d2@6 ~@2", J: "g2 ~ d2 ~ g2 ~ d2 ~",
  K: "g2@2 ~@2 d2@2 ~@2 g2@2 ~@2 d2 ~ g2 ~", L: "f2@2 ~@2 c2@2 ~@2 f2@3 ~ c2 ~ f2 ~",
  M: "d2@2 ~@2 a1@2 ~@2 d2 ~ d2 ~ c2 ~ bb1 ~", N: "f2@2 ~@2 c2 ~ f2 ~ d2@3 ~ a1 ~ d2 ~",
  O: "f2@2 ~@2 c2@2 ~@2 f2@2 ~@2 c2@2 f2 ~", P: "d2@2 ~@2 a1@2 ~@2 d2@2 ~@2 a1 ~ d2 ~",
  Q: "c2@2 ~@2 g1@2 ~@2 c2@3 ~ g1@2 ~@2", R: "c2@2 ~@2 g1@2 ~@2 c2@3 ~ g1 ~ c2 ~",
  S: "a1@2 ~@2 e1@2 ~@2 a1@3 ~ e1@2 e1 ~", T: "d2@7 ~", U: "d2@2 ~@2 a1@2 ~@2 d2 ~ c2 ~ bb1 ~ a1 ~",
  V: "f2 ~ c2 ~ f2 ~ c2 ~", W: "d2@2 ~@2 a1@2 ~@2 d2@3 ~ a1 ~ d2 ~", X: "g2@2 ~@2 d2@3 ~ g2@2 ~@2 d2@3 ~",
  Y: "[g2@2 ~@2 d2@3 ~ g2 ~ d2 ~ g2@16 ~@4]/2",
})).s("gm_electric_bass_finger").gain(0.56)

// other · agogo
const agogo = note("<~@8 A B C B ~@10 D B ~@10 C B ~@18 C B ~@11 E ~>".pickRestart({
  A: "~@14 eb8!2", B: "eb8 ~@15", C: "~@11 eb8!5", D: "~@12 eb8!4", E: "~@9 eb8!4 ~@3",
})).s("gm_agogo").gain(0.53)

// other · agogo · soft notes
const agogo_soft = note("<~@8 [~@11 eb8!3 ~@2] ~ [~@8 eb8!3 ~@5] ~@11 [~@8 eb8!4 ~@4] ~@46>").s("gm_agogo").gain(0.08)

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

// drums · rim
const rim = s("rim").struct("<[x!4] ~@68>").gain(0.48)

// drums · crash
const crash = s("cr").struct("<~@35 x ~@19 x ~@11 [~@3 x] ~>").gain(0.32)

// drums · tambourine
const tambourine = s("tb").struct("<~@19 A@15 B C A D A D@15 B C A@12 ~>".pickRestart({
  A: "~ x ~ x", B: "~@15 x", C: "x!2 ~ x", D: "~@3 x ~@3 x",
})).gain(0.48)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@34 [~@13 x!2 ~] ~@19 [~@13 x!2 ~] ~@14>").gain(0.24)

stack(
  bandoneon, bandoneon_2, acoustic_guitar_nylon, acoustic_guitar_nylon_2, acoustic_guitar_steel,
  acoustic_guitar_nylon_3, orchestral_harp, viola, viola_2, bass, bass_2, agogo, agogo_soft, kick, rim, crash,
  tambourine, tambourine_soft
)

More by Styx