Strudelify

Un raggio di sole

Jovanotti

KeyE majorTempo113 bpm
0:00/0:00
// Un raggio di sole — Jovanotti
// 113 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 135 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(113/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 · epiano1
const epiano1 = note(`<
  ~@4 A B ~ C@3 ~ D@2 ~@3 E@2 ~@2 F@2 ~@2 G ~ H I@2 J ~@2 K ~@2 L@2 ~@3 M ~@8 N@2 O@2 N@2 O@2 N ~@4 P ~ Q R S T U R V W
  U R X Y@2 R Z AA@6 AB AA ~@7 AC AD AE AF ~ AG AH@2 ~@24 AI@8 ~
>`.pickRestart({
  A: "~@8 [a6,b6] [d6,e6,f6,g6] [g5,a5,b5,c6] [c5,d5,e5,f5] [f4,g4,a4,b4] [b3,c4,d4,e4] [e3,f3,g3,a3] [b2,c3,d3]", // Asus2 Em7 Cmaj7 Dm7 G7 Cmaj7 Fmaj7 Bm
  B: "b2 ~@13 b3@2, ~@3 b4@5, ~ g#4, ~@11 d#4@5",
  C: "[~@11 b3@7 ~@5 b3, ~@7 b4@11 ~ b4@5, ~@4 a4@5 ~ g#4@2, ~@19 e4@17 ~@7 d#4@5]/3",
  D: "[~@14 b3@17 ~, ~@3 b4@13, ~@8 a4@23 ~, ~@11 e4@21]/2",
  E: "[~@14 b3@5 ~@13, [a3,c#4] ~, e4@10 ~ e4@7 ~@14, ~@3 b4@6 ~@7, ~@4 a4@5 ~@7]/2", // A
  F: "[~@14 b3@13 ~@5, ~@6 b4@21 ~@5, ~@8 a4@19 ~@5, ~@11 e4@16 ~@5]/2",
  G: "~@2 [c#4,e4,a4,b4] ~@2 [c#4,e4,a4,b4] ~@2 [c#4,e4,b4] ~ [c#4,e4,a4,b4] ~ [c#4,e4,a4,b4] [c#4,e4,a4,b4]@3", // A C#m7 A
  H: "~@2 b3 ~ d#4!2 g#4@4 d#4@3 e4@3", I: "[d#4@9 ~ b3@13 ~@5 e4@4]/2", J: "g#4@13 ~@3",
  K: "~ [e4,f#4,a4]@3 [e4,f#4,b4] ~ [e4,f#4,a4] ~@9", L: "[g#4@7 e4 f#4@4 g#4@4 a4@8 ~@8, b3@21 ~@11, d#4 ~]/2",
  M: "~@5 b4@3, b3, ~ e4@7, ~@3 f#4@5",
  N: "~ [e4,f#4,g#4,b4]!2 ~ [e4,f#4,g#4,b4] ~ [e4,f#4,g#4,b4] ~ [e4,f#4,g#4,b4] ~@2 [e4,f#4,g#4,b4] ~ [e4,f#4,g#4,b4] ~@2", // E
  O: "~ [e4,f#4,a4,b4]!2 ~ [e4,f#4,a4,b4] ~ [e4,f#4,a4,b4] ~ [e4,f#4,a4,b4] ~@2 [e4,f#4,a4,b4] ~ [e4,f#4,a4,b4] ~@2", // Esus4
  P: "[e4,f#4,a4,b4]@2 ~ [e4,f#4,a4,b4] ~@2 [e4,f#4,a4,b4]@4 [e4,f#4,a4,b4] ~@5", Q: "~@8 b4@3 a4@3 g#4@2", R: "f#4",
  S: "e4 d#4 f#4 d#4", T: "b3@13 ~@3", U: "~@6 b3@2 b4@3 a4@3 g#4@2", V: "[b3,e4,g#4] [b3,e4,a4]", W: "[b3,e4,g#4]",
  X: "[e4,g#4]@2 [f#4,a4] [g#4,b4]", Y: "[[f#4,a4]@8 [e4,g#4]@11 ~@3 b3@2 b4@3 a4@3 g#4@2]/2", Z: "g#4 a4 b4@2",
  AA: "~@2 [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~@2 [e4,f#4,b4] ~ [e4,f#4,b4] ~@2", // Esus2
  AB: "~@2 [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~@2 [e4,f#4,b4] ~@2 [e4,f#4,b4] ~", // Esus2
  AC: "~@10 b4 ~ b4 ~@3", AD: "~@2 g#4 ~ b4 ~@3 d#4@8", AE: "b4@3 a4@3 g#4@2 e4@4 c#4@4", AF: "b3@11 ~@5",
  AG: "[d4,d#4] f#4 ~ f#4 ~ g#4 ~ b4 ~ c#5 ~ d#5@3 c#5@2", AH: "[a4@3 g#4@3 e4@2 c#4@3 b3@12 ~@9, g#4 ~@31]/2",
  AI: "[~@2 [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~@2 [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4]@2 ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~@2 [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4]@2 ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~@2 [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4]@2 ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~@2 [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4]@2 ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~@2 [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4]@2 ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~@2 [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4]@3 [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~@2 [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4]@2 ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~ [e4,f#4,b4] ~@2 [e4,f#4,b4] ~ [e4,f#4,b4] ~@2]/8", // Esus2
})).s("gm_epiano1").gain(0.35).pan(0.1)

// bass · electric bass finger
const bass = note(`<
  ~@5 A B C D A B C D A B C E A B C D A F G H A B C I A B C J A B C K A B C L M N O P Q R S T Q U V W X Y Z W X AA A B C
  AB AC F G AD A B C AE A B C AF A B C AE AG U V AH AI AJ AK T X Y Z W X AA M N O AL A AM C AN AO ~@6 AP AQ AR AS AT AQ
  AR AU T AQ AR AV AW AX AY AZ BA AP AQ AR AS AT AQ AR AU T BB
>`.pickRestart({
  A: "e2@6 ~ e2 g#2 a2 ~ b2 ~ g#2 e2!2", B: "c#2@6 ~ c#2 e2 f#2 ~ g#2 ~ e2 c#2!2",
  C: "g#1@6 ~ g#1 b1 c#2 ~ d#2 ~ e2 f#2 g#2", D: "b1 ~ b1@4 c#2 e2 f#2 g#2 b2 ~ c#3@2 b2 ~",
  E: "b1 ~ b1@3 ~ b1@2 c#2!2 b1 e2 f#2@2 g#2@2", F: "c#2@6 ~ c#2 e2 f#2 ~ g#2 ~ b2 c#3 ~",
  G: "g#2@6 ~ g#1 b1 c#2 ~ d#2 ~ d#2 e2 f#2", H: "~ f#2 ~ f#2 ~ e2 c#2 ~ b1@4 f#2@4",
  I: "b1 ~ b1@4 c#2 ~ e2@2 f#2 ~ g#2@2 b2@2", J: "b1 ~ b1@3 ~ b1 ~ f#2 ~ f#2@3 f#2@3",
  K: "b1@5 ~ b1@2 f#2!2 ~ f#2 ~ f#2 f#2@2", L: "b1@3 c#3 b2@2 g#2 f#2", M: "e2@7 ~ g#2!2 ~ g#2 ~ g#2 g#2@2",
  N: "c#2@8 g#2!2 ~ g#2 ~ g#2!2 ~", O: "g#1@8 g#2!2 ~ g#2 ~ g#2 g#2@2", P: "~ b1 ~ c#2 ~ d#2 ~ b1",
  Q: "~ e2 ~ e2 ~ e2 ~ e2", R: "~@2 c#2@2 ~@2 g#2 c#2@2 g#2 c#2 ~ g#2@2 c#2 ~",
  S: "~@2 f#1@2 ~@2 f#1@2 ~@2 f#1@3 ~ f#1@2", T: "b1@2 b2 ~ c#2@2 c#3 ~ d#2@2 d#3 ~ b1@2 b2 ~",
  U: "~ c#2 ~ c#2 ~ c#2 ~ c#2", V: "~ f#1 ~ f#1 ~ f#1 ~ f#1", W: "b1!2 ~ b1 c#2!2 ~ c#2 d#2!2 ~ d#2 b1!2 ~ b1",
  X: "e2@2 e3 ~ e2@2 e3 ~ e2!2 ~ e2@2 e3 e2 ~", Y: "c#2@2 c#3 ~ c#2@2 c#3 ~ c#2!2 ~ c#2@2 c#3 c#2 ~",
  Z: "f#2@2 f#3 ~ f#2@2 f#3 ~ f#2!2 ~ f#2@2 f#3 f#2 ~", AA: "~ d#3@2 ~, b1, ~ f#2@7",
  AB: "b1@6 ~ b1 f#2!2 ~ f#2 ~ f#2!2 ~", AC: "e2 ~ e2@4 ~ e2 g#2 a2 ~ b2 ~ g#2 e2!2",
  AD: "b1@5 ~ b1 ~ c#2@2 e2 ~ g#2@2 b2 ~", AE: "b1@2 b2@5 b1 b1@2 b2@6", AF: "b1@2 b2@5 b1 b2@2 b2 ~@5",
  AG: "e2@5 ~ e2@2 ~@2 e2@2 ~@2 e2@2", AH: "b1 b2 c#2 c#3 d#2 d#3 b1 b2", AI: "e2@2 ~ e2 ~ e2 ~ e2",
  AJ: "~@2 c#2@3 ~ c#2@2 ~@2 c#2@2 ~@2 c#2@2", AK: "f#1@3 f#1 g#1@3 g#1 a1@3 a1 c#2@4", AL: "b1@5 ~ b2 ~ c#3@4 b2@4",
  AM: "c#2@6 ~ c#2 e2 f#2 ~ g#2 ~ b2 c#3 c#2", AN: "b1 ~ b1@4 ~ b1!2 ~ b1@2 b2@2 b1@2", AO: "e2@7 ~@9",
  AP: "c#3@4 f#3@3 ~ g#3 ~ f#3 ~ e3 c#3 b2 ~", AQ: "e2@2 e3 ~ e2@2 e3 ~ e2!2 ~ e3@2 e2 e3 ~",
  AR: "c#2@2 c#3 ~ c#2@2 c#3 ~ c#2!2 ~ c#3@2 c#2 c#3@2", AS: "f#2 ~ f#2 ~ g#2 ~ g#2 ~ a2 ~ a2 ~ a#2 ~ a#2!2",
  AT: "b2 ~ b2 ~ a2 ~ a2 ~ g#2 ~ g#2 ~ f#2 ~ f#2 ~", AU: "f#1!2 ~ f#1 g#1!2 ~ g#1 a1 ~ a1@3 a1 c#2 c2",
  AV: "f#1@3 f#1 g#1@3 g#1 a1@3 a1 a#1@3 a#1", AW: "b1@3 b1 a1@3 a1 g#1@3 g#1 f#1@3 f#1",
  AX: "e2@4 ~ e2!3 g#2@2 b2 ~ c#3@2 e3 ~", AY: "c#2@5 ~ c#2@2 ~@2 e2@2 ~@2 g#2@2", AZ: "~ f#2 ~ g#2 ~ a2 ~ a#2",
  BA: "b2!2 ~ b2 a2!2 ~ a2 g#2!2 ~ g#2 f#2!2 ~@2", BB: "e1",
})).s("gm_electric_bass_finger").gain(0.54)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@5 A B C D A E C D F G H I J K L M N O P I Q K L M F R P I S K L M T R P I S K P M B U@2 V W U X Y ~@6 F G H I Z G H
  I J K L M F G H I J K L M B U@2 V W U X Y ~@6 A B C D A E C D ~@34
>`.pickRestart({
  A: "[b3,d#4,g#4]@3 [b3,d#4,g#4]!2 ~ [b3,d#4,g#4]@10", B: "[b3,e4,g#4]@3 [b3,e4,g#4]!2 ~ [b3,e4,g#4]@10",
  C: "[g#3,b3,d#4]@3 [g#3,b3,d#4]!2 ~ [g#3,b3,d#4]@10", // G#m
  D: "[a3,c#4,e4,f#4]@3 [a3,c#4,e4] [a3,c#4] ~ [a3,c#4,e4,f#4]@10", // F#m7 A F#m7
  E: "[b3,e4]@3 [b3,e4,g#4]!2 ~ [b3,e4,g#4]@9 ~, g#4 ~@15", F: "[b3,e4,g#4]@3 [b3,e4,g#4]!2 ~ [e4,g#4]@10",
  G: "[b3,g#4] ~@2 [d#4,g#4] d#4 ~ [b3,e4,g#4]@10, d#4@3 ~@13", // E G#5 E
  H: "[g#3,b3,d#4,f#4]@3 [g#3,b3,d#4,f#4] [g#3,b3,d#4] ~ [g#3,b3,d#4,f#4]@10", // G#m7 G#m G#m7
  I: "[a3,c#4,e4,f#4]@3 [a3,c#4,e4] [a3,c#4] ~ [a3,c#4,e4,f#4]@6 [a3,c#4,e4,f#4]@2 [a3,c#4,e4] [a3,c#4,e4,f#4]", // F#m7 A F#m7 A F#m7
  J: "[b3,g#4]@3 [b3,g#4] [b3,e4,g#4] ~ [e4,g#4]@10, e4 ~@15", // E
  K: "[b3,g#4] ~@2 [b3,d#4,g#4]!2 ~ [b3,e4,g#4]@10, d#4@3 ~@13", // E G#m E
  L: "[g#3,b3,d#4,f#4]@3 [g#3,b3,d#4] [g#3,b3,d#4,f#4] ~ [g#3,b3,d#4,f#4]@10", // G#m7 G#m G#m7
  M: "[a3,c#4,e4,f#4]@3 [a3,c#4,e4] [a3,c#4] ~ [a3,c#4,e4,f#4]@6 [a3,c#4,e4,f#4]@2 [a3,c#4,e4,f#4] ~", // F#m7 A F#m7
  N: "[b3,e4,g#4]@3 [b3,g#4] [b3,e4,g#4] ~ [e4,g#4]@10", // E
  O: "[b3,g#4] ~@2 [b3,d#4,g#4] [d#4,g#4] ~ [b3,e4,g#4]@10, d#4@3 ~@13", // E G#m G#5 E
  P: "[g#3,b3,d#4,f#4]@3 [g#3,b3,d#4,f#4]!2 ~ [g#3,b3,d#4,f#4]@10", // G#m7
  Q: "[b3,g#4]@3 [b3,e4,g#4]!2 ~ [e4,g#4]@10, e4 ~@15", R: "[b3,g#4] ~@2 [d#4,g#4]!2 ~ [b3,e4,g#4]@10, d#4@3 ~@13",
  S: "[b3,g#4]@3 [e4,g#4] [b3,e4,g#4] ~ [e4,g#4]@10, e4 ~@15", T: "[b3,e4,g#4]@3 [e4,g#4] [b3,e4,g#4] ~ [e4,g#4]@10",
  U: "[b3,e4,g#4] ~@2 [b3,e4,g#4]!2 ~ [b3,e4,g#4]@10", // E
  V: "[a3,c#4,f#4]@3 [a3,c#4,e4,f#4]!2 ~ [a3,c#4,e4,f#4]@10, e4 ~@15", // F#m F#m7
  W: "[b3,g#4]@3 [b3,e4,g#4]!2 ~ [b3,e4,g#4]@10, e4 ~@15", X: "[b3,e4] ~@2 [b3,e4,g#4]!2 ~ [b3,e4,g#4]@10, g#4@3 ~@13",
  Y: "[a3,c#4,f#4]@3 [a3,c#4,e4,f#4]!2 ~ [a3,c#4,e4,f#4]@8 ~@2, e4 ~@15", // F#m F#m7
  Z: "[b3,f#4]@3 [b3,e4,f#4] ~@2 [b3,e4,f#4] ~@3 [e4,g#4]@6, e4 ~@15", // B5 Bsus4 E
})).s("gm_electric_guitar_clean").gain(0.42).pan(0.9)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  ~@8 A ~@3 A B C D E F ~ G A F H ~ E B ~ G A B I ~ E J ~ G A J I ~ E J ~@2 A ~@14 B C D E K C D E F ~ G A B C D E F ~ G
  A ~@17 A ~@3 A ~@34
>`.pickRestart({
  A: "~@3 f#4 [e4,f#4] ~@11", B: "~@3 b3@5", C: "~@3 b3 [b3,g#4] ~@11", D: "~@4 f#4 ~@11",
  E: "~@3 f#4 [e4,f#4] ~@9 f#4 ~", F: "~@3 e4 ~@2 b3@10", G: "~@3 f#4 ~@12", H: "~@4 b3 ~@11", I: "~@3 b3!2 ~@11",
  J: "~@3 b3 ~@2 b3@10", K: "~@5 b3@3",
})).s("gm_electric_guitar_clean").gain(0.24).pan(0.9)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  ~@12 A B@2 ~ C@2 D E F@3 ~@22 G@2 H I J@2 H I H J H I J ~@21 G@2 H I J@2 H I ~@9 K L@2 M@2 ~@16 G@2 H I J@2 H N ~ J H
  O P H J H P ~
>`.pickRestart({
  A: "~ e4 f#4@2, ~@4 [a3,c#4]@11 ~", B: "[[b3,d#4,e4,g#4]@13 ~@3]/2", C: "[~@3 f#4@5]/2", D: "~ e4@3", E: "[b3,d#4]",
  F: "[e4@2 f#4@3 [d#4,e4,g#4]@7 ~@4]/3", G: "[[e4,g#4]@14 ~ [e4,g#4]@14 ~@3]/2", H: "[e4,g#4]@13 ~@3",
  I: "[c#4,e4,f#4]@13 ~@3", J: "[e4,g#4]@7 ~", K: "~@3 e4", L: "[b4@9 ~@7]/2", M: "[b4@19 ~@13]/2",
  N: "[e4,f#4]@13 ~@3", O: "[e4,g#4]@3 ~", P: "[e4,f#4,a4]@13 ~@3",
})).s("gm_electric_guitar_muted").gain(0.17)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@45 A@3 B C ~@29 A@3 B C ~@12 D E F G ~ E@3 B H I J K L I M K N O P@2 N O P@2 N O Q@2 ~ R S@3 T U V@3
>`.pickRestart({
  A: "[b4@18 g#5@3 f#5@3 b4@10 g#5@3 f#5@3 b4@8]/3", B: "e5 f#5 g#5 a5", C: "g#5 ~", D: "~ c#5", E: "b4@10 g#5@3 f#5@3",
  F: "b4@3 f#5", G: "b4@15 ~", H: "[e5,g#5]@10 [e5,g#5]@3 [d#5,f#5]@3", I: "[g#4,b4]@10 [e5,g#5]@3 [d#5,f#5]@3",
  J: "[f#4,g#4,b4]@10 [e5,g#5]@3 [d#5,f#5]@3", K: "[c#5,e5] [d#5,f#5] [e5,g#5] [f#5,a5]",
  L: "[e5,g#5]@6 [e5,g#5] [d#5,f#5]", M: "[f#4,g#4,b4]@2 [a4,c#5] [b4,d#5]", N: "b3@10 e4@3 d#4@3, g#3",
  O: "b3@10 e4@3 d#4@3, e3", P: "[b3@10 e4@3 d#4@3 f#4@8 [b3,g#4]@4 [c#4,a4]@4, a3@3 ~, f#3 ~]/2",
  Q: "[b3@5 e4@2 d#4 ~@2 f#4@2 [b3,g#4]@2 [c#4,a4]@2, a3@3 ~, f#3@21 ~@11]/2", R: "[g#4,b4] [a4,c#5] [b4,d#5] [c#5,e5]",
  S: "[[d#5,f#5] [e5,g#5] [f#5,a5] g#5 [e5,f#5]@8, ~@12 b5@35 ~]/3", T: "[g#5,b5]@4 [f#5,a5]@3 ~ [f#5,a5]@4 [e5,g#5]@4",
  U: "[d#5,f#5]@4 [c#5,e5]@3 ~ [c#5,e5]@3 [b4,d#5]@5", V: "[~ [f#4,b4] [e3,e4,g#4], [a4,c#5]@2 ~, ~ b3@2]/3",
})).s("gm_string_ensemble_2").gain(0.35).pan(0.8)

// other · string ensemble 1
const string_ensemble_1 = note("<~@113 A@2 B C B D B E F@3 E ~@10>".pickRestart({
  A: "f#5 ~@2 g#5 ~@2 b4@6 ~@4", B: "f#5 ~@2 g#5 ~@2 b4@7 ~@3", C: "f#5 ~@2 g#5 ~@2 f#5@2 a5 ~@2 g#5 ~@2 f#5 ~",
  D: "f#5 ~@2 g#5 ~@2 b4@8 ~@2", E: "f#5 ~@2 g#5 ~@2 f#5 ~ a5 ~@2 g#5 ~@2 f#5 ~", F: "f#5 ~@2 g#5 ~@2 b5@3 ~@7",
})).s("gm_string_ensemble_1").gain(0.48)

// other · alto sax
const alto_sax = note("<~@28 A B ~@2 C D ~@12 E F G H ~@30 E F I J ~@17 K L M N O ~@29>".pickRestart({
  A: "~@10 a3!3 f#3 a3 ~", B: "a3 g#3@2 ~@5", C: "~@11 a3!4 ~", D: "a3@2 g#3 b3@3 ~@10", E: "~@10 b3!2 b3@2 c#4 b3",
  F: "b3@3 a3@10 ~ b3 ~", G: "b3@2 ~ a3@2 ~ b3@2 c#4@2 ~ b3@2 ~ a3 ~", H: "a3@3 g#3@2 a3@2 ~ b3@2 ~@6",
  I: "b3@3 a3@2 ~ b3@2 c#4@3 b3@2 ~ a3 ~", J: "a3@3 g#3@2 ~ a3@2 b3@3 ~@5", K: "~@2 b3!2 b3@2 g#3 f#3 g#3@4 ~@4",
  L: "~@2 b3!2 b3@2 g#3 f#3 a3@3 g#3@3 ~@2", M: "~@2 b3!3 ~ a3 g#3 a3@4 ~@2 b3 ~",
  N: "b3@3 a3@2 ~ b3@2 c#4@2 ~ b3@2 ~ a3 ~", O: "c#4@3 b3@2 ~ g#3 b3@7 ~@2",
})).s("gm_alto_sax").gain(0.54)

// other · electric guitar muted
const electric_guitar_muted_2 = note("<~@52 A B@2 C D B ~@28 A B@3 D B ~@43>".pickRestart({
  A: "~@14 b3 c#4", B: "e4!2 c#4 ~ e4 ~ c#4 e4 ~ g#4 ~ e4@3 b3 c#4", C: "e4!2 c#4 ~ e4 ~ c#4 e4 ~ g#4 ~ e4@2 ~ b3 c#4",
  D: "e4!2 c#4 ~ e4 ~ g#4 ~ f#4 e4 c#4 e4@2 f#4 ~@2",
})).s("gm_electric_guitar_muted").gain(0.54)

// other · pad new age
const pad_new_age = note(`<
  ~@45 A B C D A B C D A B C D A ~ E F G H I ~@11 J K ~@2 A B C D A B C D A B C D A ~ A L M N A L O N A ~@3 P ~@2 Q ~@12
  R@4 ~@10
>`.pickRestart({
  A: "~@4 b5 ~ g#5 ~@3 e5 ~@2 b4 ~@2", B: "~@6 b5 ~ g#5 ~@2 e5 ~@2 b4 ~", C: "c#5 ~@5 b5 ~ a5 ~@2 e5 ~@2 b4 ~",
  D: "~@6 b5 ~ a5 ~@2 e5 ~@2 f#5 ~", E: "~@4 b5 ~ g#5 ~@9", F: "~@4 b5 ~ g#5 ~@3 d#5 ~@2 b4 ~@2", G: "d#5 ~@15",
  H: "b4 ~@3 c#5 ~@3 e5 ~@3 f#5 ~@3", I: "[e5,g#5] ~@15", J: "~@4 b5 ~ g#5 ~ b5@2 ~ a5 ~@2 g#5 ~", K: "f#5 ~@7",
  L: "~@6 b5 ~ g#5 ~@2 d#5 ~@2 b4 ~", M: "d#5 ~@5 b5 ~ g#5 ~@2 d#5 ~@2 b4 ~", N: "d#5 ~@3 e5 ~@3 f#5 ~@3 g#5 ~@3",
  O: "d#5 ~@5 b5 ~ a5 ~@2 d#5 ~@2 b4 ~", P: "~@4 b5 ~ g#5 ~@3 e5 ~@3 b4 ~", Q: "b4 ~@2 c#5 ~@2 e5 ~ a5 ~@3 a5 ~@3",
  R: "f#5 ~@2 g#5 ~@2 b5 ~@3 g#5 ~@2 f#5 ~@2",
})).s("gm_pad_new_age").gain(0.3).pan(1)

// other · clavinet
const clavinet = note("<~@5 A B C ~ A D C ~@21 E@8 ~@4 F@13 ~@17 G@2 H G I@8 ~@22 J@16 ~ J@8 ~>".pickRestart({
  A: "e2@2 e2 ~@4 e2 ~ e2 ~@4 e2@2", B: "c#2@2 ~@5 c#2 ~ c#2 ~@4 c#2@2", C: "g#1 ~@7",
  D: "c#2@2 c#2 ~@4 c#2 ~ c#2 ~@4 c#2@2", E: "~@2 e2 e1 ~ e2 ~@10", F: "~@2 b2 c#3 e3!2 e2 e3 ~@8",
  G: "~@2 e3!2 ~@4 e3!2 ~ e3 ~@4", H: "~@2 d#3!2 ~@4 d#3!2 ~ d#3 ~@4", I: "~@2 e3 e2 ~@7 e3!3 ~@2",
  J: "~@2 e3 e2 ~@4 e3!2 ~ e3 ~@4",
})).s("gm_clavinet").gain(0.55).pan(0.2)

// drums · kick
const kick = s("bd").struct("<[~@4 x ~@8 x ~@2] [x ~@4 x ~@2]!62 x [x ~@4 x ~@2]!61 x [x ~@4 x ~@2]!8 ~>").gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  [~@3 x!2 ~@2 x!6 ~@3]
  [~@4 x ~@2 x ~@4 x ~@3]!62
  ~
  [~@4 x ~@2 x ~@4 x ~@3]!61
  ~
  [~@4 x ~@2 x ~@4 x ~@3]!8
  ~
>`).gain(0.8)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~ A@62 ~ A@45 B@8 A@8 ~ A@8 ~>".pickRestart({
  A: "~@5 x ~@2 x!2 ~@6", B: "~@8 x!2 ~@6",
})).gain(0.48)

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

// … 50 more lines

More by Jovanotti