Strudelify

Sehnsucht (Das Lied der Taiga)

Alexandra

KeyD minorTempo110 bpm
0:00/0:00
// Sehnsucht (Das Lied der Taiga) — Alexandra
// 110 bpm, 4/4, key D minor. 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 80 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(110/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 · string ensemble 2
const string_ensemble_2 = note(`<
  A@3 B@3 C@3 D@3 C@3 E@3 F@3 G@3 F@3 H@2 I J@3 K@3 L@3 K@3 M@3 N@3 O@3 P@3 Q@3 P@3 R@3 S@3 T@3 S@3 U@8
>`.pickRestart({
  A: "[~ [e5,e6] [a3,e4,c5,e6] [g3,d4,b4,g6]]/3", B: "[[f3,c4,a4,c6] [e3,b3,ab4,e6] [a2,db4,a4,e6]@2]/3",
  C: "[db5@4 a4@2 e4@4 a4@2 b4@3 db5 d5 b4 db5@4 e5@2, [a3,e4] [a3,db4] [ab3,e4] [a3,e4]]/3", // A5 A Dbm A5
  D: "[[a3,e4,a4]@6 ~@4 a4@2 b4@3 db5 d5 b4 [a3,db4,a4]@6, db5@2 ~ [a3,db4,e4]@3 [e3,b3,ab4]@3 ~@3]/3", // A5 A E
  E: "[[a3,e4,a4]@6 ~@4 a4@2 b4@3 db5 d5 b4 ~@2 a5@2 [db3,f4,ab4,ab5]@2, db5@2 ~ [a3,db4,e4]@3 [e3,b3,ab4]@3 [a3,db4,a4]@2 ~]/3", // A5 Db A E A
  F: "[[gb3,db4,a4,gb5]@6 [gb3,e4,db5,bb5]@6 b5 db6 d6@2 [db3,db4,f5]@2 gb5@3 ab5 [d4,a5]@2, ~@6 b4@3 db4@2 ~, ~@6 [b2,d4]@2 ~ [gb3,a4]@3]/3", // Gbm Gb7 Db D5 Bm Gbm
  G: "[ab5 db6 f5 gb5 f5 db6 a5@2 gb5 ab4 a4 ab4, [db3,db4,f4]!2 [d3,d4,gb4] [db3,db4,f5]]/3", // Db D Db
  H: "[ab5 db6 f5 gb5 f5 db6 [d3,d4,gb4,c6]@2, [db3,db4,f4]@3 [db3,db4,f4]@3 ~@2]/2", // D7 Db
  I: "[db3,db4,f4,db6]@2 gb4@3 ab4 a4@2, ~ [gb3,a3,gb5]@3", // Db Gbm
  J: "[ab4@3 gb4 ab4@2 db5@4 a4@2 e4@4 a4@2 b4@3 db5 d5 b4, [e3,b3,e5] [a3,e4] [a3,db4] [ab3,e4]]/3", // E5 A5 A Dbm
  K: "[db5@4 e5@2 [a3,e4,a4]@6 ~@4 a4@2 b4@3 db5 d5 b4, [a3,e4]@3 db5@2 ~ [a3,db4,e4]@3 [e3,b3,ab4]@3]/3", // A5 A E
  L: "[[a3,db4,a4]@6 db5@4 a4@2 e4@4 a4@2 b4@3 db5 d5 b4, ~ [a3,e4] [a3,db4] [ab3,e4]]/3", // A A5 A Dbm
  M: "[[a3,db4,a4]@3 [a3,f4,c5]@3 d5@2 bb4 f4@2 bb4, ~@2 [bb3,f4] [bb3,d4]]/3", // A F Bb5 Bb
  N: "[c5@3 d5 eb5 c5 d5@4 f5@2 [bb3,f4,bb4]@6 ~@4 bb4@2, [a3,f4]@3 [bb3,f4]@3 d5@2 ~ [bb3,d4,f4]@3]/3", // Bb5 Dm Bb5 Bb
  O: "[c5@3 d5 eb5 c5 ~@2 bb5@2 [d3,gb4,a4,a5]@2 g4@2 g5@2 f5@2 [g3,b3,f4,g5]@6, [f3,c4,a4]@3 [bb3,d4,bb4]@2 ~ [g3,bb3,d4]@3 ~@3]/3", // D G7 F Bb Gm
  P: "[c6 d6 eb6@2 [d3,d4,gb5]@2 g5@3 a5 [eb4,bb5]@2 a5@2 d6@2 gb5@2 g5@2 gb5@2 d6@2, c5@3 d4@2 ~@7, [c3,eb4]@2 ~ [g3,bb4]@3 [d3,d4,gb4]@3 [d3,d4,gb4]@3]/3", // D Eb5 Cm Gm D
  Q: "[bb5@2 g5 a4 bb4 a4 [g3,d4,bb4,g5]@3 [g3,f4,d5,b5]@3, [eb3,eb4,g4] [d3,d4,gb5] ~@2]/3", // Gm G7 Eb D
  R: "[[eb3,eb4,g4,db6]@4 [d3,d4,gb4,d6]@2 g4@3 a4 bb4@2 a4@3 g4 a4@2 d5@4 bb4@2, ~ [g3,bb3,g5] [f3,c4,f5] [bb3,f4]]/3", // Eb7 D Gm F5 Bb5
  S: "[f4@4 bb4@2 c5@3 d5 eb5 c5 d5@4 f5@2 [bb3,f4,bb4]@6, [bb3,d4]@3 [a3,f4]@3 [bb3,f4]@3 d5@2 ~]/3", // Bb5 Bb Dm Bb5
  T: "[~@4 bb4@2 c5@3 d5 eb5 c5 [bb3,d4,bb4]@6 d5@4 bb4@2, [bb3,d4,f4] [f3,c4,a4] ~ [bb3,f4]]/3", // Bb F Bb5
  U: "[~@16 bb4@8 c5@12 d5@4 eb5@4 c5@4 [bb3,d4,bb4]@25 [g3,e4,c5]@26 [a3,f4,c5]@28 [g2,b3,g4,d5]@98 ~@31, [bb3,d4,f4]@3 [f3,c4,a4]@3 ~@26]/8", // Bb C F G Bb F
})).s("gm_string_ensemble_2").gain(0.34)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A B C D E F G H F I H F G H F I J K L M@2 N O K L P@2 Q R S T U V T W V T U V T W X Y Z AA AB Z AC AD AE@2 AF AG AH
  AI AE@2 AF AJ AK AL@2 AM AN AO AP AN AO AM AN AO AM AN AQ@3 AR@3
>`.pickRestart({
  A: "~@4 [a3,c4,e4]!4", B: "[a3,c4,e4]@2 [b3,d4,g4]!4 [b3,d4,g4]@2", C: "[a3,c4,f4]!4 [a3,c4,f4]@2 [ab3,b3,e4]!2",
  D: "[ab3,b3,e4]@2 [ab3,b3,e4]@2 [ab3,b3,e4]@4 [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [db4,db5] [db4,e4,db5,e5], ~@7 a3", // E A Db Dbm
  E: "[a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [db4,db5] [db4,e4,db5,e5] [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2, ~@5 a3 ~@2", // A Db Dbm A
  F: "[a3,db4,e4,a4] [a3,db4,e4,db5,e5]!7", // A
  G: "[a3,db4,e4,db5,e5]@2 [db4,db5] [db4,e4,db5,e5] [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [ab3,b3,e4,ab4]@2 [ab3,b3,e4,b4,e5]@2 [ab3,b3,e4,b4,e5]@2 [ab3,b3,e4,b4,e5]@2, ~ a3 ~@6", // A Db Dbm A E
  H: "[ab3,b3,e4,b4,e5]@2 [ab3,b3,e4,b4,e5]@2 [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [db4,db5] [db4,e4,db5,e5] [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2, ~@5 a3 ~@2", // E A Db Dbm A
  I: "[a3,db4,e4,db5,e5]@2 [db4,db5] [db4,e4,db5,e5] [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [ab3,b3,e4,gb4]@2 [ab3,b3,e4,b4,e5]@2 [ab3,b3,e4,b4,e5]@2 [ab3,b3,e4,b4,e5]@2, ~ a3 ~@6", // A Db Dbm A E
  J: "[ab3,b3,e4,b4,e5]@2 [ab3,b3,e4,b4,e5]@2 [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [db4,db5] [db4,e4,db5,e5] [ab3,db4,f4,db5,f5]@2 [ab3,db4,f4,db5,f5]@2, ~@5 a3 ~@2", // E A Db Dbm Db
  K: "[gb3,a3,db4,a4] [gb3,a3,db4,db5,gb5]!5 [gb3,bb3,e4,bb4] [gb3,bb3,e4,db5,gb5]", // Gbm Gb7
  L: "[gb3,bb3,e4,db5,gb5]!3 [gb3,bb3,db5,gb5] [b3,d4,gb4,b4] [b3,d4,gb4,d5,gb5]!3, ~@3 e4@2 ~@3", // Gb7 Gb Bm
  M: "[[ab3,db4,ab4,db5,f5]!2 [gb3,a3,db4,a4] [gb3,a3,db4,db5,gb5]!3 [gb3,a3,d4,d5,gb5] [gb3,a3,d5,gb5] [db3,f4,ab4] [db3,db4,f4,db5,f5]!5 [db3,db4,f4,ab4] [db3,db4,f4,db5,f5], ~@7 d4@2 ~@7, ~@32 db4 ~@31]/2", // Db Gbm D Db
  N: "[db3,db4,f4,db5,f5]!4 [d3,d4,gb4,a4] [d3,d4,gb4,d5,gb5]!3", // Db D
  O: "[d3,d4,gb4,d5,gb5]!2 [db3,db4,f4,ab4] [db3,db4,f4,db5,f5]!5", // D Db
  P: "[[ab3,db4,ab4,db5,f5]@4 [ab3,db4,ab4,db5,f5]@4 [gb3,a3,db4,a4]@4 [gb3,a3,db4,db5,gb5]@4 [gb3,a3,db4,db5,gb5]@4 [gb3,a3,db4,db5,gb5]@4 [gb3,a3,d4,d5,gb5]@4 [gb3,a3,d5,gb5]@4 [db3,f4,ab4]@4 [db3,db4,f4,db5,f5]@4 [db3,db4,f4,db5,f5]@4 [db3,db4,f4,db5,f5]@4 [db3,db4,f4,db5,f5]@7 ~ [db3,db4,f4,ab4]@4 [db3,db4,f4,db5,f5]@4, ~@7 d4@2 ~@7, ~@32 db4 ~@31]/2", // Db Gbm D Db
  Q: "[db3,db4,f4,db5,f5]@4 [db3,db4,f4,db5,f5]@4 [db3,db4,f4,db5,f5]@7 ~ [d3,d4,gb4,a4]@4 [d3,d4,gb4,d5,gb5]@4 [d3,d4,gb4,d5,gb5]@4 [d3,d4,gb4,d5,gb5]@4", // Db D
  R: "[db3,db4,f4,db5,f5]@7 ~ [gb3,db4,gb4,a4]@4 [gb3,db4,gb4,db5,gb5]@4 [gb3,db4,gb4,db5,gb5]@4 [gb3,db4,gb4,db5,gb5]@4 [gb3,db4,gb4,db5,gb5]@4 [gb3,db4,gb4,db5,gb5]@4", // Db Gbm Gb5
  S: "[e3,b3,e4] [e3,b3,e4,b4,e5]!3 [e3,b3,e4,b4,e5]@2 [a3,db4,e4,a4] [a3,db4,e4,db5,e5], ab4@5 ~@3", // E5 A
  T: "[a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [db4,db5] [db4,e4,db5,e5], ~@7 a3", // A Db Dbm
  U: "[a3,db4,e4,db5,e5]!2 [ab3,b3,e4,ab4] [ab3,b3,e4,b4,e5]!5", // A E
  V: "[a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [db4,db5] [db4,e4,db5,e5] [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [a3,db4,e4,a4]@2 [a3,db4,e4,db5,e5]@2, ~@3 a3 ~@4", // A Db Dbm A
  W: "[a3,db4,e4,db5,e5]!2 [ab3,b3,e4,gb4] [ab3,b3,e4,b4,e5]!5", // A E
  X: "[a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [db4,db5] [db4,e4,db5,e5] [a3,db4,e4,db5,e5]@2 [a3,db4,e4,db5,e5]@2 [a3,c4,f4,c5,f5]@2 [c4,c5] [c4,f4,c5,f5], ~@3 a3 ~@3 a3", // A Db Dbm A F C F5
  Y: "[a3,c4,f4,c5,f5]!4 [bb3,d4,f4,bb4] [bb3,d4,f4,d5,f5]!3", // F Bb
  Z: "[bb3,d4,f4,d5,f5]@2 [bb3,d4,f4,d5,f5]@2 [bb3,d4,f4,d5,f5]@2 [bb3,d4,f4,d5,f5]@2 [bb3,d4,f4,d5,f5]@2 [d4,d5] [d4,f4,d5,f5] [bb3,d4,f4,d5,f5]@2 [bb3,d4,f4,d5,f5]@2, ~@5 bb3 ~@2", // Bb D Dm Bb
  AA: "[a3,c4,f4,a4] [a3,c4,f4,c5,f5]!5 [bb3,d4,f4,d5,f5]!2", // F Bb
  AB: "[bb3,d4,f4,d5,f5]@2 [d4,d5] [d4,f4,d5,f5] [bb3,d4,f4,d5,f5]@2 [bb3,d4,f4,d5,f5]@2 [bb3,d4,f4,bb4]@2 [bb3,d4,f4,d5,f5]@2 [bb3,d4,f4,d5,f5]@2 [bb3,d4,f4,d5,f5]@2, ~ bb3 ~@6", // Bb D Dm Bb
  AC: "[a3,c4,f4,g4] [a3,c4,f4,c5,f5]!5 [bb3,d4,f4,d5,f5]!2", // F Bb
  AD: "[bb3,d4,f4,d5,f5]@2 [d4,d5] [d4,f4,d5,f5] [a3,d4,gb4,d5,gb5]@2 [a3,d4,gb4,d5,gb5]@2 [g3,bb3,d4,bb4]@2 [g3,bb3,d4,d5,g5]@2 [g3,bb3,d4,d5,g5]@2 [g3,bb3,d4,d5,g5]@2, ~ bb3 ~@6", // Bb D Dm D Gm
  AE: "[[g3,bb3,d4,d5,g5]!2 [g3,b3,f4,b4] [g3,b3,f4,d5,g5]!4 [g3,d5,g5] [eb4,g4,c5] [c4,eb4,g4,eb5,g5]!3 [a3,d4,a4,d5,gb5]!2 [g3,bb3,d4,bb4] [g3,bb3,d4,d5,g5], ~@7 [b3,f4]@2 ~@7, ~@32 c4 ~@31]/2", // Gm G7 G5 Cm D Gm Bdim
  AF: "[g3,bb3,d4,d5,g5]!2 [g3,bb3,eb4,eb5,g5] [g3,bb3,eb5,g5] [d3,gb4,a4] [d3,d4,gb4,d5,gb5]!3, ~@3 eb4@2 ~@3, ~@16 d4 ~@15", // Gm Eb D
  AG: "[d3,d4,gb4,d5,gb5]!2 [d3,d4,gb4,a4] [d3,d4,gb4,d5,gb5]!5", // D
  AH: "[eb3,eb4,g4,bb4] [eb3,eb4,g4,eb5,g5]!5 [d3,d4,gb4,a4] [d3,d4,gb4,d5,gb5]", // Eb D
  AI: "[d3,d4,gb4,d5,gb5]!4 [g3,bb3,d4,bb4] [g3,bb3,d4,d5,g5]!3", // D Gm
  AJ: "[d3,d4,gb4,d5,gb5]@7 ~ [d3,d4,gb4,a4]@4 [d3,d4,gb4,d5,gb5]@4 [d3,d4,gb4,d5,gb5]@4 [d3,d4,gb4,d5,gb5]@4 [d3,d4,gb4,d5,gb5]@7 ~", // D
  AK: "[eb3,eb4,g4,bb4]@4 [eb3,eb4,g4,eb5,g5]@4 [eb3,eb4,g4,eb5,g5]@4 [eb3,eb4,g4,eb5,g5]@4 [d3,d4,gb4,d5,gb5]@7 ~ [g3,d4,g4,bb4]@4 [g3,d4,g4,d5,g5]@4", // Eb D Gm G5
  AL: "[[g3,d4,g4,d5,g5]!4 [f3,c4,f4] [f3,c4,f4,c5,f5]!3 [f3,c4,f4,c5,f5]@2 [bb3,d4,f4,bb4] [bb3,d4,f4,d5,f5]!5, ~@4 a4@5 ~@7]/2", // G5 F5 Bb
  AM: "[bb3,d4,f4,d5,f5]@2 [bb3,d4,f4,d5,f5]@2 [bb3,d4,f4,d5,f5]@2 [d4,d5] [d4,f4,d5,f5] [bb3,d4,f4,d5,f5]@2 [bb3,d4,f4,d5,f5]@2 [a3,c4,f4,a4]@2 [a3,c4,f4,c5,f5]@2, ~@3 bb3 ~@4", // Bb D Dm Bb F
  AN: "[a3,c4,f4,c5,f5]@2 [a3,c4,f4,c5,f5]@2 [a3,c4,f4,c5,f5]@2 [a3,c4,f4,c5,f5]@2 [bb3,d4,f4,d5,f5]@2 [bb3,d4,f4,d5,f5]@2 [bb3,d4,f4,d5,f5]@2 [d4,d5] [d4,f4,d5,f5], ~@7 bb3", // F Bb D Dm
  AO: "[bb3,d4,f4,d5,f5]!2 [bb3,d4,f4,bb4] [bb3,d4,f4,d5,f5]!5", // Bb
  AP: "[bb3,d4,f4,d5,f5]@2 [bb3,d4,f4,d5,f5]@2 [bb3,d4,f4,d5,f5]@2 [d4,d5] [d4,f4,d5,f5] [bb3,d4,f4,d5,f5]@2 [bb3,d4,f4,d5,f5]@2 [a3,c4,f4,g4]@2 [a3,c4,f4,c5,f5]@2, ~@3 bb3 ~@4", // Bb D Dm Bb F
  AQ: "[~ [d4,f4,d5,f5]@4 [bb3,d4,f4,d5,f5]@4 [c4,e4,g4]@4 [c4,e4,g4,c5,g5]@4 ~ [c4,e4,g4,c5,g5]@4 [c4,e4,g4,c5,g5]@4 ~ [e4,g4,c5,g5]@4 [c4,e4,g4,c5,g5]@4 ~ [c4,f4]@4 [a3,c4,f4,c5,f5]@4 ~ [c4,f4,c5,f5]@4 [a3,c4,f4,c5,f5]@5 [a3,c4,f4,c5,f5]@5 [a3,c4,f4,c5,f5]@4 ~ [d4,g4]@4 ~ b3@4 ~ [g4,g5]@4 [b3,d4,g4,d5,g5]@5 ~ [d4,g4,d5,g5]@6 [b3,d4,g4,d5,g5]@6, bb3@4 ~@22 c4@5 ~@4 a3@5 ~@4 a3@5 ~@14 b3@5 [d4,g4,d5,g5]@5 [b3,d4,d5]@5 ~@5 b3@6 ~@7]/3", // Dm Bb C F5 F F5 F G5 …
  AR: "[[b3,d4,g4,d5,g5]@65 ~@31]/3", // G
})).s("gm_acoustic_guitar_steel").gain(0.35).pan(0.4)

// other · oboe
const oboe = note(`<
  ~ A B C@4 ~@5 D E@2 F G@2 H@2 I J K L H@2 I J M N O ~@5 P Q@2 R S@2 T@2 U V@2 U W@3 X@2 Y Z AA@2 X@2 Y AB@2 AC ~@5 AD
  AE AF@2 AG AH AI@2 AJ@4
>`.pickRestart({
  A: "~@16 c5@11 ~ d5@4", B: "e5@8 d5 e5 d5@10 c5@4 ~ b4@7",
  C: "[a4@11 ~ b4@4 c5@8 b4 c5 b4@10 a4@4 ~ b4@7 ~ db5@48 ~@31]/4", D: "~@7 gb4 e4@13 ~@10 gb4",
  E: "[e4@15 ~@8 gb4 e4@14 ~@14 a4@4 db5@4 a4@4]/2", F: "e4@7 gb4 e4@11 ~@12 gb4",
  G: "[e4@14 ~@9 gb4 e4@16 ~@8 a5@8 ab5@8]/2", H: "[gb5@6 gb5@6 b5 db6 d6@2]/2", I: "f5@2 gb5@3 ab5 a5@2",
  J: "ab5 db6 f5 gb5", K: "f5 db6 a5@2", L: "gb5@8 f5@7 ~ gb5@8 f5@8", M: "f5 db6 c6@2",
  N: "db6@2 a4@3 b4 db5@2, ~ gb5@3", O: "b4@3 a4 b4@2 ~@2", P: "~@31 gb4",
  Q: "[e4@13 ~@10 gb4 e4@15 ~@8 gb4 e4@14 ~@2]/2", R: "~@7 gb4 e4@14 ~@9 gb4",
  S: "[e4@13 ~@10 gb4 e4@14 ~@9 gb4 e4@16]/2", T: "[db5@3 d5 e5@2 f5@3 g5 a5@2 d5@4]/2", U: "bb4 f4@2 bb4",
  V: "[c5@3 d5 eb5 c5 d5@4 f5@2 d5@4]/2", W: "[c5@6 d5@2 eb5@2 c5@2 bb4@7 ~@5 g5@12 g5@12]/3",
  X: "[c6 d6 eb6@2 gb5@2 g5@3 a5 bb5@2 a5@2 d6@2]/2", Y: "gb5 g5 gb5 d6", Z: "bb5@16 g5@8 gb5@7 ~",
  AA: "[g5 gb5 g5@3 g5@3]/2", AB: "[db6@4 d6@2 bb4@3 c5 d5@2 c5@3 bb4, ~@3 g5@3 ~@2]/2", AC: "c5 ~@3",
  AD: "~@15 g4 f4@13 ~@3", AE: "~@7 g4 f4@15 ~@8 g4", AF: "[f4@14 ~@9 g4 f4@14 ~@9 g4 f4@13 ~@3]/2",
  AG: "~@7 g4 f4@14 ~@9 g4", AH: "f4@4 d5@3 eb5", AI: "[f5@9 g5@13 f5@4 e5@9 ~ a4@13 bb4@5 c5@10]/2",
  AJ: "[d5@49 ~@15]/4",
})).s("gm_oboe").gain(0.36).pan(0.3)

// other · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  ~ A B C D E F G H I G J I G H I G K L M N O P Q L M N O P R S T U V T U W T U V T U X Y Z AA AB Z AC AD AE AF AG AH AI
  AJ AE AF AG AH AK AL AM AN AO AP AN AQ AR AN AO AP AN AS AT AU AV AW AX@2
>`.pickRestart({
  A: "e5!16 a4!12 b4!4, ~@16 e5@9 ~@7", B: "c5!8 b4!12 a4!4 g4!8", C: "f4!12 g4!4 a4!8 ab4!8",
  D: "ab4!4 gb4!4 ab4!8 a4!16", E: "a4!32", F: "db5!16 a4!8 e4!8, a4 ~@3", G: "e4!8 a4!8 b4!12 db5!4",
  H: "d5!4 b4!4 db5!16 e5!8", I: "db5!16 a4!8 e4!8", J: "d5!4 b4!4 a4!24", K: "d5!4 b4!4 a4!16 ab4!8",
  L: "gb4!24 bb4!8", M: "bb4!16 b4!4 db5!4 d5!8", N: "f4!8 gb4!12 ab4!4 a4!8", O: "ab4!8 db5!8 f4!8 gb4!8",
  P: "f4!8 db5!8 a4!16", Q: "gb4!8 f4!8 gb4!8 f4!8", R: "f4!8 a4!12 b4!4 db5!8", S: "e5!22 e5@2 db5!8",
  T: "db5!8 a4!8 e4!16", U: "a4!8 b4!12 db5!4 d5!4 b4!4", V: "db5!16 e5!8 db5!8", W: "a4!24 db5!8",
  X: "db5!12 d5!4 e5!8 a5!8", Y: "a5!14 a5@2 d5!16", Z: "bb4!8 f4!16 bb4!8", AA: "c5!12 d5!4 eb5!4 c5!4 d5!8",
  AB: "d5!8 f5!8 d5!16", AC: "c5!12 d5!4 eb5!4 c5!4 bb4!8", AD: "bb4!8 a4!8 g4!16", AE: "g4!8 b4!24",
  AF: "c5!4 d5!4 eb5!8 gb4!8 g4!8", AG: "g4!4 a4!4 bb4!8 a4!8 d5!8", AH: "gb4!8 g4!8 gb4!8 d5!8",
  AI: "bb4!16 g4!8 gb4!8", AJ: "g4!8 gb4!8 g4!16", AK: "bb4!16 gb4!8 bb4!8", AL: "bb4!4 c5!4 d5!8 f5!16",
  AM: "f5!6 f5@2 d5!16 bb4!8", AN: "f4!16 bb4!8 c5!8", AO: "c5!4 d5!4 eb5!4 c5!4 d5!16", AP: "f5!8 d5!16 bb4!8",
  AQ: "c5!4 d5!4 eb5!4 c5!4 bb4!16", AR: "bb4!8 d5!16 bb4!8", AS: "c5!4 d5!4 eb5!4 c5!4 d5!12 eb5!4",
  AT: "f5!3 ~ f5!5 g5!10 ~ g5!2 f5!4 e5!3 ~ e5!2", AU: "e5!3 a4!2 ~ a4!8 ~ a4!2 bb4!3 ~ bb4 c5!4 ~ c5!4 d5",
  AV: "~ d5!5 ~ d5!4 ~ d5!4 ~ d5!3 ~ d5!2 ~ d5!2 ~ d5 ~ d5!2 ~",
  AW: "d5!2 ~ d5!4 ~ d5!2 ~ d5!3 ~ d5!2 ~ d5!3 ~ d5!3 ~ d5!2 ~ d5!3",
  AX: "[~ d5!2 ~ d5!4 ~ d5!2 ~ d5!3 ~ d5!2 ~ d5!3 ~ d5!3 ~ d5!2 ~ d5 d5@3 ~@30]/2",
})).s("gm_acoustic_guitar_steel").gain(0.2).pan(0.8)

// bass · electric bass pick
const bass = note(`<
  ~ A@2 B@2 C D@2 E D@2 E D@2 E D@2 F G@2 H I@2 J G@2 H I@2 K L@2 M N@2 M N@2 M N@2 M O P Q R@2 Q S@2 T U@2 V W@2 T U@2
  V X@2 Q Y@2 Q Y@2 Q Y@2 Q Y@2 Z AA@2 AB@3
>`.pickRestart({
  A: "[~@2 a2@3 g2@3]/2", B: "[f2@23 ~ e2@24 a2@16]/2", C: "e2 a2@2 e2", D: "[a1@2 e2 a1@2 e2 b1@2]/2", E: "e2 a1@2 e2",
  F: "e2 a1@2 db2", G: "[gb2@2 gb2 gb2@2 bb1 b1@2]/2", H: "f2 gb2@2 d2", I: "[db2@2 db2 db2@2 db2 d2@2]/2",
  J: "d2 db2@2 f2", K: "db2 gb2@3", L: "[e2@2 e2 a1@2 e2 a1@2]/2", M: "e2 b1@2 e2", N: "[a1@2 e2 a1@2 e2 a1@2]/2",
  O: "a1@16 db2@3 ~ e2@3 ~ f2@7 ~", P: "c2@7 ~ f1@7 ~ bb1@16", Q: "f2 bb1@2 f2", R: "[c2@2 f2 bb1@2 f2 bb1@2]/2",
  S: "[c2@2 f2 bb1@2 d2 g2@2]/2", T: "g2 g2@2 b1", U: "[c2@2 gb2 g2@2 eb2 d2@2]/2", V: "d2 d2@2 d2",
  W: "[eb2@2 eb2 d2@2 gb2 g2@2]/2", X: "[eb2@2 d2 g2@3 f2@2]/2", Y: "[bb1@2 f2 c2@2 f2 bb1@2]/2",
  Z: "bb1@8 ~ c2@17 c2@6", AA: "[~@3 f1@18 ~ f1@9 g1@19 ~ d2@5 ~@2 d2@6]/2", AB: "[g2@65 ~@31]/3",
})).s("gm_electric_bass_pick").gain(0.53)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B C A D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F D E F
  D E F D E F D E F D E F D E F G H I J ~@2
>`.pickRestart({
  A: "~ x", B: "~ x ~@2", C: "x ~@2 x", D: "x!2 ~ x", E: "x ~ x!2", F: "~ x!2 ~", G: "x ~@8 x ~@16 x ~@5",
  H: "~@3 x ~@18 x ~@8 x", I: "~@19 x ~@12", J: "x",
})).gain(0.38)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4
  [~@4 x!4]
  [x!8]!69
  [x ~@4 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~@4 x]
  [~@3 x ~@4 x ~@3 x ~@4 x ~@4 x ~@4 x ~@3 x]
  [~@4 x ~@4 x ~@4 x ~@4 x ~@6 x ~@5]
  ~@3
>`).gain(0.19)

// drums · crash
const crash = s("cr").struct("<~@77 x ~@2>").gain(0.25)

stack(string_ensemble_2, acoustic_guitar_steel, oboe, acoustic_guitar_steel_2, bass, kick, hihat, crash)