Strudelify

Acqua e sale

Celentano

KeyD majorTempo98 bpm
0:00/0:00
// Acqua e sale — Celentano
// 98 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 111 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(98/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("<~@100 [~@7 e5, g6@11 f#5@2 b5@3, ~ b5@5 e6@2 g5@8, ~@3 f#6@13, ~@2 a5@3 d6@3] ~@10>")
  .s("gm_piano").gain(0.56)

// bass · slap bass 1
const bass = note(`<
  A B C D E B C D E F G H I J K L M N O F G H I J P L M Q R S T U V W X Y Z AA AB Y AC AA AB Y Z AA AB Y AC AA AB S T
  U@2 S T U@2 ~ F G H I J P L M Q R S T U V W X Y Z AA AB Y Z AA AD AE AC AA AB Y AC AA AB S T U@2 S T U@2 ~ B AF D E B
  C D E ~@2
>`.pickRestart({
  A: "~@8 [a2,a#2,b2] d3!4 b2 ~@2", B: "e2@3 ~@4 d2 e2 ~ e2@2 ~@4", C: "e2@3 ~@4 d2 e2 ~ e2@2 ~ e3 ~@2",
  D: "c2@2 ~@5 c2!2 ~ c2 ~@5", E: "c2@2 ~@6 c2 e2 g2 d3 b2 g2 e2 a2", F: "e2@2 ~@5 e2@2 ~ e2@2 ~@4",
  G: "g2 ~@6 g1@3 g1 ~@5", H: "c2@6 ~ c2@3 c2@2 ~@2 g2 ~", I: "d2@6 ~ d2@3 d2@3 ~@3", J: "e2@4 ~@3 e2@3 e2 ~@5",
  K: "d2@5 ~@2 d2@3 d2@2 ~@2 d3 ~", L: "c2@5 ~@2 c2@3 c2@2 ~@2 c3 ~", M: "b1@6 ~ b1@3 b2 ~ b1 b2 ~@2",
  N: "e2@4 ~@2 d2 e2@3 ~@4 d2 ~", O: "e2@4 ~@2 e2@5 ~ e2@2 d3 ~", P: "d2@5 ~@2 d2@3 d2@2 ~@2 d2 ~",
  Q: "e2@4 ~@2 d2 e2@3 ~@4 d3 ~", R: "e2@4 ~@2 e2@5 ~ e2@2 d2 ~", S: "a1@4 a2 ~ a1 a1@4 ~ a2 ~ a1@2",
  T: "d2@4 ~@2 d2 d2@5 a1@2 d2 ~", U: "e2@4 ~@2 d2 e2@5 b2 ~ e2@2", V: "d2@5 ~ d2 d2@4 ~ a2 ~ d2@2",
  W: "c2@5 ~ c3 c2@6 ~ c2 ~", X: "d2@6 d3 d2@2 d2@2 ~ d2@2 ~@2", Y: "a1@4 a2 ~ a1!2 ~@6 [a1,b1] c#2",
  Z: "d2@4 a1 ~ d2!2 ~@8", AA: "b1@5 ~ b1 b1@4 ~ b1@2 d2 d#2", AB: "e2@4 ~@2 b1 e2 ~ e2 ~ e2 b1@2 e3 ~",
  AC: "d2@4 a1 ~ d2 d3 ~@8", AD: "e2@4 ~@2 b1 e2 ~ e2 ~ e2 b1@2 e2 ~", AE: "a1@4 a2 ~ a1!2 ~@6 a1 [b1,c#2]",
  AF: "e2@3 ~@4 d2 e2 ~ e2@2 ~ e2 ~@2",
})).s("gm_slap_bass_1").gain(0.54)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@9 A B C D E F G H I J A B C D E F G H I J K L M N O P Q R S T Q R S T Q R S T Q R S T U@2 V W X@2 Y Z ~ A B C D E F
  G H I J ~@6 Q R S T Q R S T Q R S T Q R S T AA@2 AB@2 AC@3 AD ~@11
>`.pickRestart({
  A: "[e3,d4,g4,b4]@3 [d4,g4,b4] [b3,d4,g4,b4] ~@2 [b3,d4,g4] ~ [b3,d4,g4]@2 ~@2 [b3,d4,g4]@3, ~@8 e3@3 ~ e3@4", // Em7 G
  B: "[g3,b3,d4]@3 f#4 [g3,b3,d4,f#4] ~@2 [b3,d4,f#4]@2 [b3,d4,f#4,a4]@2 [b3,d4] [g3,b3,d4,f#4,a4]@2 [b3,d4,f#4] ~", // G Gmaj7 Bm Bm7 Bm Gmaj7 Bm
  C: "[c3,b3,e4,g4]@3 [b3,e4,g4] ~@3 [b3,e4,g4] ~ [b3,e4,g4] ~@2 [b3,e4,g4]@2 [c3,g3] ~", // Cmaj7 Em C5
  D: "[d4,f#4,a4]@3 [b3,d4,f#4] ~@2 [b3,f#4] [f#3,b3,f#4] ~ [b3,d4,f#4] ~@2 [b3,d4,f#4]@2 ~@2", // D Bm B5 Bm
  E: "[e3,b3,e4,g4]@3 [b3,e4,g4] ~@2 [b3,e4,g4] ~@2 [b3,g4] ~@2 [b3,e4,g4]@2 e3@2", // Em
  F: "[d3,a3,d4,f#4]@3 [a3,d4,f#4] ~@2 [a3,d4,f#4] ~ d3 [a3,d4,f#4] ~ d3 ~ d3@3, ~@3 [d4,f#4], ~@6 a3 ~", // D
  G: "[c3,b3,e4,g4]@3 [e4,g4] ~@2 [b3,e4,g4] ~@2 [b3,e4,g4] ~@3 c3 ~ f#3, ~@6 [b3,e4,g4] ~", // Cmaj7 Em
  H: "[b2,a3,d4,f#4]@3 [a3,d4,f#4,a4] b2 ~ [a3,d4,f#4]@2 b2 [a3,d4,f#4,a4] ~ b2 [a3,d4,f#4,a4]@2 b2 ~", // Bm7 D
  I: "[e3,b3,e4,g4]@3 [b3,e4,g4] ~@2 [b3,e4,g4] e4 ~ [b3,e4,g4] ~@2 [b3,e4,g4]@2 [b3,d4,g4] ~", // Em G
  J: "[e3,b3,e4,g4]@2 ~ [b3,e4,g4] e3 ~ [b3,e4,g4] g4 e3 [b3,g4] ~ e3 [b3,e4,g4]@2 [e3,b3,e4,g4] ~", // Em
  K: "[a3,c4,e4,a4]@2 ~ [c4,e4,a4] ~@2 [c4,e4,a4] a4 a3 [c4,e4,a4] ~ a3 [e4,a4]@2 [c4,a4] ~", // Am A5 F
  L: "[a3,c4,e4,a4]@2 ~ [c4,e4,a4] a3 ~ [c4,e4,g4] [e4,g4] d3 [c4,e4,a4] ~ a3 [c4,e4,a4]@2 a3 ~", // Am C Em Am
  M: "[e3,b3,d4,g4]@2 ~ [b3,d4,g4] e3 ~ [b3,d4,g4] [d4,g4] e3 [b3,d4,g4] ~ e3 [d4,g4]@2 e3@2", // Em7 G G5 G G5
  N: "[a3,d4,f#4]@3 [d4,f#4] d3 ~ [a3,d4,f#4] [d4,f#4] d3 [a3,d4,f#4] ~@2 a3@2 d3@2, d3 ~@11 [d4,f#4]@4", // D
  O: "[c3,b3,e4,g4]@3 [b3,e4,g4] c3 ~ [b3,e4,g4]!2 ~ [b3,e4,g4] ~ c3 [b3,e4,g4]@2 c3 ~", // Cmaj7 Em
  P: "[d3,a3,d4,f#4]@3 [a3,d4,f#4] d3 ~ [a3,d4,f#4] f#4 d3 [a3,d4,f#4] d3 [a3,d4,f#4] [d4,f#4] d3 [a3,d4,f#4] ~", // D
  Q: "[a2,c4,e4,g4]@3 [c4,e4,g4] ~@2 [c4,e4,g4] ~@2 [c4,e4,g4] ~@2 [c4,e4,g4]@2 e3 ~", // Am7 C
  R: "[d3,d4,a4]@3 [d4,a4] ~@2 [d4,f#4,a4] ~ d3 [d4,f#4,a4] ~ d3 [d4,f#4,a4]@2 d3 ~, f#4 ~@15", // D5 D
  S: "[b2,a3,b3,d4,f#4]@3 [a3,d4,f#4] ~@2 [a3,d4,f#4,a4] [a3,d4] b2 [a3,d4,f#4] ~ f#3 [a3,d4,f#4,a4]@2 d#3@2, ~@12 g4 ~@3", // Bm7 D D5 D
  T: "[e3,d4,g4,b4]@2 ~ [d4,g4,b4] e3 ~ [b3,d4,g4] [d4,g4] e3 [b3,d4,g4] ~ e3 [b3,d4,g4]@2 e3 ~", // Em7 G G5 G
  U: "[~@3 [c4,e4,a4] f#4@2 [c4,e4,g4,a4] a4 a3 [c4,e4,a4] ~ a3 [e4,g4,a4]@2 [c4,a4] ~ [a3,c4,e4,a4]@2 ~ [c4,e4,a4] a3 ~ [c4,e4,g4] [e4,g4] d3 [c4,e4,a4] ~ a3 [c4,e4,a4]@2 a3 c5, [a3,c4,e4,a4] g4 ~@10 d5@3 ~, ~ f#4@2 ~@5 f#4@3 ~@3 f#4@7 ~@11]/2", // Am Am7 Am A7 F Am C Em …
  V: "~ [b4,c5] ~ [b3,d4,g4] e3 ~ [b3,d4,g4] [d4,g4] e3 [b3,d4,g4] ~ e3 [d4,g4]@2 e3@2, [e3,b3,d4,g4] b4@7", // Cmaj7 G G5 G G5 Em7
  W: "[e3,b3,d4,g4,a4]@2 ~ [b3,d4,g4] e3 ~ [b3,d4,g4] [d4,g4] e3 [b3,d4,g4] ~ e3 [d4,g4]@2 e3@2", // Em7 G G5 G G5
  X: "[[a3,c4,e4,f#4,a4]@2 ~ [c4,e4,a4] f#4 ~ [c4,e4,g4,a4] a4 a3 [c4,e4,a4] ~ a3 [e4,g4,a4]@2 [c4,a4] ~ [a3,c4,e4,a4]@2 ~ [c4,e4,a4] a3 ~ [c4,e4,g4] [e4,g4] d3 [c4,e4,a4] ~ a3 [c4,e4,a4]@2 a3 c5, ~@2 g4@2 ~@4 f#4@3 ~@3 f#4@6 ~@4 d5@5 ~@3]/2", // F#m7b5 Am Am7 Am A7 F Am C …
  Y: "b4 c5 ~ [b3,d4,g4] e3 ~ [b3,d4,g4,a4] [d4,g4] ~ [b3,d4,g4] d5 [e3,b4] [g4,a4] g4 ~ a4, [e3,b3,d4,g4]@3 ~@5 [e3,b4]@2 ~@4 e3@2, ~ b4@4 ~@7 d4@3 ~", // G G5 G E5 Gsus2 Em7 E5
  Z: "~ a4 g4 [b3,d4,g4] e3 ~ [b3,d4,g4] [d4,g4,a4] [e3,b4] [b3,d4,g4,d5] b4 e3 d4@2 e3@2, [e3,b3,d4,g4]@2 ~@10 g4 ~@3", // G Dsus4 E5 G Em7
  AA: "[f#4@2 g4@2 f#4 ~ g4@2 f#4@3 ~ g4@2 f#4@6 ~@2 g4 ~ d5@2 ~ c5@2 ~ b4 [b4,c5]]/2", // Cmaj7
  AB: "[a4@2 b4 ~@3 f#4 ~ g4@2 ~ f#4 ~ g4 ~ e4@6 ~ f#4 ~ g4 ~@2 a4 ~ a4 ~@2]/2",
  AC: "[f#4@2 g4 ~ f#4 ~ g4 ~ f#4@3 ~ g4@2 f#4@7 ~ g4 ~@3 [d5,e5] ~ d5 ~ c5 b4@2 ~@6 c5!2 [b4,c5] b4 ~ b4 ~ c5 b4]/3", // Dsus2 Cmaj7
  AD: "~ b4 [b4,c5] a4 g4 ~ a4 ~ [a4,b4] [g4,a4] f#4 a4 g4 f#4 e4 ~", // Cmaj7 Asus2 Gsus2
})).s("gm_acoustic_guitar_nylon").gain(0.27)

// chords · acoustic guitar nylon · soft notes
const acoustic_guitar_nylon_2 = note(`<
  ~@9 A B C D E F G H I J A B C D E F G H I J K L M N O P Q R S M Q R S M Q R S M Q R S M T L M@2 K L M U ~ A B C D E F
  G H I J ~@6 Q R S M Q R S M Q R S M Q R S M ~@2 V W ~@2 X ~@12
>`.pickRestart({
  A: "~@7 e3 ~@3 [e3,b3,d4,g4]@2 ~@3", B: "~@3 b3 ~@4 g3@3 [g3,f#4,a4] ~@4, ~@7 a4@2 ~@7",
  C: "~@4 c3 ~ b3 ~@4 [c3,g3] ~@4", D: "~@3 a4 f#3 ~ d4 [b2,d4] ~@3 f#3 ~@2 b2 ~", E: "~@4 e3 ~@3 e3 e4 ~ e3 ~@4",
  F: "~@4 d3 ~@11", G: "~@4 c3 ~@3 c3 ~@2 c3 ~@4", H: "a4@3 ~@3 a4@2 ~@4 g4 ~@3", I: "~@4 e3 ~@2 b3 e3 ~@2 e3 ~@3 g3",
  J: "~@7 [b3,e4] ~ e4 ~ g3 ~@4", K: "~@7 e4 ~@6 e4 ~", L: "~@7 c4 ~@8", M: "~@7 b3 ~@8",
  N: "~@3 a3 ~@2 a4 a3 ~@3 d3 ~@4", O: "~@8 c3 ~@7", P: "~@7 [a3,d4] ~@4 a3 ~@3", Q: "~@4 e3 ~@3 a2 ~@2 e3@2 ~@3",
  R: "~@3 f#4 d3 ~@11", S: "~@4 f#3 ~@2 f#4 ~@8", T: "~@7 e4 ~@6 [e4,g4] ~", U: "~@7 b3 ~@4 a4 g4 ~@2",
  V: "~@10 a4 ~@5", W: "~@14 g4 ~", X: "~@6 c5 b4!2 ~@2 b4 ~ b4 ~@2",
})).s("gm_acoustic_guitar_nylon").gain(0.13)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A ~@2 B C ~@3 D ~@9 E ~@9 F ~@6 G H I J K L M N O P Q R S T U V ~@18 F W X Y Z AA AB G H I J K L M N O P Q R S T U V
  AC AD AE AF AG AH AI AJ ~@3 B C ~@3 D ~@2
>`.pickRestart({
  A: "g4@6 ~ e4@5 ~@4, [a4,b4]@3 ~, ~@3 g4@3 ~@2", B: "~@12 [a3,d4,f#4] [a3,d4,f#4,a4]!2 [a3,f#4,a4]",
  C: "[a3,d4,f#4,a4] ~", D: "~@9 [a3,f#4] [d4,f#4,a4,d5] [a3,d4,f#4,a4,d5]!4 ~",
  E: "~@12 g4@2 g4 a4, ~ [e3,b3,d4], ~@4 g4!2 ~@2, ~@9 a4@2 a4@2 ~@3", // E7
  F: "~@12 [a3,g4,a4] ~ [a3,a4]@2, ~@3 [e3,e4], ~@6 [b3,b4] ~", G: "[c3,c4] [e3,e4] [g3,g4] [e3,e4]",
  H: "~@2 [f#3,f#4]@2 ~@2 [d3,d4] ~, [d3,d4]@7 ~ [a3,a4]@6 ~@2", I: "~@3 [f#3,f#4], [b2,b3], ~ [d3,d4]@3, ~ [a3,a4]",
  J: "~@8 [b3,b4]@4 [e3,e4]@3 ~, [e3,e4]@3 ~, ~@4 [g3,g4]@9 ~@3", K: "[e3,e4]@8 [a3,a4]@3 ~@5",
  L: "[a3,a4]@2 [d3,d4]@2 [a3,a4]@2 ~ a4, ~@3 [d3,d4]", M: "[f#3,f#4] [d3,d4] [f#3,f#4] [a3,a4]",
  N: "[g3,g4]@2 [e3,e4]@2 [b3,b4]@2 [g3,g4] ~", // G E B G
  O: "[e4,a4]@3 ~@11 g3@2, a2!2, ~@3 a4@9 ~@4, ~@3 [c4,e4]@3 [c4,e4,g4]@6 [c4,e4,a4]@4, ~@2 g3@3 g3@2 ~", // A5 C Am
  P: "c4@3 ~@3 c4@2 ~ c4@3 d3@2 [d3,a4]@2, a2, g4 d3!2 ~, ~@3 a4@6 a4@5 ~@2, ~@3 c4@3 g4@6 [c4,g4]@4", // D5 C5
  Q: "d4 ~@5 [d4,f#4,a4]@3 [d4,f#4,a4]@3 ~@2 a3@2, a4@3 ~@3 [d4,f#4,a4]@2, ~@3 [d4,g4]@3 ~@3 f#3@7, ~ b2@3", // D G5
  R: "[d4,b4]@3 ~@11 [e3,b4]@2, e3@3 g4@2 d4@3, g4 e2@3, ~@3 d4@5 e3@4 [g4,a4]@4, ~@3 b4@3 b4@8 ~@2", // G E5 Gsus2
  S: "~@6 c4@2 ~ [e4,a4]@2 ~@3 g3@2, [a2,b4], e4@4 g3@4 g3@3 g3@3 ~@2, ~@3 a4@6 ~@3 [e4,a4]@4, ~@3 c4@3 ~@3 c4@7", // A5 Asus2 A5
  T: "~@6 [d4,a4]@2 ~ [d4,a4]@3 ~@2 d3@2, f#4, d3@3 [d4,a4], [d4,a4]@3 ~ d2@4, ~@3 g4@13", // D5
  U: "[b3,d4,f#4,a4]@3 [b3,f#4,a4]@3 ~@4 d4@2 f#3@2 f#3@2, b2, ~@3 d4@7 ~@2 [d4,f#4,a4]@4, ~@3 b3@5, ~@2 f#3 ~", // Bm7 B7 D
  V: "[e3,d4,b4]@3 ~@3 [d4,b4]@2 ~ b4@3 ~@2 b3@2, g4@3 g4@3 [g4,b4]@2, ~@3 [d4,b4]@3 ~@2 b3@6 ~@2, ~ e3@3, ~@9 d4@7", // E7 G
  W: "[c4,e4,g4]@3 [c4,e4,g4] [g3,e4] ~ [c4,e4,g4] ~@3 [c4,e4,g4]!3 ~@3, a2@5 ~@11", // C
  X: "[d3,e4]@3 [c4,e4,g4] ~@6 [c4,e4,g4] [c4,e4,g4,a4] [d3,c4,e4,a4] ~@3, ~@2 d3 ~", // Dsus2 C Am7 Am
  Y: "d4@3 a4 [d4,a4] ~ [d4,a4] d4 ~@2 [d4,a4]!2 [e3,d4,a4]@3 ~, f#4 ~@3 e3@2 ~@2 e3@4 ~@4", // D5 Dsus2
  Z: "[d4,a4]@3 [d4,a4]@2 e3 [d4,e4,a4] d4 ~ [d4,a4]@2 ~@3 c3@2, e3@5 ~@3 d3@3 d3@5, ~@9 f#4@7, ~@3 a4", // D5 Dsus2 D5
  AA: "[e4,g4]@3 [b3,e4,g4] g3@2 [b3,e4,g4] ~@3 [b3,e4,g4]!2 [b3,e4]@3 ~, c3@7 ~ c3@7 ~, d4 ~@11 g4 ~@3", // Em E5
  AB: "[d3,d4]@3 ~ d3@2 [a3,d4,f#4] [a3,d4,f#4,a4] ~@2 d4 ~ f#3 [a3,d4,f#4] ~@2, ~@3 [a3,d4]@3 ~@2 d3@5 ~@3, ~@10 a3@3 ~@3, ~@11 [d4,f#4]@2 ~@3", // D D5 D
  AC: "[a3,c4,e4,g4]@3 [c4,e4,g4] ~@2 [c4,e4,g4] ~@2 [e4,g4] ~@4 a3@2, ~@3 [c4,e4,g4]", // Am7 C Em C
  AD: "[d3,c4,a4]@3 [c4,a4]!2 ~ [c4,a4] a4 ~ [c4,a4] ~@2 [c4,a4]@4, ~ d3", // D7 F
  AE: "[e3,d4,g4]@3 [d4,g4,b4] [d4,b4] ~ [d4,g4,b4] g4 ~ [d4,g4,b4] ~@2 [d4,g4,b4]@3 ~", // Em7 G
  AF: "[d4,g4,b4]@3 [d4,g4,b4] [d4,g4] ~ [d4,g4,b4] ~@2 [d4,g4,b4] ~@2 [d4,g4,b4]@3 ~, e3@15 ~, ~ b3 ~@2", // G G5 G
  AG: "[c4,e4,a4]@3 [c4,e4,a4] [g3,e4] ~ [c4,e4,a4] a4 ~ [c4,e4,a4] ~@4 g3@2, a2@3 ~@3 [c4,e4,a4]@2", // Am C Am
  AH: "[e4,a4]@3 ~ a3@2 [e4,a4] e4 ~ [e4,a4] ~@4 a3@2, d3@3 ~ d3@4, c4 ~@2 [e4,a4]@2 ~@6 a3@3 ~@2, ~@3 [e4,a4]", // A5
  AI: "[d4,g4,b4]@3 ~@3 [d4,b4] g4 ~ [d4,g4,b4] ~@2 b4 ~ b3@2, e3@7 ~ e3@8, ~@3 [d4,g4,b4]@2 ~@7 [d4,g4]@4, ~@4 b3@4 ~@3 b3@3 ~@2", // G G5
  AJ: "[b3,d4,g4]@2 ~ [b3,d4,g4] ~@2 [b3,d4,g4]!2 ~ [b3,d4,g4]@2 ~ [b3,d4,g4]@2 ~@2, e3@3 ~@5 e3@3 e3@3 ~@2", // G
})).s("gm_electric_guitar_clean").gain(0.2).pan(0.3)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  ~@3 A B ~@3 C ~@9 D ~@24 E ~ F ~ G ~ H ~@20 I J K L M N ~@8 E ~ F ~ G ~ H ~ O P Q R S T U V ~@3 A B ~@3 C ~@2
>`.pickRestart({
  A: "~@12 a4 ~@3", B: "~@5 e4@3 ~@8", C: "~@9 [d4,a4,d5] a3 ~@5", D: "~@13 a4@2 ~", E: "~@3 g4", F: "~@12 a3@2 ~ d4",
  G: "~@6 e4@3 ~@7", H: "~@7 [f#4,a4]@5 ~@4", I: "~@4 g4 ~@2 [c4,e4,g4] a2@2 ~@6",
  J: "[c4,g4]@3 ~ d3@2 [c4,e4,g4] ~@3 a4 ~ g4 ~@3", K: "a4!2 ~@5 a4 ~ d4 ~@2 e4@3 ~", L: "~@3 d4",
  M: "~@7 [e4,g4] ~@6 g3 ~, ~@13 g4@2 ~", N: "~@7 g4 ~@2 f#4 ~@5", O: "~@4 [a3,e4] ~@2 e4 a3 c4 ~ a3 ~@4",
  P: "~@4 d3 ~@2 c4 ~@3 a3@5", Q: "~@4 g4 ~@3 b3@7 b3, ~@4 e3@11 ~", R: "~@4 b4 ~@6 b3@4 ~",
  S: "~@4 c4 ~@2 [c4,e4] g3 ~@2 g3@3 ~@2", T: "~@7 a3 ~@8", U: "~@4 g4 ~ g4 ~@9", V: "~@4 e3@3 ~@9",
})).s("gm_electric_guitar_clean").gain(0.11).pan(0.3)

// other · lead 2 sawtooth
const lead_2_sawtooth = note(`<
  ~ A B C D E F G H ~@20 I J K@2 L M ~ N O P ~ N O P ~ N O P ~ N O P ~ Q R S T U V W ~@11 I J K@2 L M ~ N O P ~ N O P ~
  N O P ~ N O P ~ Q R S T U V W ~ A B C D E F G H X ~
>`.pickRestart({
  A: "a4 b4 d5 a4 b4 e5 a4 b4 e5 a4 b4 e5 a4 b4 e5 a4", B: "b4 e5 a4 b4 e5 a4 b4 e5 a4 b4 e5 a4 b4 ~ a4 ~, ~@13 e5@2 ~",
  C: "a4 b4 e5 a4 b4 ~ a4 b4 d5 ~ [a4,b4] d5 a4 b4 d5 ~, ~@5 e5@2 ~@9", D: "b4 d5 a4 b4 d5 ~ b4 ~@9",
  E: "~@2 d6 ~@2 d6 ~ b5 d6@2 ~@6", F: "~@2 d6 ~@2 d6 ~@2 d6 ~@2 b5 ~ a5 ~@2", G: "~@2 d6 ~ b5 e6@2 ~ d6 ~ b5 ~@3 b5 ~",
  H: "~ b5 ~@2 b5 d6 ~ b5 d6 a5 ~ d6 ~ b5 ~@2", I: "b3 a3 b3 e4 b3 a3 b3 e4 b3 a3 b3 e4 b3 a3 b3 e4",
  J: "b3 a3 b3 e4 b3 a3 b3 e4 b3 a3 b3 e4 b3 a3 b3 ~", K: "b4 a4 b4 e5 b4 a4 b4 e5 b4 a4 b4 e5 b4 a4 b4 e5",
  L: "b4 a4 b4 e5 b4 a4 b4 e5 ~@6 b4 ~", M: "b3 a3 b3 e4 b3 a3 b3 e4 b3 a3 b3 ~ e4@2 b3 a3",
  N: "a4 g4 a4 d5 ~ g4 a4 d5 a4 ~ a4 d5 a4 g4 a4 d5", O: "b3 a3 b3 e4 b3 a3 b3 e4 b3 a3 b3 ~ b3 ~ b3 ~",
  P: "d4 ~ a3 b3@2 ~ [a3,b3] ~ b3 a3 b3 e4 b3 ~ b3 ~", Q: "[e4,g4] ~@3 g4 ~ [e4,a4]!2 ~ [e4,a4] ~@2 a4 ~@3",
  R: "[g4,b4] b4 g4 [g4,b4]!3 ~@2 [e4,g4] ~ [e4,g4]!4 ~@2", // G Em
  S: "~@2 e4 ~ e4 [e4,g4] ~ [d4,g4] ~ [e4,g4] ~@2 [e4,g4] ~ [e4,g4] ~", // Em G5 Em
  T: "g4!2 ~@4 [e4,g4] g4 ~ [e4,g4] ~@2 [e4,g4] ~@3", U: "[d4,a4] ~@5 [d4,a4] a4 ~ [d4,a4] ~@2 [d4,a4] ~@3",
  V: "[g4,b4]!6 ~ [g4,b4] ~ [g4,b4] ~ e4 [g4,b4] ~ e4 [g4,b4]", // G
  W: "~ [g4,b4] ~@2 [g4,b4] ~ [g4,b4]!2 ~ [g4,b4] ~ e4 g4 ~@3", X: "a3 b3 d4 a3 ~ d4 a3 ~ b3@2 ~@6",
})).s("gm_lead_2_sawtooth").gain(0.27).pan(0.7)

// other · lead 2 sawtooth · soft notes
const lead_2_sawtooth_soft = note(`<
  ~@2 A B C D E F G ~@24 H ~@2 I ~ J ~ I ~ J ~ I ~ J ~ I ~ J ~@2 K L ~@19 H ~@2 I ~ J ~ I ~ J ~ I ~ J ~ I ~ J ~@2 K L
  ~@6 A B C D E F G M ~
>`.pickRestart({
  A: "~@15 b4", B: "~@15 a4", C: "~@6 a4 ~@9", D: "a5 b5 ~ a5 b5 ~ a5 ~@3 a5 ~@5",
  E: "a5 b5 ~ a5 b5 ~ a5 b5 ~@2 a5 ~@5", F: "a5 b5 ~ a5 ~@2 a5 b5 ~ a5 ~ e6 ~ a5 ~ e6",
  G: "a5 ~@2 a5 ~@2 a5 ~@3 b5 ~ a5 ~@3", H: "~@8 b4@2 ~ a4 ~@4", I: "~@4 a4 ~@4 g4 ~@6", J: "~@13 a3 ~@2",
  K: "~ g4 ~@14", L: "~@3 e4 g4 ~@11", M: "~@4 b3 ~@11",
})).s("gm_lead_2_sawtooth").gain(0.16).pan(0.7)

// other · overdriven guitar
const overdriven_guitar = note("<~@100 A B C D E F G@3 ~@2>".pickRestart({
  A: "~@9 e3@6 [d4,d#4,e4]", B: "~ f#4@15", C: "g4@4 f#4@2 a4 [e4,f#4]", D: "d4@6 e4 b3@8 ~",
  E: "~ b3 ~ a3 ~ b3 ~ b3 ~ d4 ~ b3 ~ d4 e4 ~, a3 ~@7", F: "f#4@6 a4 f#4 ~ [d4,e4] ~ f#4 ~ d4 e4 ~",
  G: "[e4@2 d4 e4 ~ e4@2 f#4@2 [f#4,g4] e4@2 f#4@2 d4 e4@7 ~ a3@7 d4 b3@9 ~@8, ~@11 [a3,b3] ~@12]/3", // Gmaj7 Asus2
})).s("gm_overdriven_guitar").gain(0.35).pan(0.4)

// chords · pad halo
const pad_halo = note(`<
  ~ A@2 B@2 A@2 B@2 C@2 D@2 E F G@2 H@2 C@2 D@2 E F G@2 H@2 I@2 J K L M N@2 O@2 N@2 O@2 N@2 O@2 N@2 O@2 I@2 J@2 I@2 J@2
  ~ C@2 D@2 E F G@2 H@2 I@2 J K L M N@2 O@2 N@2 O@2 N@2 O@2 N@2 O@2 I@2 J@2 I@2 J@2 ~ A@2 B@2 A@2 B@2 P ~
>`.pickRestart({
  A: "[[d4,f#4,a4]@31 ~, g3@17 ~@15]/2", B: "[[f#4,a4]@8 [b3,g4]@8 f#4@8 [a3,e4]@7 ~, d4@15 ~]/2",
  C: "[g4 f#4, [b3,d4]@31 ~]/2", D: "[[g3,e4]@16 [d4,f#4]@15 ~, b3@31 ~]/2", E: "[g4,b4], e4@7 ~", F: "[d4,f#4,a4]",
  G: "[[e4,g4] [d4,f#4], b3]/2", H: "[b3,e4,g4]/2", I: "[a2@4 ~@3 d4, [c4,e4]@7 ~, g3@9 ~@7, ~ d3]/2", J: "[e3,b3,e4]",
  K: "d3@5 f#3@11, [a3,d4]", L: "[c3,b3,e4]", M: "[d3,a3,d4]", N: "[e4@16 ~@6 d4@9 ~, c4@11 ~@5, ~ f#4]/2",
  O: "[d4 [a3,f#4]@15 [b3,g4]@16, b3 ~, ~ d4@31]/2", P: "[e2,a3], [b3,d4]@7 ~, f#4@3 ~",
})).s("gm_pad_halo").gain(0.27)

// drums · kick
const kick = s("bd").struct("<~ [x ~@6 x!2 ~ x ~@5]!8 [x ~@6 x ~@8]!50 x [x ~@6 x ~@8]!40 ~ [x ~@6 x!2 ~ x ~@5]!8 ~@2>")
  .gain(0.41)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@35 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@26 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@20
>`.pickRestart({
  A: "~ x",
})).gain(0.09)

// drums · snare
const snare = s("sd").struct("<~ A@7 B A@41 C A@7 D ~ A@31 E A@7 F G A@7 H ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@3 x!2", C: "~ x!3 ~ x ~ x", D: "~@4 x ~@2 x!2 ~@2 x!2 ~ x ~", E: "~ x!3 ~ x!2 ~",
  F: "~@4 x ~@2 x!2 ~@7", G: "~@13 x ~@2", H: "~@4 x ~@4 x ~@2 x ~@3",
})).gain(0.37)

// … 56 more lines

More by Celentano