Strudelify

Moriro d'amore

Jovanotti

KeyD majorTempo96 bpm
0:00/0:00
// Moriro d'amore — Jovanotti
// 96 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 105 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 25.
setcpm(96/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 · electric bass finger
const bass = note(`<
  ~ A B C D A B C D A B C D A B C E A B C D A B C F G H I J G H I K A B L M A B C D A B C F G H I J G H I K A B C D A B
  L M A B N D A B N F G H I O G H P Q R S T A B C D A B C F A B C D A B C F A B C D A B C U@2
>`.pickRestart({
  A: "d2!2 a1 ~ d2@2 ~@5 a1 d2!2 b1!2", B: "a1 ~ a1 ~ e1@2 a1@2 ~@7 e1", C: "g1!2 b1 ~ d2 ~ g1@4 ~@5 g1",
  D: "a1!2 c#2 ~ e2 ~ a1@6 ~@3 a1", E: "a1!2 c#2 ~ e2 ~ a1@4 g4@5 a1", F: "a1!2 c#2 ~ e2 ~ a1@6 ~@4", G: "d2@11 ~ d2@4",
  H: "g1@11 ~ g#1@4", I: "a1@3 g#1", J: "g1@11 ~ a1 b1@2 c#2", K: "g1", L: "g1!2 b1 ~ d2 ~ g1@3 ~@6 g1",
  M: "a1!2 c#2 ~ e2 ~ a1@3 ~@6 a1", N: "g1!2 b1 ~ d2 ~ g1@2 ~@7 g1", O: "g1 ~@15", P: "a1@12 e2 b1 a1 f#1",
  Q: "g1!2 ~ g1 ~ g1!2 ~@3 c#2@6", R: "a1!2 ~ a1 ~ a1!3 ~ a1 b1 c#2 e2 c#2 b1 a1",
  S: "g1!2 ~ g1 ~ g1!3 ~@2 c#2@3 g1 ~@2", T: "g1!2 ~ g1!2 ~ g1!2 a1 b1 d2@2 e2 d2 b1@2", U: "[a1!2 ~ a1 ~ a1@26 ~]/2",
})).s("gm_electric_bass_finger").gain(0.64)

// chords · french horn
const french_horn = note("<A B ~@16 C D E F ~ G@2 ~@13 C D E F C H@2 ~@17 C D E F C H@2 ~@36>".pickRestart({
  A: "~@13 c#4@3", B: "d4 ~", C: "~@8 d4@3 ~ g4@4, ~ a3", D: "f#4@2 b3 ~@5, a4@3 ~@5", E: "~@3 b4, ~ g4",
  F: "[a4,c#5]@3 ~@5", G: "[~@8 f#4@6 e4@4 a4@5 ~@5 b4@4, ~@3 g4]/2",
  H: "[f#4@4 b3@2 ~@2 f#4@6 e4@4 a4@5 ~@5 b4@4, a4@3 ~@9 g4@4]/2",
})).s("gm_french_horn").gain(0.24).pan(0.8)

// other · trombone
const trombone = note(`<
  A B C D E F C D C ~@8 G@2 ~ H ~ I J@2 ~@10 K L ~@3 H M@2 J@2 N O P Q N O P R ~@2 K L ~@8 M@2 J@2 N O P Q N O P S T U V
  ~@4 W X Y Z W X Y Z W X Y Z W X Y Z W X Y AA ~
>`.pickRestart({
  A: "~@13 f4@3", B: "f#4@9 ~@3 d4!2 b3!2", C: "a3!2 ~@14", D: "g3!2 ~@10 g3!2 d4!2", E: "a3!2 ~@10 a3!2 ~@2",
  F: "~@12 d4!2 b3!2", G: "[d4@7 c#4@4 ~@5]/2", H: "d4!2 ~@2 c#4!2 ~@10", I: "~@8 b4 ~ a4 ~ f#4 b3 d4 ~",
  J: "[~@4 b3@3 a3@2 c#4@3 ~@4]/2", K: "~@4 d4!2 b3!2 a3!2 ~@6", L: "~@8 a3!2 ~@6",
  M: "[d4@14 c#4@8 ~@2 b4 ~ a4 ~ f#4 b3 d4 ~]/2", N: "~@2 d4@3 f#3@3 a3@3 d3@3 g3@2", O: "~@2 b2@3 d3@3 g3@3 b3@3 a3@2",
  P: "~@2 c#3@3 e3@3 a3@4 g#3@3 ~", Q: "[g3,b3]!2 ~ [g3,b3] ~ [g3,b3] ~@10", R: "[g3,b3] ~@15",
  S: "g3!2 ~ g3 ~ c#4 ~@10", T: "b3!2 ~ b3 ~ b3 ~@10", U: "b3!2 ~ b3 ~ f#4 ~@10", V: "d4!2 ~ d4 ~ d4 ~@10",
  W: "~@4 d4!2 a3!2 f#3!2 ~@6", X: "~@4 e4!2 c#4!2 a3!2 ~@6", Y: "~@4 g3!2 d4!2 g3!2 ~@6", Z: "~@4 a3!2 e4!2 a3!2 ~@6",
  AA: "[e3,a3]!2 ~ [e3,a3] ~ [e3,a3] ~@10", // A5
})).s("gm_trombone").gain(0.59).pan(0.3)

// other · flute
const flute = note(`<
  ~ A B C D A B C B ~@11 E ~ F ~@12 G H ~@3 E ~ F ~@2 I J K ~ I J K ~@3 G H ~@9 F ~@2 I J K ~ I J K L M N O ~@4 P Q R S
  P Q R S P Q R S P Q R S P Q R T ~
>`.pickRestart({
  A: "~@12 d6!2 b5!2", B: "a5!2 ~@14", C: "g5!2 ~@10 g5!2 d6!2", D: "a5!2 ~@10 a5!2 ~@2", E: "b5!2 ~@2 a5!2 ~@10",
  F: "~@8 b5 ~ a5 ~ f#5 b4 d5 ~", G: "~@4 d6!2 b5!2 a5!2 ~@6", H: "~@8 a5!2 ~@6", I: "~@2 d6@3 f#5@3 a5@3 d5@3 g5@2",
  J: "~@2 b4@3 d5@3 g5@3 b5@3 a5@2", K: "~@2 c#5@3 e5@3 a5@4 g#5@3 ~", L: "g5!2 ~ g5 ~ b5 ~@8 b5 ~",
  M: "a5!2 ~ a5 ~ e6 ~@9 a5", N: "g5!2 ~ g5 ~ b5 ~@9 b5", O: "a5!2 ~ a5 ~ e6 ~@10", P: "~@4 d6!2 a5!2 f#5!2 ~@6",
  Q: "~@4 e6!2 c#6!2 a5!2 ~@6", R: "~@4 g5!2 d6!2 g5!2 ~@6", S: "~@4 a5!2 e6!2 a5!2 ~@6", T: "~@4 a5!2 ~@10",
})).s("gm_flute").gain(0.27)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~ A B C B D E F G A B C H A B C H D E F G D E F E I J K L M N O P Q R S T D E F G D E F E U V W X Y Z AA P AB AC AD AE
  D E F G A B C B A B C B AF X K AG Y N AH AI P@2 AJ AK AL AM AN AK AL AM AN AK AL AM AN AK AL AM AN AK AL AM AN AK AL
  AM AO@2
>`.pickRestart({
  A: "~@4 [d4,f#4,a4] ~@11", B: "~@4 [c#4,e4,a4] ~@11", C: "~@4 [b3,d4,g4] ~@11",
  D: "~@4 [d4,f#4,a4] ~@7 [d4,f#4,a4] ~@3", E: "~@4 [c#4,e4,a4] ~@7 [c#4,e4,a4] ~@3",
  F: "~@4 [b3,d4,g4] ~@7 [b3,d4,g4] ~@3", G: "~@4 [c#4,e4,a4] ~@7 [c#4,e4,a4] ~@2 [c#4,e4,a4]",
  H: "~@4 [c#4,e4,a4] ~@10 [c#4,e4,a4]", // A
  I: "[d4,f#4,a4]@2 ~ [d4,f#4,a4] ~ [d4,a4] [d4,f#4,a4]!2 ~ [d4,f#4,a4] ~ [d4,a4] [d4,f#4,a4]!2 ~ f#4", // D D5 D D5 D
  J: "[b3,d4,g4]@2 ~ [b3,d4,g4] ~ [b3,g4] [b3,d4,g4]!2 ~ [b3,d4,g4] ~ [b3,g4] [b3,d4,g4]!2 ~ d4", // G Em G Em G
  K: "[c#4,e4,a4]@2 ~ [c#4,e4,a4] ~ [c#4,a4] [c#4,e4,a4]!2 ~ [c#4,e4,a4] ~ [c#4,a4] [c#4,e4,a4]!2 ~@2", // A F#m A F#m A
  L: "[b3,d4,g4]@2 ~ [b3,d4,g4] ~ [b3,g4] [b3,d4,g4]!2 d4 [b3,d4,g4] ~ [b3,g4] [b3,d4,g4]!2 ~@2", // G Em G Em G
  M: "[d4,f#4,a4]@2 ~ [d4,f#4,a4] ~ [d4,f#4,a4]!3 f#4 [d4,f#4,a4] ~ [d4,a4] [d4,f#4,a4]!2 ~@2", // D D5 D
  N: "[b3,d4,g4]@2 ~ [b3,d4,g4] ~ [b3,d4,g4]!3 ~ [b3,d4,g4] ~ [b3,g4] [b3,d4,g4]!2 ~@2", // G Em G
  O: "[c#4,e4,a4]@2 ~ [c#4,e4,a4] ~ [e4,a4] [c#4,e4,a4]!2 ~ [c#4,e4,a4] ~ [c#4,a4] [c#4,e4,a4]!2 ~ e4", P: "[b3,d4,g4]",
  Q: "[d4,f#4,a4] ~@2 [d4,f#4,a4] ~ [d4,a4] [d4,f#4,a4]!2 ~ [d4,f#4,a4] ~ [d4,a4] [d4,f#4,a4]!2 ~ f#4", // D D5 D D5 D
  R: "[c#4,e4,a4] ~@2 [c#4,e4,a4] ~ [c#4,e4,a4]!3 ~ [c#4,e4,a4] ~ a4 [c#4,e4,a4]!2 ~@2", // A
  S: "[b3,d4,g4] ~@2 [b3,d4,g4] ~ [b3,d4,g4]!3 ~ [b3,d4,g4] ~ [d4,g4] [b3,d4,g4]!2 ~@2", // G G5 G
  T: "[c#4,e4,a4] ~@2 [c#4,e4,a4] ~ [c#4,e4,a4]!3 e4 [c#4,e4,a4] ~ [c#4,a4] [c#4,e4,a4]!2 ~@2", // A F#m A
  U: "[d4,f#4,a4]@2 ~ [d4,f#4,a4] ~ [d4,a4] [d4,f#4,a4]!2 ~ [d4,f#4,a4] ~ [d4,f#4,a4]!3 ~@2", // D D5 D
  V: "[b3,d4,g4]@2 ~ [b3,d4,g4] ~ [b3,g4] [b3,d4,g4]!2 d4 [b3,d4,g4] ~ [b3,d4,g4]!3 ~@2", // G Em G
  W: "[c#4,e4,a4]@2 ~ [c#4,e4,a4] ~ [c#4,a4] [c#4,e4,a4]!2 ~ [c#4,e4,a4] ~ [c#4,a4] [c#4,e4,a4]!2 ~ e4", // A F#m A F#m A
  X: "[b3,d4,g4]@2 ~ [b3,d4,g4] ~ [b3,g4] [b3,d4,g4]!2 ~ [b3,d4,g4] ~ [b3,g4] [b3,d4,g4]!2 ~@2", // G Em G Em G
  Y: "[d4,f#4,a4]@2 ~ [d4,f#4,a4] ~ [d4,a4] [d4,f#4,a4]!2 f#4 [d4,f#4,a4] ~ [d4,a4] [d4,f#4,a4]!2 ~@2", // D D5 D D5 D
  Z: "[b3,d4,g4]@2 ~ [b3,d4,g4] ~ [b3,g4] [b3,d4,g4]!2 ~ [b3,d4,g4] ~ g4 [b3,d4,g4]!2 ~ d4", // G Em G
  AA: "[c#4,e4,a4]@2 ~ [c#4,e4,a4] ~ [c#4,a4] [c#4,e4,a4]!2 ~ [c#4,e4,a4] ~ [c#4,e4,a4]!3 ~ e4", // A F#m A
  AB: "[d4,f#4,a4] ~@2 [d4,f#4,a4] ~ a4 [d4,f#4,a4]!2 ~ [d4,f#4,a4] ~ [d4,a4] [d4,f#4,a4]!2 ~@2", // D D5 D
  AC: "[c#4,e4,a4] ~@2 [c#4,e4,a4] ~ a4 [c#4,e4,a4]!2 ~ [c#4,e4,a4] ~ a4 [c#4,e4,a4]!2 ~ e4", // A
  AD: "[b3,d4,g4] ~@2 [b3,d4,g4] ~ g4 [b3,d4,g4]!2 ~ [b3,d4,g4] ~ [b3,d4,g4]!3 ~@2", // G
  AE: "[c#4,e4,a4] ~@2 [c#4,e4,a4] ~ [c#4,a4] [c#4,e4,a4]!2 ~ [c#4,e4,a4] ~ [c#4,e4,a4]!3 ~@2", // A F#m A
  AF: "[d4,f#4,a4]@2 ~ [d4,f#4,a4] ~ [d4,a4] [d4,f#4,a4]!2 ~ [d4,f#4,a4] ~ [d4,a4] [d4,f#4,a4]!2 ~@2", // D D5 D D5 D
  AG: "[b3,d4,g4] ~@7", AH: "[c#4,e4,a4]", AI: "b3", AJ: "[b3,d4,g4]@4 [b3,d4,g4]!2 g4 [b3,d4,g4] ~@8",
  AK: "[d4,f#4,a4] ~@2 [d4,f#4,a4]!2 ~ [d4,f#4,a4] ~@2 [d4,f#4,a4] ~@2 [d4,f#4,a4]!2 ~@2", // D
  AL: "[c#4,e4,a4] ~@2 [c#4,e4,a4]!2 ~ [c#4,e4,a4] ~@2 [c#4,e4,a4] ~@2 [c#4,e4,a4]!2 ~@2", // A
  AM: "[b3,d4,g4] ~@2 [b3,d4,g4]!2 ~ [b3,d4,g4] ~@2 [b3,d4,g4] ~@2 [b3,d4,g4]!2 ~@2", // G
  AN: "[c#4,e4,a4] ~@2 [c#4,e4,a4]!2 ~ [c#4,e4,a4] ~@2 [c#4,e4,a4] ~@2 [c#4,e4,a4]!2 ~ [c#4,e4,a4]", // A
  AO: "[[c#4,e4,a4]!2 ~ [c#4,e4,a4] ~ [c#4,e4,a4]@26 ~]/2", // A
})).s("gm_electric_guitar_clean").gain(0.24).pan(0.3)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  ~@25 A B C D E F G ~ H I J K ~@8 L M N O P Q R ~ S T U V ~@12 W O C ~ P F ~ X ~@2 Y Z AA AB AC Z AA AB AC Z AA AB AC Z
  AA AB AC Z AA AB AC Z AA AB AD ~
>`.pickRestart({
  A: "~@2 [d4,f#4,a4] ~@2 f#4 ~@2 [d4,f#4,a4] ~@2 f#4 ~@3 [d4,a4]", // D D5
  B: "~@2 [b3,d4,g4] ~@2 d4 ~@2 [b3,d4,g4] ~@2 d4 ~@3 [b3,g4]", // G Em
  C: "~@2 [c#4,e4,a4] ~@2 e4 ~@2 [c#4,e4,a4] ~@2 e4 ~@3 [c#4,e4,a4]", // A
  D: "~@2 [b3,d4,g4] ~@2 d4 ~@2 [b3,g4] ~@2 d4 ~@3 [b3,d4,g4]", // G Em G
  E: "~@2 [d4,f#4,a4] ~@5 [d4,a4] ~@2 f#4 ~@3 [d4,f#4,a4]", F: "~@2 [b3,d4,g4] ~@5 [b3,d4,g4] ~@2 d4 ~@3 [b3,d4,g4]",
  G: "~@2 [c#4,e4,a4] ~@2 c#4 ~@2 [c#4,e4,a4] ~@2 e4 ~@3 [c#4,a4]", // A F#m
  H: "~ [d4,f#4,a4]!2 ~@2 f#4 ~@2 [d4,f#4,a4] ~@2 f#4 ~@3 [d4,a4]", // D D5
  I: "~ [c#4,e4,a4]!2 ~@5 [c#4,e4,a4] ~@2 [c#4,e4] ~@3 [c#4,e4,a4]", // A C#m A
  J: "~ [b3,d4,g4]!2 ~@5 [b3,d4,g4] ~@2 b3 ~@3 [b3,d4,g4]", K: "~ [c#4,e4,a4]!2 ~@5 [c#4,a4] ~@2 e4 ~@4",
  L: "~@2 [d4,f#4,a4] ~@2 f#4 ~@2 [d4,f#4,a4] ~@6 [d4,f#4,a4]", M: "~@2 [b3,d4,g4] ~@2 d4 ~@2 [b3,g4] ~@6 [b3,d4,g4]",
  N: "~@2 [c#4,e4,a4] ~@2 e4 ~@2 [c#4,e4,a4] ~@2 e4 ~@3 [c#4,a4]", // A F#m
  O: "~@2 [b3,d4,g4] ~@2 d4 ~@2 [b3,d4,g4] ~@2 d4 ~@3 [b3,d4,g4]", // G
  P: "~@2 [d4,f#4,a4] ~@2 f#4 ~@2 [d4,a4] ~@2 f#4 ~@3 [d4,f#4,a4]", // D D5 D
  Q: "~@2 [b3,d4,g4] ~@2 d4 ~@2 [b3,d4,g4] ~@2 [b3,d4] ~@3 [b3,g4]", // G Bm Em
  R: "~@2 [c#4,e4,a4] ~@2 e4 ~@2 [c#4,e4,a4] ~@6 [c#4,a4]", // A F#m
  S: "~ [d4,f#4,a4]!2 ~@2 [d4,f#4] ~@2 [d4,f#4,a4] ~@2 f#4 ~@3 [d4,f#4,a4]", // D
  T: "~ [c#4,e4,a4]!2 ~@2 [c#4,e4] ~@2 [c#4,e4,a4] ~@2 [c#4,e4] ~@3 [c#4,a4]", // A C#m A C#m F#m
  U: "~ [b3,d4,g4]!2 ~@2 [b3,d4] ~@2 [b3,d4,g4] ~@6 [b3,d4,g4]", V: "~ [c#4,e4,a4]!2 ~@2 e4 ~@2 [c#4,e4,a4] ~@7",
  W: "~@2 [d4,f#4,a4] ~@2 f#4 ~@2 [d4,f#4,a4] ~@2 f#4 ~@3 [d4,f#4,a4]", X: "[d4,g4]", Y: "~@6 [b3,d4] ~@9",
  Z: "~@2 [d4,f#4,a4] ~@2 [d4,f#4,a4] ~@2 [d4,f#4,a4] ~@2 [d4,f#4,a4] ~@3 [d4,f#4,a4]", // D
  AA: "~@2 [c#4,e4,a4] ~@2 [c#4,e4,a4] ~@2 [c#4,e4,a4] ~@2 [c#4,e4,a4] ~@3 [c#4,e4,a4]", // A
  AB: "~@2 [b3,d4,g4] ~@2 [b3,d4,g4] ~@2 [b3,d4,g4] ~@2 [b3,d4,g4] ~@3 [b3,d4,g4]", // G
  AC: "~@2 [c#4,e4,a4] ~@2 [c#4,e4,a4] ~@2 [c#4,e4,a4] ~@2 [c#4,e4,a4] ~@4", AD: "~@2 [c#4,e4,a4] ~@13",
})).s("gm_electric_guitar_clean").gain(0.12).pan(0.3)

// other · acoustic guitar steel
const acoustic_guitar_steel = note("<~@26 A ~@3 A ~ B ~@13 A ~@3 A ~ B ~@17 A ~ C ~ A ~@4 D ~@25>".pickRestart({
  A: "~ g4@4 ~@11", B: "~ g4@15", C: "~@3 g4@3 ~@2", D: "~@7 a2 b2 d3 d3@2 e3 d3 b2 ~",
})).s("gm_acoustic_guitar_steel").gain(0.49).pan(0.8)

// other · trumpet
const trumpet = note(`<
  A B C D E F C D C ~@8 G@2 ~ H ~ I J@2 ~@10 K L ~@3 H M@2 J@2 N O P Q N O P R ~@2 K L ~@8 M@2 J@2 N O P Q N O S T U V W
  ~@4 X Y Z AA X Y Z AA X Y Z AA X Y Z AA X Y Z AB ~
>`.pickRestart({
  A: "~@13 f4@3", B: "f#4@8 ~@4 d5!2 b4!2", C: "a4!2 ~@14", D: "g4!2 ~@10 g4!2 d5!2", E: "a4!2 ~@10 a4!2 ~@2",
  F: "~@12 d5!2 b4!2", G: "[f#4@7 e4@4 ~@5]/2", H: "b4!2 ~@2 a4!2 ~@10", I: "~@8 b4 ~ a4 ~ f#4 b3 d4 ~",
  J: "[~@4 d4@3 c#4@2 e4@3 ~@4]/2", K: "~@4 d5!2 b4!2 a4!2 ~@6", L: "~@8 a4!2 ~@6",
  M: "[f#4@14 e4@8 ~@2 b4 ~ a4 ~ f#4 b3 d4 ~]/2", N: "~@2 d5@3 f#4@3 a4@3 d4@3 g4@2", O: "~@2 b3@3 d4@3 g4@3 b4@3 a4@2",
  P: "~@2 c#4@3 e4@3 a4@4 g#4@3 ~", Q: "[g4,b4]!2 ~ [g4,b4] ~ [g4,b4] ~@10", R: "[g4,b4] ~@15",
  S: "~@2 c#4@3 e4@2 ~ e4@4 d#4@3 ~", T: "d4!2 ~ d4 ~ c#4 ~@10", U: "e4!2 ~ b4 ~ e4 ~@9 c#4",
  V: "b3!2 ~ g4 ~ a4 ~@9 f#4", W: "e4!2 ~ b4 ~ e4 ~@10", X: "~@4 d5!2 a4!2 f#4!2 ~@6", Y: "~@4 e5!2 c#5!2 a4!2 ~@6",
  Z: "~@4 g4!2 d5!2 g4!2 ~@6", AA: "~@4 a4!2 e5!2 a4!2 ~@6", AB: "[e4,a4]!2 ~ [e4,a4] ~ [e4,a4] ~@10",
})).s("gm_trumpet").gain(0.31).pan(0.7)

// other · synth bass 1
const synth_bass_1 = note("<~@61 A B C B D E F E ~@36>".pickRestart({
  A: "f#4 ~ f#4 ~@7 f#5!2 ~@2 f#5!2", B: "e4 ~ e4 ~@7 e5!2 ~@2 e5!2", C: "d4 ~ d4 ~@7 d5!2 ~@2 d5!2",
  D: "f#4 ~ f#4 ~@13", E: "e4 ~ e4 ~@13", F: "d4 ~ d4 ~@13",
})).s("gm_lead_8_bass_lead").gain(0.29).pan(0.9)

// other · lead 1 square
const lead_1_square = note(`<
  ~@61
  [~@2 a5 ~@2 g5 ~@2 f#5 ~ f#5 ~@5]
  [~@2 a5 ~@2 g5 ~@2 f#5 ~@2 f#5 ~@4]
  [~@2 g5 ~@2 f#5 ~@2 d5 ~@2 d5 ~@4]!2
  ~@40
>`).s("gm_lead_1_square").gain(0.21).pan(0.2)

// other · piano
const piano = note(`<
  ~@12 A B ~@2 A B ~@2 A B ~@2 A C@3 D E@3 D ~@7 A B ~@2 A F@3 D E@3 D ~@11 A B ~@2 A F@3 D E@3 ~@29
>`.pickRestart({
  A: "d4@2 c#4@7 d4@2 b3@2 c#4@3", B: "a3 ~@3", C: "[a3@11 [a3,d4]@2 [b3,d4]@16 [c#4,e4]@7 ~@12]/3",
  D: "d4@3 b3@3 ~@10", E: "[~@11 [a3,d4]@2 [b3,d4]@16 [c#4,e4]@7 ~@12]/3",
  F: "[a3@4 ~@7 [a3,d4]@2 [b3,d4]@16 [c#4,e4]@7 ~@12]/3", // D5 Bm C#m
})).s("gm_piano").gain(0.05)

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

// drums · rim
const rim = s("rim").struct(`<
  ~ A@3 B A@7 B A@7 B A@7 C A@3 D A@7 B A@7 C A@3 ~ A@3 E A@7 B A@7 ~ A@2 ~@4 D A@3 C A@3 F A@3 C A@3 E A@3 F A@3 G ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~@2 x", C: "~@4 x ~@7 x ~ x!2", D: "~@7 x", E: "~@4 x!2 ~@6 x ~@3",
  F: "~@4 x!2 ~@6 x ~@2 x", G: "~ x ~ x ~@12",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct("<~@8 [~@12 x!4] ~@27 [~@12 x!4] ~@23 [~@8 x!5 ~ x ~] ~@44>").gain(0.48)

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

// drums · low tom
const low_tom = s("lt").struct("<~@52 [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@3] ~@52>").gain(0.4)

// … 17 more lines

More by Jovanotti