Strudelify
L'immensita cover art

1967 · L'Immensita

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.
// note: The whole transcription plays 15 ms ahead of the beat; the grid follows it, so its parts stay together.
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, A@4 for four bars: 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 N O@2 P@2 O@2 P@2 Q T@2 U V
>`.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: "[g#1@2 ~@22 g#1@36 c#2@20 g#1@3 ~ b1@8 g#1@3 ~]/2", U: "b1@12 ~ a#1@20 f#1@4 a1@8 f#1@3",
  V: "~ 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 ~@11 c#5@20 ~@4 c#5@21 ~@3 c#5@14 ~@33, ~@22 g#4@24 e4@22 ~@3 f#4@22 ~@2 f#4@18 ~@31, ~@23 c#5@23 ~ g#4@23 ~@2 a#4@21 ~@3 a4@16 ~@32]/3",
})).s("gm_bandoneon").gain(0.02)

// other · synth strings 2
const synth_strings_2 = note("<~@25 A B C D E F ~@4 G H@2 I J K ~@6 A B C D E F L M N>".pickRestart({
  A: "~@12 f#6@16 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: "~@3 e6@4 d#6 e6 d#6 c#6 d#6", D: "c#6 g#6@3",
  E: "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", F: "g#4 ~@11",
  G: "~@6 g#6@6 a6@3 g#6 ~@6 d#6 e6", H: "[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", I: "e6",
  J: "~@3 e6 f#6 e6 d#6@2 c#6 ~ c6 c#6", K: "d#6", L: "~@6 e6@2 f#6 g#6@3", M: "b6 a#6 f#6 a6",
  N: "~ 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 J K L E M@4 N@2 O P Q R E F@4 G H I J K S@2 T U>".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@16 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: "~@3 e5@4 d#5 e5 d#5 c#5 d#5", J: "c#5 g#5@3",
  K: "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",
  L: "g#3 ~@5 g#4@6", M: "[c#5@147 ~@9 g#5@12 a5@6 g#5@2 ~@12 d#5@2 e5@2]/4",
  N: "[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", O: "e5", P: "~@3 e5 f#5 e5 d#5@2 c#5 ~ c5 c#5",
  Q: "d#5", R: "~ g#4", S: "[g#3 ~@5 g#4@9 ~@3 e5@2 f#5 g#5@3]/2", T: "b5@12 a#5@12 f#5@12 ~ a5@11",
  U: "~ 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 A@2 ~@7 B@2 C@2 ~@7 B@2 A@2 ~@9>".pickRestart({
  A: "[e4@95 ~]/2", B: "f#4/2", C: "[e4@17 ~@15]/2",
})).s("gm_pad_poly").gain(0.32)

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

// chords · celesta
const celesta = note(`<
  ~@2 A B A B A B A C D@2 A@2 E F A@2 D G A D@2 A@2 D@2 A@2 D ~ A D@2 A H D@2 A@2 D ~ A D@2 A@2 D@2 A@2 D ~ I J K
>`.pickRestart({
  A: "[g#3,c#4,e4]@4 [g#3,c#4,e4]@3 [g#3,c#4,e4] [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] [g#3,c#4,e4]@4 [g#3,c#4,e4]@4 [g#3,c#4,e4]@4", // C#m C#5 C#m
  B: "[a#3,c#4,f#4]@4 [a#3,c#4,f#4]@3 [a#3,c#4,f#4] [a#3,c#4,f#4]@2 ~ [a#3,c#4] [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]@3 [a3,c#4,f#4] [a3,c#4,f#4]@3 [a3,c#4,f#4] [a3,c#4,f#4]@4 [a3,c#4,f#4]@4 [a3,c#4,f#4]@4, ~@5 f#4 ~@18", // F# A#m F# F#m
  C: "[a3,c#4,e4]@4 [a3,c#4,e4]@3 [a3,c#4,e4] [a3,c#4,e4]@3 [a3,c#4,e4] [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 f4 [g#3,b3] [g#3,b3,f4]@2 f4 [g#3,b3] [g#3,b3,f4]@4 [g#3,b3,f4]@4 [g#3,b3,f4]@4", // A Fdim G#m Fdim G#m Fdim
  D: "[a3,c#4,f#4]@4 [a3,c#4,f#4]@2 ~ [a3,c#4] [a3,c#4,f#4]@2 ~ [a3,c#4] [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 f#4 [a3,c#4] [a3,c#4,f#4]@3 [a3,c#4,f#4] [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 A F#m A F#m A F#m
  E: "[a3,d#4,g#4]@4 [a3,d#4,g#4]@2 ~ [a3,d#4] [a3,d#4,g#4]@3 [a3,d#4,g#4] [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 g#4 [a3,d#4] [a3,d#4,g#4]@3 [a3,d#4,g#4] [a3,d#4,g#4]@4 [a3,d#4,g#4]@4 [a3,d#4,g#4]@4, ~@3 g#4 ~@20", // G# Adim G# Adim G#
  F: "[a3,d#4,f#4]@4 [a3,d#4,f#4]@3 [a3,d#4,f#4] [a3,d#4,f#4]@3 [a3,d#4,f#4] [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 f#4 [a3,d#4] [a3,d#4,f#4]@3 [a3,d#4,f#4] [a3,d#4,f#4]@4 [a3,d#4,f#4]@4 [a3,d#4,f#4]@4", // D#dim Adim D#dim
  G: "[g#3,c4,f#4] ~@15", H: "[g#3,c#4,e4] ~@11",
  I: "~@12 [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] [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] ~ e4@2 [g#3,c#4,e4], ~@44 [g#3,c#4]@3 ~", // C#m C#5
  J: "~ e4@3 ~ e4@3 ~ e4@3 ~ [c#4,f#4]@3 ~ [c#4,f#4]@2 [a#3,c#4] ~ [c#4,f#4]@2 [a#3,c#4] ~ [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], [g#3,c#4]@4 [g#3,c#4]@4 [g#3,c#4]@4 a#3@4 a#3@3 f#4@2 ~@2 f#4@2 ~@23, ~@20 a#3@3 ~@25", // F#5 A#m F#5 A#m F# F#m F#5 F#m …
  K: "a3 [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@2 C@2 B@2 C@2 D E A B@2 C F G H I J K ~ A B@2 C@2 B@2 C@2 D E L@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: "[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
  D: "[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
  E: "d#4 ~@15", F: "[g#3,e4] ~@5 g#4@6 a4@3 g#4@2 ~@5 d#4 e4", G: "f#4",
  H: "~@6 f#4@2 g#4@2 f#4@2 e4@4 d#4@4 ~@2 c#4 d#4", I: "e4", J: "~@12 e4@4 f#4@4 e4@4 d#4@7 ~ c#4@5 ~@3 b3@4 c#4@4",
  K: "d#4", L: "[~@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@2 D@2 C@2 D@2 E F B C@2 D G H I J K L A B C@2 D@2 C@2 D@2 E M@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,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
  D: "[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#
  E: "[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
  F: "g#3 ~@5 [g#1,g#2]@6", G: "[c#2,c#3] ~@11 g#3@12 a3@6 g#3@4 ~@10 d#3@2 e3@2", H: "f#3",
  I: "~@6 f#3@2 g#3@2 f#3@2 e3@4 d#3@4 ~@2 c#3 d#3", J: "e3", K: "~@12 e3@4 f#3@4 e3@4 d#3@7 ~ c#3@5 ~@3 b2@4 c#3@4",
  L: "d#3", M: "[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: "~@12 x ~@6 x!2 ~@7 x ~@3 x ~@3 x ~@6 x!2 ~@3",
  D: "~@4 x ~@4 x ~@3 x ~@5 x ~ x ~@7 x ~@3 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 ~@16 x ~@7 x ~@15 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 [~@7 x ~@11 x ~@11 x ~@16]!17 ~ [~@7 x ~@11 x ~@11 x ~@16]!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: "~@13 x ~@23 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 ~@3 x ~@2 x!2 ~@3 x ~@3 x ~@2 x!2 ~@3 x ~@3 x ~@2 x!2 ~@3 x ~@3 x ~@3 x ~@3",
  B: "x ~@3 x ~@2 x!2 ~@3 x ~@3 x ~@2 x!2 ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3", 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 ~@4 x ~@7 x ~ x ~ x ~@3 x ~@3 x ~ x ~ x ~@7 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
)