Strudelify

The narrow path

Anx

KeyC majorTempo202 bpm
0:00/0:00
// The narrow path — Anx
// 202 bpm, 3/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 166 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(202/3)

// 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 1
const string_ensemble_1 = note(`<
  A B C D E F G H I J K@4 L M ~@5 N O P@2 ~@4 Q R S@2 ~@4 N O T@2 ~@4 Q U S@2 ~@5 V W@2 ~@5 X Y@2 Z AA AB@2 AC O AD@2
  ~@7 AE AF AG AH@2 AI AJ AK@2 B C D E F G H AL ~@21 V W@2 ~@5 X Y@2 Z AA AB@2 AC O AM@2 AF AG AH@2 AI AJ AN@2 Z AA AB@2
  AC O AM@2 AF AG AH@2 AI AO AP@2 ~ AQ@3 AR
>`.pickRestart({
  A: "~@5 e5 ~@5 f5@2 ~@3", B: "g5@5 c6@2 ~@4 c6@2 ~@3", C: "e6@5 c6@6 g5@5", D: "a5@5 c6@2 ~@4 c6@2 ~@3",
  E: "f6@5 c6@5 ~ a5@5", F: "b5@5 d6 ~@5 d6@2 ~@3", G: "g5@5 a5@5 ~ b5@5", H: "c6@2 ~@3 g5 ~@2 f5 ~@2 e5 ~ d5 ~@2",
  I: "c5@2 ~@9 e6@5", J: "e6@10 ~ e6@5", K: "[f6@10 ~ e6@10 d6@20 ~@2 d6@11 ~@5 d6@5]/4", L: "e6@10 ~ d6@5",
  M: "d6@5 c6@11", N: "[c6,e6]@5 [b5,d6]@5 ~ [a5,c6]@5", O: "[g5,b5]@11 [f5,a5]@5", P: "[[e5,g5]@5 [d5,f5]@22 ~@5]/2",
  Q: "[b5,d6]@5 [a5,c6]@5 ~ [g5,b5]@5", R: "[f5,a5]@10 ~ [e5,g5]@5", S: "[[d5,f5]@5 [c5,e5]@21 ~@6]/2",
  T: "[[e5,g5]@5 [d5,f5]@21 ~@6]/2", U: "[f5,a5]@11 [e5,g5]@5", V: "[f4,f5]@11 [e4,e5]@5",
  W: "[[e4,e5]@5 [d4,d5]@21 ~@6]/2", X: "[e4,e5]@11 [d4,d5]@5", Y: "[[d4,d5]@5 [c4,c5]@21 ~ [c5,e5]@5]/2",
  Z: "[c5,e5]@11 [c5,e5]@5", AA: "[d5,f5]@11 [e5,g5]@5", AB: "[[f5,a5]@5 [f5,a5]@21 ~ [f5,a5]@5]/2",
  AC: "[g5,b5]@11 [g5,b5]@5", AD: "[[f5,a5]@5 [e5,g5]@21 ~@6]/2", AE: "~@11 [g5,e6]@5", AF: "[g5,e6]@11 [g5,e6]@5",
  AG: "[a5,f6]@11 [g5,e6]@5", AH: "[[g5,e6]@5 [f5,d6]@21 ~ [f5,d6]@5]/2", AI: "[f5,d6]@11 [f5,d6]@5",
  AJ: "[g5,e6]@11 [f5,d6]@5", AK: "[[f5,d6]@5 [e5,c6]@16 e5 ~@5 f5@2 ~@3]/2", AL: "c5 ~@7",
  AM: "[[f5,a5]@5 [e5,g5]@21 ~ [g5,e6]@5]/2", AN: "[[f5,d6]@5 [e5,c6]@16 ~@6 [c5,e5]@5]/2", AO: "[g5,e6]",
  AP: "[f5,d6]", AQ: "[c6@35 ~@8 g5@3 ~@2]/3", AR: "c6@3 ~@13",
})).s("gm_string_ensemble_1").gain(0.36)

// bass · acoustic bass
const bass = note(`<
  ~ A B C D E F G H@2 I J K L M N O@2 E P Q O R S T U V W X Y Z AA AB AC E P AD O R S AE U V AF X U AG AH AB O C N@2 AI
  V AJ AK AL E AM AN AO H E N AP AQ AR AS AT AU H AB O AV J AW AL E AX AY H AV J AW AL E N AZ A B C D E F G H@2 U P AD
  AZ BA S AE U V AF X U AG AH AB O C N@2 AI V AJ AK AL E AM AN AO H E N AP AQ AR AS AT AU H AB O AV J AW AL E AX AY AP
  AQ AR AS AT AU H AB O AV J AW L BB BC BD BE M AB BF H
>`.pickRestart({
  A: "c3@3 ~@5", B: "c2@4 ~ d2@4 ~@2 e2@4 ~", C: "f2@5 ~@11", D: "c3@4 ~ b2@4 ~@2 a2@3 ~@2", E: "g2@5 ~@11",
  F: "g2@4 ~ a2@3 ~@3 b2@4 ~", G: "c3@3 ~@2 g2@3 ~@3 e2@4 ~", H: "c2 ~@3", I: "a2@3 ~@5",
  J: "d2@3 ~@2 a2@3 ~@3 g2@3 ~@2", K: "f2@3 ~@2 f2@4 ~@2 e2@3 ~@2", L: "d2@3 ~@5", M: "g2@3 ~@5",
  N: "c2@3 ~@2 e2@3 ~@3 g2@3 ~@2", O: "c3 ~@3", P: "c3@3 ~@2 b2@3 ~@3 a2@3 ~@2", Q: "g2@4 ~ e2@4 ~@2 g2@3 ~@2",
  R: "g2@5 ~@6 a2@3 ~@2", S: "d2@3 ~@2 f2@3 ~@3 e2@3 ~@2", T: "d2@4 ~ e2@3 ~@3 f2@3 ~@2", U: "g2 ~@3", V: "d2@5 ~@11",
  W: "g2@4 ~ f2@3 ~@3 e2@4 ~", X: "d2@4 ~ b1@4 ~@2 d2@3 ~@2", Y: "g2@3 ~@13", Z: "d2@4 ~@7 g2@4 ~",
  AA: "c2@4 ~ e2@3 ~@3 f2@4 ~", AB: "g2@3 ~@2 a2@3 ~@3 b2@3 ~@2", AC: "c3@5 ~@11", AD: "g2@3 ~@2 e2@3 ~@3 g2@3 ~@2",
  AE: "d2@3 ~@2 e2@3 ~@3 f2@3 ~@2", AF: "g2@3 ~@2 f2@3 ~@3 e2@3 ~@2", AG: "d2@5 ~@6 g2@4 ~",
  AH: "c2@4 ~ e2@4 ~@2 f2@3 ~@2", AI: "f2@3 ~@2 a2@3 ~@3 f2@3 ~@2", AJ: "a2 ~@3", AK: "d2@3 ~@2 f2@3 ~@3 a2@3 ~@2",
  AL: "d2 ~@3", AM: "d2@3 ~@2 g2@4 ~@2 b2@3 ~@2", AN: "g2@4 ~ b1@4 ~@2 d2@3 ~@2", AO: "e2@3 ~@2 g2@3 ~@3 e2@3 ~@2",
  AP: "c2@5 ~@6 c2@3 ~@2", AQ: "e2@6 ~@5 e2@3 ~@2", AR: "f2 ~@3", AS: "a2@3 ~@2 c3@3 ~@3 f2@3 ~@2",
  AT: "g2@4 ~@7 g2@3 ~@2", AU: "g2@4 ~@7 d2@3 ~@2", AV: "a2@5 ~@11", AW: "f2@3 ~@2 f2@3 ~@3 e2@3 ~@2",
  AX: "c2@3 ~@2 g2@3 ~@3 g2@3 ~@2", AY: "c2@3 ~@13", AZ: "c3@3 ~@13", BA: "g2@4 ~@7 a2@3 ~@2", BB: "g1@13 ~@3",
  BC: "g1@7 ~", BD: "g2@15 ~", BE: "~@5 e2@3 ~@3 f2@3 ~@2", BF: "c3@4 ~@7 g2@3 ~@2",
})).s("gm_acoustic_bass").gain(0.41)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~ A@2 B@2 C D E F A G H I J K L M A@5 N O P C@6 Q R S A@4 N O T U C@4 V W X S Y A Z AA@5 C@3 A@5 AB AC@2 C@2 A AD AE G
  H AF J K AG AH A G H AI AJ AK AL M A@2 B@2 C D E F S A@4 N O T U C@4 V W X S Y A Z AA@5 C@3 A@5 AB AC@2 C@2 A AD AE G
  H AF J K AG AH A AB AC@2 C@2 A AD AE G H AF J AM@3 AN AO AP AQ M
>`.pickRestart({
  A: "~@5 [c4,e4,g4] ~@5 [c4,e4,g4] ~@4", B: "~@5 [c4,f4,a4] ~@5 [c4,f4,a4] ~@4",
  C: "~@5 [b3,d4,g4] ~@5 [b3,d4,g4] ~@4", D: "g3@5 a3@5 ~ b3@4 ~", E: "c4@2 ~@9 [c4,e4,g4] ~@4", F: "[c4,e4,g4] ~@15",
  G: "~@5 [c#4,g4,a4] ~@5 [c#4,g4,a4] ~@4", H: "d3@4 ~ a3@4 ~@2 g3@4 ~", I: "f3@3 ~@2 f3@4 ~@2 e3@4 ~",
  J: "d3@5 [d4,f4,a4] ~@5 [d4,f4,a4] ~@4", K: "~@5 [b3,d4,f4] ~@5 [b3,d4,f4] ~@4",
  L: "c3@5 [c4,e4,g4]@2 ~@4 [c4,e4,g4] ~@4", M: "[c4,e4,g4] ~@7", N: "~@5 [b3,d4,g4] ~@5 [c#4,e4,a4] ~@4",
  O: "d3@5 f3@4 ~@2 e3@4 ~", P: "d3@4 ~ e3@4 ~@2 f3@4 ~", Q: "c3@5 e3@5 ~ f3@5", R: "g3@5 a3@6 b3@3 ~@2",
  S: "c4@5 [e4,g4] ~@5 [c4,e4,g4] ~@4", T: "d3@4 ~ e3@4 ~@2 f3@3 ~@2", U: "g3@5 [b3,d4,g4] ~@5 [b3,d4,g4] ~@4",
  V: "[a3,d4,f4] ~@10 [b3,d4,g4]@2 ~@3", W: "c3@4 ~ e3@4 ~@2 f3@4 ~", X: "g3@3 ~@2 a3@3 ~@3 b3@3 ~@2",
  Y: "~@5 [c4,f4,a4] ~@5 [c4,f4,a4]@2 ~@3", Z: "~@5 [c4,e4,g4] ~@5 [c#4,e4,a4]@2 ~@3",
  AA: "~@5 [d4,f4,a4] ~@5 [d4,f4,a4] ~@4", AB: "~@5 [d4,f4,a4]@4 ~@2 [c4,e4,g4]@2 ~@3",
  AC: "~@5 [a3,c4,f4] ~@5 [a3,c4,f4] ~@4", AD: "g2@5 a2@5 ~ b2@4 ~", AE: "c3@5 [c4,e4,g4] ~@5 [c4,e4,g4] ~@4",
  AF: "f3@4 ~ f3@4 ~@2 e3@3 ~@2", AG: "[c4,e4,g4] ~@4 g3@3 ~@3 g3@4 ~", AH: "c3@3 ~@13",
  AI: "f3@3 ~@2 f3@4 ~@2 e3@3 ~@2", AJ: "d3@5 [d4,f4,a4]@2 ~@4 [d4,f4,a4] ~@4",
  AK: "~@5 [b3,d4,f4] ~@5 [b3,d4,f4]@2 ~@3", AL: "~@5 [c4,e4,g4] ~@5 [c4,e4,g4]@2 ~@3", AM: "[b3,d4,g4]",
  AN: "~@5 e3@2 ~@4 f3@2 ~@3", AO: "~@5 [c4,e4,g4]@2 ~@4 [c4,e4,g4] ~@4", AP: "g2@4 ~ a2@4 ~@2 b2@5",
  AQ: "c3@3 ~@8 [b3,d4,g4]@2 ~@3", // G
})).s("gm_electric_guitar_clean").gain(0.48)

// chords · flute
const flute = note(`<
  ~@8 A B C D@2 E F G@2 H I J@2 K L M@2 N@2 O@2 P Q R@2 S@4 T U@3 V@4 W X@3 Y Z AA AB@3 ~@2 AC@3 AD AE@2 ~ AF AG AH@3
  AI@2 AJ@2 AK AL@3 AM AN@3 AO AP@3 AQ AR@3 ~@24 Y AS AA AB@3 ~@2 AC@3 AD AE@2 ~ AF AT AH@3 AI@2 AJ@2 AK AL@3 AM AU@3 AV
  AH@3 AI@2 AJ@2 AK AW@3 AX AY AZ@2 BA@4 ~
>`.pickRestart({
  A: "~@10 [e4,g4]@5 ~", B: "~ [e4,g4]@10 [e4,g4]@5", C: "~ [f4,a4]@9 ~ [e4,g4]@4 ~",
  D: "[[e4,g4]@5 ~ [d4,f4]@19 ~@2 [d4,f4]@4 ~]/2", E: "[d4,f4]@9 ~@2 [d4,f4]@5", F: "[e4,g4]@10 ~ [d4,f4]@4 ~",
  G: "[[d4,f4]@5 ~ [c4,e4]@13 ~@13]/2", H: "g4@6 e4@4 g4@5 ~", I: "c5@10 e5@5 ~", J: "[d5@5 c5@24 ~@3]/2",
  K: "e5@6 d5@5 c5@5", L: "~ b4@9 a4@5 ~", M: "[g4@3 f4@11 ~@2]/2", N: "[f4@5 d4@5 f4@5 b4@10 ~ d5@5 ~]/2",
  O: "[c5@5 b4@22 ~@5]/2", P: "d5@5 c5@5 ~ b4@5", Q: "a4@10 g4@5 ~", R: "[f4@3 e4@10 ~@3]/2",
  S: "[g4@5 e4@5 g4@5 c5@11 e5@5 d5@3 ~@3 c5@22 ~@5]/4", T: "e5@5 d5@5 c5@5 ~", U: "[b4@10 a4@5 g4@6 f4@16 ~@11]/3",
  V: "[f4@5 d4@4 ~ f4@5 b4@11 d5@5 c5@6 b4@18 ~@9]/4", W: "d5@4 ~ c5@5 b4@5 ~", X: "[a4@10 g4@5 f4@6 e4@17 ~@10]/3",
  Y: "e4@5 e4@4 ~ e4@4 ~@2", Z: "f4@10 ~ a4@5", AA: "g4@10 e5@5 ~", AB: "[e5@10 f5@5 e5@6 ~ d5@24 ~@2]/3",
  AC: "[f4@5 ~ f4@4 ~ f4@2 ~ g4@12 a4@5 b4@11 d5@4 ~@2]/3", AD: "d5@10 ~ e5@5", AE: "[d5@6 c5@21 ~@5]/2",
  AF: "~@11 e4@5, ~@10 c5@5 ~, ~@11 d4@3 ~@2", AG: "[e4,c5]@9 ~@2 c5@5, ~@10 e4@5 ~",
  AH: "[[f4,d5]@10 [g4,e5]@3 [a4,f5]@7 ~ [a4,f5]@18 ~@3 [a4,f5]@6]/3", // Dm C Dm
  AI: "[[b4,g5]@9 ~@2 [b4,g5]@8 ~@2 [b4,g5]@4 ~@2 [a4,f5]@4 ~]/2", AJ: "[[a4,f5]@4 ~ [g4,e5]@17 ~@5 e5@4 ~]/2",
  AK: "e5@9 ~@2 e5@5", AL: "[f5@10 e5@2 ~ e5@7 ~ d5@19 ~@2 d5@4 ~@2]/3", AM: "d5@9 ~ d5@4 ~@2",
  AN: "[e5@10 ~ d5@3 d5@7 c5@13 ~@8 [e5,g5]@5 ~]/3", AO: "[e5,g5]@10 ~ [e5,g5]@4 ~",
  AP: "[[f5,a5]@10 ~ [e5,g5]@2 ~ [e5,g5]@6 ~ [d5,f5]@19 ~@2 [d5,f5]@4 ~@2]/3", AQ: "[d5,f5]@9 ~ [d5,f5]@5 ~",
  AR: "[[e5,g5]@9 ~@2 [d5,f5]@2 [d5,f5]@6 ~@2 [c5,e5]@14 ~@13]/3", AS: "f4@10 a4@5 ~", AT: "[e4,c5]@9 ~ [e4,c5]@5 ~",
  AU: "[e5@10 ~ d5@3 d5@7 c5@13 ~@8 [e4,c5]@6]/3", AV: "c5@9 ~ [e4,c5]@5 ~",
  AW: "[f5@10 e5@2 ~ e5@7 ~ d5@19 ~@2 [d5,f5]@5 ~]/3", AX: "[d5,f5]@5 [d5,f5]@2 ~", AY: "[e5,g5]@15 ~",
  AZ: "[d5,f5]@15 ~", BA: "[[c5,e5]@49 ~@15]/4",
})).s("gm_flute").gain(0.64)

// other · clarinet
const clarinet = note(`<
  A B C D E F G H I J K L M N O P Q ~@2 R S T ~ U V W X Y Z AA ~ AB AC AD ~ AE S T ~ U V W X Y Z AA ~ AB AC AF@2 AG AH
  AI@2 AJ AK AL AM AN AO AP AQ AR@2 ~@7 AS J K L AT N O P AU J K L AT N O P AV ~@10 AE AW T ~ U AX W X Y AY AA ~ AB AZ
  AF@2 AG AH BA@2 AJ AK AL AM AN AO AP AQ AR@2 ~@7 AS J K L AT N O P Q ~@7 AS BB K L AT N BC BD@2 BE BF BG BH BI
>`.pickRestart({
  A: "~@5 e5@2 ~@3 f5@5 ~", B: "g5 ~@2 e5 ~ g5 ~@2 e5 ~ g5 ~@3 e5 ~", C: "g5@5 e5@2 ~@4 g5@5",
  D: "a5 ~@2 f5 ~ a5 ~@3 f5 ~ a5 ~@2 f5 ~", E: "a5@5 ~ f5 ~@4 a5@5", F: "b5 ~@2 g5 ~ b5 ~@3 g5 ~ b5 ~@2 g5 ~",
  G: "g5@5 a5@5 b5@5 ~", H: "c6 ~@4 g5 ~@2 f5 ~@2 e5 ~ d5 ~@2", I: "c5 ~@4 g5@3", J: "g5@10 ~ g5@5", K: "a5@11 g5@5",
  L: "e5@2 ~ d5 ~ f5 ~ e5 ~@2 d5 ~@2 c5 ~ b4", M: "~@3 a4 ~ b4 ~@2 c5 ~@2 d5@2 e5 ~@2", N: "f5@10 ~ f5@5",
  O: "g5@2 ~ f5 ~ g5@2 ~ f5 ~@2 e5 ~ d5 ~@2", P: "d5@2 ~ c5@2 b4@2 ~ c5@2 ~ e5@2 g5@2 ~", Q: "c6 ~@7",
  R: "d6@2 ~ c6 ~ b5 ~@2 a5 ~@2 g5 ~ f5 ~@2", S: "e5 ~@2 c5 ~ g5@2 ~ f5 ~@2 e5@2 d5 ~@2", T: "c5@9 ~@7",
  U: "d5 ~@2 a4 ~ g5@2 ~ f5 ~@2 e5 ~@2 f5 ~", V: "d5@2 ~ d5 ~ f5@2 ~@2 f5 ~ a5@2 ~ a5 ~", W: "d6 ~@7",
  X: "~@15 [a5,b5]", Y: "c6 ~@2 b5 ~ a5 ~ g5 ~@2 f5 ~@2 e5 ~ d5", Z: "~@2 g5@2 ~ f5@2 ~ e5 ~ d5@2 ~ c5@2 ~",
  AA: "b4 ~@3", AB: "g4@2 ~ e4 ~ c5@2 ~ g4 ~ e5@2 ~ c5 ~@2", AC: "g5@2 ~ a5 ~ g5@2 ~ f5@2 ~ e5@2 ~ d5@2", AD: "c5 ~",
  AE: "~@3 c6 ~ b5 ~@2 a5 ~@2 g5 ~ f5 ~@2", AF: "c5", AG: "e5@11 g5@5", AH: "g5@2 ~ a5 ~ g5 ~@3 e5 ~ c#5 d5 ~ e5 ~",
  AI: "[d5@3 c#5@2 d5@2 ~ e5@2 ~ f5@2 g5@2 f5@12 e5@5]/2", AJ: "e5@2 ~ e5@2 d5@11, ~ f5 ~@6",
  AK: "~@3 e5 ~ f5 ~@2 e5 ~ f5@2 ~@2 e5 ~, d5@11 ~@5", AL: "d5@5 d5@5 d5@5 ~",
  AM: "g5@2 ~ b5 ~ g5 ~@2 d5 ~ b4@2 ~ d5@2 ~", AN: "g5@11 d5@5", AO: "b5@2 ~ a5 ~ g5 ~@2 f5 ~@2 e5@2 ~ d5@2",
  AP: "d5 ~ d5 c5 ~ b4@2 ~ c5@2 d5@2 ~ e5@2 ~, ~ e5@2 ~@13", AQ: "d5@11 e5@5",
  AR: "[d5@2 ~ d5@2 c5@22 ~@5, ~ e5 ~@14]/2", AS: "~@5 g5@3", AT: "~@2 a4 ~@2 b4 ~@2 c5 ~ d5@2 ~ e5 ~@2",
  AU: "c6@2 ~@9 g5@5", AV: "c6 ~@4 e5@2 ~@4 f5@5", AW: "e5 ~@2 c5 ~ g5@2 ~ f5 ~ e5@2 ~ d5 ~@2",
  AX: "d5@2 ~ d5 ~ f5@2 ~ f5 ~@2 a5@2 ~ a5 ~", AY: "~ g5@2 ~@2 f5@2 ~ e5 ~ d5@2 ~ c5@2 ~",
  AZ: "g5@2 ~ a5 ~ g5@2 ~ f5@2 ~ e5@2 d5@2 ~", BA: "[d5@3 c#5@2 d5@2 ~ e5@2 f5@2 g5@2 ~ f5@12 e5@5]/2",
  BB: "g5@10 g5@5 ~", BC: "g5", BD: "f5@15 ~", BE: "~@5 e5@2 ~@3 f5@6", BF: "g5 ~@2 e5 ~ g5 ~@2 e5 ~@2 g5 ~@2 e5 ~",
  BG: "g5@5 a5@5 ~ b5@5", BH: "c6 ~@9 g5@2 ~@4", BI: "c6 ~@15",
})).s("gm_clarinet").gain(0.48).pan(0.3)

// chords · accordion
const accordion = note(`<
  ~@9 A@4 B@2 C@2 ~@32 D E F G H@2 ~@2 I J K L M@3 N O P Q@2 R S T@2 U V W@2 X Y Z AA AB V AC@2 AD Y AE@2 ~@24 D E F G
  H@2 ~@2 I J K L M@3 N O P Q@2 R S T@2 U V W@2 X Y Z AA O P Q@2 R S T@2 U V W@2 X AF@3 ~ AG AH AI AJ
>`.pickRestart({
  A: "[e4@8 a#4@8 [f4,a4]@13 ~@3, g4@33 ~@31]/4", B: "[d4@16 g#4@15 ~, f4]/2", C: "[[e4,g4]@19 ~@13]/2",
  D: "[c4,e4]@4 ~ [c4,e4]@5 ~ [c4,e4]@4 ~", E: "[d4,f4]@10 ~ [f4,a4]@4 ~", F: "[e4,g4]@10 ~ [g4,e5]@5",
  G: "[g4,e5]@9 ~@2 [a4,f5]@5", H: "[[g4,e5]@4 ~ [f4,d5]@27]/2", I: "[d4,f4]@5 [d4,f4]@4 ~@2 [d4,f4]@4 ~",
  J: "[e4,g4]@10 ~ [f4,a4]@5", K: "[g4,b4]@11 [f4,d5]@4 ~", L: "[f4,d5]@10 ~ [g4,e5]@5",
  M: "[[f4,d5]@5 [e4,c5]@29 ~@14]/3", N: "~@11 [c4,e4]@5", O: "[c4,e4]@9 ~@2 [c4,e4]@5", P: "[d4,f4]@10 ~ [e4,g4]@5",
  Q: "[[f4,a4]@5 [f4,a4]@20 ~@2 [f4,a4]@5]/2", R: "[g4,b4]@9 ~@2 [g4,b4]@4 ~", S: "[g4,b4]@10 ~ [f4,a4]@5",
  T: "[[f4,a4]@5 [e4,g4]@19 ~@3 [e4,g4]@4 ~]/2", U: "[e4,g4]@10 ~ [e4,g4]@5", V: "[g4,a#4]@10 ~ [g4,a#4]@5",
  W: "[[f4,a4]@23 ~@4 [f4,a4]@4 ~]/2", X: "[f4,a4]@9 ~@2 [f4,a4]@4 ~", Y: "[f4,g#4]@9 ~@2 [f4,g#4]@5",
  Z: "[e4,g4]@4 ~ [e4,g4]@11", AA: "~@11 [e4,g4]@5", AB: "[e4,g4]@9 ~@2 [e4,g4]@4 ~",
  AC: "[[f4,a4]@5 [f4,a4]@19 ~@3 [f4,a4]@5]/2", AD: "[f4,a4]@10 ~ [f4,a4]@4 ~", AE: "[[e4,g4]@4 ~ [e4,g4]@13 ~@14]/2",
  AF: "[f4,g#4]", AG: "g4 ~@2 e4@2 g4 ~@2 e4 ~@2 g4 ~ e4 ~@2", AH: "g4@5 a4@5 ~ b4@5", AI: "c5@2 ~@9 g4@2 ~@3",
  AJ: "c5 ~@7",
})).s("gm_accordion").gain(0.48)

// drums · kick
const kick = s("bd").struct("<~ A@6 B A@87 B A@65 C A@2 B A>".pickRestart({
  A: "x", B: "x ~@10 x ~@4", C: "~@5 x ~@5 x ~@4",
})).gain(0.3)

// drums · clap
const clap = s("cp").struct(`<
  A B@6 C D B@7 D B@15 E B@14 E B@16 E B@7 E B@7 D B@7 ~ B@6 C D B@15 E B@15 E B@15 D B@13 ~@3 A B@2 C D
>`.pickRestart({
  A: "~@15 x", B: "~@5 x ~@5 x ~@4", C: "x ~@10 x ~@4", D: "x", E: "x ~@4 x ~@5 x ~@3 x",
})).gain(0.3)

// drums · clap · soft notes
const clap_soft = s("cp").struct(`<
  A ~@7 B ~@6 C B ~@15 D ~@14 D C ~@15 D ~@7 E ~@6 C B ~@3 C ~@2 C ~@8 B ~@15 E ~@15 E ~@7 C ~@6 C B ~@7 C ~@8 A ~ C ~@2
>`.pickRestart({
  A: "~@13 x!2 ~", B: "~@13 x!3", C: "x", D: "~@4 x ~@8 x!2 ~", E: "~@3 x ~@9 x!2 ~",
})).gain(0.2)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@6 B C A@7 C A@63 C A@7 ~ A@6 B C A@15 D A@15 D A@3 E A@11 C A@13 ~@4 A@2 B F
>`.pickRestart({
  A: "x ~@4 x ~@5 x ~@4", B: "~@3 x ~@9 x ~@2", C: "~@3 x ~@12", D: "x ~@4 x ~@10", E: "x ~@2 x ~ x ~@5 x ~@4",
  F: "~@3 x ~@4",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct("<A ~@6 B A ~@7 A ~@63 A ~@14 B A ~@15 C ~@15 C ~@15 A ~@13 A@4 ~@2 B A>".pickRestart({
  A: "x", B: "x ~@10 x ~@4", C: "~@11 x ~@4",
})).gain(0.25)

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

stack(
  string_ensemble_1, bass, electric_guitar_clean, flute, clarinet, accordion, kick, clap, clap_soft, hihat, open_hat,
  crash
)