Strudelify

Prima di tutto

Biagio Antonacci

KeyE♭ minorTempo62 bpm
0:00/0:00
// Prima di tutto — Biagio Antonacci
// 62 bpm, 4/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 67 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(62/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.

// chords · piano
const piano = note(`<
  ~@2 A@2 B@2 C@2 D E F G H@2 I J K L M N O P Q R S T U V W ~@4 D X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AL AK AN
  AO AP AQ AR AS AT AU@2 AV ~@5
>`.pickRestart({
  A: "[~@12 db5@7 ~@19 f5@6 ~@6 db5@4 b4@5 bb4@27 ~@10, ~@11 gb4@12 ~@73, ~@12 ab4@12 ~@7 ab4@19 ~@46, ~@19 b4@19 ~@6 eb5@10 ~@42]/2",
  B: "[~@13 f6@9 ~@8 b4@3 bb4@3 ~ b4@4 db5@17 bb4@4 db5@4 b4@4 bb4@4 b4@22, db5@5 ~@11]/2",
  C: "[~@7 db5@15 ~@3 f5@8 ~@2 eb5@6 db5@5 b4@4 bb4@25 ~@21, ab2@17 ~@15, ~@2 ab3@49 ~@45, ~@3 gb4@25 ~@5 gb4@19 ~@44, ~@5 bb4@25 ~@4 bb4@13 ~@49]/2",
  D: "[b3,db4,e4,gb4]@2 [db4,e4] b3 e4@2 gb4@2", E: "eb4@6 gb3 b3", F: "eb4@12 db4@11 ~, ~@4 gb3@3 ~",
  G: "[gb4,bb4]@2 ~ bb3", H: "[gb4@21 ~@3 b4@12 bb4@3 ab4@3 gb4@22 ~@20 gb3@12]/2", I: "~@2 eb4 db4",
  J: "bb3@24 f4@11 ~ f4@12", K: "gb4@2 ~", L: "[eb4,gb4,bb4]@17 ~ [eb4,gb4,b4]@28 ~@2",
  M: "[eb4,gb4,b4]@18 [eb4,gb4,b4]@29 ~", N: "[eb4,gb4,bb4]@17 ~ [eb4,gb4,bb4]@18 [eb4,gb4,ab4]@11 ~",
  O: "[eb4,f4,bb4]@8 ~ [eb4,f4,bb4]@6 eb4@2 ~ [eb4,gb4,bb4]@12 bb3@6 bb3@6 ~@6", // Ebsus2 Ebm
  P: "[eb4,gb4,bb4]@3 [eb4,gb4]@3 [eb4,gb4,ab4]@2, ~@6 b4@9 ~", Q: "[eb4,gb4,bb4]@6 [eb4,gb4,b4]@9 ~",
  R: "[eb4,gb4,bb4]@17 ~ [eb4,gb4,bb4]@18 [eb4,gb4,ab4]@12", S: "[eb4,f4,bb4]@17 ~ [eb4,gb4,bb4]@26 ~@4",
  T: "[gb4,bb4,eb5]@9 [gb4,bb4,eb5]@14 ~", U: "[gb4,bb4,eb5]@17 ~ [gb4,bb4,eb5]@28 ~@2",
  V: "[gb4,bb4,eb5]@6 eb4 ~@2 [gb4,bb4,eb5]@6 eb4 ~@2 [gb4,bb4,eb5]@27 ~@3, ~@9 eb4@2 ~@37", // Ebm
  W: "[eb4,f4,bb4]@8 ~ [eb4,f4,bb4]@8 ~ [eb4,gb4,bb4]@8 ~ [eb4,gb4,bb4]@5 ~ [f4,bb4]@5 ~ [eb4,gb4,bb4]@9, ~@33 eb4 ~@14", // Ebsus2 Ebm Bb5 Ebm
  X: "eb4@30 gb3@3 ~@3 eb4@4 db4@4 b3@4, ~@33 b2@8 ~@7", Y: "ab3@12 db4@11 ~, db4@19 ~@5 gb3@18 ~@6", Z: "[bb3,eb4] ~",
  AA: "[b3,db4,e4,gb4]@4 [db4,e4]@2 b3@2 e4@4 ~ [gb4,gb5]@3", AB: "eb4@18 gb4@18 ~@3 [b3,db4,gb4]@6 bb3@2 ~",
  AC: "[b3,eb4]@17 ~@31", AD: "~@35 f4 gb4@4 f4@4 eb4@4, ~@36 bb4@11 ~", AE: "gb4 gb4@31 ~@16, bb4@31 ~@17",
  AF: "[ab3,eb4,gb4,bb4]@16 ~@2 [ab3,eb4,gb4,bb4]@29 ~", AG: "[b3,eb4,gb4,bb4]@16 ~@2 [b3,eb4,gb4,bb4]@29 ~",
  AH: "[ab3,eb4,gb4,bb4]@8 ~ [ab3,eb4,gb4,bb4]@14 ~", AI: "[bb3,eb4,f4]@8 ~ [eb4,gb4,bb4]@14 ~",
  AJ: "[ab3,eb4,gb4,bb4,eb5]@14 ~@4 [ab3,eb4,gb4,bb4,eb5]@29 ~", // Ebm
  AK: "[b3,eb4,gb4,bb4,eb5]@15 ~@3 [b3,eb4,gb4,bb4,eb5]@28 ~@2", // Bmaj7
  AL: "[ab3,eb4,gb4,bb4,eb5]@15 ~@3 [ab3,eb4,gb4,bb4,eb5]@28 ~@2", // Ebm
  AM: "[bb3,eb4,f4,bb4]@15 ~@3 [eb4,gb4,bb4,eb5]@17 ~ [eb4,bb4,eb5]@11 ~, ~@18 g4 ~@5", // Bbsus4 Ebm Eb5
  AN: "[ab3,eb4,gb4,bb4,eb5]@7 ~@2 [ab3,eb4,gb4,bb4,eb5]@14 ~", AO: "[bb3,eb4,f4,bb4]@15 ~@3 [bb3,eb4,gb4,bb4]@26 ~@4",
  AP: "[ab3,eb4,gb4,bb4,eb5]@15 ~@3 [ab3,eb4,gb4,bb4]@28 ~@2", AQ: "[b3,eb4,gb4,bb4]@7 ~@2 [b3,eb4,gb4,bb4]@14 ~",
  AR: "[ab3,eb4,gb4,bb4]@7 ~@2 [ab3,eb4,gb4,bb4]@13 ~@2", // Ebm
  AS: "[bb3,eb4,f4,bb4]@8 ~ [bb3,eb4,f4,bb4]@6 bb3@2 ~ [bb3,eb4,gb4,bb4]@9 bb3@5 ~ bb3 ~@2 [bb3,eb4,gb4,bb4]@11 ~", // Bbsus4 Ebm
  AT: "[gb4,bb4,eb5]@14 ~@4 [gb4,bb4,eb5]@29 ~", AU: "[gb4,bb4,eb5]@15 ~@3 [gb4,bb4,eb5]@28 ~@2",
  AV: "[eb4,gb4,bb4]@5 ~@11", // Ebm
})).s("gm_piano").gain(0.35).pan(0.3)

// bass · electric bass finger
const bass = note(`<
  ~@17 A B A C A B D E D B D F G H I J K L M N O P M Q R A B S T A U D V D B W X Y Z AA AB AC B AD AE ~@5
>`.pickRestart({
  A: "ab1@17 ~ ab1@30", B: "b1@17 ~ b1@30", C: "eb1@17 ~ eb1@28 ~@2", D: "ab1@8 ~ ab1@15", E: "eb1@8 ~ eb1@15",
  F: "eb1@5 ~", G: "ab1@13 ~@5 ab1@30", H: "b1@13 ~@5 b1@30", I: "ab1@2 ~ ab1@5", J: "eb1@12 ~@6 eb2@29 ~",
  K: "db2@3 db1@5", L: "b1@17 ~ b1@24 gb1@6", M: "ab1@3 db1@5", N: "eb1@18 eb2@23 ~ eb2@6", O: "db2@9 db1@13 ~@2",
  P: "b1@3 b1@4 gb1", Q: "eb1@18 eb2@5 ~ eb2@24", R: "eb1@18 eb2@5 ~ eb2@12 eb2@3 db2@2 ~ b1@3 bb1@3",
  S: "ab1@17 ~ ab1@24 gb1@3 f1@3", T: "eb1@17 ~ eb2@21 gb2@2 ~ eb2@2 ~ bb1@2 ~", U: "b1@17 ~ b1@18 eb3@12",
  V: "eb1@15 bb1@2 ~ eb2@15 bb1@2 ~ eb2@3 gb2@2 ~ eb2@2 ~ bb1@2 ~", W: "ab1@16 ~@2 ab1@20 ~ b1@3 gb1@3 f1@3",
  X: "eb1@8 ~ bb1@2 ~ eb2@5 ~ eb2@3 bb1@5 ~ eb1@2 ~ eb1@5 ~ ab1@3 bb1@2 ~ db2@3 eb2@3", Y: "ab1@13 ~@5 ab2@30",
  Z: "b2@13 ~@5 db3@16 ~@2 b2@2 ~ gb2@2 ~ b1@2 ~ bb1@3", AA: "ab1@12 ~@6 ab1@20 ~ ab1@2 ~ gb1@3 f1@3",
  AB: "eb1@8 ~ eb2@5 ~ bb1@2 ~ db2@6 ~@3 db2@6 ab1@3 bb1@6 bb1@5 ~", AC: "ab1@17 ~ ab1@27 bb1@3",
  AD: "ab1@16 ~@2 ab1@24 gb1@3 f1@3", AE: "eb1@8 ~ eb2@15",
})).s("gm_electric_bass_finger").gain(0.56)

// other · acoustic guitar nylon
const acoustic_guitar_nylon = note("<~@17 A@2 B C D@2 E F G H I J ~@38>".pickRestart({
  A: "eb3@3 gb3@3 db4@3 b3@13 ~@2", B: "eb3@12 gb3@5 ~ gb3@18 ab3@12", C: "bb3@35 ~@13",
  D: "eb3@6 gb3@6 db4@6 b3@23 ~@7", E: "eb3@6 gb3@3 gb3@8 ~ gb3@18 ab3@12", F: "bb3@17 ~@7",
  G: "eb3@6 gb3@6 db4@6 bb3@29 ~", H: "eb3@6 gb3@6 db4@6 bb3@25 ~@5", I: "eb3@6 gb3@3 gb3@8 ~ eb3@18 ab3@12",
  J: "bb3 ~",
})).s("gm_acoustic_guitar_nylon").gain(0.35).pan(0.9)

// other · pad bowed
const pad_bowed = note("<~@37 A B C@2 D ~@25>".pickRestart({
  A: "~ ab5 db6 ab6", B: "gb6@2 ~", C: "[~@15 bb5@15 ~@2, db5@5 ~@11, ~@8 ab5@9 ~@15]/2", D: "bb5@47 ~",
})).s("gm_pad_bowed").gain(0.33)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  A B C D A B E D ~@6 F G@2 H@3 I H@3 I H@3 I H@3 J ~@2 K L M N O P@2 H@3 Q H@3 B R S B T U V U W X@2 Y Z ~@2 AA@3
>`.pickRestart({
  A: "gb3 e3", B: "eb3", C: "ab3 db3, ab2", D: "gb2@3 ~", E: "ab2 db2", F: "ab2 db3", G: "[~ eb4, eb3]/2", H: "b3",
  I: "gb3", J: "gb3@13 ~@3", K: "eb3 f3", L: "f3 gb3 ab3 bb3", M: "b3 ~@2 b3 ~@2 b3 ~@2 b3 ~@2", N: "b3 ~@11",
  O: "eb3 db4", P: "[~@2 f4 gb4@5, bb3 ~]/2", Q: "bb3", R: "ab3", S: "b2", T: "[eb2,eb3]", U: "[ab2,b3]", V: "[b2,b3]",
  W: "[eb3,bb3]", X: "[eb3@8 eb3@3 gb3@5, b3]/2", Y: "eb3@2 eb3 f3, bb3", Z: "eb3@12 bb3 gb3 f3 eb3, eb4@5 ~@3",
  AA: "[~ ab2@9 eb2@9 ~@5]/3",
})).s("gm_string_ensemble_2").gain(0.3).pan(1)

// chords · string ensemble 2
const string_ensemble_2_2 = note(`<
  A B@3 C D E F ~@3 G H I J K@2 L@3 M L@3 M L@3 M L@3 N ~@2 O@2 H P Q R@6 S@8 T U V W@5 ~ X@4
>`.pickRestart({
  A: "db4!2, gb4", B: "[db4@2 ~@6 bb3@3 ~, eb4@4 db4@7 ~, ~ b3@3 ~@2]/3", C: "bb4 ab4, db4", D: "db4@2 ~ db4, gb4",
  E: "gb4!2, db4", F: "[db4,ab4]@3 ~", G: "~@4 f4@3 gb4", H: "gb4", I: "bb4@6 b4 gb4", J: "gb4@6 eb4 db4",
  K: "[~@3 gb4, bb3]/2", L: "[eb4,gb4]", M: "[eb4,f4]", N: "[eb4,f4]@13 ~@3",
  O: "[~@6 f4 eb4, b3 bb3, ~ db4@2 ~, ~@4 eb4@3 ~]/2", P: "eb4@3 gb4 bb4@2 b4@2", Q: "~ f4, b3",
  R: "[f4@12 gb4@12 ab4@12 bb4@30 eb5@6 bb4@23 gb4@3 eb4@3 gb4@3 ab4@3 gb4@3 eb4@3 gb4@3 ab4@3 gb4@3 eb4@3 gb4@3 ab4@3 gb4@3 eb4@3 gb4@3 ab4@3 gb4@3 eb4@3 gb4@3 ab4@3 gb4@3 eb4@3 gb4@3 ab4@3 gb4@3 eb4@3 gb4@3 ab4@3 gb4@3 eb4@3 gb4@3 ab4@3 gb4@3 eb4@3 gb4@3 ab4@3 gb4@3 eb4@3 gb4@3 ab4@3 gb4@3 eb4@3 gb4@3 ab4@3 gb4@3 eb4@3 gb4@3 ab4@3 gb4@3 eb4@3 gb4@3 ab4@3 gb4@3 eb4@3 gb4@3 ab4@3 gb4@3 eb4@3 gb4@3 ab4@3 gb4@3 eb4@3 gb4@3 ab4@3 gb4]/6",
  S: "[~@2 eb4@3 gb4@3 ab4@3 gb4@3 eb4@3 gb4@3 ab4@3 gb4@3 eb4@3 gb4@3 ab4@3 gb4@3 eb4@3 gb4@3 ab4@3 [gb4,bb4]@3 [eb4,gb4]@3 [gb4,bb4]@3 [ab4,b4]@3 [gb4,bb4]@3 [eb4,gb4]@3 [gb4,bb4]@3 [ab4,b4]@3 [gb4,bb4]@3 [eb4,gb4]@3 [gb4,bb4]@3 [ab4,b4]@3 [gb4,bb4]@3 [eb4,gb4]@3 [gb4,bb4]@3 [ab4,b4]@3 [gb4,bb4]@3 [eb4,gb4]@3 [gb4,bb4]@3 [ab4,b4]@3 [gb4,bb4]@3 [eb4,gb4]@3 [gb4,bb4]@3 [ab4,b4]@3 [gb4,bb4]@3 [eb4,gb4]@3 [gb4,bb4]@3 [ab4,b4]@3 [gb4,bb4]@3 [eb4,gb4]@3 [gb4,bb4]@3 [ab4,b4]@3 [gb4,bb4]@3 [eb4,gb4]@3 [eb4,bb4]@3 [f4,b4]@3 [eb4,bb4]@3 [bb3,gb4]@3 [eb4,bb4]@3 [f4,b4]@3 [eb4,bb4]@3 [bb3,gb4]@3 [eb4,bb4]@3 [f4,b4]@3 [eb4,bb4]@3 [bb3,gb4]@3 [eb4,bb4]@3 [f4,b4]@3 [gb4,bb4]@3 [eb4,gb4]@3 [eb4,gb4]@3 [f4,ab4]@3 [eb4,gb4]@3 [b3,eb4]@3 [eb4,gb4]@3 [f4,ab4]@3 [eb4,gb4]@3 [b3,eb4]@3 [eb4,gb4]@3 [f4,ab4]@3 [eb4,gb4]@3 [b3,eb4]@3 [eb4,gb4]@3 [f4,ab4]@3 [eb4,gb4]@3 [b3,eb4]@3 [eb4,gb4]@3 [f4,ab4]@3 [eb4,gb4]@3 [b3,eb4]@3 [eb4,gb4]@3 [f4,ab4]@3 [eb4,gb4]@3 [b3,eb4]@3 [eb4,gb4]@3 [f4,ab4]@3 [eb4,gb4]@3 [b3,eb4]@3 [eb4,gb4]@3 [f4,ab4]@3 [eb4,gb4]@3 [b3,eb4]@3 [gb4,bb5]@3 [ab4,b5]@3 [gb4,bb5]@3 [eb4,gb5]@3 [gb4,bb5]@3 [ab4,b5]@3 [gb4,bb5]@3 [eb4,gb5]@3 [gb4,bb5]@3 [ab4,b5]@3 [gb4,bb5]@3 [eb4,gb5]@3 [gb4,bb5]@3 [ab4,b5]@3 [gb4,bb5]@3 [eb4,gb5]@3 [eb4,bb5]@3 [f4,b5]@3 [eb4,bb5]@3 [bb3,gb5]@3 [eb4,bb5]@3 [f4,b5]@3 [eb4,bb5]@3 [bb3,gb5]@3 [eb4,bb5]@3 [f4,b5]@3 [eb4,bb5]@3 [bb3,gb5]@3 [eb4,bb5]@3 [f4,b5]@3 ~]/8", // Gb Ebm Gb Abm Gb Ebm Gb Abm …
  T: "ab3@3 bb3@3 b3@2, eb4", U: "b3@3 gb4@3 db4@2, eb4", V: "eb4@2 eb4 f4",
  W: "[[eb4,gb4]@47 eb5@3 [eb4,bb4]@3 [gb4,eb5]@3 [ab4,f5]@3 [gb4,eb5]@3 [eb4,bb4]@3 [gb4,eb5]@3 [ab4,f5]@3 [gb4,eb5]@3 [eb4,bb4]@3 [gb4,eb5]@3 [ab4,f5]@3 [gb4,eb5]@3 [eb4,bb4]@3 [gb4,eb5]@3 [ab4,f5]@3 [bb4,gb5]@3 [gb4,eb5]@3 [bb4,gb5]@3 [b4,ab5]@3 [bb4,gb5]@3 [gb4,eb5]@3 [bb4,gb5]@3 [b4,ab5]@3 [bb4,gb5]@3 [gb4,eb5]@3 [bb4,gb5]@3 [b4,ab5]@3 [bb4,gb5]@3 [gb4,eb5]@3 [bb4,gb5]@3 [b4,ab5]@3 [bb4,gb5]@3 [gb4,eb5]@3 [bb4,eb5]@3 [b4,f5]@3 [bb4,eb5]@3 [gb4,bb4]@3 [bb4,eb5]@3 [b4,f5]@3 [bb4,eb5]@3 [gb4,bb4]@3 [bb4,eb5]@3 [b4,f5]@3 [bb4,eb5]@3 [gb4,bb4]@3 [bb4,eb5]@3 [b4,f5]@3 bb4@24 bb4@3 gb4@3 f4@3 eb4@3 ~@13, ~@47 gb4 ~@143 gb5@12 ~@37]/5", // Ebm Eb5 Ebm Db Ebm Eb5 Ebm Db …
  X: "[~@14 b3@4 db4@5 gb4@13 gb4@18 ~@10]/4",
})).s("gm_string_ensemble_2").gain(0.35).pan(0.7)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  A B C@2 D E F G H I@2 J F K L M@2 A@3 N O A O N O@3 N P@3 Q R S T@2 U ~ V@3 N@2 W X@8 Y Z@3 AA AB@4 ~@5
>`.pickRestart({
  A: "bb4@3 ab4", B: "gb4", C: "[gb4@7 ~]/2", D: "ab5", E: "gb5 b4", F: "b4", G: "bb4@3 ~", H: "e5@3 b4@5",
  I: "[bb4@6 bb4 b4@2 eb5@5 ab5@2]/2", J: "bb5@7 gb5", K: "db5@3 b4", L: "db5", M: "bb4/2", N: "bb4", O: "eb5",
  P: "gb5", Q: "eb5@9 eb5 bb4 gb4 f4 eb4 bb3 gb3", R: "gb4@3 ab4 gb4@4", S: "eb4", T: "[ab5@5 gb5 ab5 gb5]/2",
  U: "b4 ~@11", V: "[ab5@5 gb5 ab5 gb5@5]/3", W: "bb4@47 bb4",
  X: "[~@2 gb4@3 bb4@3 b4@3 bb4@3 gb4@3 bb4@3 b4@3 bb4@3 gb4@3 bb4@3 b4@3 bb4@3 gb4@3 bb4@3 b4@3 bb4@3 gb4@3 bb4@3 b4@3 bb4@3 gb4@3 bb4@3 b4@3 bb4@3 gb4@3 bb4@3 b4@3 bb4@3 gb4@3 bb4@3 b4@3 eb5@3 bb4@3 eb5@3 f5@3 eb5@3 bb4@3 eb5@3 f5@3 eb5@3 bb4@3 eb5@3 f5@3 eb5@3 bb4@3 eb5@3 f5@3 eb5@3 bb4@3 eb5@3 f5@3 eb5@3 bb4@3 eb5@3 f5@3 eb5@3 bb4@3 eb5@3 f5@3 eb5@3 bb4@3 eb5@3 f5@3 eb5@3 bb4@3 gb5@3 ab5@3 gb5@3 gb4@3 gb5@3 ab5@3 gb5@3 gb4@3 gb5@3 ab5@3 gb5@3 gb4@3 gb5@3 ab5@3 eb5@3 gb4@3 bb5@3 b5@3 bb5@3 gb5@3 bb5@3 b5@3 bb5@3 gb5@3 bb5@3 b5@3 bb5@3 gb5@3 bb5@3 b5@3 bb5@3 gb5@3 bb5@3 b5@3 bb5@3 gb5@3 bb5@3 b5@3 bb5@3 gb5@3 bb5@3 b5@3 bb5@3 gb5@3 bb5@3 b5@3 bb5@3 gb5@3 eb6@3 f6@3 eb6@3 bb5@3 eb6@3 f6@3 eb6@3 bb5@3 eb6@3 f6@3 eb6@3 bb5@3 eb6@3 f6@3 eb6]/8",
  Y: "~@2 bb5@3 [eb6,gb6]@3 [f6,ab6]@3 [eb6,gb6]@3 [bb5,eb6]@3 [eb6,gb6]@3 [f6,ab6]@3 [eb6,gb6]@3 [bb5,eb6]@3 [eb6,gb6]@3 [f6,ab6]@3 [eb6,gb6]@3 [bb5,eb6]@3 [eb6,gb6]@3 [f6,ab6]@3 ~", // Ebm Fm Ebm Eb5 Ebm Fm Ebm Eb5 …
  Z: "[gb4@4 gb4@4 gb4@3 ab4, [bb4,eb6]]/3", AA: "f4@24 gb4@23 bb5, bb5@47 ~",
  AB: "[~@2 gb5@3 bb5@3 b5@3 bb5@3 gb5@3 bb5@3 b5@3 bb5@3 gb5@3 bb5@3 b5@3 bb5@3 gb5@3 bb5@3 b5@3 eb6@3 bb5@3 eb6@3 f6@3 eb6@3 bb5@3 eb6@3 f6@3 eb6@3 bb5@3 eb6@3 f6@3 eb6@3 bb5@3 eb6@3 f6@3 eb6@3 bb5@3 gb6@3 ab6@3 gb6@3 gb5@3 gb6@3 ab6@3 gb6@3 gb5@3 gb6@3 ab6@3 gb6@3 gb5@3 gb6@3 ab6@3 bb6@3 gb6@3 f6@3 eb6@3 bb5@3 gb5@3 f5@3 eb5@3 ~@25]/4",
})).s("gm_string_ensemble_1").gain(0.25).pan(0)

// other · distortion guitar
const distortion_guitar = note("<~@28 A B C D@2 ~@34>".pickRestart({
  A: "~@7 eb3", B: "ab2@13 ~@5 ab2@29 ~", C: "b2@13 ~@5 b2@27 ~@3", D: "[ab2@13 ~@5 ab2@27 db3@39 ~@12]/2",
})).s("gm_distortion_guitar").gain(0.48).pan(0.2)

// other · electric guitar clean
const electric_guitar_clean = note("<~@24 A@4 ~@2 A@2 ~@35>".pickRestart({
  A: "[~@5 gb3 db4 bb3@4 ~@5]/2",
})).s("gm_electric_guitar_clean").gain(0.39)

// chords · string ensemble 2
const string_ensemble_2_3 = note("<~@7 A@8 B@2 ~@15 C@8 D@2 ~@19 E@6>".pickRestart({
  A: "[~@47 [db3,e3,gb3,b3]@4 ~@8 [db3,e3,gb3,b3]@4 ~@8 [db3,e3,gb3,b3]@4 ~@8 [db3,e3,gb3,b3]@4 ~@8 [b2,eb3,gb3,bb3]@4 ~@8 [b2,eb3,gb3,bb3]@4 ~@8 [b2,eb3,gb3,bb3]@4 ~@8 [b2,eb3,gb3,bb3]@4 ~@8 [ab2,eb3,gb3,b3]@4 ~@8 [ab2,eb3,gb3,b3]@4 ~@8 [db3,gb3,ab3,b3]@4 ~@8 [db3,gb3,ab3,db4]@4 ~@8 [eb3,gb3,bb3]@4 ~@8 [eb3,gb3,bb3]@4 ~@8 [eb3,f3,bb3]@4 ~@8 [eb3,f3,bb3]@4 ~@8 [db3,e3,gb3,b3]@4 ~@8 [db3,e3,gb3,b3]@4 ~@8 [db3,e3,gb3,b3]@4 ~@8 [db3,e3,gb3,b3]@4 ~@8 [b2,eb3,gb3,bb3]@4 ~@8 [b2,eb3,gb3,bb3]@4 ~@8 [b2,eb3,gb3,bb3]@4 ~@8 [b2,eb3,gb3,bb3]@4 ~@8 [ab2,eb3,gb3,b3]@4 ~@8 [ab2,eb3,gb3,b3]@4 ~@8 [db3,gb3,ab3,b3]@4 ~@8 [db3,gb3,ab3,db4]@4 ~@8 [eb3,gb3,bb3]]/8", // Dbm7 Bmaj7 Abm7 Dbsus4 Ebm Ebsus2 Dbm7 Bmaj7 …
  B: "[~@11 [eb3,gb3,bb3]@4 ~@8 [eb3,f3,bb3]@4 ~@8 [eb3,f3,bb3]@4 ~@8 [eb3,gb3,bb3]@4 ~@8 [eb3,gb3,bb3]@4 ~@8 [eb3,ab3,bb3]@4 ~@8 [eb3,gb3,bb3]@4 ~@9]/2", // Ebm Ebsus2 Ebm Ebsus4 Ebm
  C: "[~@47 [db3,e3,gb3,b3]@4 ~@8 [db3,e3,gb3,b3]@4 ~@8 [db3,e3,gb3,b3]@4 ~@8 [db3,e3,gb3,b3]@4 ~@8 [b2,eb3,gb3,bb3]@4 ~@8 [b2,eb3,gb3,bb3]@4 ~@8 [b2,eb3,gb3,bb3]@4 ~@8 [b2,eb3,gb3,bb3]@4 ~@8 [ab2,eb3,gb3,b3]@4 ~@8 [ab2,eb3,gb3,b3]@4 ~@8 [db3,f3,ab3,b3]@4 ~@8 [db3,f3,ab3,db4]@4 ~@8 [eb3,f3,bb3]@4 ~@8 [eb3,gb3,bb3]@4 ~@8 [eb3,f3,bb3]@4 ~@8 [eb3,gb3,bb3]@4 ~@8 [db3,e3,gb3,b3]@4 ~@8 [db3,e3,gb3,b3]@4 ~@8 [db3,e3,gb3,b3]@4 ~@8 [db3,e3,gb3,b3]@4 ~@8 [b2,eb3,gb3,bb3]@4 ~@8 [b2,eb3,gb3,bb3]@4 ~@8 [b2,eb3,gb3,bb3]@4 ~@8 [b2,eb3,gb3,bb3]@4 ~@8 [ab2,eb3,gb3,b3]@4 ~@8 [ab2,eb3,gb3,b3]@4 ~@8 [db3,gb3,ab3,b3]@4 ~@8 [db3,gb3,ab3,db4]@4 ~@8 [eb3,f3,bb3]]/8", // Dbm7 Bmaj7 Abm7 Db7 Db Ebsus2 Ebm Ebsus2 …
  D: "[~@11 [eb3,gb3,bb3]@4 ~@8 [eb3,f3,bb3]@4 ~@8 [eb3,gb3,bb3]@4 ~@8 [eb3,gb3,bb3]@4 ~@8 [eb3,gb3,bb3]@4 ~@8 [eb3,ab3,bb3]@4 ~@8 [eb3,gb3,bb3]@4 ~@9]/2", // Ebm Ebsus2 Ebm Ebsus4 Ebm
  E: "[~@47 [db3,e3,gb3,b3]@51 b2@54 ~@9 [ab2,db4]@42 [bb3,db4]@54 ~@31, ~@98 gb3@117 ~@73, ~@98 eb3@105 eb3@12 ~@73, ~@98 bb3@93 ~@97]/6", // Dbm7 Db5 Bbm
})).s("gm_string_ensemble_2").gain(0.45).pan(0.9)

// other · overdriven guitar
const overdriven_guitar = note("<~@57 A@5 ~@5>".pickRestart({
  A: "[~@9 gb4!3 f4 eb4@2 gb4@10 gb4!3 f4 eb4@2 gb4@10 e4!3 f4 eb4@2 e4@10 e4!3 f4 eb4@2 bb3@15 ~@2]/5",
})).s("gm_overdriven_guitar").gain(0.43).pan(0.1)

// other · overdriven guitar
const overdriven_guitar_2 = note("<~@57 A@5 ~@5>".pickRestart({
  A: "[~@9 bb5!3 ab5 gb5@2 bb5@10 bb5!3 ab5 gb5@2 bb5@10 ab5!4 gb5@2 ab5@10 ab5!4 gb5@2 f5@15 ~@2]/5",
})).s("gm_overdriven_guitar").gain(0.36)

// drums · kick
const kick = s("bd").struct("<~@29 A@12 B A@7 C A@3 D A@3 E A@4 ~@5>".pickRestart({
  A: "x ~@2 x ~@4", B: "x ~@7 x ~@6 x", C: "x ~@5 x ~@8 x", D: "x ~@5 x ~@2 x!2 ~@5", E: "x",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct("<~@28 A B@3 C B@8 C B@15 C B@4 ~@5>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2",
})).gain(0.56)

// drums · low tom
const low_tom = s("lt").struct("<~@28 [~@15 x] ~@12 [~@7 x] ~@15 [~@11 x!2 ~@3] ~@9>").gain(0.64)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@30 A ~@2 B@2 ~ C B@2 ~ C ~@2 A ~ D ~ A ~@3 A ~@3 A ~@3 A ~@7>".pickRestart({
  A: "~ x", B: "~@11 x ~@4", C: "~@10 x ~@2 x ~@2", D: "~@3 x ~@12",
})).gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct("<~@28 [~@7 x] ~@12 [~@13 x ~@2] ~@15 [~@9 x ~@6] ~@9>").gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@28 A ~@3 B ~@2 C ~@3 C ~ D ~@8 E ~@6 E ~@3 E ~@5>".pickRestart({
  A: "~@21 x ~ x!3 ~ x!3 ~@18", B: "~@6 x!2", C: "~@14 x!2", D: "~@5 x ~@2", E: "~@7 x",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@28 [~@13 x ~@2] ~@12 [~@3 x] ~@15 [~@3 x ~@4] ~@9>").gain(0.64)

// drums · crash
const crash = s("cr").struct("<~@28 A B ~@12 B ~@7 B ~@2 C B ~@3 B ~@8>".pickRestart({
  A: "~@5 x ~@2", B: "x", C: "~@15 x",
})).gain(0.32)

stack(
  piano, bass, acoustic_guitar_nylon, pad_bowed, string_ensemble_2, string_ensemble_2_2, string_ensemble_1,
  distortion_guitar, electric_guitar_clean, string_ensemble_2_3, overdriven_guitar, overdriven_guitar_2, kick, snare,
  low_tom, hihat, hihat_soft, mid_tom, open_hat, high_tom, crash
)

More by Biagio Antonacci