Strudelify
Penso Positivo cover art

1994 · Lorenzo 1994

Penso Positivo

Jovanotti

KeyA minorTempo135 bpm
0:00/0:00
// Penso Positivo — Jovanotti
// 135 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 7 trombone (copy of ch 5 muted trumpet)
// note: Full arrangement: all 164 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(135/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 B C B C D E F G H I J K@2 L M N O P Q R S T U V W X@2 Y@2 Z@2 AA AB AC AD AE AF AG AH AI AJ AI AJ AI AJ AI AJ
  AI AJ AI AK AI AJ AI AJ AL ~@4 AI AJ AI AJ AI AJ AM AN AO AP@7 AQ AR AS AT AS AT AS AT AU AT AS AT AS AT AS AT AV AW
  AT AS AT AS ~ AX AY ~@4 AZ BA BB BC@8 BD BE BF BG BH BI ~@3 BJ BK BL BM BN ~@4 BO BP@2 BQ@2 BR@2 BS BT BU BV BW BX BY
  BZ CA CB CC CD ~@3 CE@2 CF@2
>`.pickRestart({
  A: "~@6 a1@4 ~ c2@4 d2@4 ~ e2@3 e2", B: "d2 ~ g1 g#1@2 ~ a1@4 ~ c2@4 d2@4 ~ e2@4",
  C: "g2@2 ~ a2 ~@2 a1@4 ~ c2@4 d2@4 ~ e2@3 e2", D: "d2@2 g1 g#1@2 ~ a1@4 ~ c2@4 d2@4 ~ e2@4",
  E: "g2@2 ~ a2@2 ~ a1@2 ~@16", F: "g3@4 ~@2 a1@4 c2@4 ~ d2@4 e2@3 e2 ~", G: "d2 g1 ~ g#1@2 ~ a1@4 c2@4 ~ d2@4 e2@4 ~",
  H: "g2@2 ~ a2 ~@2 a1@4 c2@4 ~ d2@4 e2@3 e2 d2", I: "~ g1 g#1@2 ~ a1@4 ~ c2@4 d2@5 e2 d3 ~ c#3 c3",
  J: "~ a2 g2 ~ e2 a1@4 ~ c2@4 d2@4 ~ e2@3 e2 d2",
  K: "[~ g1 g#1@2 ~ a1@4 ~ c2@4 d2@4 ~ e2@4 g2@2 ~ a2 ~@2 a1@4 c2@4 ~ d2@4 e2@3 e2 ~ d2]/2",
  L: "g1 ~ g#1@2 ~ a1@4 c2@4 ~ d2@4 e2@4 g2@2", M: "~@2 a2@2 ~ a1@2 ~@17", N: "~@4 a1@4 ~ c2@4 d2@4 ~ e2@3 e2 d2 ~",
  O: "g1 g#1@2 ~ a1@4 ~ c2@4 d2@4 ~ e2@4 g2@2", P: "~ a2 ~@2 a1@4 ~ c2@4 d2@4 e2@3 e2 ~ d2 g1",
  Q: "~ g#1@2 ~ a1@4 c2@4 ~ d2@4 e2@4 ~ g2@2", R: "~ a2 ~@2 a1@4 c2@4 ~ d2@4 e2@3 e2 d2 ~ g1",
  S: "~ g#1@2 ~ a1@4 c2@4 d2@4 ~ e2@4 g2@2 ~", T: "a2 ~@2 a1@4 ~ c2@4 d2@4 ~ e2@3 e2 d2 ~ g1",
  U: "g#1@2 ~ a1@4 ~ c2@4 d2@4 ~ e2@4 g2@2 ~", V: "a2@2 ~ a1@4 c2@4 ~ d2@4 e2@3 e2 ~ d2 g1 ~",
  W: "g#1@2 ~ a1@4 c2@4 ~ d2@4 e2@4 ~ g2@2 ~",
  X: "[a2 ~@2 a1@4 c2@4 ~ d2@4 e2@3 e2 d2 ~ g1 g#1@2 ~ a1@4 ~ c2@4 d2@4 ~ e2@4 g2@2 ~ a2]/2",
  Y: "[~@2 a1@4 ~ c2@4 d2@4 ~ e2@3 e2 d2 ~ g1 g#1@2 ~ a1@4 ~ c2@4 d2@4 ~ e2@4 g2@2 ~ a2]/2",
  Z: "[~@2 a1@4 c2@4 ~ d2@4 e2@3 e2 ~ g1@2 ~ g#1@2 ~ a1@2 ~@14 e2@4 d#2 [c#2,d2]]/2", // Dmaj7
  AA: "~@2 a1@4 c2@4 ~ d2@4 e2@3 e2 d2 ~ g1 g#1@2", AB: "~ a1@4 ~ c2@4 d2@4 ~ e2@4 g2@2 ~ a2 ~",
  AC: "~ a1@4 ~ c2@4 d2@4 ~ e2@3 e2 d2 ~ g1 g#1@2", AD: "~ a1@4 ~ c2@4 d2@4 e2@4 ~ g2@2 ~ a2 ~",
  AE: "~ a1@4 c2@4 ~ d2@4 e2@3 e2 ~ d2 g1 ~ g#1@2", AF: "~ a1@4 c2@4 ~ d2@4 e2@4 g2@2 ~@2 a2 ~",
  AG: "~ a1@4 c2@4 d2@4 ~ e2@3 e2 g1@2 ~ g#1@2 ~", AH: "a1@3 ~@2 c2@3 d2@3 a2@3 ~ g#2 [f#2,g2] ~@7",
  AI: "a1@4 ~ c2@4 d2@4 ~ e2@3 e2 d2 ~ g1 g#1@2 ~", AJ: "a1@4 ~ c2@4 d2@4 ~ e2@4 g2@2 ~ a2 ~@2",
  AK: "a1@4 ~ c2@4 d2@4 ~ e2@4 g2@2 ~ a2@2 ~", AL: "a1", AM: "a1@4 ~ c2@4 d2@4 ~ e2@3 e2 g1@2 ~ g#1@2 ~", AN: "a1 ~@11",
  AO: "~ g#1 g1 [e1,f#1] d#1 d1 ~@18, a1 ~@11", // Esus2
  AP: "[a1@4 c2@4 ~ d2@4 e2@3 e2 d2 ~ g1 g#1@2 ~ a1@4 ~ c2@4 d2@4 ~ e2@4 g2@2 ~ a2 ~@2 a1@4 c2@4 ~ d2@4 e2@3 e2 ~ d2 g1 ~ g#1@2 ~ a1@4 c2@4 d2@4 ~ e2@4 g2@2 ~ a2 ~@2 a1@4 ~ c2@4 d2@4 ~ e2@3 e2 d2 g1 ~ g#1@2 ~ a1@4 c2@4 ~ d2@4 e2@4 g2@2 ~@2 a2 ~@2 a1@4 c2@4 d2@4 ~ e2@3 e2 g1@2 ~ g#1@2 ~ a1@3]/7",
  AQ: "~@7 a1", AR: "~ c2@4 ~ d2@4 e2@3 e2 d2 ~ g1 ~ g#1@2 a1@4", AS: "~ c2@4 d2@4 ~ e2@4 g2@2 ~ a2 ~@2 a1@4",
  AT: "~ c2@4 d2@4 ~ e2@3 e2 d2 ~ g1 g#1@2 ~ a1@4", AU: "~ c2@4 d2@4 ~ e2@4 g2@2 ~ a2@2 ~ a1@4",
  AV: "~ c2@4 d2@4 ~ e2@4 g2@2 ~ a2 ~@2 a1@2 ~@2", AW: "~@7 g3@2 ~ a1@2", AX: "~@11 c3@2 ~ g2@2 ~ a2 c3 ~ e3@2 ~@2",
  AY: "~@5 d3 c#3 ~ c3@2 ~@4 g1 ~@2 g#1 ~@2 a1@3 ~", AZ: "~@19 a1@2 ~ a1@2", BA: "~@10 g1@8 ~ a1@3 a1@2",
  BB: "~@9 c2@7 ~@2 a1@2 ~ a1@2 ~",
  BC: "[~@18 a2@4 ~ g#2@4 g2@5 ~ e2 ~ d#2 d2 ~ c#2 c2 ~ b1 a1@4 c2@4 ~ d2@4 e2@3 e2 ~ d2 g1 ~ g#1@2 ~ a1@4 c2@4 ~ d2@3 d2 a2 ~ g#2 g2 ~ e2 d2 ~ c2 b1 ~ a1@4 c2@4 ~ d2@4 e2@3 e2 d2 ~ g1 ~ g#1@2 a1@4 ~ c2@4 d2@3 d2 ~ e2@2 ~ e2 g2@2 g2 a2 ~@2 a1@4 ~ c2@4 d2@4 ~ e2@3 e2 d2 ~ g1 g#1@2 ~ a1@4 ~ c2@4 d2@4 ~ e2@4 g2@2 ~ a2 ~@2 a1@4 c2@3]/8",
  BD: "~@2 d2@4 e2@3 e2 ~ d2 g1 ~ g#1@2 ~ a1@4 c2@3", BE: "~@2 d2@4 e2@4 g2@2 ~@2 a2@2 ~ a1@4 c2@3",
  BF: "~@2 d2@4 e2@3 e2 d2 ~ g1 g#1@2 ~ a1@4 ~ c2@3", BG: "~ d2@4 ~ e2@4 g2@2 ~ a2 ~@2 a1@4 ~ c2@3",
  BH: "~ d2@4 ~ e2@3 e2 d2 ~ g1 g#1@2 ~ a1@4 ~ c2@3", BI: "~ d2@4 e2@4 ~ g2@2 ~ a2 ~@2 a1@6 ~@2", BJ: "~@15 a1@4 ~@5",
  BK: "e2 ~@2 g2@6 a2@4 ~@2 a1@5 ~@4", BL: "e2@2 ~ g2@2 ~@2 g2@4 ~ e2@2 ~ a1@5 ~@4",
  BM: "e2 ~@2 g2@5 ~ a2@4 ~@2 a1@5 ~@4", BN: "e2@2 ~ g2@2 ~@2 g2@4 ~ e2@2 a1@2 g#1 [f#1,g1] [d#1,e1] d1 ~@4",
  BO: "~@15 g#1 [f#1,g1] [d#1,e1] d1 ~@5, ~@7 a1 ~@4", // Gmaj7 Emaj7
  BP: "[~@13 a1@4 ~ c2@4 d2@4 ~ e2@3 e2 d2 ~ g1 g#1@2 ~ a1@4 ~ c2@4 d2@2]/2",
  BQ: "[~ d2 ~ a2 g#2 ~ g2 e2 ~ d2 c2 ~ b1 a1@4 ~ c2@4 d2@4 e2@3 e2 ~ d2 g1 ~ g#1@2 ~ a1@4 c2@4 ~ d2@2]/2",
  BR: "[~ d2 e2@2 ~ e2 ~ g2!2 ~ a2 ~@2 a1@4 c2@4 ~ d2@4 e2@3 e2 d2 ~ g1 ~ g#1@2 ~ a1@4 c2@4 d2@3]/2",
  BS: "~@2 e2@4 g2@2 ~ a2 ~@2 a1@4 ~ c2@4 d2@3", BT: "~@2 e2@3 e2 d2 ~ g1 g#1@2 ~ a1@4 ~ c2@4 d2@3",
  BU: "~@2 e2@4 g2@2 ~ a2@2 ~ a1@2 [g1,g#1] [e1,f#1] d#1 d1 ~@6", BV: "~@12 a1@4 c2@4 ~ d2@3",
  BW: "~ e2@3 e2 ~ d2 g1 ~ g#1@2 ~ a1@4 c2@4 ~ d2@3", BX: "~ e2@4 g2@2 ~@2 a2 ~ a1@4 ~ c2@4 d2@4",
  BY: "~ e2@3 e2 d2 ~ g1 g#1@2 ~ a1@4 ~ c2@4 d2@4", BZ: "~ e2 ~ c#3 ~ c3 a2 ~ g2 ~ e2 a1@4 ~ c2@4 d2@4",
  CA: "~ e2@3 e2 d2 ~ g1 g#1@2 ~ a1@4 c2@4 ~ d2@4", CB: "e2@4 ~ g2@2 ~ a2 ~@2 a1@4 c2@4 ~ d2@4",
  CC: "e2@3 e2 d2 ~ g1 ~ g#1@2 ~ a1@4 c2@4 ~ d2@4", CD: "e2@4 g2@2 ~ a2@2 ~ a1@6 ~@8",
  CE: "[~@4 g3@4 ~@2 a1@4 c2@4 ~ d2@4 e2@3 e2 d2 ~ g1 ~ g#1@2 ~ a1@4 c2@4 d2@3 d2 ~ a2]/2",
  CF: "[g#2 ~ g2 e2 ~ d2 c2 ~ b1 a1@4 ~ c2@4 d2@4 ~ e2@3 e2 g1 ~@2 g#1@2 ~ a1@4 ~@11]/2",
})).s("gm_fretless_bass").gain(0.29)

// bass · fretless bass · soft notes
const bass_soft = note("<~@9 A B ~@24 C ~@6 D ~@54 E ~@54 F ~@6 G H ~@3>".pickRestart({
  A: "~@18 a2 a#2 [b2,c3] c#3 d#3 [e3,f3]", B: "~@3 [e3,f3] [c3,c#3,d#3] [a#2,b2] ~@18", C: "[a#1,b1] a1 ~@22",
  D: "~@17 [d#2,e2] [c2,d2] ~@5", E: "~@8 a2 a#2 [b2,c3] c#3 d#3 e3 f3 ~@2 [e3,f3] [c#3,d#3] [a#2,b2,c3] ~@4",
  F: "~@2 d3 ~@21", G: "~@22 a2 [a#2,b2]", H: "c3 c#3 [d#3,e3] f3 ~@3 [d#3,e3,f3] [c3,c#3] [a#2,b2] ~@14",
})).s("gm_fretless_bass").gain(0.13)

// chords · muted trumpet
const muted_trumpet = note(`<
  A ~@9 B C D E@2 F@3 G ~@7 H ~@3 I J K@2 L ~@7 M N@2 O@2 ~@6 P Q R@3 ~@20 S T U ~@3 V ~ W X Y ~@3 Z ~@3 Z ~@17 AA AB
  AC@7 AD AE AF@3 ~@20 AG AH AI@2 AJ AK AL AM@4 ~ AN AO AP AQ
>`.pickRestart({
  A: "~@6 [f#4,a4] ~@5 [g4,a#4,d#5]@12, ~@3 d5 ~@8", B: "~@6 [a4,e5,a5]@3 ~@12 [e4,g4] ~@2",
  C: "~ [f#4,a4] ~@4 [f#4,a4] ~@11 [g4,b4]!2 ~ [g4,b4]!2 ~", // F#m G
  D: "[g4,b4] [a4,c5] ~@10 [g4,c5] ~@2 [g#4,b4] ~@2 [a4,c5]@4 [g#4,b4] ~", // G Am C5 G#m Am G#m
  E: "[[a4,c5] [b4,c#5] [c5,d5] ~ [a4,c5] [a#4,c#5]@4 ~ [g#4,b4] [a4,c5]@4 ~ [f#4,a4] [g4,a#4] ~ [e4,g#4] [f4,a4] ~ [d4,g4] [d#4,f#4]@3 ~@9 d#4 ~ e4 c5 ~ e4 f4 ~ c#5 ~@4]/2", // Am Bsus2 Csus2 Am A#m G#m Am F#m …
  F: "[~@2 [d4,e4] ~ [d#4,f4] [a#4,c#5] ~ [d#4,f4] [e4,f#4] ~ [c5,d5] [e4,g4] ~ [f4,g#4] [c#5,f5] ~ f#4 [d5,f#5] ~@5 [c5,a5]@9 [b4,g#5] [c5,a5] ~ [b4,g#5] [a#4,g5] ~ [a4,f#5] [g#4,f5] ~ [g4,e5] ~@5 [g#5,d6]@13 ~@2 [f#5,b5]@2 ~ [g5,c6]@2 ~@3 [g4,a4] [e3,f3,b4,c5]]/3", // Dsus2 D#sus2 A#m D#sus2 Esus2 Csus2 Em Fm …
  G: "[d5,e5] [f5,g5] [d5,a5,b5] [e5,f5,g5,a5,a#5,b5,c6,d6] ~ e6@2 ~@17", // Dsus2 Fsus2 Bm7 Em7
  H: "~@5 [b4,f#5] ~@3 [c5,g5] ~@5 [c5,g5] ~@5 [c5,g5] ~@2", I: "~@22 [c5,e5] [d5,g5]", J: "~ [e5,a5] ~@22",
  K: "[~@8 [e5,g5]@6 [d5,f#5]@6 [c5,e5]@6 [a4,d#5]@16 ~@2 [g4,g5] ~@2 [g#4,g#5]]/2", // Em D C Adim G G#
  L: "~@2 [a4,a5] [d5,e5,g5] [a4,c5] ~@19", M: "~@3 [c4,f#4,a4]", N: "[[d4,g4,b4]@20 ~ [c4,f#4,a4]@3]/2",
  O: "[[b3,g4]@13 ~@3]/2", P: "~@15 a5 ~ g5 f#5 ~ a5 ~@2 g5", Q: "~@5 g5 ~@5 g5 ~@12",
  R: "[[d4,f#4,a4]@37 ~@5 [g4,b4,d5]@4 ~ [a4,c5,e5]@2 ~@8 [g4,b4,d5] ~ [g4,b4,d5] [a4,c5,e5] ~ [c5,e5] [g4,b4,d5] ~ [a4,c5,e5] ~@2 [g4,b4,d5] ~@2 [a4,c5,e5]]/3", // D G Am G Am C G Am …
  S: "~@13 e5 [c#5,f5] ~ [d5,f#5] [c#5,f5] ~ [c5,e5] ~@4, ~@13 c5@2 ~@9", // C# D C# C
  T: "~@3 a4@2 b4 [c5,d5,e5] [f5,g5] a5 ~@12 [a4,c5,e5]@3", U: "g4 f#4 [e4,f4] ~@21",
  V: "~@11 c4@2 ~ a4@2 e4 g4 ~@6, ~@10 a3@2 ~ e4@2 ~@9", W: "~@22 a4 ~", X: "~@22 [b4,f#5] ~",
  Y: "~@2 [c5,g5] ~@5 [c5,g5] ~@5 [c5,g5] ~@9", Z: "~@16 [c5,e5] [d5,g5] ~ [e5,a5] ~@4",
  AA: "b4@3 ~ a4@2 ~@3 g4 ~@2 a4@2 ~@10, ~@3 c5@2 ~@19", AB: "b4@3 c5 a4@2 ~@3 g4@2 ~@2 a5 ~@10",
  AC: "[b4@3 c5 a4@2 ~@3 g4 ~@2 a4 ~@10 b4@3 c5 ~ a4@2 ~@2 g4 ~@4 a5 ~@9 b4@3 c5@2 a4@2 ~@2 g4 ~@2 a4@2 ~@10 b4@3 c5 ~ a4@2 ~@2 g4@2 ~@3 a5 ~@9 b4@3 c5 a4@2 ~@3 g4 ~@2 a4 ~@11 b4@3 c5 a4@2 ~@3 g4 ~@3 a5 ~@10 b4@3 ~ a4@2 ~@3 g4 ~ a4@2 ~@10 b4@2, ~@73 c5 ~@10]/7",
  AD: "~ c5 ~ a4@2 ~@2 g4@2 ~@3 a5 ~@9 b4@2", AE: "~ c5 ~ a4@2 ~@2 g4 ~@2 a4 ~@11 b4@2",
  AF: "[~ c5 ~ a4@2 ~@2 g4 ~@3 a5 ~@4 [e5,a5,e6]@42 ~@14]/3", AG: "~@4 [a4,e5,a5] ~@3",
  AH: "~@3 [e4,g4] ~@3 [f#4,a4] ~@4 [f#4,a4] ~@11", // Em F#m
  AI: "[[g4,b4]!2 ~ [g4,b4]!2 ~ [g4,b4] [a4,c5] ~@9 [g4,c5] ~@2 [g#4,b4] ~@2 [a4,c5]@4 ~ [g#4,b4] [a4,c5] ~ [b4,c#5] [c5,d5] ~ [a4,c5] [a#4,c#5]@4 ~ [g#4,b4] [a4,c5]@4 ~ [f#4,a4] [g4,a#4]]/2", // G Am C5 G#m Am G#m Am Bsus2 …
  AJ: "~ [e4,g#4] [f4,a4] ~ [d4,g4] [d#4,f#4]@3 ~@9 d#4 ~ e4 c5 ~ e4 f4", // E F G5 D#m
  AK: "~ c#5 ~@6 [d4,e4] [d#4,f4] ~ [a#4,c#5] [d#4,f4] ~ [e4,f#4] [c5,d5] ~ [e4,g4] [f4,g#4] ~ [c#5,f5] f#4 ~ [d5,f#5]", // Dsus2 D#sus2 A#m D#sus2 Esus2 Csus2 Em Fm …
  AL: "~@5 [c5,a5]@9 [b4,g#5] [c5,a5] ~ [b4,g#5] [a#4,g5] ~ [a4,f#5] [g#4,f5] ~ [g4,e5]", // F E F E D# D C# C
  AM: "[~@5 [g#5,d6]@13 ~@2 [f#5,b5]@2 ~ [g5,c6]@2 ~@3 [e3,g4,a4,b4] [f3,c5] [d5,e5,f5] [g5,a5] [d5,e5,b5,c6] [f5,g5,a5,a#5,b5,d6] [e5,e6]@42 ~@20, ~@17 a5@2 ~@29]/4", // G#dim B5 C5 Em F5 Dm Gsus2 Cmaj7 …
  AN: "~@16 b4@3 ~ a4@2 ~@2, ~@19 c5@2 ~@3", AO: "~ g4 ~@2 a4@2 ~@10 b4@2 c5 ~ a4@2 ~@2",
  AP: "g4@2 ~@3 a5 ~@3 a4@11 a4@4, ~@3 d#5@5", AQ: "~@3 [g4,g5] ~@2 [g#4,g#5] ~@2 [a4,a5] ~@14",
})).s("gm_muted_trumpet").gain(0.49).pan(0.3)

// chords · muted trumpet · soft notes
const muted_trumpet_soft = note("<~@10 A ~@6 B C ~@26 D@2 ~@40 E ~@60 F ~@7 G@3 ~@5>".pickRestart({
  A: "~@9 g4 [e4,f4] d4 c4 ~@11", B: "~@23 [g3,a3]",
  C: "[b3,c4,d4,e4] [f4,g4,a4] [b4,c5] ~ a5 ~ d6 c6 [a5,b5] ~ g5 ~@13", D: "[e4@19 ~@5]/2", E: "g4 a4 ~ a4 ~@20",
  F: "~@15 g4 [e4,f4] d4 c4 ~@5", // Fmaj7
  G: "[~@5 [g3,a3,b3] [c4,d4,e4] [f4,g4,a4,b4] c5 ~@3 d6 [b5,c6] ~ g5 ~@56, ~@7 a5@19 ~@10]/3", // G C G7 Cmaj7
})).s("gm_muted_trumpet").gain(0.25).pan(0.3)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  ~@22 A B ~@2 C D ~@19 E ~@2 F@2 ~@13 G@2 H@2 ~ I ~@9 J K L M N O L M P M L M Q M L M ~ R S R T ~ U ~@10 V W V W X@2
  Y@2 Z@2 AA ~ AB ~ AA ~ AC AD AE AF AG ~@5 AH ~ AH ~ AH ~ AI ~@14 AJ ~ AK ~
>`.pickRestart({
  A: "~@17 [g4,c5,g5] ~ [g4,c5,g5]!2 ~ [g4,c5,g5]!2", B: "~ [g4,c5,g5] [g4,c5,g5]@3 f5 [f4,f#4,b4,e5] a#4 ~@16",
  C: "~@17 [g4,c5,g5]!2 ~ [g4,c5,g5]!2 ~ [g4,c5,g5]", // C5
  D: "[g4,c5,g5] ~@3 [f4,f#4,b4,e5,f5] ~ a#4 ~@17, ~ [g4,c5,g5]@2 ~@9", E: "[g4,c5,g5]@3 [f#4,f5] [f4,b4,e5] a#4 ~@18",
  F: "[~@14 [g4,c5,g5]!2 ~ [g4,c5,g5] [g4,c5,g5]@2 [g4,c5,g5]!2 ~ [g4,c5,g5]@3 [f#4,e5,f5] [f4,a#4,b4] ~@20]/2", // C5 A#
  G: "[~@14 [g4,c5,g5]!2 ~ [g4,c5,g5] [g4,c5,g5]@2 [g4,c5,g5] [g4,c5,g5]@2 [g4,c5,g5]@3 [f#4,e5,f5] [f4,a#4,b4] ~@20]/2", // C5 A#
  H: "[~@14 [g4,c5,g5]!2 ~ [g4,c5,g5] [g4,c5,g5]@2 [g4,c5,g5]!2 ~@2 g3 ~ [f4,f#4,b4,e5,f5] [f#3,a#4] ~@2 g3@2 ~@16, ~@23 [g4,c5,g5]@4 ~@21]/2", // C5 Esus2 F# C5
  I: "g3@2 ~ f#3 ~@2 g3@2 ~@16", J: "~@21 g3 ~@2", K: "f#3 ~@2 g3@2 ~@19", L: "~@20 g3@2 ~ f#3", M: "~ g3 ~@10",
  N: "~@10 [g4,c5,g5]!2 ~ [g4,c5,g5] [g4,c5,g5]@2 [g4,c5,g5]!2 ~@2 g3 ~ [f#4,e5,f5] [f#3,f4,b4], ~@19 [g4,c5,g5]@4 ~", // C5 B C5
  O: "a#4 ~ g3@2 ~@20",
  P: "~@10 [g4,c5,g5]!2 ~ [g4,c5,g5] [g4,c5,g5]@2 [g4,c5,g5]!2 ~@2 g3 ~ [f4,f#4,b4,e5,f5] [f#3,a#4], ~@19 [g4,c5,g5]@4 ~", // C5 Esus2 F# C5
  Q: "~@20 g3 ~ [f4,f#4,b4,e5,f5] [f#3,a#4]", R: "~@20 g3 ~@2 f#3", S: "~@2 g3 ~@5 g3 ~@2 f#3 ~ g3@2 ~ a3 ~@2 f#3@4 g3",
  T: "~@2 g3 ~@5 g3 ~@2 f#3 ~ g3 ~@2 a3 ~@2 f#3@4 g3", U: "~@5 e3@2 ~ g3@5 ~ a3@3 ~@3 a2@4", V: "~@18 g3 ~@2 f#3 ~@2",
  W: "g3 ~@11",
  X: "[~@7 [g4,c5,g5]!2 ~ [g4,c5,g5]!2 ~ [g4,c5,g5]!2 ~@2 g3 ~ [f#4,f5] [f#3,f4,b4,e5] a#4 ~ g3@2 ~@23, ~@4 [g4,c5,g5] ~@7]/2", // C5 F#maj7 Esus2 C5
  Y: "[~@17 g3 ~@2 f#3 ~@2 g3@2 ~@23]/2",
  Z: "[~@6 [g4,c5,g5] ~ [g4,c5,g5]!2 ~ [g4,c5,g5]!2 ~ [g4,c5,g5] ~@2 g3 [f4,f#4,b4,e5,f5] ~ [f#3,a#4] ~@2 g3@2 ~@23, ~@15 [g4,c5,g5]@4 ~@29]/2", // C5 Esus2 F# C5
  AA: "~@16 g3 ~@2 f#3 ~@2 g3@2", AB: "~@16 g3 [f4,f#4,b4,e5,f5] ~ [f#3,a#4] ~@2 g3@2",
  AC: "~@15 a2@3 f#3 ~@2 g3@2 ~, ~@15 g3 ~@8", AD: "e3 ~@2 g3@6 a3@4 ~@2 a2@5 ~@4",
  AE: "e3@2 ~ g3@2 ~@2 g3@4 ~ e3@2 ~ g3 ~@2 f#3 ~@2 g3@2 ~, ~@15 a2@5 ~@4", AF: "e3 ~@2 g3@5 ~ a3@4 ~@2 a2@5 ~@4",
  AG: "e3@2 ~ g3@2 ~@2 g3@4 ~ e3@2 ~@10", AH: "~@13 g3 ~@2 f#3 ~@2 g3@2 ~@3", AI: "~@12 g3 ~@2 f#3 ~@2 g3@2 ~@4",
  AJ: "~@10 g3 ~@2 f#3 ~@2 g3@2 ~@6", AK: "~@9 g3 ~@2 f#3 ~@2 g3@2 ~@7",
})).s("gm_electric_guitar_muted").gain(0.13).pan(0.2)

// chords · electric guitar muted · soft notes
const electric_guitar_muted_2 = note(`<
  ~@23 A ~@3 B ~@19 C ~@3 D ~@13 E F ~ G ~@15 H I ~@2 J K ~@2 J K ~@23 L ~@3 M ~@3 N ~@38
>`.pickRestart({
  A: "~@7 [d#4,c5,d5] [c#4,g#4] f#4 ~@14", B: "~@6 [c#4,d#4,g#4,c5,d5] f#4 ~@16",
  C: "~@5 [d#4,c5,d5] [c#4,f#4,g#4] ~@17", D: "~@3 [d#4,d5] [c#4,g#4,c5] f#4 ~@18", E: "~@4 c#4 ~@19",
  F: "~@3 [d#4,d5] [g#4,c5] f#4 ~@18", G: "~@3 [c#4,d#4,g#4,c5,d5] ~ f#4 ~@18", H: "~@23 d5",
  I: "[c#4,d#4,g#4,c5] f#4 ~@22", J: "~@23 [c#4,d#4,g#4,c5,d5]", K: "~ f#4 ~@22", L: "~@20 d5 [c#4,d#4,g#4,c5] f#4 ~",
  M: "~@20 [c#4,d#4,g#4,c5,d5] f#4 ~@2", N: "~@19 [c#4,d#4,g#4,c5,d5] f#4 ~@3",
})).s("gm_electric_guitar_muted").gain(0.09).pan(0.2)

// drums · kick
const kick = s("bd").struct(`<
  A B C@3 B C@3 D E F@2 G H I J@2 K L M N O P Q R S T U V W X Y Z AA AB AC@2 AD AE@2 AF AG AH@3 AI AH@3 AJ AH@3 AK AH@3
  AJ AL AH@7 AJ AH AM AJ AL@2 AN AO AP AQ@2 AR AS AT AU AV@2 AW AV@3 AX AV@3 AW AV@3 AY AZ AV@3 AW AV BA BB BC ~@7 BD
  BE@2 BF BG BH BI BJ BK BL BM@2 BN BO@2 BP BQ BR BS@2 BT BU BV BW BX BY BZ CA@2 CB CC CD CE CF CG CH CI CJ CK CL CM
  CN@2 CO ~@3 CP CQ CR CS
>`.pickRestart({
  A: "~ x!2 ~", B: "~@6 x ~@4 x ~@3 x ~@7 x", C: "~@3 x ~@2 x ~@4 x ~@3 x ~@7 x", D: "~ x ~@2",
  E: "~@6 x ~@3 x ~@4 x ~@6 x ~", F: "~@3 x ~@2 x ~@3 x ~@4 x ~@6 x ~", G: "~@2 x ~@2 x ~@4 x ~@3 x ~@7 x ~",
  H: "~@5 x ~@4 x ~@3 x ~@7 x ~", I: "~@2 x ~@2 x ~@4 x ~@3 x ~@6 x ~@2", J: "~@2 x ~@2 x ~@3 x ~@4 x ~@6 x ~@2",
  K: "~@5 x ~@18", L: "~@4 x ~@4 x ~@3 x ~@7 x ~@2", M: "~ x ~@2 x ~@4 x ~@3 x ~@7 x ~@2",
  N: "~ x ~@2 x ~@4 x ~@3 x ~@6 x ~@3", O: "~ x ~@2 x ~@3 x ~@4 x ~@6 x ~@3", P: "~@4 x ~@3 x ~@4 x ~@6 x ~@3",
  Q: "~ x ~@2 x ~@3 x ~@3 x ~@7 x ~@3", R: "x ~@2 x ~@4 x ~@3 x ~@7 x ~@3", S: "x ~@2 x ~@4 x ~@5 x ~@5 x ~@3",
  T: "~@3 x ~@3 x ~@4 x ~@6 x ~@4", U: "x ~@2 x ~@3 x ~@4 x ~@6 x ~@4", V: "x ~@2 x ~@3 x ~@4 x ~@6 x ~@3 x",
  W: "~@2 x ~@4 x ~@3 x ~@7 x ~@4", X: "~@2 x ~@4 x ~@3 x ~@7 x ~@3 x", Y: "~@2 x ~@4 x ~@3 x ~@6 x ~@4 x",
  Z: "~@2 x ~@3 x ~@4 x ~@6 x ~@5", AA: "~ x ~@10", AB: "~@2 x ~@3 x ~@4 x ~@6 x ~@3 x ~",
  AC: "~ x ~@4 x ~@3 x ~@7 x ~@3 x ~", AD: "~ x ~@4 x ~@3 x ~@6 x ~@4 x ~", AE: "~ x ~@3 x ~@4 x ~@6 x ~@4 x ~",
  AF: "~ x ~@3 x ~@3 x ~@7 x ~@3 x ~@2", AG: "x!4 ~@4", AH: "x ~@4 x ~@3 x ~@7 x ~@3 x ~@2",
  AI: "x ~@4 x ~@3 x ~@8 x ~@5", AJ: "x ~@4 x ~@3 x ~@7 x ~@6", AK: "x ~@4 x ~@5 x ~@5 x ~@6", AL: "x",
  AM: "x ~@4 x ~@3 x ~@11 x ~@2", AN: "x ~@3 x ~@4 x ~@6 x ~@3 x ~@2 x", AO: "~@4 x ~@3 x ~@7 x ~@3 x ~@2 x",
  AP: "~@3 x ~@4 x ~@6 x ~@4 x ~@2 x", AQ: "~@3 x ~@3 x ~@7 x ~@3 x ~@2 x ~", AR: "~@2 x ~@4 x ~@6 x ~@4 x ~@2 x ~",
  AS: "~@2 x ~@3 x ~@7 x ~@3 x ~@2 x ~@2", AT: "~@7 x", AU: "~ x ~@4 x ~@6 x ~@4 x ~ x ~@3",
  AV: "~ x ~@3 x ~@7 x ~@3 x ~@2 x ~@3", AW: "~ x ~@3 x ~@7 x ~@6 x ~@3", AX: "~ x ~@5 x ~@5 x ~@6 x ~@3",
  AY: "~ x ~@3 x ~@7 x ~@10", AZ: "~@5 x", BA: "x ~@4 x ~@6 x ~@4 x ~@2 x ~@3", BB: "x ~@4 x ~@8 x ~@2 x ~@2 x ~@3",
  BC: "~@3 x!2 ~@7", BD: "~@11 x ~@2 x ~@2 x!2 ~@3 x ~", BE: "~@3 x ~@6 x ~@4 x ~@2 x ~@3 x ~",
  BF: "~@3 x ~@6 x ~@4 x ~ x ~@4 x ~", BG: "~@2 x ~@7 x ~@6 x ~@4 x ~", BH: "~@2 x ~@7 x ~@3 x ~@2 x ~@4 x ~",
  BI: "~@2 x ~@7 x ~@3 x ~@2 x ~@3 x ~@2", BJ: "~@2 x ~@6 x ~@4 x ~@2 x ~@3 x ~@2", BK: "~@3 x ~@5 x ~@7 x ~@3 x ~@2",
  BL: "~@2 x ~@6 x ~@3 x ~@2 x ~@4 x ~@2", BM: "~ x ~@7 x ~@3 x ~@2 x ~@4 x ~@2", BN: "~ x ~@6 x ~@7 x ~@3 x ~@3",
  BO: "~ x ~@6 x ~@4 x ~@2 x ~@3 x ~@3", BP: "x ~@7 x ~@3 x ~@2 x ~@4 x ~@3", BQ: "x ~@7 x ~@6 x ~@4 x ~@3",
  BR: "x ~@7 x ~@3 x ~@2 x ~@3 x ~@4", BS: "x ~@6 x ~@4 x ~@2 x ~@3 x ~@4", BT: "x ~@6 x ~@7 x ~@8",
  BU: "~@7 x ~@2 x ~@2 x!2 ~@4 x ~@3 x", BV: "~@7 x ~@3 x ~@2 x ~@4 x ~@3 x", BW: "~@7 x ~@3 x ~@2 x ~@3 x ~@4 x",
  BX: "~@6 x ~@4 x ~@2 x ~@3 x ~@4 x", BY: "~@6 x ~@4 x ~@2 x ~@9", BZ: "~@6 x ~@2 x ~@2 x!2 ~@4 x ~@3 x ~",
  CA: "~@6 x ~@3 x ~@2 x ~@4 x ~@3 x ~", CB: "~@5 x ~@4 x ~@2 x ~@3 x ~@4 x ~", CC: "~@5 x ~@7 x ~@3 x ~@4 x ~",
  CD: "~@5 x ~@4 x ~@2 x ~@3 x ~@3 x ~@2", CE: "~@5 x ~@3 x ~@2 x ~@4 x ~@3 x ~@2", CF: "~@5 x ~@3 x ~@2 x ~@4 x ~@5 x",
  CG: "~@5 x ~@6 x ~@11", CH: "~@4 x ~@2 x ~@2 x ~ x ~@3 x ~@4 x ~@2", CI: "~@4 x ~@4 x ~@2 x ~@3 x ~@4 x ~@2",
  CJ: "~@4 x ~@4 x ~ x ~@4 x ~@3 x ~@3", CK: "~@4 x ~@3 x ~@2 x ~@4 x ~@3 x ~@3", CL: "~@4 x ~@6 x ~@4 x ~@3 x ~@3",
  CM: "~@4 x ~@3 x ~@2 x ~@3 x ~@4 x ~@3", CN: "~@3 x ~@4 x ~@2 x ~@3 x ~@4 x ~@3", CO: "~@3 x ~@6 x ~@13",
  CP: "~@10 x ~@3 x ~@4 x ~@4", CQ: "~@2 x ~@4 x ~@2 x ~@3 x ~@3 x ~@5", CR: "~@2 x ~@3 x ~@2 x ~@4 x ~@3 x ~@5",
  CS: "~@2 x ~@3 x ~@2 x ~@14",
})).gain(0.56)

// drums · clap
const clap = s("cp").struct("<~@110 [~ x ~@11 x ~@10] [~ x ~@10 x ~@11] [x!2]!2 ~@50>").gain(0.48)

// drums · snare
const snare = s("sd").struct(`<
// … 137 more lines

More by Jovanotti