Strudelify
Ragazzo fortunato cover art

Lorenzo 1992

Ragazzo fortunato

Jovanotti

KeyA majorTempo105 bpm
0:00/0:00
// Ragazzo fortunato — Jovanotti
// 105 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 125 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(105/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(`<
  ~@4 A B C D E F G H I J K L A B C D E F G H I J K L M@3 N O@3 P Q R Q S T U T V W S T U X S T V A B C D E F G H I J K
  L M@3 N O@3 P Q R Q S T U T V W S T U X S T V Q R Q S T U T V W S T U Q R Q S T U T V A B C D A B C D A B C D A B C Y
  ~
>`.pickRestart({
  A: "[a3,c#4,e4]@2 e3@2 [a3,c#4,e4]@2 e3@2 [a3,c#4,e4] e3@2 [a3,c#4,e4]@2 e3@2 [a3,c#4,e4]", // A
  B: "[a3,d4,f#4]@2 f#3@2 [a3,d4,f#4]@2 f#3@2 a3 f#3 ~ [a3,d4,f#4]@2 f#3@2 [a3,d4,f#4], ~@4 [d4,f#4] ~@3", // D
  C: "[a3,c#4,e4]@2 e3@2 [a3,c#4,e4]@2 e3@2 [a3,c#4,e4] e3 ~ [a3,c#4,e4]@2 e3@2 [a3,c#4,e4]", // A
  D: "[a3,d4,f#4]@2 f#3@2 [a3,d4,f#4]@2 f#3@2 [a3,d4,f#4] f#3 ~ [a3,d4,f#4]@2 f#3@2 [a3,d4,f#4]", // D
  E: "[a3,c#4,e4]@2 e3@2 [a3,c#4,e4]@2 e3@2 a3 e3 ~ [a3,c#4,e4]@2 e3@2 [a3,c#4,e4], ~@4 [c#4,e4] ~@3", // A C#m
  F: "[g#3,c#4,e4]@2 e3@2 [g#3,c#4,e4]@2 e3 ~ [g#3,c#4,e4] e3 ~ [g#3,c#4,e4]@2 e3@2 [g#3,c#4,e4]", // C#m
  G: "[a3,c#4,e4]@2 e3 ~ [a3,c#4,e4]@2 e3@2 ~ e3 ~ [a3,c#4,e4]@2 e3 ~ [a3,c#4,e4], ~@4 [a3,c#4,e4] ~@3", // A
  H: "[g#3,c#4,e4]@2 e3@2 [g#3,c#4,e4]@2 e3@2 [g#3,c#4,e4] e3 ~ [g#3,c#4,e4]@2 e3@2 [g#3,c#4,e4]", // C#m
  I: "[b3,d4,f#4]@2 f#3@2 [b3,d4,f#4]@2 f#3@2 [b3,d4,f#4]@2 f#3 [b3,d4,f#4]@2 f#3 [b3,d4,f#4] f#3", // Bm
  J: "[b3,e4,g#4]@2 e3@2 [b3,e4,g#4]@2 e3@2 [b3,e4,g#4]@2 e3 [b3,e4,g#4]@2 e3 g#4 e3, ~@7 [b3,e4]", // E E5
  K: "[b3,d4,f#4]@2 f#3@2 [b3,d4,f#4]@2 f#3@2 [b3,d4,f#4]@2 f#3 [b3,d4,f#4]@2 f#3 [b3,f#4] f#3, ~@7 d4", // Bm B5
  L: "[b3,e4,g#4]@2 e3@2 [b3,e4,g#4]@2 e3@2 [b3,e4,g#4]@2 e3 [b3,e4,g#4]@2 e3 ~ e3, ~@7 [b3,e4,g#4]", // E
  M: "[f#2@2 [c#4,e4,f#4]@2 [a#3,c#4,e4,f#4]@2 f#2 [a#3,c#4,e4] ~@2 f#2@2 a#3@2 f#2@2 a#3@2 [c#4,e4,f#4]@2 [a#3,c#4,e4,f#4]@2 f#2 [c#4,e4,f#4]@2 ~ f#2@2 ~@2 f#2@4 [c#4,f#4]@2 [a#3,c#4,e4,f#4]@2 f#2 [a#3,c#4,e4,f#4] ~@2 f#2@2 [a#3,c#4,e4,f#4]@2 ~ e3, ~@2 a#3 ~@4 f#4@2 [a#3,c#4,e4,f#4]@2 ~ [c#4,e4,f#4]@6 [f#2,a#3] ~@4 a#3 ~ [a#3,c#4,e4,f#4]@2 ~ [a#3,c#4,e4,f#4]@6 [a#3,e4] ~@6 [a#3,c#4,e4,f#4]@3 ~@2 f#2@2]/3", // F#7 A#dim F#7 F#5 F#7 F# F#7 A#dim …
  N: "[g#3,b3,d4,e4]@2 e3@2 [g#3,b3,d4,e4]@2 e3 [g#3,b3,d4,e4] e3 ~ e3@2 [g#3,b3,d4,e4]@2 e3@2, ~@9 [g#3,b3,d4,e4]@3 ~@4", // E7
  O: "[f#2@2 ~ f#2 [a#3,c#4,e4,f#4]@2 f#2 [c#4,e4,f#4]@2 f#2 f#2@2 ~@2 f#2@4 [e4,f#4]@2 [a#3,c#4,e4,f#4]@2 f#2 [e4,f#4]@2 ~ f#2@2 [a#3,c#4,e4,f#4]@2 f#2@4 a#3 f#2 [a#3,c#4,e4,f#4]@2 f#2 [c#4,e4,f#4]@2 ~ f#2@2 [a#3,c#4,e4,f#4]@2 f#2@2, ~@2 [a#3,c#4,e4,f#4]@2 ~@3 a#3 ~ [a#3,c#4,e4,f#4]@3 [a#3,c#4,e4,f#4]@6 [a#3,c#4] ~@4 [a#3,c#4] ~ [a#3,c#4,e4,f#4]@2 ~@7 [c#4,e4,f#4]@2 ~@3 a#3 ~ [a#3,c#4,e4,f#4]@2 ~@5]/3", // F#7 Esus2 F#7 Esus2 F#7 A#m F#7
  P: "e3@2 [d4,e4]@2 [g#3,b3,d4,e4]@2 e3 [g#3,b3,d4,e4]@2 ~ e3@2 ~@2 e3@2, ~@2 [g#3,b3] ~@6 [g#3,b3,d4,e4]@2 ~ [g#3,b3,d4,e4]@4", // Dsus2 E7 G#m E7
  Q: "[a3,c#4,e4]@2 e3@2 [a3,c#4,e4]@2 e3 [a3,c#4,e4]@2 e3 [a3,c#4,e4]@2 e3@2 [a3,c#4,e4] ~", // A
  R: "[a3,d4,f#4]@2 f#3@2 [a3,d4,f#4]@2 f#3 [a3,d4,f#4]@2 f#3 [a3,d4,f#4]@2 f#3@2 [d4,f#4] ~, ~@7 a3", // D
  S: "[a3,d4,f#4]@2 f#3@2 [a3,d4,f#4]@2 f#3 [a3,d4,f#4]@2 f#3 [a3,d4,f#4]@2 f#3@2 [a3,d4,f#4] ~", // D
  T: "[b3,d4,f#4]@2 f#3@2 [b3,d4,f#4]@2 f#3 [b3,d4,f#4]@2 f#3 [b3,d4,f#4]@2 f#3@2 [b3,d4,f#4] ~", // Bm
  U: "[b3,e4,g#4]@2 e3@2 [b3,e4,g#4]@2 e3 [b3,e4,g#4]@2 e3 [b3,e4,g#4]@2 e3@2 [b3,e4,g#4] ~", // E
  V: "[b3,e4,g#4]@2 e3@2 [b3,e4,g#4]@2 e3 [b3,e4,g#4]@2 e3 [b3,e4,g#4]@2 e3@2 [b3,e4,g#4]@2", // E
  W: "[a3,c#4,e4]@2 e3@2 [a3,c#4,e4]@2 e3 [a3,c#4,e4]@2 e3 [a3,c#4,e4]@2 ~@2 [a3,c#4,e4] ~, ~@3 e3", // A
  X: "[a3,c#4,e4]@2 e3 ~ [a3,c#4,e4]@2 e3 [a3,c#4,e4]@2 e3 [a3,c#4,e4]@2 e3@2 [a3,c#4,e4] ~", // A
  Y: "[a3,d4,f#4]@2 f#3@2 [a3,d4,f#4]@2 f#3@2 [a3,d4,f#4] f#3 ~ [a3,d4,f#4]@2 f#3@2 [a3,c#4,e4]", // D A
})).s("gm_piano").gain(0.33).pan(0.4)

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

// other · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@17 A B A C ~@15 D E F G H ~@12 A B A C ~@15 D E F G H ~@11 D E F G H ~@7 D E F G H ~@4 A B A ~ A B A ~ A B A ~ A B
  ~@2
>`.pickRestart({
  A: "~@12 [e5,e6]!2 [c#5,c#6] [d5,d6]", B: "[e5,e6]@3 ~", C: "[e5,e6] ~",
  D: "[e5,e6] ~ [e5,e6] ~ [e5,e6] ~ [a3,a4,e5,e6]@2", // E A5
  E: "[e5,e6]@2 ~@2 [e5,e6]@2 ~@2 [e5,e6]@3 ~ [e5,e6]!2 [c#5,c#6] [d5,d6], [f#3,f#4]@3 ~", // E C# D F#
  F: "[e5,e6] ~ [e5,e6] ~ [e5,e6] ~ [a3,a4]@2, ~@6 [e5,e6] ~", // E A E
  G: "[e5,e6]@2 ~@2 [e5,e6]@2 ~@2 [e5,e6]@3 ~ [e5,e6]!2 c#5 d5, [f#3,f#4]@5 ~@2 c#6", H: "[d5,d6]@13 ~@3",
})).s("gm_string_ensemble_1").gain(0.26)

// chords · synth strings 1 · "Synstrin"
const synth_strings_1 = note(`<
  ~@4 A@8 B@4 C@4 D@4 B@4 ~@8 E@8 F@4 G@4 C@4 D@4 B@4 ~@8 E@8 F@4 G@4 E@8 F@4 E@8 C@16 ~
>`.pickRestart({
  A: "[[c#4,e4]@15 ~ [d4,f#4]@15 ~ [c#4,e4]@15 ~ [d4,f#4]@15 ~@17 g#3@16 a3@16 g#3@15 ~, a3@5 ~@3, ~@64 [c#4,e4]@63 ~]/8", // C#m D C#m D C#m
  B: "[[d4,f#4]@15 ~ [e4,g#4]@15 ~ [d4,f#4]@15 ~ [e4,g#4]@15 ~, b3@63 ~]/4", // D E D E
  C: "[[c#4,e4]@16 [d4,f#4]@15 ~ [c#4,e4]@15 ~ [d4,f#4]@15 ~, a3@63 ~]/4", // C#m D C#m D
  D: "[a3@16 g#3@16 a3@15 ~ g#3@15 ~, [c#4,e4]@63 ~]/4", // C#m
  E: "[[c#4,e4]@15 ~ [d4,f#4]@15 ~ [c#4,e4]@15 ~@33 [e4,g#4]@15 ~ [d4,f#4]@15 ~ [e4,g#4]@16, a3@63 ~ b3@63 ~, ~@48 [d4,f#4]@31 ~@49]/8", // C#m D C#m E D E D
  F: "[[c#4,e4]@15 ~@33 [e4,g#4]@15 ~, a3@31 ~ b3@31 ~, ~@16 [d4,f#4]@31 ~@17]/4", // C#m E D
  G: "[[c#4,e4]@15 ~@33 [e4,g#4]@16, a3@31 ~ b3@32, ~@16 [d4,f#4]@31 ~@17]/4", // C#m E D
})).s("gm_synth_strings_1").gain(0.2)

// chords · brass section · "Brass"
const brass_section = note(`<
  ~@16 A B A B ~@8 C D E F G D E H ~@16 A B A B ~@8 C D E F G D E H ~@36 A B A B A B A I J K L M J N J O@2
>`.pickRestart({
  A: "[c#4,a4] ~ [c#4,a4] ~ [c#4,a4] [b3,g#4] ~ [c#4,a4] ~@3 [a3,e4] [c#4,a4]!2 [b3,g#4]!2", // F#m E F#m A5 F#m E
  B: "[a3,f#4] ~ [a3,f#4] ~@2 [a3,f#4] ~@2 [a3,f#4] ~@2 [a3,f#4] ~ [a3,f#4]!2 [g#3,e4]", // D C#m
  C: "[f#4,c#5,f#5]@3 ~@8 [f#4,c#5,f#5] ~ [f#4,c#5,f#5] ~ [f#4,c#5,f#5]", // F#5
  D: "~ [f#4,c#5,f#5] ~ [f#4,c#5,f#5] ~ [f#4,c#5,f#5] ~@10", E: "~@4 [f#4,c#5,f#5]@3 ~@9",
  F: "~@5 [g#4,b4,d5] ~ [g#4,b4,d5] ~ [g#4,b4,d5] ~ [g#4,b4,d5] ~ [g#4,b4,d5] ~@2", // G#dim
  G: "[f#4,c#5,f#5]@3 ~@6 [f#4,c#5,f#5] ~ [f#4,c#5,f#5] ~ [f#4,c#5,f#5] ~ [f#4,c#5,f#5]", // F#5
  H: "~ [g#4,b4,d5] ~ [g#4,b4,d5] ~ [g#4,b4,d5] ~ [g#4,b4,d5] ~@8", // G#dim
  I: "[a3,f#4] ~ [a3,f#4] ~@2 [a3,f#4] ~@2 [a3,f#4] ~@2 [a3,f#4] a5 [a3,f#4,f#5] [a3,f#4,e5] [g#3,e4,a5]", // D F#m7 Amaj7
  J: "[c#4,a4] a5 [c#4,a4,f#5] ~ [c#4,a4,e5] [b3,g#4] ~ [c#4,a4] ~@2 c6 [a3,e4] [c#4,a4,b5] [c#4,a4,a5] [b3,g#4,b5] [b3,g#4,a5]", // F#m A E F#m A5 F#m E
  K: "[a3,f#4] a5 [a3,f#4,f#5] ~@2 [a3,f#4] ~@2 [a3,f#4] ~@2 [a3,f#4] ~ [a3,f#4,e5] [a3,f#4,f#5] [g#3,e4,a5]", // D F#m7 D Amaj7
  L: "[c#4,a4] a5 [c#4,a4,f#5] ~ [c#4,a4,e5] [b3,g#4] ~ [c#4,a4] ~@2 c6 e4 [a4,b5] [a4,a5] [g#4,b5] [g#4,a5]", // F#m A E F#m Asus2 A G#m Amaj7
  M: "[a3,f#4] a5 [a3,f#4,f#5] ~@2 [a3,f#4] ~@2 [a3,f#4,c6] ~ b5 [a3,f#4] b5 [a3,f#4,a5] [a3,f#4,f#5] [g#3,e4,a5]", // D F#dim D Amaj7
  N: "[a3,f#4] a5 [a3,f#4] ~@2 [a3,f#4] ~@2 [a3,f#4] ~@2 [a3,f#4] ~ [a3,f#4,e5] [a3,f#4,f#5] [g#3,e4,a5]", // D F#m7 D Amaj7
  O: "[[a3,f#4] ~ [a3,f#4] ~@2 [a3,f#4] ~@2 [d4,f#5,c6] ~ [e4,e5,b5] ~ [f#4,d5,a5] [g#4,e5,b5] [f#4,d5,a5] [a4,c#5,a5]@2 ~@15]/2", // D D7 E5 D E D A
})).s("gm_brass_section").gain(0.39).pan(0.4)

// other · accordion · "Accordeo"
const accordion = note("<~@21 A@2 B C ~@32 A@2 B C ~@20 D E ~@2 D E ~ F G H I J K L M N O P Q R ~@24>".pickRestart({
  A: "[~@12 g#4@4 a4@11 ~@5, ~@12 e4@11 ~@9]/2", B: "~@12 g#4@3 ~", C: "f#4@7 ~, g4 ~@15", D: "~@3 [a3,c#4]",
  E: "[b3,d4]", F: "e4 [e4,f#4]!3 f#4 [e4,f#4]!3 ~@4 e4 f#4 g#4 a4", G: "b4 c#5 d5 e5 ~@8 a5 e5 c#5 a4",
  H: "f#5 ~ a4 a5 ~@2 a5@10", I: "~@2 e5@2 ~ d#5@2 ~ d5@2 ~ c#5@2 ~ c5@2", J: "~ b4@2 ~ a#4@2 ~ a4@2 ~@2 g#4@2 ~ g4@2",
  K: "~ f#4@6 ~", L: "b4@2 e4@2 ~@5 b4@6 e4, a#4 ~@8 a#4 ~@6", M: "f#4@7 e4@4 ~ b4@2 e4 ~, ~@12 a4 ~@3",
  N: "a5@2 ~ [d5,b5] ~@2 [e5,c#6] ~@2 [e5,c#6] ~@2 [d5,b5] ~ [e5,c#6] ~, c#5 ~@15", // G C#m G C#m
  O: "~@2 d6 a5 f#5 d6 a5 ~ d6 ~ f#5 d6 ~@3 f#5, ~@7 d6",
  P: "[b4,d5,f#5,b5,d6] ~@2 [b4,d5,f#5,b5,d6] ~@2 [b4,d5,f#5,b5,d6] ~@9", // Bm
  Q: "[e4,b4] ~@2 [e4,b4] ~@2 [e4,b4] ~ e5 f#5 b4 ~ e5 f#5 [e5,f#5] f#5", R: "f#5!4 [e5,f#5]!2 e5 ~@9",
})).s("gm_accordion").gain(0.5)

// other · accordion · "Accordeo" · soft notes
const accordion_soft = note("<~@90 A ~@4 B C D ~ E F ~@24>".pickRestart({
  A: "~ e5 ~@14", B: "f4 ~@15", C: "~@11 c#6 ~@4", D: "~@7 f#5 ~ a5 ~@2 a5 f#5 ~@2", E: "~@13 e5 ~@2",
  F: "e5!4 ~@2 f#5 e5 ~@8",
})).s("gm_accordion").gain(0.29)

// chords · electric guitar clean · "Clean gt"
const electric_guitar_clean = note(`<
  ~@28 A B C D E@2 F G ~@8 H I J K I@2 J K ~@12 A B C D E@2 F G L M L M N O P O H I J K I@2 J K ~@8 H I J K L M L M P O
  P O Q R S T U R U R U V U W X R Y Z ~
>`.pickRestart({
  A: "[e4,f#4,a#4] ~ [e4,f#4,a#4] ~@2 [e4,f#4,a#4] ~ [e4,f#4,a#4] ~ [f#4,a#4] [e4,f#4,a#4] ~ [e4,f#4,a#4]!2 ~ [e4,f#4,a#4]", // F#7 F# F#7
  B: "~ [e4,f#4,a#4]!2 ~ [e4,f#4,a#4]@2 [e4,f#4,a#4]!2 ~ [e4,f#4,a#4]!2 ~ [e4,f#4,a#4]!2 ~ [e4,f#4,a#4]", // F#7
  C: "~ [e4,f#4,a#4]!2 ~ [e4,f#4,a#4] ~ [e4,f#4,a#4]!2 ~ [e4,f#4,a#4]!2 ~ [e4,f#4,a#4]!2 ~ [e4,f#4,a#4]", // F#7
  D: "~@4 [d4,g#4,b4]@2 ~ [d4,g#4,b4] ~@2 [d4,g#4,b4] ~ [d4,g#4,b4]!2 ~ [d4,g#4,b4]", // G#dim
  E: "[~@2 [e4,f#4,a#4] ~ [e4,f#4,a#4] ~@2 [e4,f#4,a#4] ~ [f#4,a#4] [e4,f#4,a#4] ~ [e4,f#4,a#4]!2 ~ [e4,f#4,a#4]@2 [e4,f#4] [e4,f#4,a#4] ~ [e4,f#4,a#4] ~ [e4,f#4,a#4]!2 ~ a#4 [e4,f#4,a#4] ~ [e4,f#4,a#4]!2 ~ [e4,f#4,a#4]]/2", // F#7 F# F#7 Esus2 F#7
  F: "~ [e4,a#4] [e4,f#4,a#4] ~ [e4,f#4,a#4] ~ [e4,f#4,a#4]!2 ~ [f#4,a#4] [e4,f#4,a#4] ~ [e4,f#4,a#4]!2 ~ [e4,f#4,a#4]", // Edim F#7 F# F#7
  G: "~ g#4 [d4,g#4,b4] ~ [d4,g#4,b4] ~ [d4,g#4,b4]!2 ~ [d4,g#4,b4]!2 ~ [d4,g#4,b4]!2 ~ [d4,g#4,b4]", // G#dim
  H: "~@2 [e3,a3] ~ [e3,a3] ~ [e3,b3] [e3,a3] ~@2 [e3,a3] ~@2 [e3,a3] ~@2", // A5 E5 A5
  I: "[e3,a3] ~ [e3,a3] ~ [e3,a3] ~ [e3,b3] [e3,a3] ~@2 [e3,a3] ~@2 [e3,a3] ~@2", // A5 E5 A5
  J: "[e3,a3] ~ [e3,a3] ~ [e3,a3]@2 [e3,b3] [e3,a3] ~@8", // A5 E5 A5
  K: "[e3,g#3] ~ [e3,g#3] ~@2 [e3,g#3] ~@2 [e3,g#3]@2 ~ [e3,g#3] ~@2 [e3,g#3] ~", // E
  L: "~@2 [a3,c#4,e4] ~@2 [a3,c#4,e4] ~@2 [a3,c#4,e4] ~@2 [a3,c#4,e4] ~@2 [a3,c#4,e4] ~", // A
  M: "~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~", // D
  N: "~@2 [b3,d4,f#4] ~@2 [b3,d4,f#4] ~@2 [b3,d4,f#4] ~@2 [b3,d4,f#4] ~@2 [b3,d4,f#4]@2", // Bm
  O: "~@2 [b3,e4,g#4] ~@2 [b3,e4,g#4] ~@2 [b3,e4,g#4] ~@2 [b3,e4,g#4] ~@2 [b3,e4,g#4] ~", // E
  P: "~@2 [b3,d4,f#4] ~@2 [b3,d4,f#4] ~@2 [b3,d4,f#4] ~@2 [b3,d4,f#4] ~@2 [b3,d4,f#4] ~", // Bm
  Q: "~@2 [a3,c#4,e4] ~@2 [a3,c#4,e4] ~@2 [a3,c#4,e4] ~@2 [a3,c#4,e4] ~@2 [a3,c#4,e4]!2", // A
  R: "~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4]!2", // D
  S: "~@2 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~ e4 ~ [a3,c#4,e4]!2", // A
  T: "~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~ [a3,d4] ~ [a3,d4,f#4] ~@3 [a3,d4,f#4]!2", // D D5 D
  U: "~@2 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4]!2", // A
  V: "~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~", // D
  W: "~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~ d4 ~ [a3,d4,f#4] ~@3 [a3,d4,f#4]!2", // D
  X: "~@2 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~ c#4 ~ [a3,c#4,e4] ~@3 [a3,c#4,e4]!2", // A
  Y: "~@2 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~ e4 ~ [a3,c#4,e4] ~@3 [a3,c#4,e4]!2", // A
  Z: "~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] [a3,c#4,e4]", // D A
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  ~@3 A B C D E B C D F B C D E B C D E B C D F B C D E B C D F B C D E B C D F B C D E B C D F B C D E B C D E B C D F
  B C D E B C D F B C D E B C D F B C D E B C D F B C D E B C D F B C D E B C D E B C D F B C D E B C D E B C D E B C D
  E B C D E ~
>`.pickRestart({
  A: "x ~@9 x ~@4 x", B: "x ~@2 x ~@2 x ~@3 x ~@3 x ~", C: "x ~@2 x ~@2 x ~@2 x!2 ~@5",
  D: "x ~@2 x ~@2 x ~@2 x!2 ~@3 x ~", E: "x ~@2 x ~@2 x ~@2 x ~@6", F: "x ~@2 x ~@2 x ~@2 x ~@5 x",
})).gain(0.63)

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A B@3 C B@7 C B@3 C B@7 C B@7 C B@7 C B@7 C B@3 C B@7 C B@7 C B@7 C B@7 C B@7 C B@3 C B@7 C B@3 C B@3 C B@3 C B@3
  C ~
>`.pickRestart({
  A: "~@7 x!3 ~ x ~ x!2 ~", B: "~ x ~ x", C: "~@4 x ~@6 x ~ x ~ x",
})).gain(0.71)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@3 A ~@3 B ~@7 B ~@3 B ~@7 B ~@7 B ~@7 B ~@7 B ~@3 B ~@7 B ~@7 B ~@7 B ~@7 B ~@7 B ~@3 B ~@7 B ~@3 B ~@3 B ~@3 B ~@3
  B ~
>`.pickRestart({
  A: "~@7 x ~@8", B: "~@9 x!2 ~@5",
})).gain(0.24)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@11 A ~@3 A ~@7 A ~@3 A ~@3 A ~@7 A ~@7 A ~@11 A ~@7 A ~@7 A ~@7 A ~@7 A ~@3 A ~@7 A ~@3 A ~@3 A ~@3 A ~@4
>`.pickRestart({
  A: "x",
})).gain(0.47)

// drums · tambourine
const tambourine = s("tb").struct("<~@4 [x!16]!120 ~>").gain(0.31)

// drums · cowbell
const cowbell = s("cb").struct("<~@3 [~@7 x ~@8] ~@121>").gain(0.55)

// … 16 more lines

More by Jovanotti