Strudelify

I migliori anni della nostra vita

Zero

KeyA majorTempo71 bpm
0:00/0:00
// I migliori anni della nostra vita — Zero
// 71 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 78 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(71/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.

// bass · fretless bass
const bass = note(`<
  ~@5 A@3 B@3 C@4 A@5 D E F G H E I J K J L M N O P J K J L M N O Q R S@2 T U@2 V@2 E W@2 X Y Z AA AB AA AC AD AE AF AG
  AA AB AA AC AD AE AH AI AJ AK@4
>`.pickRestart({
  A: "a1 e1", B: "[a1@11 a1]/3", C: "[d2@3 a1@4 e1]/4", D: "a1@7 a1", E: "a1!2", F: "a1@4 a2@2 e2 a1", G: "d2",
  H: "d2@4 a1@3 a1", I: "a1@7 b1 b1@8", J: "c#2@3 c#2 f#2@3 f#2", K: "g#2@5 ~ g#2@2 a2@5 ~ a2 a1",
  L: "g#2@5 ~ g#2@2 a2@5 ~ a2@2", M: "f#2@5 ~ f#2 ~ f#2@8", N: "f#2@5 ~ f#2@2 f2@5 ~ f2@2",
  O: "e2@5 ~ e2@2 f#2@5 ~ f#2@2", P: "e2@4 e3@4 e2@3 b2 e3 b2 e2@2", Q: "e2@3 b2 e3@4", R: "c#2@8 d2@6 d2!2",
  S: "[c#2 b1@2 ~]/2", T: "~ a1", U: "e1 a1", V: "[e1@4 a1@7 a1 a1@4]/2", W: "[a2@2 e2 a1 d2@8 d2@4]/2",
  X: "a1@3 a1 a1@4", Y: "a1@8 a1@7 b1", Z: "b1@4 c#2@3 c#2", AA: "f#2@6 f#2@2 g#2@5 ~ g#2@2",
  AB: "a2@5 ~ a2 a1 c#2@6 c#2@2", AC: "a2@5 ~ a2@2 f#2@5 ~ f#2 ~", AD: "f#2@8 f#2@5 ~ f#2@2",
  AE: "f2@5 ~ f2@2 e2@5 ~ e2@2", AF: "f#2@5 ~ f#2@2 e2@4 e3@4", AG: "e2@3 b2 e3 b2 e2@2 c#2@6 c#2@2",
  AH: "f#2@5 ~ f#2@2 e2@6 b2@2", AI: "e3 c#2", AJ: "d2@6 d2!2 c#2@8", AK: "[b1@2 e1@4 a1@9 ~]/4",
})).s("gm_fretless_bass").gain(0.31)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  A B C D@2 ~@6 E@6 ~@6 F@4 G H@2 I J K L M N O@2 I J K L M P Q@3 ~@5 R@2 S@3 T A U V W X@3 Y@2 U V W Z@4 AA@4
>`.pickRestart({
  A: "a3", B: "g#3@3 a3", C: "a3 d4", D: "[b3@24 a3@7 ~]/2", E: "[e4 d4 c#4 b3 a3 g#3 ~ e3@5, d3@3 a2@4 ~@5, ~ a3]/6",
  F: "[e4 d4 c#4 b3 a3 g#3 ~ e3, d3@3 a2@4 ~, ~@3 a3]/4", G: "c#4 f#3", H: "[g#3 a3@2 [f#3,a3]]/2",
  I: "[g#3,b3]@4 ~ a3 c#4 e4, ~@2 c#4 ~", J: "[c#4,a4] [a3,d4]", K: "[b3,d#4] [a3,d4]", L: "c#4 d4, a3",
  M: "a3@2 g#3 a3, b3", N: "[c#4,e4] [a3,d4]", O: "[g#3 a3@2 [f#3,a3], e4 ~]/2", P: "c#3 d3, a3",
  Q: "[c#3 b2@2 e2@2 ~]/3", R: "[~ e4 d4 c#4, ~ d3@3]/2", S: "[b3 a3 g#3 ~ e3 c#4, a2@2 ~, ~@3 a3@2 ~]/3", T: "f#3 g#3",
  U: "[f#3,a3] [g#3,b3]", V: "~ a3 c#4 e4 [c#4,a4]@4, c#4 ~@3", W: "[a3,d4] [b3,d#4]",
  X: "[[a3,d4]@2 c#4@2 d4@2 a3@2 g#3 a3 [c#4,e4]@2, ~ a3@2 b3@2 ~]/3", Y: "[[a3,d4] g#3 a3@2, ~ e4@2 ~]/2",
  Z: "[[a3,d4]@2 c#4@2 d4@2 a3@2 g#3 a3 c#3@2 d3@2 c#3@2, ~ a3@2 b3@2 a3@2 ~]/4", AA: "[b2@2 e2@4 a2@9 ~]/4",
})).s("gm_string_ensemble_2").gain(0.31).pan(0.8)

// other · string ensemble 2
const string_ensemble_2_2 = note(`<
  A@2 B C@2 ~@5 D@3 E F G@2 ~@3 H I@2 J@2 K L M N O P Q R S T U V W X Y R Z AA AB AC@3 ~ AD@6 AE AF@2 AG AH AI AJ AK AL
  AM AN@5 AO AL AP@2 AQ AR@4
>`.pickRestart({
  A: "[[e3,c#4]@2 [f#3,d4]@2 [e3,g#3,b3]@3 [f#3,a3,d4], a2, a3 ~]/2", B: "[a2,a3,c#4] [f#2,a3,e4]",
  C: "[[b3,e4]@24 [a3,d4]@7 ~, e2@31 ~]/2", D: "[[b3,e4]@2 [d4,f#4]@3 [b3,e4], a3]/3", E: "[a3,d4] [g#3,b3]",
  F: "[f#3,a3]", G: "[e3,a3]/2", H: "~@2 [g#3,b3] [a3,c#4]", I: "[[g#3,b3]@2 ~@3 c#5@2 g#5, ~ [a3,c#4]@3, ~ e4]/2",
  J: "[[d4,f#4,f#5]@3 [b3,e4,e5]]/2", K: "[a3,d4,d5] [g#3,b3,b4]", L: "a4@8 f#4 e4 a4@6, [f#3,a3]", M: "a4@4 d5@3 a4",
  N: "b4@4 c#5@3 d5", O: "c#5@6 a4@2 a5@6 g#5 f#5", P: "e5@6 d5@2 c#5@5 e5 a5 b5", Q: "c#6@6 d6@2 a5@6 g#5 a5",
  R: "b5@3 c#6 d6 e6 c#6 b5", S: "a5@6 e5@2 d5@6 c#5 b4", T: "a4@2 g#4 a4", U: "~@2 a5 g#5 a5 g#5 a5@8 b5@2",
  V: "b5@6 c#6@8 b5 a5", W: "~@2 c#6 b5 c#6 b5 c#6@8 b5@2, e6 ~", X: "d6@3 e6@5", Y: "a6@3 e6 d6@3 c#6",
  Z: "a5@3 e5 d5@2 a4@2", AA: "e4", AB: "e4 f#4", AC: "[e4 d4@4 ~]/3",
  AD: "[~@8 [g#3,b3] [a3,c#4] [g#3,b3,b5]@2 ~@3 c#5@2 g#5 [f#4,f#5,a5]@6, ~@8 e6@63 ~@25, ~@2 [c#4,c#6] ~, ~@7 e4@2 ~@3]/6", // G#m A G#m F#m C#
  AE: "[e4,e5,b5] [d4,d5,f#5]", AF: "[[g#3,b3,b4]@2 a4 e4 a4@2 a4 e5, ~ [f#3,a3]@2 ~]/2", AG: "d5@3 a4 b4@4",
  AH: "c#5@3 d5 c#5@3 a4", AI: "a5@6 g#5 f#5 e5@6 d5@2", AJ: "c#5@5 e5 a5 b5 c#6@6 d6@2", AK: "a5@6 g#5 a5 b5@6 c#6@2",
  AL: "d6 e6 c#6 b5 a5@3 e5", AM: "d5@6 c#5 b4 a4@8",
  AN: "[g#4@4 a4@4 ~@2 a5 g#5 a5 g#5 a5@8 b5@2 b5@6 c#6@8 b5 a5 ~@2 c#6 b5 c#6 b5 c#6@8 b5@2 d6@6 e6@10 a6@6 e6@2, ~@5 e6 ~@4]/5",
  AO: "d6@3 c#6 b5@3 c#6", AP: "[d5 a4 e4@4 e4@2]/2", AQ: "f#4 e4", AR: "[[d4,f#4]@6 [c#4,e4]@9 ~]/4",
})).s("gm_string_ensemble_2").gain(0.27).pan(0.4)

// other · trombone
const trombone = note("<A B C D@2 ~@22 E F E F G@2 H I J K L M G@2 H I ~@13 N O P O Q@2 R S@7 R T@2 ~@5>".pickRestart({
  A: "[c#3,a3] [d3,a3]", B: "[b2,g#3]@3 [d3,f#3]", C: "[c#3,e3] [f#2,e3]", D: "[e3@3 d3, e2]/2", E: "c#2 f#2",
  F: "g#2@8 a2@7 ~", G: "[f#2@24 f2@7 ~]/2", H: "e2 f#2", I: "e2@15 ~", J: "~@2 a4 g#4 a4 g#4 a4@8 b4@2",
  K: "b4@6 c#5@9 ~", L: "~@2 c#5 b4 c#5 b4 c#5@8 b4@2", M: "d5@3 e5@5", N: "~ c#2", O: "f#2 g#2", P: "a2@7 ~ c#2@8",
  Q: "[a2@7 ~ f#2@24]/2", R: "f2@7 ~ e2@8",
  S: "[f#2@8 e2@15 ~@3 a4 g#4 a4 g#4 a4@8 b4@2 b4@6 c#5@9 ~@3 c#5 b4 c#5 b4 c#5@8 b4@2 d5@6 e5@10 f#2@24]/7",
  T: "[f#2@8 e2@15 ~@9]/2",
})).s("gm_trombone").gain(0.3).pan(0.7)

// chords · french horn
const french_horn = note(`<
  A@2 B C@2 ~@12 D E F G H@4 I J K L M N O@2 K P K Q@3 R S K T ~@3 U V W@2 X Y@4 Z@2 AA AB AC AD@3 AA AE AA AF@3 AG AA
  AH@2 AI AJ@4
>`.pickRestart({
  A: "[[e3,a3]@2 [f#3,a3]@2 [e3,g#3]@3 [f#3,a3], a2]/2", B: "[a2,e3] [f#2,a3]", C: "[a3@16 g#3@8 f#3@7 ~, e2@31 ~]/2",
  D: "a3 b3", E: "[a3,c#4] [b3,d4]", F: "c#4@2 ~ d4, e4@3 ~, ~ b3", G: "[a3,c#4]@2 [g#3,b3] [a3,c#4]",
  H: "[[g#3,b3] ~@4 d4 [c#4,f#4] [b3,e4], ~ [a3,c#4]@3 a3@4, ~ b3 f#4 ~, ~@3 e4@2 ~@3]/4", I: "[a3,d4] [g#3,b3]",
  J: "a3, f#3 ~", K: "e4 d4", L: "e4!2", M: "a4@3 e4 [a3,d4]@4", N: "[b3,e4] [c#4,e4]", O: "[a4@15 ~]/2",
  P: "e4@9 ~ c#4@2 d4@2 e4@2", Q: "[e4@8 e4@11 ~ a4 g#4 ~@18 e4@8, ~@22 a4@8 b4@8 c#5@9 ~, ~@3 d4 e4 ~]/3",
  R: "a4@7 g#4 a4@5 g#4 f#4 e4", S: "f#4@3 e4 d4@4", T: "e4@9 ~@7", U: "~ a3", V: "b3 [a3,c#4]",
  W: "[[b3,d4]@2 c#4@2 ~ d4 [a3,c#4]@2, ~@2 e4@3 ~@3, ~@2 b3 ~]/2", X: "[g#3,b3] [a3,c#4] [g#3,b3]@2",
  Y: "[~@4 d4 [c#4,f#4] [b3,e4] [a3,d4], [a3,c#4]@3 a3@4 ~, ~ b3@2 f#4@2 ~@3, ~ e4 ~@2]/4", // F#5 E5 D5 A
  Z: "[[g#3,b3] a3@2 e4, ~ f#3 ~@2]/2", AA: "d4 e4", AB: "e4@4 a4@3 e4", AC: "[a3,d4] [b3,e4]",
  AD: "[[c#4,e4]@4 a4@15 ~ e4@4]/3", AE: "~ c#4 d4 e4 e4@4",
  AF: "[e4@11 ~ a4 g#4 ~@18 e4@8 a4@7 g#4, ~@14 a4@8 b4@8 c#5@9 ~@9, ~@2 d4 e4 ~@2]/3",
  AG: "a4@5 g#4 f#4 e4 f#4@6 e4@2", AH: "[d4 e4@3]/2", AI: "d4 c#4", AJ: "[b3@6 c#4@9 ~]/4",
})).s("gm_french_horn").gain(0.27).pan(0.6)

// other · oboe
const oboe = note("<~@22 A B@2 C D E F G F H@2 G I J@2 K L M@2 N ~ O@3 ~@5 P@3 Q R@2 S T@2 U@4 V@8 ~ W@5>".pickRestart({
  A: "e4@5 b4@3", B: "[a4@3 g#4]/2", C: "f#4@6 e4 d4 e4@8", D: "d4@13 a4 d5 a5", E: "e5 a4", F: "b4 c#5", G: "a4",
  H: "[a4@15 ~]/2", I: "b4@3 ~", J: "[~@2 a4 g#4 a4 g#4 a4@8 b4@8 c#5@10]/2", K: "~@2 c#5 b4 c#5 b4 c#5@8 b4@2",
  L: "d5@6 e5@9 ~", M: "[a4@14 c#5 d5]/2", N: "e5 a4@3", O: "[~@4 a4@5 ~@3 a4@8 ~@4]/3", P: "[~@4 e4@5 b4@3 a4@12]/3",
  Q: "g#4@8 f#4@6 e4 d4", R: "[e4@8 d4@13 a4 d5 a5 e5@8]/2", S: "a4 b4", T: "[c#5 a4@2 b4]/2",
  U: "[c#5@4 a4@15 ~ a4@8 b4@4]/4",
  V: "[~@10 a4 g#4 a4 g#4 a4@8 b4@8 c#5@10 ~@2 c#5 b4 c#5 b4 c#5@8 b4@2 d5@6 e5@9 ~ a4@28 c#5@2 d5@2 e5@4 a4@13 ~@7]/8",
  W: "[a4@11 ~@3 a4@24 ~@2]/5",
})).s("gm_oboe").gain(0.27).pan(0.7)

// other · flute
const flute = note("<~@20 A B C D E F G H ~@7 H ~@14 I J@2 K L M@2 ~@7 N ~@13>".pickRestart({
  A: "~@2 b4 c#5", B: "b4 c#5", C: "e5", D: "a4@7 e6 d6@8", E: "c#5 b4", F: "a4 b4", G: "a4@12 ~ a4 d5 a5",
  H: "e5@3 ~@5", I: "b4 c#5 b4@2", J: "[c#5@8 e5@16 a4@7 e6]/2", K: "d6 c#5", L: "b4 a4",
  M: "[b4@8 a4@12 ~ a4 d5 a5 e5@6 ~@2]/2", N: "~@4 e5@3 ~",
})).s("gm_flute").gain(0.22).pan(0.3)

// chords · piano
const piano = note(`<
  ~@17 A B C D E F G@2 H I J K J K J L J M J K J K J L J N O P@3 Q R S@2 T U V W X Y Z AA Z AA AB AC AD AE Z AA Z AA AB
  AC AF AG@3 ~@3
>`.pickRestart({
  A: "a2 e2", B: "~ c#5 e5 a4 e2@4, a2@4 b4@3 ~", C: "c#5@6 b4 a4 e2@8, a2@4 b4@3 ~",
  D: "~ e4 c#5 ~ b4 c#5@3, a2 ~, ~@3 e5@3 ~@2", E: "~@4 c#5@3 ~ [c#4,e4]@7 ~, e4@3 ~@5",
  F: "[c#4,e4]@7 ~ e4@4 a4@2 e4@2, ~@8 c#4@7 ~", // C#m
  G: "[f#4@2 ~ f#4 f#5@2 ~ f#4@2 ~@2 f#4 b4@2 e5@2, d4@4 ~@5 d4@2 ~@5, ~@4 a4@4 ~@4 a4@7 ~ a4@4 ~@8]/2",
  H: "a3!2 ~ a3 ~ b3 [b3,e4]@2, d4 [d4,f#4] [d4,e4] ~", // E5 D Dsus2
  I: "[d4,f#4]@3 ~@3 a3@2 [b3,d4,f#4]@4 [b3,d4,f#4]@4, ~ [d4,f#4] ~@2", J: "[a3,c#4,e4]!2 [f#3,a3,d4]!2",
  K: "[g#3,b3,e4]!2 [a3,c#4,e4]!2", L: "[f#3,b3,d#4]!2 [f3,a3,d4]!2", M: "[a3,b3,e4]!2 [g#3,b3,e4] [a3,b3,e4]",
  N: "a4 g#4 a4 e5@5 [e4,g#4]@4 [e4,a4]@4", O: "~@2 a4 g#4 a4 g#4 a4@5 ~@5, [a3,c#4] ~@3",
  P: "[~@2 a4 g#4 a4@2 g#4 ~ [a3,d4]@4 [a3,d4]@4 [a3,d4]@4 [f#3,a3,d4]@4 [a3,b3,d4]@4 [a3,b3,d4]@4 ~@4 d4@4 a2@8, [a3,c#4]@7 a4@25 e2@5 ~@11, ~@33 b2@5 ~@10, ~@34 e3@5 ~@9, ~@35 a3@5 ~@8]/3", // D5 D Bm7 A
  Q: "e2@4 ~ c#5 e5 a4, ~ a2", R: "e2@8 c#5@6 b4 a4, b4@3 ~@5",
  S: "[b4@6 ~@4 e4@2 c#5@2 ~@2 b4@2 c#5@6 ~@4 c#5@3 ~, ~@7 e5@3 ~@2 e4@3 ~]/2", T: "[c#4,e4]@7 ~ [c#4,e4]@7 ~",
  U: "e4@2 a4 e4 f#4@2 ~ f#4, c#4@7 ~ d4@8, ~@3 a4", V: "f#5@2 ~ f#4@2 ~@2 f#4, ~@2 a4@3 d4@2 ~, ~@3 a4",
  W: "b4@2 e5@2 a3!2 ~ a3, ~@2 d4 [d4,f#4]", X: "~@2 b3@2 [b3,e4]@4 [d4,f#4]@3 ~@3 a3@2, [d4,e4] ~@2 [d4,f#4]",
  Y: "[b3,d4,f#4]!2 [a3,c#4,e4]!2", Z: "[f#3,a3,d4]!2 [g#3,b3,e4]!2", AA: "[a3,c#4,e4]!4",
  AB: "[f#3,a3,d4]!2 [f#3,b3,d#4]!2", AC: "[f3,a3,d4]!2 [a3,c#4,e4]!2", AD: "[f#3,a3,d4]!2 [a3,b3,e4]!2",
  AE: "[g#3,b3,e4] [a3,b3,e4] [a3,c#4,e4]!2", AF: "[f#3,a3,d4]@4 [f#3,a3,d4]@4 a4 g#4 a4 e5@5",
  AG: "[[e4,g#4]@4 [e4,a4]@4 ~@2 a4 g#4 a4 g#4 a4@5 ~@7 a4 g#4 a4@2 g#4 a4@10 ~@7, ~@8 [a3,c#4]@4 ~@12 [a3,c#4]@7 ~@17]/3", // E A5 A
})).s("gm_piano").gain(0.4).pan(0.7)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note("<~@17 A@2 B@2 C@2 D E@2 F ~@16 G H@7 I@2 J K L M ~@15 N@2 O@4>".pickRestart({
  A: "[~@15 a3, a2@6 a3@6 d4@7 ~ e4@6 e3@5 ~, ~@2 e3@6 e2@6 a3@4 e3@6 e2@7 ~, ~@2 e4@3 e3@3 a2@3 a3@3 d4@2]/2",
  B: "[~@15 a3, a2@6 a3@6 d4@7 ~ c#4@6 e3@5 ~, ~@2 e3@6 e2@6 a3@4 e3@6 b3@7 ~, ~@2 e4@3 e3@3 a2@3 a3@3 c#4@2]/2",
  C: "[~@16 c#4 ~ e3@2 ~@2 e3@4 ~@2 a3@3 ~, b3@6 g#3@6 c#4@4 ~@4 c#4@11 ~, ~@2 e3@5 ~ a2@5 ~ a3@5 ~@7 e4@4 ~@2, ~@4 e4@6 e3@5 ~@17]/2",
  D: "[a3,d4,f#4]!4", E: "[[a3,c#4,f#4]@2 [a3,c#4,f#4]@2 b3 e3 ~ b3 a3 d3 ~ a3 b3 e3 ~ b3, ~@6 e4@3 ~ e4@2 ~@2 e4@2]/2",
  F: "a3 d3 ~ a3 ~ f#3 ~@2, ~ d4 b3 ~", G: "~@2 e4@2 ~@3 d4, c#3 d3, ~@2 a3@8 ~ a3@2 e4@2 ~, ~@6 f#4 ~",
  H: "[c#3@2 e3@2 c#4@3 ~ [f#3,a3]@6 ~@16 e4@10 ~@30 a3@2 ~@30 a3@2 ~@6 g#3@2, ~@4 [d3,d4]@5 d4@4 ~ b3@5 ~@3 e4@3 e3@3 a2@3 a3@3 d4@2 ~@2 e4@3 e3@3 a2@3 a3@3 c#4@2 ~@2 e4@2, ~@14 f#3@8 ~@2 e3@10 ~@6 a2@6 a3@6 d4@7 ~ e4@6 e3@5 ~@3 e3@6 e2@6 a3@4 e3@6 b3@7 ~ b3@6 ~@2, ~@16 a3@8 ~@2 a3@10 ~@6 e3@6 e2@6 a3@4 e3@6 e2@7 ~ a2@6 a3@6 d4@7 ~ c#4@6 e3@5 ~@3 e3@5 ~]/7", // F#m D
  I: "[~@8 c#4 ~ e3@2 ~@2 e3@4 ~@2 a3@3 ~ [a3,d4,f#4]@4 [a3,d4,f#4]@4, a2@4 c#4@4 ~@4 c#4@11 ~@9, ~@2 e3@4 a3@5 ~@7 e4@4 ~@10]/2", // D
  J: "[a3,d4,f#4]!2 [a3,c#4,f#4]!2", K: "b3 e3 ~ b3 a3 d3 ~ a3, ~@2 e4@3 ~ e4@2",
  L: "b3 e3 ~ b3 a3 d3 ~ a3, ~@4 e4@5 ~@3 d4@4", M: "~ f#3 ~@6, b3 ~@3",
  N: "[~@12 e4@4 ~@6 d4@2 c#3@2 e3@2 c#4@3 ~, ~ c#3 d3 ~, ~@10 a3@8 ~ a3@2 e4@2 ~@9, ~@10 f#4 ~@5]/2",
  O: "[[d3,a3,d4]@7 ~@3 e4@14 ~@10 e4@25 ~@5, f#3@6 ~ e2@16 ~@5 a3@4 b3@27 ~@5, ~@8 [b2,e3]@16 a2@35 ~@5, ~@9 [a3,b3]@14 ~@3 e3@33 ~@5, ~@30 c#4@29 ~@5]/4", // D5 E5 Asus2
})).s("gm_acoustic_guitar_steel").gain(0.22).pan(0.3)

// chords · synth brass 2
const synth_brass_2 = note("<~@5 A@4 B@4 C D ~@63>".pickRestart({
  A: "[c#3@2 d3@2 c#3@2 d3@2 c#3@2 d3@2 c#3@2 [g#3,b3] [a3,c#4], a3@7 ~]/4", // G#m A
  B: "[[g#3,b3] ~@4 d4 [c#4,f#4] [b3,e4], ~ [a3,c#4]@3 a3@4, ~ b3 f#4 ~, ~@3 e4@2 ~@3]/4", C: "[a3,d4] [g#3,b3]",
  D: "a3, f#3 ~",
})).s("gm_synth_brass_2").gain(0.21).pan(0.6)

// bass · contrabass
const bass_2 = note("<A B C D@2 ~@73>".pickRestart({
  A: "a2", B: "a2@3 a2", C: "a2 f#2", D: "[e2@31 ~]/2",
})).s("gm_contrabass").gain(0.26).pan(0.8)

// drums · kick
const kick = s("bd").struct(`<
  ~@17 A@3 B A@5 C D E D F D E D G D E D H D I D A@3 J@5 K J@4 L M@2 N M O M N P O M N M Q M I R J@2 ~@4
>`.pickRestart({
  A: "x", B: "x ~@6 x", C: "x ~@6 x ~@8", D: "x ~@2 x!2 ~@3", E: "x ~@5 x ~ x ~@6 x", F: "x ~@5 x ~ x ~@2 x ~@3 x",
  G: "x ~@5 x ~ x ~@2 x ~@4", H: "x ~@5 x ~ x ~@2 x ~@2 x ~", I: "x ~@2 x!2 ~@2 x", J: "~ x", K: "~@3 x!2 ~@3",
  L: "~@8 x ~@6 x", M: "x ~@3 x ~@2 x", N: "x ~@6 x!2 ~@5 x ~", O: "x ~@2 x ~@4 x ~@5 x ~", P: "x ~@7 x ~@6 x",
  Q: "x ~@2 x ~@3 x!2 ~@5 x ~", R: "x!2",
})).gain(0.46)

// drums · rim
const rim = s("rim").struct("<~@17 A@5 ~ A@3 ~@17 A ~@2 A B@3 C@2 A B@2 C ~@16 A C ~@4>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2",
})).gain(0.41)

// drums · snare
const snare = s("sd").struct("<~@26 A B@15 ~@13 C D B@14 E ~@6>".pickRestart({
  A: "~ x", B: "~ x ~ x", C: "~@5 x ~@2", D: "~@2 x ~ x!2 ~@6 x ~@3", E: "~ x ~@2",
})).gain(0.46)

// drums · low tom
const low_tom = s("lt").struct("<~@26 [~@7 x] ~@28 [~@7 x] [x ~@5 x!2 ~@8] ~@21>").gain(0.31)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@17 A@3 B A ~ A@3 C D E F G H I F G ~@4 J G K L M N O P Q@3 R S P Q@2 T U V W X Y Z AA X ~@4 U AB AC AD AE AF ~@4
>`.pickRestart({
  A: "x!3 ~ x ~ x!2", B: "x!3 ~ x ~@2 x", C: "x!3 ~@2 x ~@2", D: "~@2 x!11 ~ x!2", E: "x!13 ~ x!2", F: "~@2 x!11 ~@3",
  G: "x!12 ~@4", H: "~@2 x!2 ~@2 x!7 ~ x!2", I: "x!12 ~@2 x!2", J: "~@2 x!4 ~@2 x!6 ~@2", K: "~@2 x!10 ~@4",
  L: "~@2 x!3 ~@3", M: "~@3 x!3 ~ x", N: "x!2 ~@6", O: "~@4 x ~@5 x ~ x!2 ~@2", P: "~@5 x!2 ~", Q: "x ~ x!5 ~",
  R: "x!3 ~@2 x!2 ~", S: "x ~ x!2 ~@4", T: "x ~ x!3 ~@3", U: "~@10 x!2 ~@2 x!2", V: "x!5 ~ x!10",
  W: "x!5 ~ x!2 ~@2 x!4 ~@2", X: "x!5 ~ x ~ x!8", Y: "x!4 ~@6 x!2 ~@2 x!2", Z: "x!5 ~@3 x!8",
  AA: "x!4 ~@2 x!2 ~@2 x!2 ~@2 x!2", AB: "x!6 ~@2 x!8", AC: "x!4 ~ x!3 ~@2 x!2 ~@2 x!2", AD: "x!9 ~@7", AE: "~@5 x!3",
  AF: "x!6 ~@2",
})).gain(0.21)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@17 A@3 B A ~ A B A B C@3 ~ C ~ C ~@8 D E F G H I@3 H J H I H J ~ K@2 L ~ K ~ L ~@8 M N ~@4
>`.pickRestart({
  A: "~@3 x ~ x ~@2", B: "~@3 x ~@4", C: "~@13 x ~@2", D: "~@5 x ~ x ~ x!3 ~@4", E: "~@7 x ~@7 x", F: "~ x ~ x ~@12",
// … 45 more lines

More by Zero