Strudelify

L'immensita

Don Backy

KeyC♯ minorTempo99 bpm
0:00/0:00
// L'immensita — Don Backy
// 99 bpm, 12/8, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (12/8 at bar 1, 15/8 at bar 53, 12/8 at bar 55) are rendered on a constant 12/8 grid of one bar per cycle
// note: Full arrangement: all 56 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(99/6)

// 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.

// bass · orchestral harp
const bass = note(`<
  ~@2 A B A B A B C D E@2 F G H I J K L M N O@2 P@2 O@2 P@2 Q R N O@2 P S O@2 P@2 Q R T O@2 P@2 O@2 P@2 Q U@2 V W
>`.pickRestart({
  A: "c#2@20 g#1@3 ~ b1@8 g#1@3 ~ b1@12", B: "a#1@19 ~ f#1@4 a1@8 f#1@3 ~ a1@11 ~",
  C: "c#2@20 g#1@3 ~ c#2@8 g#1@3 ~ c#2@12", D: "a2@19 ~ a2@4 g#2@8 g#2@3 ~ c#2@12",
  E: "f#2@20 c#2@4 f#2@8 c#2@3 ~ f#2@12", F: "c#2@19 ~ g#1@3 ~ c#2@8 g#2@4 c#2@11 ~",
  G: "c#2@19 ~ g#2@4 c#2@8 g#2@3 ~ c#2@11 ~", H: "f#2@15 ~ f#2@4 e2@4 f#2@16 e2@3 ~ f#2@4",
  I: "d#2@15 ~ d#2@4 a1@4 d#2@14 ~@2 d#2@4 e2@4", J: "c#2@14 ~@2 c#2@3 ~ b1@4 c#2@15 ~ e2@3 ~ e2@4",
  K: "c#2@14 ~@2 c#2@4 b1@4 c#2@12 e2@11 ~", L: "f#2@16 e2@4 f#2@4 d#2@15 ~ d#2@2 ~@2 d#2@4",
  M: "g#2@3 ~@21 g#1@20 ~@4", N: "c#2@4 ~@4 g#1@3 ~ c#2@3 ~@5 g#1@2 ~@2 c#2@3 ~@5 g#1@3 ~ c#2@4 g#1@3 ~ c#2@3 ~",
  O: "f#2 ~@3 c#2 ~ f#2 ~@3 c#2 ~ f#2 ~@3 c#2 ~ f#2 ~ c#2 ~ f#2 ~",
  P: "c#2 ~@3 g#2 ~ c#2 ~@3 g#2 ~ c#2 ~@3 g#2 ~ c#2 ~ g#2 ~ g#2 ~",
  Q: "f#2 ~@3 f#2@2 c#2@2 e2@2 f#2@2 d#2 ~@3 d#2@2 a1@2 a1@2 a1@2", R: "g#1 ~@11 g#1@10 ~@2", S: "c#2 ~@23",
  T: "c#2@4 ~@4 g#1@2 ~@2 c#2@3 ~@5 g#1@2 ~@2 c#2@3 ~@5 g#1@3 ~ c#2@4 g#1@3 ~ c#2@3 ~",
  U: "[g#1@2 ~@22 g#1@36 c#2@20 g#1@3 ~ b1@8 g#1@3 ~]/2", V: "b1@12 a#1@20 ~ f#1@4 a1@8 f#1@3",
  W: "~ a1@11 ~ c#2@21 ~@14",
})).s("gm_electric_bass_finger").gain(0.15)

// chords · bandoneon
const bandoneon = note("<~@2 A@8 B@6 C@4 ~ D@6 E@4 ~ F@4 G@6 ~ D@6 E@4 H@3>".pickRestart({
  A: "[~@12 e5@14 ~@10 c#5@20 ~@4 c#5@21 ~@3 c#5@14 ~@10 e5@14 ~@10 c#5@20 ~@4 c#5@21 ~@3 c#5@14 ~@10 c#5@14 ~@10 c#5@20 ~@4 c#5@21 ~@3 c#5@14 ~@10 c#5@14 ~@10 c#5@20 ~@4 c#5@21 ~@3 c#5@12, ~@10 g#4@23 ~ e4@22 ~@2 f#4@22 ~@2 f#4@17 ~@8 c#5@23 ~ g#4@22 ~ f#4@22 ~@2 f#4@17 ~@7 e4@23 ~ e4@22 ~@2 f#4@22 ~@2 f#4@17 ~@7 e4@23 ~ e4@22 ~@2 e4@22 ~@2 f4@14, ~@11 c#5@23 ~ g#4@22 ~@2 a#4@21 ~@3 a4@15 ~@8 g#4@23 ~ e4@22 ~@3 a#4@21 ~@3 a4@15 ~@9 g#4@23 ~ g#4@22 ~@2 a#4@21 ~@3 a4@15 ~@9 g#4@23 ~ g#4@22 ~@2 a4@21 ~@3 b4@13]/8",
  B: "[~@12 c#5@21 ~@3 c#5@14 ~@10 c#5@21 ~@3 c#5@14 ~@10 c#5@14 ~@10 c#5@20 ~@4 c#5@14 ~@10 c#5@20 ~@4 c#5@21 ~@3 c#5@14 ~@10 c#5@21 ~@3 c#5@12, ~@10 f#4@22 ~@2 f#4@17 ~@7 f#4@22 ~@2 f#4@17 ~@7 e4@23 ~ e4@22 ~@2 e4@23 ~ e4@22 ~@2 d#4@22 ~@2 d#4@17 ~@7 d#4@22 ~@2 d#4@14, ~@11 a4@21 ~@3 a4@15 ~@9 a4@21 ~@3 a4@15 ~@9 g#4@23 ~ g#4@22 ~@2 g#4@23 ~ g#4@22 ~@2 g#4@21 ~@3 a4@15 ~@9 a4@21 ~@3 a4@13]/6",
  C: "[~@12 c#5@14 ~@10 c#5@20 ~@4 c#5@14 ~@10 c#5@20 ~@4 g#4@14 ~@10 f#4@8 ~@4 f#4@3 ~@45, ~@10 e4@23 ~ e4@22 ~@2 e4@23 ~ e4@22 ~@2 a3@23 ~ a3@9 ~@3 g#3@4 ~@46, ~@11 g#4@23 ~ g#4@22 ~@2 g#4@23 ~ g#4@22 ~@2 c#4@23 ~ c#4@10 ~@2 c4@3 ~@46]/4",
  D: "[~@12 c#5@21 ~@3 c#5@14 ~@10 c#5@21 ~@3 c#5@14 ~@10 c#5@14 ~@10 c#5@20 ~@4 c#5@14 ~@10 c#5@20 ~@4 c#5@21 ~@3 c#5@14 ~@10 c#5@21 ~@3 c#5@12, ~@10 f#4@22 ~@2 f#4@17 ~@7 f#4@22 ~@2 f#4@17 ~@7 e4@23 ~ e4@22 ~@2 e4@23 ~ e4@22 ~@2 f#4@22 ~@2 f#4@17 ~@7 f#4@22 ~@2 f#4@14, ~@11 a4@21 ~@3 a4@15 ~@9 a4@21 ~@3 a4@15 ~@9 g#4@23 ~ g#4@22 ~@2 g#4@23 ~ g#4@22 ~@2 a4@21 ~@3 a4@15 ~@9 a4@21 ~@3 a4@13]/6",
  E: "[~@12 c#5@14 ~@10 c#5@20 ~@4 c#5@14 ~@10 c#5@20 ~@40 f#4@3 ~@45, ~@10 e4@23 ~ e4@22 ~@2 e4@23 ~ e4@22 ~@38 g#3@4 ~@46, ~@11 g#4@23 ~ g#4@22 ~@2 g#4@23 ~ g#4@22 ~@38 c4@3 ~@46]/4",
  F: "[~@12 c#5@21 ~@3 c#5@14 ~@10 c#5@21 ~@3 c#5@14 ~@10 c#5@14 ~@10 c#5@20 ~@40, ~@10 f#4@22 ~@2 f#4@17 ~@7 f#4@22 ~@2 f#4@17 ~@7 e4@23 ~ e4@22 ~@40, ~@11 a4@21 ~@3 a4@15 ~@9 a4@21 ~@3 a4@15 ~@9 g#4@23 ~ g#4@22 ~@39]/4",
  G: "[~@12 c#5@21 ~@3 c#5@14 ~@10 c#5@21 ~@3 c#5@14 ~@10 c#5@14 ~@10 c#5@20 ~@4 c#5@14 ~@10 c#5@20 ~@40 f#4@3 ~@45, ~@10 f#4@22 ~@2 f#4@17 ~@7 f#4@22 ~@2 f#4@17 ~@7 e4@23 ~ e4@22 ~@2 e4@23 ~ e4@22 ~@38 g#3@4 ~@46, ~@11 a4@21 ~@3 a4@15 ~@9 a4@21 ~@3 a4@15 ~@9 g#4@23 ~ g#4@22 ~@2 g#4@23 ~ g#4@22 ~@38 c4@3 ~@46]/6",
  H: "[~@24 e5@14 ~@10 c#5@20 ~@5 c#5@21 ~@3 c#5@14 ~@33, ~@22 g#4@24 e4@22 ~@2 f#4@22 ~@3 f#4@18 ~@31, ~@23 c#5@23 ~ g#4@23 ~ a#4@21 ~@4 a4@16 ~@32]/3",
})).s("gm_bandoneon").gain(0.02)

// other · synth strings 2
const synth_strings_2 = note("<~@25 A B C@2 D E ~@4 F G@2 H I J ~@6 K B L@2 M E N O P>".pickRestart({
  A: "~@12 f#6@15 e6@4 ~ d#6@3 ~ d#6@4 c#6@4 d#6@4", B: "~@9 a5 g#5 g5 f#5@35 ~, c#6 ~@3",
  C: "[~@12 e6@15 d#6@4 e6@4 d#6@4 ~ c#6@4 d#6@3 c#6@12 ~ g#6@36]/2",
  D: "a6@11 ~ g#6@4 f#6@4 e6@4 f#6@2 e6@2 d#6@2 c#6@2 b5@2 a5@2 g#5@2 f#5 ~ d#5 c#5 c5 ~ b4 a#4 a4 ~", E: "g#4 ~@11",
  F: "~@6 g#6@6 a6@3 g#6 ~@6 d#6 e6", G: "[f#6@51 ~@9 f#6@4 g#6@4 f#6@4 e6@8 d#6@5 ~@7 c#6@2 d#6@2]/2", H: "e6",
  I: "~@3 e6 f#6 e6 d#6@2 c#6 ~ c6 c#6", J: "d#6", K: "~@11 f#6@16 e6@4 ~ d#6@3 ~ d#6@3 c#6@4 ~ d#6@4",
  L: "[~@12 e6@16 d#6@4 e6@3 d#6@4 ~ c#6@4 d#6@3 c#6@12 ~ g#6@36]/2",
  M: "a6@11 ~ g#6@4 f#6@4 e6@4 f#6@2 e6@2 d#6@2 c#6@2 b5@2 a5@2 g#5@2 f#5@2 d#5 c#5 c5 ~ b4 a#4 a4 ~",
  N: "~@6 e6@2 f#6 g#6@3", O: "b6 a#6 f#6 a6", P: "f#6@12 ~ c#7@28 ~@7",
})).s("gm_synth_strings_2").gain(0.4)

// other · pad poly
const pad_poly = note("<~@15 A B@2 C D E F@4 G H I@2 J K E L@4 M@2 N O P Q E F@4 G H R@2 S T@2 U V>".pickRestart({
  A: "f#4 ~@3", B: "g#4/2", C: "~@12 g#4@35 ~, d#4", D: "[d#4,f#4] ~@23 g#4@24", E: "[e4,c#5]@47 ~", F: "[c#5@191 ~]/4",
  G: "~@12 f#5@15 e5@4 ~ d#5@3 ~ d#5@4 c#5@4 d#5@4", H: "~@9 a4 g#4 g4 f#4@35 ~, c#5 ~@3",
  I: "[~@12 e5@16 d#5@4 e5@3 d#5@4 ~ c#5@4 d#5@3 c#5@12 ~ g#5@36]/2",
  J: "a5@11 ~ g#5@4 f#5@4 e5@4 f#5@2 e5@2 d#5@2 c#5@2 b4@2 a4@2 g#4@2 f#4@2 d#4 c#4 c4 ~ b3 a#3 a3 ~",
  K: "g#3 ~@5 g#4@6", L: "[c#5@147 ~@9 g#5@12 a5@6 g#5@2 ~@12 d#5@2 e5@2]/4",
  M: "[f#5@51 ~@9 f#5@4 g#5@4 f#5@4 e5@8 d#5@5 ~@7 c#5@2 d#5@2]/2", N: "e5", O: "~@3 e5 f#5 e5 d#5@2 c#5 ~ c5 c#5",
  P: "d#5", Q: "~ g#4", R: "[~@12 e5@16 d#5@3 e5@4 ~ d#5@4 c#5@4 d#5@3 c#5@12 ~ g#5@36]/2",
  S: "a5@11 ~ g#5@4 f#5@4 e5@4 f#5@2 ~ d#5@2 ~ c#5@2 b4@2 a4@2 g#4@2 f#4@2 d#4 c#4 ~ c4 b3 a#3 a3 ~, ~@13 e5 ~@10",
  T: "[g#3 ~@5 g#4@9 ~@3 e5@2 f#5 g#5@3]/2", U: "b5 a#5 f#5 a5", V: "f#5@12 ~ c#6@28 ~@7",
})).s("gm_pad_poly").gain(0.48)

// other · pad poly · soft notes
const pad_poly_soft = note("<~@16 A@2 ~@3 B@2 C@2 ~@7 B@2 D@2 ~@7 B@2 C@2 ~@9>".pickRestart({
  A: "e4/2", B: "f#4/2", C: "[e4@95 ~]/2", D: "[e4@17 ~@15]/2",
})).s("gm_pad_poly").gain(0.32)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  ~ A@2 B C@2 ~@10 D@2 E F G H@2 I@2 J K L@2 M N G H@2 O P Q@2 R S T U G H@2 I@2 V K W@2 X Y@2 Z AA
>`.pickRestart({
  A: "[~@47 c#3@24 ~ b2@23 ~]/2", B: "a#2 a2", C: "[c#3@24 b2@23 a#2@24 ~ a2@24]/2", D: "[g#3,c#4]/2", E: "[a3,c#4]",
  F: "[g#3,c4] ~@11 [g#3,c4]@12", G: "[g#3,c#4]@47 ~", H: "[a3@95 ~]/2", I: "g#3/2",
  J: "~@12 f#4@15 e4@4 ~ d#4@3 ~ d#4@4 c#4@4 d#4@4", K: "~@9 a3 g#3 g3 f#3@35 ~, c#4 ~@3",
  L: "[~@12 e4@16 d#4@4 e4@4 d#4@4 c#4@4 d#4@3 c#4@12 ~ g#4@36]/2",
  M: "a4@11 ~ g#4@4 f#4@4 e4@4 f#4@2 e4@2 d#4@2 c#4@2 b3@2 a3@2 g#3@2 f#3 ~ d#3 c#3 c3 ~ b2 a#2 a2 ~",
  N: "g#2 ~@5 [g#3,c4]@6", O: "g#3", P: "~@12 g#4@11 a4@6 ~ g#4@2 ~@12 d#4@2 e4@2",
  Q: "[f#4@51 ~@9 f#4@4 g#4@4 f#4@4 e4@8 d#4@5 ~@7 c#4@2 d#4@2]/2", R: "e4", S: "~@3 e4 f#4 e4 d#4@2 c#4 ~ c4 c#4",
  T: "d#4", U: "~ [g#3,c4]", V: "~@12 f#4@16 e4@4 d#4@3 ~ d#4@4 c#4@4 d#4@4",
  W: "[~@12 e4@15 d#4@4 ~ e4@3 d#4@4 ~ c#4@4 d#4@3 c#4@12 ~ g#4@36]/2",
  X: "a4@11 ~ g#4@4 f#4@4 e4@4 f#4@2 ~ d#4@2 ~ c#4@2 b3@2 a3@2 g#3@2 f#3@2 d#3 c#3 c3 ~ b2 a#2 a2 ~, ~@13 e4 ~@10",
  Y: "[g#2@4 ~@20 [g#3,c4]@35 ~@13 e4@8 f#4@4 g#4@12]/2", Z: "b4 a#4 f#4 a4", AA: "f#4@12 ~ c#5@28 ~@7",
})).s("gm_string_ensemble_2").gain(0.56)

// chords · celesta
const celesta = note(`<
  ~@2 A B A C A B A D E F G@2 H I G A F J G F E G A E F G@2 E ~ A F E A K E@2 G A E ~ A E F G@2 F E G@2 F ~ L M N
>`.pickRestart({
  A: "[g#3,c#4,e4]@4 [g#3,c#4,e4]@2 [c#4,e4] g#3 [g#3,c#4,e4]@2 [c#4,e4] g#3 [g#3,c#4,e4]@4 [g#3,c#4,e4]@4 [g#3,c#4,e4]@4 [g#3,c#4,e4]@4 [g#3,c#4,e4]@2 [c#4,e4] g#3 [g#3,c#4,e4]@2 [c#4,e4] g#3 [g#3,c#4,e4]@4 [g#3,c#4,e4]@4 [g#3,c#4,e4]@4", // C#m
  B: "[a#3,c#4,f#4]@4 [a#3,c#4,f#4]@2 c#4 a#3 [a#3,c#4,f#4]@2 c#4 a#3 [a#3,c#4,f#4]@4 [a#3,c#4,f#4]@4 [a#3,c#4,f#4]@4 [a3,c#4,f#4]@4 [a3,c#4,f#4]@2 [c#4,f#4] a3 [a3,c#4,f#4]@2 [c#4,f#4] a3 [a3,c#4,f#4]@4 [a3,c#4,f#4]@4 [a3,c#4,f#4]@4, ~@3 f#4 ~ f#4 ~@18", // F# F#m F#5 F#m F#5 F#m
  C: "[a#3,c#4,f#4]@4 [a#3,c#4,f#4]@2 [c#4,f#4] a#3 [a#3,c#4,f#4]@2 c#4 a#3 [a#3,c#4,f#4]@4 [a#3,c#4,f#4]@4 [a#3,c#4,f#4]@4 [a3,c#4,f#4]@4 [a3,c#4,f#4]@2 [c#4,f#4] a3 [a3,c#4,f#4]@2 [c#4,f#4] a3 [a3,c#4,f#4]@4 [a3,c#4,f#4]@4 [a3,c#4,f#4]@4, ~@5 f#4 ~@18", // F# F#5 F# F#m F#5 F#m F#5 F#m
  D: "[a3,c#4,e4]@4 [a3,c#4,e4]@2 c#4 a3 [a3,c#4,e4]@2 c#4 a3 [a3,c#4,e4]@4 [a3,c#4,e4]@4 [a3,c#4,e4]@4 [g#3,b3,f4]@4 [g#3,b3,f4]@2 [b3,f4] g#3 [g#3,b3,f4]@2 [b3,f4] g#3 [g#3,b3,f4]@4 [g#3,b3,f4]@4 [g#3,b3,f4]@4, ~@3 e4 ~ e4 ~@18", // A Fdim Bdim Fdim Bdim Fdim
  E: "[a3,c#4,f#4]@4 [a3,c#4,f#4]@2 c#4 a3 [a3,c#4,f#4]@2 c#4 a3 [a3,c#4,f#4]@4 [a3,c#4,f#4]@4 [a3,c#4,f#4]@4 [a3,c#4,f#4]@4 [a3,c#4,f#4]@2 [c#4,f#4] a3 [a3,c#4,f#4]@2 [c#4,f#4] a3 [a3,c#4,f#4]@4 [a3,c#4,f#4]@4 [a3,c#4,f#4]@4, ~@3 f#4 ~ f#4 ~@18", // F#m F#5 F#m F#5 F#m
  F: "[a3,c#4,f#4]@4 [a3,c#4,f#4]@2 [c#4,f#4] a3 [a3,c#4,f#4]@2 c#4 a3 [a3,c#4,f#4]@4 [a3,c#4,f#4]@4 [a3,c#4,f#4]@4 [a3,c#4,f#4]@4 [a3,c#4,f#4]@2 [c#4,f#4] a3 [a3,c#4,f#4]@2 [c#4,f#4] a3 [a3,c#4,f#4]@4 [a3,c#4,f#4]@4 [a3,c#4,f#4]@4, ~@5 f#4 ~@18", // F#m F#5 F#m F#5 F#m F#5 F#m
  G: "[g#3,c#4,e4]@4 [g#3,c#4,e4]@2 c#4 g#3 [g#3,c#4,e4]@2 [c#4,e4] g#3 [g#3,c#4,e4]@4 [g#3,c#4,e4]@4 [g#3,c#4,e4]@4 [g#3,c#4,e4]@4 [g#3,c#4,e4]@2 [c#4,e4] g#3 [g#3,c#4,e4]@2 [c#4,e4] g#3 [g#3,c#4,e4]@4 [g#3,c#4,e4]@4 [g#3,c#4,e4]@4, ~@3 e4 ~@20", // C#m
  H: "[a3,d#4,g#4]@4 [a3,d#4,g#4]@2 d#4 a3 [a3,d#4,g#4]@2 d#4 a3 [a3,d#4,g#4]@4 [a3,d#4,g#4]@4 [a3,d#4,g#4]@4 [a3,d#4,g#4]@4 [a3,d#4,g#4]@2 [d#4,g#4] a3 [a3,d#4,g#4]@2 [d#4,g#4] a3 [a3,d#4,g#4]@4 [a3,d#4,g#4]@4 [a3,d#4,g#4]@4, ~@3 g#4 ~ g#4 ~@18", // G# G#5 G# G#5 G#
  I: "[a3,d#4,f#4]@4 [a3,d#4,f#4]@2 [d#4,f#4] a3 [a3,d#4,f#4]@2 d#4 a3 [a3,d#4,f#4]@4 [a3,d#4,f#4]@4 [a3,d#4,f#4]@4 [a3,d#4,f#4]@4 [a3,d#4,f#4]@2 [d#4,f#4] a3 [a3,d#4,f#4]@2 [d#4,f#4] a3 [a3,d#4,f#4]@4 [a3,d#4,f#4]@4 [a3,d#4,f#4]@4, ~@5 f#4 ~@18", // D#dim D#m D#dim D#m D#dim D#m D#dim
  J: "[g#3,c4,f#4] ~@15", K: "[g#3,c#4,e4] ~@11",
  L: "~@12 [g#3,c#4,e4]@4 [g#3,c#4,e4]@2 ~ [g#3,c#4] [g#3,c#4,e4]@2 e4 [g#3,c#4] [g#3,c#4,e4]@4 [g#3,c#4,e4]@4 [g#3,c#4,e4]@4 [g#3,c#4,e4]@4 [g#3,c#4,e4]@3 [g#3,c#4,e4] [g#3,c#4,e4]@3 [g#3,c#4,e4], ~@9 e4 ~@14", // C#m C#5 C#m C#5 C#m
  M: "[g#3,c#4,e4]@4 [g#3,c#4,e4]@4 [g#3,c#4,e4]@4 [a#3,c#4,f#4]@4 ~ f#4@2 [a#3,c#4] ~ f#4@2 [a#3,c#4] ~ f#4@3 ~ f#4@3 ~ [c#4,f#4]@3 ~ [c#4,f#4]@3 ~ [c#4,f#4]@2 [a3,c#4,f#4] ~ [a3,c#4,f#4]@2 [a3,c#4,f#4], ~@16 [a#3,c#4]@3 f#4@2 ~@2 f#4@2 ~@23, ~@20 [a#3,c#4]@3 ~ [a#3,c#4]@4 [a#3,c#4]@4 a#3@4 a3@4 a3@3 ~@5", // C#m F# A#m F#5 F#m A#m
  N: "~ [a3,c#4,f#4]@4 [a3,c#4,f#4]@4 [a3,c#4,f#4]@4 [g#3,c#4,e4]@28 ~@7", // F#m C#m
})).s("gm_celesta").gain(0.08)

// chords · trumpet
const trumpet = note("<~@20 A B C D E F G H I J K A B C D L M N@3 O ~ A B C D E F G H I J K P@3>".pickRestart({
  A: "[c#4,e4]@2 ~@10 [c#4,e4]@2 ~@10 [c#4,e4]@2 ~@10 e4@2 ~@2 [c#4,e4] ~@3 [c#4,e4] ~@3, ~@36 c#4 ~@11", // C#m
  B: "[a3,f#4]@2 ~@6 [a3,f#4] ~@3 [a3,f#4]@2 ~@6 [a3,f#4] ~@3 [a3,f#4]@2 ~@6 [a3,f#4] ~@3 f#4@2 ~@2 [a3,f#4] ~@3 [a3,f#4] ~@3, ~@36 a3 ~@11", // D
  C: "[a3,f#4]@2 ~@6 [a3,f#4] ~@3 f#4@2 ~@6 f#4@2 ~@2 [a3,f#4]@3 ~@5 [a3,f#4] ~@3 f#4@2 ~@2 [a3,f#4] ~@3 f#4@2 ~@2, ~@12 a3 ~@7 a3 ~@15 a3 ~@7 a3 ~@3", // D
  D: "[g#3,e4]@2 ~@6 e4@2 ~@2 [g#3,e4]@2 ~@6 e4@2 ~@2 [g#3,e4]@2 ~@6 [g#3,e4]@2 ~@2 [g#3,e4] ~@3 [g#3,e4] ~@3 [g#3,e4] ~@3, ~@8 g#3 ~@11 g#3 ~@27", // C#m
  E: "[g#3,e4]@2 ~@6 [g#3,e4] ~@3 [g#3,e4]@2 ~@6 [g#3,e4] ~@3 [g#3,e4]@2 ~@6 [g#3,e4] ~@3 [g#3,e4] ~@3 [g#3,e4] ~@3 g#3@2 ~@2, ~@44 e4 ~@3", // C#m
  F: "[a3,f#4]@2 ~@6 f#4@2 ~@2 [a3,f#4]@2 ~@6 [a3,f#4]@2 ~@2 [a3,f#4]@2 ~@6 [a3,f#4]@2 ~@2 [a3,f#4] ~@3 [a3,f#4] ~@3 [a3,f#4] ~@3, ~@8 a3 ~@39", // D
  G: "[a3,f#4]@3 ~@5 [a3,f#4] ~@3 [a3,f#4]@2 ~@6 f#4@2 ~@2 [a3,f#4]@2 ~@6 [a3,f#4] ~@3 [a3,f#4] ~@3 [a3,f#4] ~@3 f#4@2 ~@2, ~@20 a3 ~@23 a3 ~@3", // D
  H: "[g#3,e4]@2 ~@6 [g#3,e4]@2 ~@2 [g#3,e4]@3 ~@5 [g#3,e4]@2 ~@2 [g#3,e4]@2 ~@6 e4@2 ~@2 [g#3,e4]@2 ~@2 [g#3,e4] ~@3 [g#3,e4] ~@3, ~@32 g#3 ~@15", // C#m
  I: "[g#3,e4]@3 ~@5 [g#3,e4] ~@3 [g#3,e4]@2 ~@6 [g#3,e4] ~@3 [g#3,e4]@2 ~@6 [g#3,e4] ~@3 e4@2 ~@2 e4@2 ~@2 [g#3,e4] ~@3, ~@36 g#3 ~@3 g#3 ~@7", // C#m
  J: "[d#4,f#4] ~@7 [d#4,f#4] ~@3 f#4@2 ~@6 [d#4,f#4] ~@3 [c#4,d#4]@2 ~@6 [c#4,d#4] ~@3 [c#4,d#4] ~@7 [c#4,d#4] ~@3, ~@12 d#4 ~@35", // D#m C#sus2
  K: "d#4 ~@15", L: "[g#3,e4] ~@5 g#4@6 a4@3 g#4@2 ~@5 d#4 e4", M: "f#4",
  N: "[~@12 f#4@4 g#4@4 f#4@4 e4@8 d#4@8 ~@4 c#4@2 ~ e4@50 ~@11 e4@4 f#4@4 e4@4 d#4@7 c#4@5 ~@4 b3@4 c#4@4, ~@23 d#4 ~@48]/3",
  O: "d#4", P: "[~@12 c#4@24 b3@24 a#3@24 a3@24 ~ [e3,g#3]@28 ~@7]/3",
})).s("gm_trumpet").gain(0.4).pan(0.6)

// chords · synth brass 1
const synth_brass_1 = note("<~@19 A B C D E@2 D@2 E@2 F G B C D E H I J@3 K A B C D E@2 D@2 E@2 F L@4>".pickRestart({
  A: "~ g#2",
  B: "[c#3,g#3]@2 ~@6 [c#3,g#3] ~@3 [c#3,g#3]@2 ~@6 [c#3,g#3] ~@3 [c#3,g#3]@2 ~@6 [c#3,g#3] ~@3 [c#3,g#3] ~@3 [c#3,g#3] ~@3 [c#3,g#3] ~@3", // C#5
  C: "[f#2,c#3] ~@7 [f#2,c#3] ~@3 f#2@2 ~@6 [f#2,c#3] ~@3 [f#2,c#3] ~@7 [f#2,c#3] ~@3 [f#2,c#3] ~@3 [f#2,c#3] ~@3 [f#2,c#3] ~@3, ~@12 c#3 ~@35", // F#5
  D: "[f#2,c#3] ~@7 [f#2,c#3] ~@3 [f#2,c#3] ~@7 [f#2,c#3] ~@3 [f#2,c#3] ~@7 [f#2,c#3] ~@3 [f#2,c#3] ~@3 [f#2,c#3] ~@3 [f#2,c#3] ~@3", // F#5
  E: "[c#2,c#3] ~@7 [c#2,c#3] ~@3 [c#2,c#3] ~@7 [c#2,c#3] ~@3 [c#2,c#3] ~@7 [c#2,c#3] ~@3 [c#2,c#3] ~@3 [c#2,c#3] ~@3 [c#2,c#3] ~@3", // C#
  F: "[f#3,c#4] ~@7 [f#3,c#4] ~@3 [f#3,c#4] ~@7 c#4@2 ~@2 a3@2 ~@6 [d#3,a3] ~@3 [d#3,a3] ~@7 [d#3,a3] ~@3, ~@20 f#3 ~@3 d#3 ~@23", // F#5 D#dim
  G: "g#3 ~@5 [g#1,g#2]@6", H: "[c#2,c#3] ~@11 g#3@12 a3@6 g#3@4 ~@10 d#3@2 e3@2", I: "f#3",
  J: "[~@12 f#3@4 g#3@4 f#3@4 e3@8 d#3@8 ~@4 c#3@2 ~ e3@50 ~@11 e3@4 f#3@4 e3@4 d#3@7 c#3@5 ~@4 b2@4 c#3@4, ~@23 d#3 ~@48]/3",
  K: "d#3", L: "[g#3@4 ~@20 g#2@35 ~ c#3@24 b2@24 a#2@24 a2@24 ~ c#3@28 ~@7]/4",
})).s("gm_synth_brass_1").gain(0.48).pan(0.3)

// chords · drawbar organ
const drawbar_organ = note("<A B@2 ~@3 C D E@2 F@4 G@4 H I@2 F@8 H I@2 J@4 F@4 H I@2 F@8 H K@4>".pickRestart({
  A: "c#4@4 d#4@3 ~ e4@4 g#4@4 c#5@4 d#5@4 e5@4 g#5@4 c#6@4 e6@4 d#6@4 c#6@4",
  B: "[g#5@4 e5@4 c#5@4 d#5@4 f#5@4 a5@4 g#5@4 e5@3 ~ c#5@4 d#5@4 c#5@4 c5@4 [c#4,e4,c#5]@24 ~@24, c#4@11 ~ [c4,d#4]@4 ~@16, [e4,g#4]@11 ~ [f#4,a4]@11 ~ g#4@48 ~@24, ~@3 e4 ~@8]/2", // C#m Cm E F#m
  C: "c#4 b3, [e3,g#3]", D: "a#3@24 a3@23 ~, f#3@47 ~", E: "[g#3@2 a3 [f3,b3], c#4, e3@35 ~@13]/2",
  F: "[[f#3,a3]@96 [e3,g#3]@95 ~, c#4]/4", G: "[[a3,d#4]@95 ~ [g#3,e4]@95 ~, c#4@95 ~]/4", H: "[a3,c#4,d#4]",
  I: "[[g#3,c4,d#4]@2 ~@22 [c4,d#4]@23 ~ [c#4,e4]@48, ~ g#3@3]/2", J: "[[f#3,a3]@48 [e3,g#3]@25 ~@23, c#4@73 ~@23]/4",
  K: "[[g#3,c4,d#4]@2 ~@22 [g#3,c4,d#4]@34 ~@2 c#4@24 b3@23 ~ a#3@24 a3@24 ~ [g#3,e4]@30 ~@5, ~@10 [g#3,e4]@8 c#4@13 ~]/4", // G# C#m
})).s("gm_drawbar_organ").gain(0.16)

// drums · kick
const kick = s("bd").struct("<~@2 A@17 B A@10 B A@4 C A@5 B A@10 B D E F>".pickRestart({
  A: "x ~@4 x!2 ~@5", B: "x!2", C: "x", D: "~@3 x ~@4 x!2 ~@2", E: "~@12 x ~@20 x ~@3 x ~@10", F: "~@13 x ~@24 x ~@9",
})).gain(0.06)

// drums · snare
const snare = s("sd").struct("<~@2 A@17 B A@10 B A@4 B A@5 B A@10 B C D E>".pickRestart({
  A: "x ~@2 x!2 ~@3 x ~ x ~ x ~@2 x!2 ~@3 x ~ x ~", B: "x", C: "~@6 x ~@2 x!2 ~@3 x ~ x ~ x ~@2 x!2 ~",
  D: "~@4 x ~@3 x ~@3 x ~@6 x!2 ~@7 x ~@4 x ~@3 x ~@5 x ~ x ~@2", E: "~@5 x ~@3 x ~@3 x ~ x!24 ~@9",
})).gain(0.07)

// drums · clap
const clap = s("cp").struct("<~@2 A@17 ~ A@10 ~ A@4 ~ A@5 ~ A@10 ~ B C D>".pickRestart({
  A: "~ x ~ x ~@3 x ~ x ~@2", B: "~@2 x!2 ~ x", C: "x ~@15 x ~@7 x ~@16 x ~@6", D: "~ x ~@36 x ~@9",
})).gain(0.06)

// drums · hihat
const hihat = s("hh").struct("<~@2 [x!12]!17 x [x!12]!10 x ~@25>").gain(0.06)

// drums · open hat
const open_hat = s("oh").struct("<~@2 [~ x ~ x ~ x ~@2]!17 ~ [~ x ~ x ~ x ~@2]!10 ~@26>").gain(0.04)

// drums · crash
const crash = s("cr").struct("<~@19 A ~@10 A ~@10 A ~@10 A B C D>".pickRestart({
  A: "~ x", B: "~ x ~ x", C: "~@12 x ~@24 x ~@10", D: "~@13 x ~@34",
})).gain(0.05)

// drums · ride
const ride = s("rd").struct("<~@31 A B A@2 C A B A@3 C A B A@3 B A@4 ~ D E F>".pickRestart({
  A: "x ~ x!3 ~ x ~ x!3 ~ x ~ x!3 ~ x ~ x ~ x ~", B: "x ~ x!3 ~ x ~ x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~", C: "x",
  D: "~@16 x ~@2 x!2 ~@3 x ~@3 x ~@2 x!2 ~@7 x ~@2 x!2 ~@3",
  E: "x ~@3 x ~@3 x ~@7 x ~@2 x!2 ~@3 x ~@4 x ~ x!2 ~@8 x ~ x ~ x ~@2", F: "~ x ~@3 x ~@3 x ~@38",
})).gain(0.06)

// drums · tambourine
const tambourine = s("tb").struct("<~@55 [~@19 x ~@4]>").gain(0.05)

// drums · triangle
const triangle = s("triangles:35").struct("<~@12 [~ x] ~@43>").gain(0.55)

stack(
  bass, bandoneon, synth_strings_2, pad_poly, pad_poly_soft, string_ensemble_2, celesta, trumpet, synth_brass_1,
  drawbar_organ, kick, snare, clap, hihat, open_hat, crash, ride, tambourine, triangle
)