Strudelify

Rote Rosen

BRECK,FREDDY

KeyD minorTempo180 bpm
0:00/0:00
// Rote Rosen — BRECK,FREDDY
// 180 bpm, 3/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 189 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(180/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.

// other · oboe · "M-Gesang"
const oboe = note(`<
  ~@15 A B@2 C@2 D E F@2 G@2 H@2 I J K A B@2 C@2 D E F@2 G@2 H@2 I L M ~@17 N O P@2 N O Q R N ~@22 A B@2 C@2 D E F@2 G@2
  H@2 I J K A B@2 C@2 D E F@2 G@2 H@2 I L M ~@17 N O P@2 N O Q R N ~@36
>`.pickRestart({
  A: "~@5 f4@8 e4@3", B: "[g4@5 f4@15 ~ bb4@8 a4@2 ~]/2", C: "[c5@5 bb4@16 d5@5 ~ c5@5]/2", D: "c5@5 bb4@6 a4@5",
  E: "a4@5 g4@6 f4@5", F: "[eb4@5 c4@16 eb4@8 d4@2 ~]/2", G: "[f4@5 eb4@16 a4@8 ab4@3]/2",
  H: "[bb4@5 a4@16 c5@5 ~ bb4@4 ~]/2", I: "bb4@5 a4@5 ~ g4@5", J: "g4@5 f4@6 eb4@5", K: "d4", L: "f4@5 g4@5 ~ a4@5",
  M: "bb4", N: "d5", O: "e5@5 gb5@5 ~ e5@5", P: "[d5@5 gb5@6 ~@5 a5@5 e5@6 gb5@5, ~@11 b5@7 ~@14]/2",
  Q: "d5@5 gb5@6 b5@5", R: "a5@5 e5@6 gb5@5",
})).s("gm_oboe").gain(0.48)

// chords · string ensemble 1 · "M-String"
const string_ensemble_1 = note(`<
  ~@4 A B C D E@2 F G H@4 ~@30 I J K@2 L M N@2 O P K@2 L O N@2 Q@2 ~@8 R S T U V@2 O W X@2 Y@2 Z@2 AA O AB@2 AC@2 ~@34 I
  J K@2 L M N@2 O P K@2 L O N@2 Q@2 ~@8 R S T U V@2 O W X@2 Y@2 Z@2 AA O AB@2 AC@2 Z@2 AA O AB@2 AD@2 ~@9
>`.pickRestart({
  A: "~@5 [f3,f4,f5,f6]@3 ~@3 [eb3,eb4,eb5,eb6]@3 ~@2", // F Eb
  B: "[d3,d4,d5,d6]@3 ~@2 [c3,c4,c5,c6]@3 ~@3 [bb2,bb3,bb4,bb5]@3 ~@2", // D C Bb
  C: "[a2,a3,a4,a5]@4 ~ [g2,g3,g4,g5]@4 ~@2 [f2,f3,f4,f5]@4 ~", // A G F
  D: "[e2,e3,e4,e5]@4 ~ [f2,f3,f4,f5]@3 ~@3 [bb2,bb3,bb4,bb5]@4 ~", E: "[[f3,d4,f5,d6]@29 ~@3]/2",
  F: "[f3,d4,f5,d6]@15 ~", G: "[eb3,c4,eb5,c6]", H: "[[d3,bb3,d5,bb5]@51 ~@13]/4",
  I: "[bb3,d4]@5 [d4,f4]@5 ~ [d4,bb4]@5", J: "[bb4,d5]@5 [d5,f5]@5 ~ [d5,bb5]@5",
  K: "[[f5,a5]@21 [eb5,g5]@5 ~ [d5,f5]@5]/2", L: "[eb5,g5]@11 [eb5,g5]@5", M: "[d5,f5]",
  N: "[[eb5,g5]@21 [d5,f5]@5 ~ [c5,eb5]@5]/2", O: "[d5,f5]@11 [d5,f5]@5", P: "[bb4,d5]", Q: "[[bb4,d5]@3 ~]/2",
  R: "d3@5 db3@6 d3@2 ~@3", S: "[d3,d4]@5 [db3,db4]@6 [d3,d4]@3 ~@2",
  T: "[d3,e3]@5 [db4,db5]@4 ~@2 [d3,d5]@4 ~, [d4,d5]@4 ~ db3@6 d4@2 ~@3", // Dsus2 Db D
  U: "[d3,d4,d6]@5 [db5,db6,d6]@3 ~@3 [d3,d4,d5,d6]@3 ~@2, d5@3 ~@2 [db3,db4]@5 ~ c6 ~@4", // D Dmaj7 D Db
  V: "[[c5,eb5]@21 [bb4,d5]@5 ~ [a4,c5]@5]/2", W: "[d5,f5]@11 [d5,g5]@5", X: "[[gb5,a5]@21 [d5,g5]@5 ~ [gb5,a5]@5]/2",
  Y: "[g5,bb5]/2", Z: "[[g5,bb5]@21 [f5,a5]@5 ~ [eb5,g5]@5]/2", AA: "[f5,a5]@11 [eb5,g5]@5",
  AB: "[[g5,eb6]@21 [f5,d6]@5 ~ [eb5,c6]@5]/2", AC: "[[d5,bb5]@21 ~@11]/2", AD: "[[d5,bb5]@29 ~@3]/2",
})).s("gm_string_ensemble_1").gain(0.52)

// bass · acoustic bass · "M-Bass"
const bass = note(`<
  A@2 B C D@4 E@2 F G H@2 B I J K L M J B N O N O P Q R S L T J K L M J B N O N O P Q R S L T U V W X U Y Z X AA AB Z X
  AC AB AD AE AF AG AH AG AF AI AH AG AJ AK@2 AF AL AM Z W AF AH AN AO AP AQ AR Z AS AM J@2 H@2 B I J K L M J B N O N O
  P Q R S L T J K L M J B N O N O P Q R S L T U V W X U Y Z X AA AB Z X AC AB AD AE AF AG AH AG AF AI AH AG AJ AK@2 AF
  AL AM Z W AF AH AN AO AP AQ AR Z AS AM J@2 AP AQ AR Z AS AM AT@6 AU@5
>`.pickRestart({
  A: "[bb1@15 ~]/2", B: "bb1", C: "f1", D: "[bb1@63 ~]/4", E: "[bb1@31 ~]/2", F: "f2@15 ~", G: "f2",
  H: "[bb1@26 ~ f2@5]/2", I: "f2@8 ~@3 f2@5", J: "bb1@9 ~@2 bb1@3 ~@2", K: "bb1@13 ~@3", L: "bb1@8 ~@3 bb1@3 ~@2",
  M: "bb1@3 ~", N: "f1@10 ~ f1@4 ~", O: "f1@7 ~", P: "f1@10 ~ f1@3 ~@2", Q: "f1@15 ~", R: "f1@13 ~@3",
  S: "~@5 g1@6 a1@5, f1@7 ~@9", T: "bb1@7 ~", U: "f1@8 ~@3 f1@4 ~", V: "~@5 g1@5 ~ a1@5, f1 ~", W: "bb1@10 ~ bb1@5",
  X: "bb1@5 f1@6 bb1@5", Y: "~@5 g1@5 ~ a1@5, f1@7 ~@9", Z: "bb1@9 ~@2 bb1@5", AA: "f1@9 ~@2 f1@4 ~",
  AB: "f1@5 g1@6 a1@5", AC: "f1@9 ~@2 f1@5", AD: "bb1@9 ~@2 bb1@4 ~", AE: "bb1@10 ~ bb1@4 ~", AF: "d2@9 ~@2 d2@5",
  AG: "a1@9 ~@2 a1@5", AH: "d2@10 ~ d2@5", AI: "a1@10 ~ a1@5", AJ: "d2@15 ~", AK: "d2@7 ~", AL: "f2@8 ~@3 f2@4 ~",
  AM: "f2@9 ~@2 f2@5", AN: "g1@9 ~@2 g1@5", AO: "g1@5 a1@6 bb1@5", AP: "eb2@9 ~@2 eb2@4 ~", AQ: "eb2@10 ~ eb2@5",
  AR: "f2@10 ~ f2@5", AS: "f2@9 ~@2 f2@4 ~", AT: "[bb1@27 ~@5 bb1@27 ~@5 bb1@27 f1@5, ~@27 f1@7 ~@25 f1@7 ~@30]/6",
  AU: "[bb1@58 ~@6 bb1@5 ~@11, ~@59 f1@7 ~@14]/5",
})).s("gm_acoustic_bass").gain(0.56)

// chords · french horn · "M-Horn"
const french_horn = note(`<
  A@2 B C D@4 E@2 F G H@4 ~@32 I J K L M J N L O J N P Q J R@2 ~@8 S@2 T@2 U V W X Y Z AA AB AC AD AE AF U AG AH@2 H@4
  ~@32 I J K L M J N L O J N P Q J R@2 ~@8 S@2 T@2 U V W X Y Z AA AB AC AD AE AF U AG AH@2 AC AD AE AF U AG AI AJ AK X
  AL P AL P@2 L AM
>`.pickRestart({
  A: "[[bb3,d4]@23 ~@4 [bb3,d4]@2 d4@2 ~, ~@29 bb3 ~@2]/2", B: "[bb3,d4]@8 ~@3 [d4,f4] ~ d4@2 ~, ~@13 f4 ~@2",
  C: "[d4,f4]@9 ~@2 [d4,bb4]@2 [d4,bb4]@2 ~", D: "[[d4,bb4]@31 ~]/4", E: "[[f4,d5]@29 ~@3]/2", F: "[f4,d5]",
  G: "[eb4,c5]", H: "[[d4,bb4]@53 ~@11]/4", I: "a3@2 ~@3 [a3,f4] ~@2 a3@2 ~ [a3,f4]@2 ~@3, f4 ~@7 f4 ~@7",
  J: "[a3,f4]@2 ~@3 [a3,f4]@2 ~@4 [a3,f4]@2 ~@3", K: "[d4,f4]@2 ~@3 f4@2 ~ [d4,f4]@2 ~ [d4,f4]@2 ~@3, ~@5 d4 ~@10",
  L: "[d4,f4]@2 ~@3 [d4,f4]@2 ~@4 [d4,f4]@3 ~@2", M: "f4@2 ~@3 a3@2 ~ a3@2 ~ [a3,f4]@2 ~@3, a3 ~@4 f4 ~@2 f4 ~@7",
  N: "[d4,f4]@2 ~@3 f4@2 ~ f4@2 ~ [d4,f4]@2 ~@3, ~@5 d4 ~@2 d4 ~@7", // Dm
  O: "[a3,f4]@2 ~@3 a3@2 ~ [a3,f4] ~@2 [a3,f4]@2 ~@3, ~@5 f4 ~@10", P: "[d4,f4]@2 ~@3 [d4,f4]@2 ~@4 [d4,f4]@2 ~@3",
  Q: "f4@2 ~@3 [a3,f4] ~@2 a3@2 ~ [a3,f4]@2 ~@3, a3 ~@7 f4 ~@7", R: "[[d4,f4]@7 ~]/2", S: "[d4@23 ~@4 d4 ~ d4 ~@2]/2",
  T: "[d4@25 ~@2 d4 ~ d4@2 ~]/2", U: "[f4,a4]@8 ~@3 [f4,a4] ~ [f4,a4] ~@2",
  V: "[f4,a4] ~@4 f4@2 ~@4 [f4,a4]@2 ~@3, ~@5 a4 ~@10", W: "[d4,bb4]@10 ~ d4@2 bb4@2 ~, ~@11 bb4 ~ d4 ~@2",
  X: "[d4,bb4]@2 ~@3 [d4,bb4]@2 ~@4 [d4,bb4]@2 ~@3", Y: "[gb4,a4]@9 ~@2 [gb4,a4]@2 a4@2 ~, ~@13 gb4 ~@2",
  Z: "gb4@2 ~@3 [gb4,a4]@2 ~@4 [gb4,a4]@2 ~@3, a4 ~@15", AA: "[bb3,g4]", AB: "[bb3,f4]",
  AC: "[eb4,g4]@9 ~@2 [eb4,g4]@2 g4@2 ~, ~@13 eb4 ~@2", AD: "[eb4,g4]@2 ~@3 [eb4,g4]@2 ~@4 [eb4,g4]@2 ~@3",
  AE: "[f4,a4]@9 ~@2 [f4,a4]@2 f4@2 ~, ~@13 a4 ~@2", AF: "bb4@2 ~@3 [d4,bb4]@2 ~@4 [d4,bb4]@2 ~@3, d4 ~@15",
  AG: "a4@2 ~@3 [f4,a4]@2 ~@4 [f4,a4]@2 ~@3, f4 ~@15", AH: "[[d4,bb4]@7 ~]/2",
  AI: "[bb3,d4] ~@4 [bb3,d4] ~@2 d4@2 ~ [bb3,d4]@2 ~@3, ~@8 bb3 ~@7", // Bb
  AJ: "d4@2 ~@3 [bb3,d4]@2 ~@4 bb3@2 ~@3, bb3 ~@10 d4 ~@4", // Bb
  AK: "bb4@2 ~@3 [d4,bb4] ~@2 [d4,bb4]@2 ~ [d4,bb4]@2 ~@3, d4 ~@15", // Gm
  AL: "[d4,f4]@2 ~@3 [d4,f4] ~@2 [d4,f4]@2 ~ [d4,f4]@2 ~@3", AM: "[d4,f4]@3 ~@13",
})).s("gm_french_horn").gain(0.5)

// other · string ensemble 2 · "M-SlowSt"
const string_ensemble_2 = note(`<
  ~@32 A@4 B C D@2 E@4 F@2 G@2 H@2 I@2 H@2 I@2 H@2 J@4 K@2 C L C L C L C L M@4 N@4 O@3 P Q@2 P B R@2 B C ~@20 A@4 B C
  D@2 E@4 F@2 G@2 H@2 I@2 H@2 I@2 H@2 J@4 K@2 C L C L C L C L M@4 N@4 O@3 P Q@2 P B R@2 B C Q@2 P B R@2 S@2 T@2 U@2 V@5
>`.pickRestart({
  A: "bb3/4", B: "bb3", C: "d4", D: "f3/2", E: "f3/4", F: "[f3@21 g3@5 ~ a3@5]/2", G: "bb3/2", H: "[a5,c6]/2",
  I: "[bb5,d6]/2", J: "[bb5 [a5,c6], d6@31 ~@33]/4", K: "[[bb5,d6]@15 ~]/2", L: "a3", M: "[~ d3, d4]/4",
  N: "[f3 bb3]/4", O: "[d4@2 g4]/3", P: "f4", Q: "eb4/2", R: "a3/2", S: "[d4@21 eb4@6 g4@5]/2",
  T: "[f4@21 bb4@6 eb5@5]/2", U: "[d5@21 eb5@6 g5@5]/2", V: "[f5@67 ~@13]/5",
})).s("gm_string_ensemble_2").gain(0.35)

// chords · synth strings 1 · "M-SynStr"
const synth_strings_1 = note(`<
  A@5 B C D E@3 F G@4 H@6 I@8 J@2 H@6 I@8 J@2 K@2 L@2 M@2 N@2 M@2 L@2 O@2 L@2 P Q P Q P Q P Q R@4 S@2 T@2 U@2 T@2 V@2 W
  X Y@2 Z@2 AA@4 H@6 I@8 J@2 H@6 I@8 J@2 K@2 L@2 M@2 N@2 M@2 L@2 O@2 L@2 P Q P Q P Q P Q R@4 S@2 T@2 U@2 T@2 V@2 W X Y@2
  Z@2 V@2 W X Y@2 AB@8 ~@3
>`.pickRestart({
  A: "[[f3,bb3,d4]@69 [f3,f4]@6 [eb3,eb4]@5]/5", B: "[d3,d4]@5 [c3,c4]@6 [bb2,bb3]@5",
  C: "[a2,a3]@5 g3@5 ~ [f2,f3]@5, ~@5 g2@3 ~@8", D: "[e2,e3]@5 [f2,f3]@6 [bb2,bb3]@5", E: "[[bb3,d4]@2 [a3,c4], f3]/3",
  F: "[f3,a3,c4]", G: "[f3,bb3,d4]/4", H: "[f3,bb3,d4]/6", I: "[f3,a3,c4]/8", J: "[f3,bb3,d4]/2",
  K: "[[a3,c4]@31 ~, f3@27 ~@5]/2", L: "[[f3,bb3,d4]@31 ~]/2", M: "[[f3,a3,c4]@31 ~]/2", N: "[[f3,bb3,d4]@15 ~]/2",
  O: "[[f3,a3,c4]@15 ~]/2", P: "[a3,d4,gb4]", Q: "[a3,db4,e4]", R: "[~@3 [d2,d3], [a3,d4,gb4]]/4", S: "[a3,f4]/2",
  T: "[bb3,d4]/2", U: "[a3,d4]/2", V: "[bb3, g3@15 ~]/2", W: "[f3,a3]", X: "[f3,bb3]", Y: "[f3,a3]/2",
  Z: "[~ d4, [f3,bb3]@31 ~]/2", AA: "[[f3,bb3], d4@3 ~]/4", AB: "[f3,bb3,d4]/8",
})).s("gm_synth_strings_1").gain(0.24)

// other · acoustic guitar steel · "M-RhyGit"
const acoustic_guitar_steel = note(`<
  ~@16 A B C B C D E F E F E F G H I J A B C B C D E F E F E F G H I J K L M N O@2 M N P Q M N P Q M N R S T U V U W U V
  X Y Z AA H I J AB AC AD AE AF AE E I E F I AG ~@4 A B C B C D E F E F E F G H I J A B C B C D E F E F E F G H I J K L
  M N O@2 M N P Q M N P Q M N R S T U V U W U V X Y Z AA H I J AB AC AD AE AF AE E I E F I AG AF AE E I E F B AH B AI AJ
  D AH AK AL B AM
>`.pickRestart({
  A: "d4@5 f4@6 bb4@5", B: "d5@5 bb4@6 f4@5", C: "d4@5 f4@5 ~ bb4@5", D: "d5@5 bb4@5 ~ f4@5", E: "a4@5 f4@6 c4@5",
  F: "f4@5 a4@6 f4@5", G: "c4@5 f4@6 a4@5", H: "f4@5 c4@6 a4@5", I: "bb4@5 f4@6 d4@5", J: "f4@5 bb4@6 f4@5",
  K: "f3@5 a3@6 c4@5", L: "~@5 c4@6 a3@5, f4@7 ~@9", M: "d4@5 bb3@6 f3@5", N: "bb3@5 d4@6 bb3@5",
  O: "[c4@5 f3@6 ~@5 c4@5 f4@6 c4@5, ~@11 a3@7 ~@14]/2", P: "c4@5 a3@6 f3@5", Q: "a3@5 c4@6 f4@5",
  R: "d3@5 gb3@6 a3@4 ~", S: "a3@5 e3@6 db4@5", T: "a3@5 gb3@6 d4@5", U: "db4@5 a3@6 e3@5", V: "d4@5 a3@5 ~ gb3@5",
  W: "d4@5 a3@6 gb3@5", X: "a3@5 d4@6 a3@5", Y: "gb3@5 d3@5 ~ gb3@5", Z: "a3@5 d4@5 ~ a3@4 ~", AA: "c4@5 f4@5 ~ a4@5",
  AB: "a4@5 gb4@5 ~ d4@5", AC: "gb4@5 a4@6 gb4@5", AD: "bb4@5 g4@6 d4@5", AE: "g4@5 bb4@6 g4@5", AF: "bb4@5 g4@6 eb4@5",
  AG: "f4@5 bb4@5 ~ f4@5", AH: "bb4@5 d5@6 bb4@5", AI: "bb4@5 f4@6 d5@5", AJ: "bb4@5 f4@5 ~ bb4@5",
  AK: "f4@5 bb4@5 ~ d5@5", AL: "bb4@5 f4@6 bb4@5", AM: "bb4@3 ~@5",
})).s("gm_acoustic_guitar_steel").gain(0.43)

// drums · kick
const kick = s("bd").struct(`<
  A ~ A@2 B@4 A ~ A B A@4 C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A
  C@2 A@11 C@2 A C A C A C@3 A C A C A C@2 A@4 C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C A C
  A C A C A C A C A C@2 A@11 C@2 A C A C A C@3 A C A C A C@3 A C A C A@2 D A D A D A D A D A
>`.pickRestart({
  A: "x", B: "x ~@4 x ~@5 x ~@4", C: "x ~@10 x ~@4", D: "~@11 x ~@4",
})).gain(0.35)

// drums · snare
const snare = s("sd").struct(`<
  A@4 B@4 C ~@4 C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C A B ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ D ~
  C ~ C ~ C ~ C ~ C D B ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ D ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ C
  ~ C A B ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ D ~ C ~ C ~ C ~ C ~ C D B ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ D ~ C ~ C ~ C ~ C ~ C ~
  C ~ C ~ E C
>`.pickRestart({
  A: "x ~@4 x ~@2 x ~@2 x ~@4", B: "x ~@4 x ~@5 x ~@4", C: "x", D: "x ~@10 x ~@4", E: "~@11 x ~@4",
})).gain(0.35)

// drums · low tom
const low_tom = s("lt").struct("<~@11 A ~@63 A ~@79 A ~@15 B ~@17>".pickRestart({
  A: "~@11 x ~@4", B: "~@5 x ~@2",
})).gain(0.4)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@75 [~@5 x ~@10] ~@79 [~@5 x ~@10] ~@15 [~@5 x ~@10] ~@17>").gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@188 x>").gain(0.35)

// drums · high tom
const high_tom = s("ht").struct("<~@11 A ~@63 B ~@79 B ~@14 C B ~@17>".pickRestart({
  A: "~@5 x ~@10", B: "x", C: "x ~@4 x ~ x ~@2 x ~@2 x ~@2",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct("<A ~@3 A ~@3 A ~ A@3 ~@49 A ~@12 A ~@16 A ~@49 A ~@12 A ~@33>".pickRestart({
  A: "x",
})).gain(0.4)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@16 A ~@15 A ~@63 A ~@15 A ~@76>".pickRestart({
  A: "x",
})).gain(0.25)

// drums · ride
const ride = s("rd").struct("<~@46 x [x ~@4 x ~@5 x ~@4] ~@78 x [x ~@4 x ~@5 x ~@4] ~@61>").gain(0.4)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@49 A ~ B ~ B ~ B ~ B ~ B ~ B ~@14 C ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~@38 A ~ B ~ B ~ B ~ B ~ B ~ B ~@14 C ~ C ~ C ~ C ~
  C ~ C ~ C ~ C ~ C ~ C ~ C ~@2 D E D E D E ~@2 D E
>`.pickRestart({
  A: "x ~@2 x ~ x ~@10", B: "~@5 x ~@2 x ~@2 x ~@4", C: "x ~@4 x ~@2 x ~@2 x ~@4", D: "~@11 x ~@4", E: "x",
})).gain(1.51)

stack(
// … 3 more lines