Strudelify

Brivido felino

Celentano

KeyF minorTempo94 bpm
0:00/0:00
// Brivido felino — Celentano
// 94 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 13 tuba (copy of ch 5 choir aahs)
// note: Full arrangement: all 85 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(94/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(`<
  ~ A B C D E F G H I J A K L M N O P Q R S T@2 U V W X U Y Z AA AB AC ~ AD G H I J A K L M N O P Q R S T@2 U V W X U Y
  AE AF U V AG X U AH AI AJ AK AL U V W X U Y AM AN AO AP AQ AR AS AT AU ~
>`.pickRestart({
  A: "f1@2 ~@9 f1 f1@2 ~@10", B: "f1 ~@2 f2@2 ~@3 eb2 ~@2 c2 f2@3 ~@9", C: "bb1@2 ~@9 bb1 bb1@2 ~@9 bb1",
  D: "c2@2 ~@7 c2@3 c2@4 b1 [g1,a1] f1 [d1,e1] c1 c2@3", E: "db2@3 ~@8 db2 db2@3 ~@9", F: "c1@3 ~@5, c3 ~@23",
  G: "f2 ~@10 c2 f2@2 ~@10", H: "~@3 f2@2 ~@3 eb2 ~@2 c2 f2@3 ab2 ~@5 ab1 ~@2", I: "bb1@3 f2 ~@7 bb1 bb1@2 ~@10",
  J: "c2@2 ~@10 c2@4 ~@2 bb1@3 ab1@2 ~", K: "~@3 f2 ~@4 eb2 ~@2 c2 f2@3 ab2 ~@5 ab1@3", L: "bb1@2 ~@9 f1 bb1@3 ~@9",
  M: "c2@2 ~@9 g1 c2 ~@2 c2 ~@2 eb2@3 c2 ~@2", N: "db2@2 ~@9 db2 db2@3 ~@9", O: "c2@4 ~@5 c2@3 c2@2 ~ c2@2 ~@4 c2@2 g1",
  P: "f2@2 ~@9 c2 f2@2 ~@7 f2@2 eb2", Q: "d2 ~@2 d2@2 ~@4 d2@3 d2@3 ~@6 d3@2 ab2", R: "db2@2 ~@9 db2 db2@2 ~@10",
  S: "bb1@2 ~@9 bb1 bb1@3 ab1 ~@8", T: "[c2@2 ~@9 c2 c2@2 ~@7 c2@9 ~@6 c2 ~@11]/2", U: "f1@2 ~@9 f1 f1@2 ~@7 f1@3",
  V: "~@3 f1@3 ~@2 eb2 ~@2 c2 f1@3 ab1 ~@5 ab1@2 ~", W: "bb1@3 ~@8 bb1 bb1@2 ~@7 c2@3",
  X: "~@3 c2 ~@4 c2 ~@2 bb1 c2 ~@2 eb2@3 c2 ~@2 bb1@2 ab1", Y: "~@3 f1@2 ~@3 f1 ~@2 eb1 f1@2 ~ ab1 ~@5 ab1@3",
  Z: "bb1@3 ~@8 bb1 bb1@2 ~@9 bb1", AA: "c2@3 ~@8 c2 c2@2 ~ c2@2 ~@3 c2 ~@2 bb1", AB: "db2@3 ~@8 db2 db2@2 ~@10",
  AC: "g2 f2 db2 c2@4 ~", AD: "~@17 c2 f2@3 eb2@3", AE: "bb1@3 ~@8 ab1 bb1@2 ~@10",
  AF: "c2 ~@2 c2@2 ~@3 c2 ~@2 bb1 c2@2 ~@7 bb1@2 ab1", AG: "bb1@3 ~@8 ab1 bb1@2 ~@7 c2@3",
  AH: "~@3 f1@2 ~@3 eb2 ~@2 c2 f1@2 ~ ab1 ~@5 ab1@3", AI: "bb1@3 ~@8 ab1 bb1@2 ~@7 c2@2 c2",
  AJ: "c2@2 ~ c2@2 ~@3 c2 ~@2 c2 c2@2 ~ eb2@3 c2@2 ~ bb1@2 ab1", AK: "db2@3 ~@8 db2 db2@2 ~@6 db2 ~@2 bb1",
  AL: "g1@3 ~@2 db2@2 ~@2 c2@13 ~@2", AM: "bb1@3 ~@8 bb1 bb1@2 ~@7 bb1@2 ~",
  AN: "c2@2 ~ c2 ~@4 c2 ~@2 bb1 c2 ~@2 eb2@3 c2 ~@2 bb1@2 ab1", AO: "db2@3 ~@8 db2 db2@2 ~@7 f1@2 ~",
  AP: "g1@2 ~ f2 db2@3 ~@2 c2@2 ~@12 f1", AQ: "f1@3 ~@8 f1 f1@3 ~@8 f1",
  AR: "f1@2 ~ f2@2 ~@3 f2 ~@2 eb2 f2 ~@2 eb2@2 ~ f2@3 ~@3", AS: "f1@2 ~@9 f1 f1@2 ~@9 f1",
  AT: "f1@2 ~ f2@2 ~@3 eb2 ~@2 c2 c2@2 ~ eb2 ~@2 f2@3 ~@3", AU: "f1",
})).s("gm_fretless_bass").gain(0.58)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  ~@23 A@3 B C@2 D E F G H@2 ~@16 A@3 B C@2 D E A@3 B C@2 D E F G ~@4 C@2 D E F G ~@2 I@4
>`.pickRestart({
  A: "f6/3", B: "eb6 db6", C: "c6/2", D: "ab5", E: "bb5", F: "ab5@7 ~", G: "c6 ~ db5 eb5 ~@4", H: "[~ g6@7]/2",
  I: "[~@7 bb6@70 ~@19]/4",
})).s("gm_string_ensemble_2").gain(0.28)

// other · oboe
const oboe = note("<~@35 A@2 B ~ C@2 D E F@3 G H I@2 J K@2 L@2 M@4 N@2 O@2 P@5 Q@2 ~@2 R S@5 ~@7>".pickRestart({
  A: "[~@3 c4@2 ~ c4@2 ~ c4@2 ~ c4@3 bb3@3 ab3@3 bb3@6 c4@2 ~@4 f3@3 c4@3 bb3@3 ab3@3 g3@3]/2",
  B: "f3@2 ~ f3@3 c4@3 bb3@6 c4@4 ~@5",
  C: "[~@3 c4@2 ~ c4@2 ~ c4@2 ~ c4@3 bb3@3 ab3@3 bb3@6 c4@3 ~@3 f3@3 c4@3 bb3@3 ab3@3 g3@3]/2",
  D: "f3@2 ~ f3@3 eb4@3 f4@6 eb4@6 ~ bb3@2, ~@21 c4@2 ~", E: "c4@7 ~@5 c4@6 db4@5 ~",
  F: "[eb4@2 ~ eb4@2 ~ eb4@3 ab3@2 ~ ab3@3 ~@6 f4@5 ~ f4@2 ~ f4@3 e4@2 ~ e4@4 ~@2 c4@3 g4@6 ab4@6 g4@6 f4@6 ~ bb3@2, ~@69 c4@2 ~]/3",
  G: "ab3@7 ~@5 ab3@5 ~ bb3@5 ~", H: "c4@3 db4@3 c4@3 db4@2 ~ c4@3 ab3@3 ~@3 bb3@3",
  I: "[c4@3 db4@3 c4@3 db4@3 c4@3 ab3@3 bb3@3 c4@16 ~@11]/2", J: "~@12 f4@5 ~ g4@5 ~",
  K: "[ab4@3 g4@2 ~ g4@3 f4@2 ~ f4@3 ab4@2 ~@4 ab4@5 ~ g4@3 g4@3 f4@3 f4@3 ~@6 ab4@3]/2",
  L: "[bb4@3 ab4@3 ab4@3 g4@2 ~ g4@3 bb4@2 ~@4 bb4@6 ab4@3 ab4@3 g4@2 ~ g4@3 ~@3 f4@3 g4@3]/2",
  M: "[ab4@3 g4@3 g4@3 f4@2 ~ f4@3 ab4@2 ~@4 ab4@6 g4@2 ~ g4@3 f4@3 ab4@3 g4@3 c4@3 db4@6 ab4@9 ~@6 db4@3 eb4@6 bb4@5 ~@4 f4@6 g4@5 ~]/4",
  N: "[ab4@3 g4@2 ~ g4@2 ~ f4@2 ~ f4@3 ab4@2 ~@4 ab4@6 g4@2 ~ g4@3 f4@3 f4@3 ~@6 ab4@3]/2",
  O: "[bb4@3 ab4@2 ~ ab4@3 g4@2 ~ g4@3 bb4@2 ~@4 bb4@6 ab4@2 ~ ab4@3 g4@2 ~ g4@3 ~@3 f4@3 g4@3]/2",
  P: "[ab4@3 g4@2 ~ g4@3 f4@2 ~ f4@3 ab4@3 f4 ~@2 ab4@6 g4@3 g4@3 f4@3 ab4@2 ~ g4@2 ~ c4@3 db4@6 ab4@9 ~@6 db4@3 eb4@6 bb4@5 ~@4 bb4@3 ab4@3 g4@3 f4@12 ~@6 f4@2 ~ g4@2 ~ ab4@3]/5",
  Q: "[~@3 bb4@5 ~ g4@5 ~ ab4@6 g4@12 f4@10 ~@5]/2", R: "~@18 f4@2 ~ g4@2 ~",
  S: "[ab4@3 g4@2 ~ g4@3 f4@2 ~ f4@3 ab4@2 ~@4 ab4@6 g4@3 g4@3 f4@3 ab4@2 ~ g4@3 c4@2 ~ db4@6 ab4@10 ~@5 db4@3 eb4@5 ~ bb4@5 ~ g4@3 bb4@3 ab4@3 g4@3 f4@14 ~@13]/5",
})).s("gm_oboe").gain(0.6)

// chords · epiano1
const epiano1 = note(`<
  ~ A@2 B C D E F@2 G H F@2 I J K L M N O P Q@2 R@2 S@2 T@2 U V W X Y@2 Z@2 AA AB@3 AC AD AE AF AG AH AI AJ AK ~ R@2 S@2
  T@2 U V AL@2 S@2 T@2 U V W AM R@2 S@2 AN@2 AO V AP AQ AR@2 AS@4
>`.pickRestart({
  A: "[f2,f3,ab3,c4,eb4]/2", B: "[bb2,f3,c4,eb4], ab3@11 ~", C: "[bb3,e4,ab4]@3 [bb3,e4,g4]@4 ~, c3@7 ~",
  D: "[ab3,c4,f4] [f3,ab3,c4], db3@7 ~, ~@4 eb4@3 ~", E: "[c3,e3,g3,bb3,db4] ~@7",
  F: "[[f3,g3,c4,eb4]@11 ~ [f3,g3,c4,eb4]@4, f2]/2", G: "[bb2,f3,ab3,c4,db4]", H: "eb4@3 db4@4 ~, [c3,e3,g3], bb3@7 ~",
  I: "[bb2,f3,ab3,c4,db4]@7 ~", J: "[g3,bb3,e4]@3 [g3,bb3,e4], c3", K: "[db3,ab3,c4,f4]@7 ~",
  L: "ab4@3 g4@4 ~, [c3,bb3,e4]@7 ~", M: "[f2,f3,c4,eb4], ab3@7 ~", N: "[c4,f4]@3 [bb3,f4]@5, [d3,ab3]",
  O: "[db3,c4,f4,ab4]", P: "[bb2,ab3,c4,f4]", Q: "[[c3,bb3,e4,g4]@7 [c3,g3,bb3,e4]@7 [c3,g3,bb3,e4]@2]/2",
  R: "[[f2,ab3,c4,eb4]@7 [c4,eb4,g4]@4 [c4,eb4,ab4]@5, ~@7 f3@9]/2", // Fm7 Cm Ab
  S: "[[c4,db4,f4,ab4]@6 ~ ab4@4 g4@5, bb2@7 [c3,bb3,e4]@9]/2", // Dbmaj7 C7
  T: "[[f2,ab3,c4]@19 ~@2 [ab3,c4,eb4,g4]@15 [ab3,c4,eb4]@12, [eb4,g4]@7 f2@9]/2", U: "[bb2,db4,ab4], [c4,f4]@11 ~",
  V: "[g3,bb3,eb4] [g3,bb3,e4], c3", W: "[db3,ab3,c4]@11 ~, f4", X: "[db3,g3,bb3,f4] ~@2 [c3,e4,g4,bb4,eb5]@3 ~@2",
  Y: "[[g3,c4,eb4]@12 f3 g3 f4 eb4, f2]/2", Z: "[[g3,c4,eb4]@4 [g3,eb4]@3 [g3,c4], f2, ~@3 c4@2 ~]/2",
  AA: "[bb2,f3,ab3,db4]", // Bbm7
  AB: "[[e3,g3,bb3,eb4]@3 [e3,g3,bb3,db4] ~ [e3,g3,bb3,eb4] ~ [eb3,g3,c4]@9 [eb3,g3,c4]@4 [eb3,g3,c4]@4, c3@7 f2@17]/3", // Eb Edim Eb Cm
  AC: "[f3,ab3,c4,db4]@7 ~, bb2", AD: "eb4@3 db4@5, [c3,bb3], [e3,g3]@7 ~", AE: "[f3,ab3,c4,eb4]@7 ~, db3",
  AF: "f4@3 e4@5, [c3,g3,bb3]", AG: "[f2,eb3,g3,c4]@11 ~", AH: "[d3,ab3,c4,f4]@2 ~ [d3,ab3,c4,f4]@3 ~@2",
  AI: "[db3,ab3,c4,f4]", AJ: "[bb2,db4,f4], g3@11 ~", AK: "[c3,g3,bb3,e4]@7 ~",
  AL: "[[g3,c4,eb4]@5 [g3,c4,eb4] ~ [g3,c4,eb4]@5 [ab3,f4]@4, f2, ~@12 c4@3 ~]/2", // Cm Db
  AM: "[db3,g3,bb3,f4] ~@2 [c3,g3,bb3,db4,e4]@4 ~", // Gm7b5 C7
  AN: "[[f2,ab3,c4]@6 ~ [ab3,c4,eb4,g4]@5 [ab3,c4,eb4]@4, [eb4,g4]@7 f2@9]/2", AO: "[bb2,db4,ab4], [c4,f4]@7 ~",
  AP: "[db3,ab3,c4]@7 ~, f4", AQ: "[db3,e3,g3,bb3,db4] ~@2 [e3,g3,bb3,eb4]@4 ~, ~@3 c3@5",
  AR: "[[g3,c4]@6 ~ [g3,c4,eb4]@7 ~@2, f2@15 ~, eb3@7 ~@9]/2", // C5 Cm
  AS: "[[f2,eb3,g3,c4]@2 ~ [f2,g3,bb3,c4,eb4] ~@3 [f2,eb3,g3,bb3,c4]@24 ~]/4", // Cm Cm7
})).s("gm_epiano1").gain(0.26)

// chords · pad poly
const pad_poly = note("<~@5 A ~@26 B ~@5 C D ~@3 E ~@34 B ~@6>".pickRestart({
  A: "[f3,ab3,eb4]@7 ~", B: "[f3,g3,bb3,db4] ~@2 [e3,g3,bb3,eb4]@4 ~", C: "~@11 g4", D: "bb4 ~", E: "[ab3,c4,eb4]",
})).s("gm_pad_poly").gain(0.25).pan(0.7)

// chords · pad poly · soft notes · C
const pad_poly_soft = note("<~@44 [ab3@9 g3@13 ~@2, [e3,c4]@11 ~] ~@40>").s("gm_pad_poly").gain(0.15).pan(0.7)

// other · lead 2 sawtooth
const lead_2_sawtooth = note("<~@29 A@2 B C ~@9 D E F G H I ~@2 J ~@6 A@2 ~@6 A@2 B C ~@16>".pickRestart({
  A: "[~ db5 ab5 c5 db5 ab5 c5 eb5@2 eb5 bb5 db5 eb5 bb5 db5 ~]/2", B: "~@2 c6 ab5 f5 c6 ~@2", C: "c6 ~@7",
  D: "~@12 eb5 f5 ~ eb5@3 db5 eb5 ~ db5 c5 ~", E: "bb4 ~", F: "~@7 g5", G: "bb5@7 ~@8 f5@3 ~@6",
  H: "~@5 eb5 f5@2 g5 f5 ~@11 bb4 c5 ~", I: "ab4 ~@3", J: "~@6 bb5@9 ab5 f5 bb5 ab5 f5 ~@2 c5 bb4",
})).s("gm_lead_2_sawtooth").gain(0.19)

// other · lead 2 sawtooth · soft notes
const lead_2_sawtooth_soft = note("<~@42 [eb4 ~@23] ~@3 [~@23 bb4] ~@3 [~@20 eb5 ~@3] [c5 ~@3] ~@33>")
  .s("gm_lead_2_sawtooth").gain(0.13)

// other · piano
const piano = note(`<
  ~@2 A@2 B C D ~@26 E F ~@2 B G H ~ I J K L M N O ~ P ~ Q R S ~ T ~@3 U V W@3 ~@2 X Y Z AA@2 AB AC AD@3 AE@2 ~ AF ~@2
  AG AH ~
>`.pickRestart({
  A: "[~@18 f5 ~@2 [f4,b4] ~ bb4@10 ~@15]/2", B: "~@20 c6 ~ db6 ~",
  C: "~ eb6@3 [c6,db6] bb5@4 ~ ab5@2 ~@2 eb5 ~ c5 ~ bb4 ab4 ~ e4 eb4 ~", D: "db4 ~@11",
  E: "~@6 [f5,g6]@2 g5 g6 ~@3 g6!2 g5 ~@4 g6 ~ bb6 ~", F: "g6 ~@2 g6 ~@13 g6@5 ~@2, ~@17 f6 ~@6",
  G: "db6 eb6 ~ db6@2 ~@4 db6@2 ~@6 bb5 ~ f5 e5 ~ d5 db5, ~@21 eb5@2 ~", H: "~ c5@5 ~@18", I: "~@15 ab5 ~@8",
  J: "~@4 ab5 ~ bb5 ~", K: "c6 ~@7, bb5 ~@23", L: "f5@11 ~ [e4,e5]@9 ~@2 f4, f4@3 ~@8 e4",
  M: "g4@3 ~@6 c5@5 ~ f5@5 ~@4, ~ [bb4,bb5]@3 ~@4", N: "c5@8 ~ bb4@9 ~@6, [d3,d4,f4]@19 ~@5",
  O: "~@15 f5@2 c5@2 ~ bb4@3 ~, ~@15 bb4 ~@8", P: "~@18 [f4,f5]@3 bb5@2 ~",
  Q: "~@6 f5@3 ~ ab4 ~ bb4@3 ~@9, ~@6 bb4 ~@17", R: "~@18 g4 ~ ab4 ~ bb4 ~", S: "c5 ~@23", T: "~@18 ab5 ~ bb5 ~@3",
  U: "~@15 [ab4,ab5] ~ bb5 ~@2 ab5 ~@3", V: "~@6 bb5 ~@5, ~@12 bb4 ~@11",
  W: "[[db5,f5] ~@20 [e4,eb5]@10 ~@5 f5@2 [bb4,c5] ~ ab4 ~ [bb4,db5] c5 bb4 ab4 bb4@5 ~@21, ~@36 bb4 ~@5 f5@2 ~@28]/3", // Db Emaj7 Bbsus2 Bbm
  X: "~@3 [eb4,eb5]@4 ~@3 [e4,e5]@11 ~@3", Y: "~ f4@7 ~ c5@10 ~@5, f5@3 ~@5",
  Z: "[d4,g4,db5] ~@2 [e4,bb4,eb5]@3 ~@2, ~@3 g4@2 ~@3", // G Eb
  AA: "[~@8 g6@2 bb6 ~ ab6@2 ~@2 g6@2 ~@2 e6@2 ~ g6@2 ~ e6 f6 ~ c6 eb6@2 ~@4 [bb4,f5] g5 ~ [f5,ab5] ~ g5 ~@5 eb5, ~@8 gb6 ~@27 bb5@2 ~ ab4@2 ~@7]/2", // Bb5 Fm
  AB: "c5@3 db5@2 ~@5 [f3,ab3,bb3,db4]@5 ~ [ab3,bb3,db4,f4]@2 f5 ~ ab5 bb5 ~ c6", // Bbm7
  AC: "db6@2 ~ db6 ~ c6 [e3,g3,bb3,eb4]@3 ~ bb5 ~ ab5 ~ f5 ~@2 db5 [e5,e6]@3 [f5,f6]@2 ~", // Eb E F
  AD: "[g5@2 [g5,g6] ~ [g5,g6] g6 g5 [g5,g6] g6!3 ~@9 [eb5,eb6] c5 ~ c5 [f5,f6] ~@2 [eb5,eb6] ~ [c5,c6] ~@12 ab5 ~ f5 e5 ~@2 db5@2 ~ db5 eb5 ~ f5@2 ~ c5 ~ eb5@2 ~ d5@2 ~ f5 c5 ~ db5 ~@3, ~@9 g5@3 ~@8 [ab3,c4,eb4,g4]@11 ~@16 eb5@2 ~@23]/3", // G Eb F Eb C Abmaj7
  AE: "[~@5 bb4 c5 bb4 ~ ab4 ~@8 [ab4,c5]@2 ~ [ab4,c5]@5 ~@10 c5@2 ~@10]/2", AF: "~@3 bb6@2 ~@3",
  AG: "~@3 bb4 ~@8 f5 ab5 bb5 ~ [c6,db6] eb6 ~ [f6,ab6] ~ bb6@3", // Dbmaj7 Fm
  AH: "~@6 eb6@3 ~ c6@2 f6@2 ~@2 c6@2 g5@3 bb5@3, ~@4 bb6@4 ~ g6@2 ~@13",
})).s("gm_piano").gain(0.48).pan(0.7)

// other · piano · soft notes
const piano_soft = note(`<
  ~@2 A ~@2 B ~@27 C D ~@3 E ~@2 F ~@3 G ~@4 H I ~ J ~@5 K ~ L@2 ~@7 M ~ N ~@4 O ~@4 P Q R
>`.pickRestart({
  A: "~@17 f4 ~@6", B: "~@15 db5 ~@8", C: "~@10 g5 ~ [g5,g6] g5 ~ g6@2 g5 ~@6", D: "~@6 eb6 ~ eb6 ~@15",
  E: "~@18 g5 ~@5", F: "~@17 f5@4 db5@2 ~", G: "gb4 ~@23", H: "~ e5@7 ~@16", I: "~@8 c5 ~@6 ab4 ~@8", J: "~ eb5 ~@6",
  K: "~@21 ab5 ~@2", L: "[~ c5 ~@19 bb4@10 ~@17]/2", M: "~@17 g4 ~@6", N: "~@15 e5 ~@8", O: "~@11 bb4 ~@3 bb4@3 ~@6",
  P: "~@5 c5@2 ~@17", Q: "~@14 ab5@3 ~@7", R: "~ f5@6 ~@17",
})).s("gm_piano").gain(0.24).pan(0.7)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~ A ~@12 B@2 ~ C ~ D E F@2 ~@19 B@2 ~ C ~ D E G H@2 ~@17 I ~@8 J@2 ~@2 K@3
>`.pickRestart({
  A: "[g3,c4,eb4]", B: "[~@26 ab4@21 ~, ~@23 [ab3,db4]@24 ~, ~@12 eb4@11 ~, ~@25 f4@22 ~]/2", C: "[c4,eb4,g4]@3 ~",
  D: "[f3,c4,f4,ab4]@7 ~", E: "~@3 c4@3 ~@2, ~@3 c3@5 ~@16, ~@5 f3@13 ~@6",
  F: "[~@2 [bb3,e4,g4]@4 ~ [g3,bb3,e4]@5 ~@4]/2", G: "g3@9 ~ [e4,g4] ~ [e4,g4] ~@2 g4@3 ~@6, bb3 ~, e4@7 ~@17",
  H: "[~@4 [g3,bb3,e4]@5 ~@7]/2", I: "[c4,eb4,g4,bb4]@2 ~@2 [c4,eb4] ~@3 c4 ~@15",
  J: "[~@24 [f3,c4]@23 ~, ~@23 eb3@23 ~@2]/2", K: "[~@6 [c4,eb4,g4]@7 ~@5, ~@21 bb4@31 ~@20]/3",
})).s("gm_electric_guitar_clean").gain(0.14).pan(0.3)

// chords · electric guitar clean · soft notes · Bbdim Eb Cm7
const electric_guitar_clean_2 = note(`<
  ~@49
  [~@5 [bb3,e4] ~@2]
  ~@19
  [~@4 bb4 ~@3 [eb4,g4,bb4] ~@3 [c4,eb4,bb4] ~@11]
  ~@9
  [ab3@23 ~]
  ~@5
>`).s("gm_electric_guitar_clean").gain(0.07).pan(0.3)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  ~@23 A B C D A B C E F@2 G ~@17 A B C D A B C H A B C D A B C E I J A B C D A B C E I J K@4 ~@2
>`.pickRestart({
  A: "[eb4,ab4,c5] ~@2 [eb4,ab4,c5]!2 ~ [eb4,ab4,c5] ~@2 [eb4,ab4,c5]@3 ~@3 [eb4,ab4,c5] ~@8", // Ab
  B: "[eb4,ab4,c5] ~@2 [eb4,ab4,c5] ~@2 [eb4,ab4,c5] ~@2 [eb4,ab4,c5]@3 ~@3 [eb4,ab4,c5] ~@8", // Ab
  C: "[f4,ab4,db5] ~@2 [f4,ab4,db5]!2 ~ [f4,ab4,db5] ~@2 [f4,ab4,db5]@3 ~@3 [f4,ab4,db5] ~@5 [f4,ab4,db5]@2 ~", // Db
  D: "[e4,g4,c5] ~@2 [e4,g4,c5]!2 ~ [e4,g4,c5] ~@2 [e4,g4,c5]@3 [e4,g4,c5]@4 ~@2 [e4,g4,c5]@4 ~@2", // C
  E: "~@3 [e4,g4,eb5]!2 ~ [e4,g4,bb4,eb5] ~@2 [e4,g4,bb4,db5]@3 ~@3 [e4,g4,bb4,eb5]@3 ~@6", // Em Eb Edim Eb
  F: "[~@4 [f4,ab4,c5] ~ [f4,ab4,c5] ~@2 [f4,ab4,c5] [ab4,c5] ~ [f4,ab4,c5] ~@11 g4 ~@8 [bb3,eb4,g4]@6 ~@9, ~@23 [bb3,db4,f4]@2 ~@23]/2", // Fm Ab Fm Eb Bbm
  G: "~@3 [eb3,f3,c4] ~@2 [eb3,f3,c4] ~@17", // F7
  H: "~@3 [e4,g4,bb4]!2 ~ [e4,g4,bb4] ~@2 [e4,g4,bb4,db5]@3 ~@3 [e4,g4,bb4,eb5]@3 ~@6", // Edim Eb
  I: "~@4 [f4,ab4,c5] ~ [f4,ab4,c5] ~@2 [f4,ab4,c5] [ab4,c5] ~ [f4,ab4,c5] ~@11", // Fm Ab Fm
  J: "[bb3,db4,f4]@2 ~@7 [bb3,eb4,g4]@6 ~@9", // Bbm Eb
  K: "[~@4 ab3 ~ ab3@4 ab3 ~ ab3@3 ab3@13 ab3 ~ ab3@4 ab3 ~ ab3@3 ab3@13 ab3 ~ ab3@4 ab3 ~ ab3@3 ab3@13 ab3 ~ ab3@4 ab3 ~ ab3@3 ab3 ~@8]/4",
})).s("gm_electric_guitar_muted").gain(0.16)

// drums · kick
const kick = s("bd").struct("<~ A@5 B A@25 C A D A@37 E A@5 C A@4 B ~>".pickRestart({
  A: "x!2", B: "x", C: "x ~@2 x ~@4", D: "x ~@10 x!2 ~@2 x ~ x ~@2 x!2 ~@2", E: "x ~@10 x!2 ~@8 x ~ x",
})).gain(0.51)

// drums · snare
const snare = s("sd").struct("<A B@5 C B@25 D B@45 D B@4 ~@2>".pickRestart({
  A: "~@21 x!3", B: "~ x ~ x", C: "~@3 x", D: "~ x ~@2",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B A C D C A C E B F G E C A C D C D G D B E C F G D C A B D H D I J K B C G C D B D C A G D B E C D G D C E C D C
// … 55 more lines

More by Celentano