Strudelify
Il mare calmo della sera cover art

Romanza

Il mare calmo della sera

Andrea Bocelli

KeyD majorTempo69 bpm
0:00/0:00
// Il mare calmo della sera — Andrea Bocelli
// 69 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 78 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(69/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(`<
  ~@3 A@3 ~@25 B@8 C@3 D E F G H I J K L M N O P Q R S J T U V W X J Y Z AA AB AC AD AE AF AG AH@4
>`.pickRestart({
  A: "[~@19 d1@95 ~@30]/3",
  B: "[~@11 g#1@25 d2@47 e2@12 b1@12 a1@24 d2@44 ~ a1@2 ~ d1@23 ~ f#1@23 ~ b1@23 ~ a1@23 ~ g#1@47 ~ a1@23 ~ b1@23 ~ a1@13]/8",
  C: "[~@11 b1@12 c#2@12 ~ d2@51 ~ d2@55 ~]/3", D: "d1@44 ~ d1 ~@2", E: "d1@33 a1 ~@2 d2@11 ~",
  F: "d1@38 ~@4 d1 ~@2 d1 ~@2", G: "d1@30 a1@6 d2@6 a1@5 ~", H: "f#1@17 ~ f#1@4 ~@2 f#1@23 ~",
  I: "f#1@17 ~ f#1@4 ~@2 f#2@23 ~", J: "b1@17 ~ b1@4 ~@2 a1@23 ~", K: "g#1@17 ~ g#1@4 ~@2 g#2@23 ~",
  L: "f#1@23 ~ b1@23 ~", M: "a1@23 ~ b1@11 ~ c#2@11 ~", N: "d2@17 ~ d1@4 ~@2 d1@21 a1@3", O: "d2@26 ~ d1 ~@2 d1@18",
  P: "a1@11 ~ a1@11 ~ a1@11 ~ a1@11 ~", Q: "g1@5 ~ g1@5 ~ g1@5 ~ g1@5 ~ g1@5 ~ g1@5 ~ g1@5 ~ g1@5 ~",
  R: "d1@17 ~ d1@5 ~ d1@23 ~", S: "d1@17 ~ d1 ~@2 d1 ~@2 f#1@23 ~", T: "g#1@17 ~ g#1@4 ~@2 g#1@23 ~",
  U: "d2@4 ~@2 d2@11 ~ d2@4 ~@2 d2@14 ~ d2@3 a1@3 d2@3", V: "e2 b1 a1@2", W: "d1@17 ~ d1@5 ~ d1@17 ~ d1 ~@2 d1 ~@2",
  X: "d1@17 ~ d1@4 ~@2 f#1@23 ~", Y: "g#1@17 ~ g#1@4 ~@2 g#1@11 ~ g#1@11 ~", Z: "d1@17 ~ d1@4 ~@2 b1@20 ~ b1@2 ~",
  AA: "a1@17 ~ e1@2 ~ a1@3 a1@12 a1@12", AB: "a#1!8", AC: "~ d#1@17 ~ d#1@5 ~ d#1@17 ~ a#1@5",
  AD: "~ d#2@17 ~ d#1 ~@2 d#1 ~@2 g1@11 ~ g2@11", AE: "~ c2@17 ~ c2@4 ~@2 a#1@17 ~ a#1@4 ~", AF: "~ a1@47",
  AG: "~ a#1@25 c2@22", AH: "[~ a#1@17 d#2@17 d#1@20 ~@9]/4",
})).s("gm_electric_bass_finger").gain(0.38)

// chords · piano
const piano = note(`<
  ~@5 A@6 B@5 C@6 D E@3 F@7 G@6 H@3 I@2 J K@5 L M N@2 O P Q@2 R S T U V@2 W X Y Z AA AB AC AD@2 AE AF@4
>`.pickRestart({
  A: "[~@67 a#3@35 ~@31 f#3@6 [a1,c#4]@23 ~ b3@49 ~ [f#3,a3]@12 [a3,d4]@12 [f#3,a3,d4]@12 [f#3,a3,d4]@12 ~ [a2,e3,a3,d4]@21 ~@2 [d3,a#3,d4]@3, ~@17 f#1@95 b1@63 ~@38 f#2@24 ~@46 g2@5, ~@18 d4@37 e4@95 ~@138, ~@19 b3@47 ~@47 f#3@17 ~@32 [g#1,d3]@49 ~@26 b1@24 ~@27, ~@115 d4@24 ~@149]/6", // A F#m D5 D Asus4 Gm G#dim
  B: "[~@9 [a2,c#3,a3,e4]@12 ~ g3@50 f#3@52 ~@36 [a3,d4,g4]@12 ~ [a3,d4,f#4]@67, ~@22 [d2,d3,d4]@102 ~ d1@94 ~@21]/5", // A Dsus4 D
  C: "[~@4 d4@12 ~ [a3,d4,g4]@12 [a3,d4,f#4]@46 ~@2 b4@35 b4@11 ~@2 a#4@46 ~@21 f#3@6 ~ [a1,c#4]@22 ~ [d3,b3]@48 ~ [f#3,a3,d4]@12 [a3,d4]@5, ~@75 f#1@96 b1@63 ~@37 f#2@17, ~@76 e3@97 ~@48 g#1@47 ~@20, ~@76 b3@47 ~@49 f#3@17 ~@99, ~@77 e4@97 d4@24 ~@90]/6", // Dsus4 D A G D D5
  D: "~@7 [f#3,a3,d4]@12 [f#3,a3,d4]@12 [a2,e3,a3,d4]@17, ~@7 b2@24 ~@17", // D Asus4
  E: "[~@7 [b3,d4]@13 [c#3,a3,e4,a4]@12 [d3,g3]@52 [d3,f#3]@47 [a2,a3,c#4]@13, ~@4 b2@15 ~@13 [d2,d4]@99 ~@13, ~@7 g4@23 ~@114]/3", // Bm A G5 D A D
  F: "[[a3,d4]@11 [a3,e4]@11 ~ [a3,c#4]@11 ~ [a3,c#4]@11 ~ [a3,d4]@11 ~ [a3,e4]@11 ~ [a3,c#4]@11 ~ [d2,d3,a3,d4,g4]@23 ~@2 [d2,d3,a3,d4]@47 [f#2,a#3,e4,g4]@23 ~@2 [b2,b3,d4,f#4]@24 [a2,a3,d4,f#4]@23 [g#2,g#3,b3,d4]@23 ~@2 g#2@11 [g#2,g#3,b3,d4]@11 ~ [f#3,a3,d4]@41 ~ [f#3,a3,d4]@5 ~ [e2,g#3,b3,e4]@11 ~ [b1,g3,b3,d4], ~@35 g2@47 ~@26 f#4@23 ~@120 [g#3,b3,d4]@11 ~@13 d2@47 ~@14]/7", // D5 A5 A D5 A5 A Dsus4 D5 …
  G: "[~@11 [g3,c#4,e4]@11 ~ [a2,g3,c#4,e4]@11 ~ [d3,a3,d4,g4]@23 ~@2 f#4@20 a2@3 ~ d2@23 g4@12 ~@6 f#4@6 ~ e4@17 f#4@6 ~ [a2,f#3,a3,d4]@23 d4@41 ~ d4@6 a2@23 ~ b2@23 ~ [a2,a3,d4,e4]@13, ~@11 a1@23 ~ d2@41 ~@31 [f#2,a#3,c#4]@23 ~@49 [g#2,g#3,b3]@47 ~@62, ~@60 [d3,a3,d4]@47 ~@25 [b2,f#3,b3]@24 ~@71 [f#3,d4,f#4]@47 ~@14]/6", // C#dim A7 Dsus4 D Asus4 F# G#m D5 …
  H: "[~@12 [b2,g3,b3,d4]@12 [c#3,g3,a3,e4]@12 ~ [d3,a3,d4,g4]@51 ~ [d4,f#4]@55, ~@88 [d2,d3,a3]@55 ~]/3", // G A7 Dsus4 D D5
  I: "[~@36 [a3,d4,g4]@12 [a3,d4,f#4]@47 ~, d1@47 ~]/2", // Dsus4 D
  J: "d4@3 ~@3 [a3,d4,g4]@2, f#4@3 ~, a3@24 a3@11 ~@13, ~@18 d4@17 ~@13, ~@30 f#3@17 ~", // Dsus4
  K: "[[d4,f#4]@42 e4@3 ~@39 b4@12 a#4@45 ~@21 f#3@6 ~ [a2,c#4]@22 ~ [d3,b3]@47 ~, a3@45 f#4@3 b4@36 ~@59 f#3@17 ~@31 g#2@47 ~@2, ~@46 f#2@95 b2@63 ~@36, ~@49 e4@95 d4@24 ~@72]/5", // D A G
  L: "[f#3,a3]@12 [a3,d4]@11 ~ [f#3,a3,d4]@12 [f#3,a3,d4]@12, f#2 b2", // F#m D5 D
  M: "[a2,e3,a3,d4]@21 ~@3 [b3,d4]@12 [c#3,a3,e4,a4]@11 ~, ~@7 b2@5 ~@4, ~@12 g4@11 ~", // Asus4 Bm A
  N: "[~@5 a4 d5 g5 f#5@8, [d2,d3,d4]@95 ~, g3@49 ~@47]/2", // D
  O: "[a3,c#4]@11 ~ [a3,d4]@11 ~ [a3,e4]@11 ~ [a3,c#4]@11 ~, a2@47 ~", // A D5 A5 A
  P: "[a3,c#4]@11 ~ [a3,d4]@11 ~ [a3,e4]@11 ~ [a3,c#4]@11 ~, g2@47 ~", // A D5 A5 A
  Q: "[[d2,d3,a3,d4,g4]@23 ~ [d3,a3,d4,f#4]@23 ~ [d3,f#3,a3,d4]@23 ~ [f#2,a#3,e4,g4]@23 ~, ~@24 d2@47 ~@25]/2", // Dsus4 D Edim
  R: "[b2,b3,d4,f#4]@24 [a2,a3,d4,f#4]@23 ~", S: "[g#2,g#3,b3,d4]@23 ~ [g#2,g#3,b3,d4]@11 ~ [g#2,g#3,b3,d4]@11 ~",
  T: "[f#3,a3,d4]@41 ~ [f#3,a3,d4]@5 ~, d2@47 ~", // D
  U: "[e2,g#3,b3,e4]@11 ~ [b1,g3,b3,d4]@11 ~ [g3,c#4,e4]@11 ~ [a2,g3,c#4,e4]@11 ~, ~@24 a1@23 ~", // E G C#dim A7
  V: "[[d3,a3,d4,g4]@23 ~ f#4@21 a2@3 d2@23 ~ g4@12 ~@6 f#4@6, d2@41 ~@31 [f#2,a#3,c#4]@23 ~, ~@24 [d3,a3,d4]@47 ~@25]/2", // Dsus4 F# D5
  W: "e4@18 f#4@6 [a2,f#3,a3,d4]@23 ~, [b2,f#3,b3] ~", X: "d4@41 ~ d4@6, [g#2,g#3,b3]@47 ~",
  Y: "[a2,f#3,d4,f#4]@23 ~ [b2,f#3,d4,b4]@23 ~", // D Bm
  Z: "[a2,g3,b3,d4,e4]@23 ~@2 [g3,b3,d4,e4]@11 ~ [a2,g3,b3,d4,e4]@11, ~@24 a2@13 ~@11", // Em7
  AA: "[a#2,g#3,c4,d#4,a#4]@11 ~ [a#2,g#3,c4,d#4,a#4]@11 ~ [a#2,g#3,c4,d#4,a#4]@12 [a#2,g#3,c4,d#4,a#4]@11 ~", // G#
  AB: "~ [d#2,d#3,a#3,d#4,g#4]@23 ~ [d#2,d#3,a#3,d#4,g4]@23", // D#sus4 D#
  AC: "~ [d#2,d#3,g3,a#3,d#4]@23 ~ g#4@11 ~ g4@11, ~@24 [g2,b3]@23 ~, ~@25 d4@23", // D# G
  AD: "[~ f4@17 ~ g4@6 d#4@11 ~ f4@6 ~@42 f5@11, ~ [c3,g3,c4]@24 [a#2,g3]@23 ~ [a2,d#3,a3]@47, ~@25 a#3@17 ~ c4@53, ~@84 a4@11 ~]/2", // C5 D# Adim
  AE: "~ [a#2,d#5]@24 ~ [c3,d#4,a#4]@22, a#4 ~, ~ g3@47", // D#5 Cm7
  AF: "[~@3 a#4@25 ~@13 d#4@13 ~ [a#3,d#4,g#4]@51 [d#2,a#3,d#4,g4,a#4]@60 ~@26, ~@3 [a#2,a#3]@51 ~ d#3@111 ~@26, ~@3 d#4@37 ~@152, ~@14 a#4@13 ~@69]/4", // D#sus4 D# A#
})).s("gm_piano").gain(0.45)

// chords · pad warm
const pad_warm = note(`<
  A@8 B@3 C@6 D@6 E@7 F@7 G@5 H@4 I@2 J K L M N@2 O@2 P@2 J K Q R P@2 J S T U V W@2 X Y Z AA@4
>`.pickRestart({
  A: "[~@19 a3@60 a3@23 ~ g3@11 ~ f#3@59 ~ a3@23 ~ g3@11 ~@49 b3@47 ~ a#3@47 ~ [b2,b3]@23 ~ [a2,a3]@5, ~@19 [d2,d3,d4]@239 ~ f#2@95 ~@30, ~@211 f#3@95 ~ f#3@77]/8", // B A D
  B: "[~@19 [g#2,g#3]@49 ~ f#2@24 b1@24 ~ [a2,e3]@23 [g2,d4]@3, ~@69 a3@49 ~@26]/3", // G# A5 G5
  C: "[~@9 [a2,c#4]@13 ~@50 d2@52 ~ a3@35 ~ g3@11 ~@85 g3@11 ~ a3@19, ~@22 [d3,d4]@102 ~ [d2,d4]@95 ~ [d2,d4]@67, ~@173 f#3@83 ~@32]/6", // A D
  D: "[~@29 b3@47 ~ a#3@49 [b2,b3]@23 ~ [a2,a3]@23 ~ [g#2,g#3]@48 ~ f#2@23 ~ b2@23 ~ [a2,e3]@17, ~@29 [f#2,f#3]@97 f#3@47 ~@50 a3@47 ~@18]/6", // B A G# A5 F#
  E: "[~@7 [b2,d4]@12 [c#3,e4]@12 ~@52 d2@47 ~ [a2,a3]@47 ~ [g2,g3]@47 ~ g3@23 ~@49 [f#2,a#3]@23 ~ [b2,f#3,b3]@13, ~@32 [d3,d4]@99 e4@95 ~ [d3,d4]@71 ~@38, ~@251 f#3@71 ~@14]/7", // Bm C#m A G F# B5 D
  F: "[~@11 [a2,a3]@23 ~ [g#2,g#3]@47 ~ [d3,a3,d4]@47 ~ [e3,g#3,e4]@11 ~ [b2,d4]@11 ~ [a2,c#4]@23 ~ g3@23 ~@49 [f#2,a#3]@23 ~ [b2,b3]@23 ~ [a2,a3]@23 ~ g#3@13, ~@143 g3@35 ~ [d3,d4]@71 ~@86, ~@203 f#3@71 ~ f#3@47 ~@14]/7", // A G# D5 E Bm A F# B …
  G: "[~@83 a2@23 ~ [b2,d4]@11 ~ [c#3,e4]@12 ~ [d3,d4]@103 ~@5, ~@35 d4@71 ~@134]/5", // Bm C#m D
  H: "[a3@35 ~ g3@11 ~@85 g3@11 ~ a3@47 ~, [d2,d4]@95 ~ [d2,d4]@95 ~, ~@48 f#3@83 ~@61]/4", // D
  I: "[b3@47 ~ a#3@47 ~, [f#2,f#3]@95 ~]/2", J: "[b2,b3]@23 ~ [a2,a3]@23 ~, f#3@47 ~", K: "[g#2,g#3]@47 ~",
  L: "f#2@23 ~ b2@23 ~, a3@47 ~", M: "[a2,e3]@23 ~ [b2,d4]@11 ~ [c#3,e4]@11 ~", N: "[~@48 d2@47 ~, [d3,d4]@95 ~]/2",
  O: "[[a2,a3]@47 ~ [g2,g3]@47 ~, e4@95 ~]/2", P: "[g3@23 ~@49 [f#2,a#3]@23 ~, [d2,d4]@71 ~@25, ~@24 f#3@71 ~]/2",
  Q: "[d3,a3,d4]@47 ~", R: "[e3,g#3,e4]@11 ~ [b2,d4]@11 ~ [a2,c#4]@23 ~, ~@12 g3@35 ~", S: "[d3,g#3]@47 ~",
  T: "a3@23 ~ b2@23 ~, d4@47 ~", U: "[a2,a4]@47 ~", V: "[a#2,a#4]", W: "[~ [a#3,d#4]@71 ~ [b3,d4]@23]/2",
  X: "~ c4@23 ~ a#3@23, ~ g3@47", Y: "~ a3@47", Z: "~ g3@47", AA: "[~@3 a#3@50 ~ d#3@50 ~ d#3@60 ~@27]/4",
})).s("gm_pad_warm").gain(0.15)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@7 A@5 ~@6 B@8 ~ C@3 D@6 E@5 ~@5 F@2 G@2 H@2 I@2 ~@2 J@2 K L M N J@2 O@2 P Q R S@2 T@3 U@4
>`.pickRestart({
  A: "[~@19 b3@24 [a3,c#4]@23 ~@51 [a3,d4]@49 [a3,d4]@23 [a#3,d4]@11 ~ [a3,e4]@13 ~@26, ~@19 d4@94 ~@127]/5", // A D5 A# A5
  B: "[~@5 e4@73 ~@24 c#4@23 ~ b3@48 ~ [a3,d4]@47 ~ [a3,d4]@23 ~ [b3,d4]@12 [a3,e4]@12 ~ g4@51 f#4@47 ~@14, ~@78 d4@96 ~@98 d5@99 ~@13]/8", // D5 Bm A5
  C: "[~@35 g5@23 ~ f#5@47 ~ g5@11 ~ f#5@11 ~ [b2,b4,e5]@13, ~@35 [d2,a4]@71 ~ [f#2,a#4]@23 ~@14]/3", // E5 D5 F#
  D: "[~@5 d5@5 ~ a2@23 ~@25 c#5@11 ~ d5@11 ~ [d2,a3,f#4,d5]@47 ~ f#5@6 ~@12 d5@5 ~ [a2,c#4,e5]@23 ~ g5@23 ~ f#5@47 ~ g5@11 ~ f#5@11 ~ [b2,b4,e5]@13, ~@11 f#4@71 ~@49 b3@23 ~@134, ~@11 d5@47 ~@79 e5@12 ~@139, ~@35 [g#2,b3]@47 ~@49 [e2,g#4]@11 ~ g4@35 ~@110, ~@143 b2@11 ~@25 [d2,a4]@71 ~ [f#2,a#4]@23 ~@14]/6", // D A E5 G#m E D5 F#
  E: "[~@5 f#5@5 ~ [a2,d5]@23 ~ [g#2,b3]@47 ~ a3@71 ~ [b3,d5]@11 ~ [c#4,e5]@12 ~ g5@52 ~@8, ~@11 f#4@71 ~@158, ~@35 d6@119 ~@86]/5", // D5 G#m Bm C#m
  F: "[~@24 e4@71 ~]/2", G: "[~@24 c#4@23 ~ b3@47 ~, d4@95 ~]/2",
  H: "[a3@47 ~ a3@23 ~ [b3,d5]@11 ~ [a3,e5]@11 ~, d4@71 ~@25]/2", I: "[g5@47 ~ f#5@47 ~, d5@95 ~]/2",
  J: "[g5@23 ~ f#5@47 ~ g5@11 ~ f#5@11 ~, [d2,a4]@71 ~ [f#2,a#4]@23 ~]/2", // D5 F#
  K: "e5@17 ~ d5@5 ~ [a2,f#4,d5]@23 ~, [b2,b4]@23 ~@25", L: "d5@23 ~ c#5@11 ~ d5@11 ~, [g#2,b3,f#4]@47 ~",
  M: "[d2,a3,f#4,d5]@47 ~", // D
  N: "f#5@6 ~@12 d5@5 ~ [a2,c#4,e5]@23 ~, b3@23 ~@25, [e2,g#4]@11 ~ g4@35 ~, ~ e5@2 ~@5, ~@12 b2@11 ~@25", // A E
  O: "[e5@17 ~ f#5@5 ~ a2@23 ~@25 c#6@12 d6@12, [b2,b4]@23 ~ f#4@71 ~, ~@24 [d5,d6]@47 ~@25, ~@48 [g#2,b3]@47 ~]/2", // B D G#m
  P: "[d3,f#4,a5]@47 ~", Q: "[a2,e4,a5]@47 ~", R: "[f4,a#5]@29 ~ [a#4,a#5]@6 [d#5,d#6]@6 [f5,f6]@6, a#2",
  S: "[~ [a#4,g#5,g#6]@24 [a#4,g5,g6]@35 ~ [a#4,a#5]@12 [g#5,g#6]@11 ~ [g5,g6]@11, ~ d#2@71 ~ [g2,b4]@23]/2", // A#7 D# A# G# G
  T: "[~ [f5,f6]@17 ~ [g5,g6]@5 ~ [d#5,d#6]@11 ~ [f5,f6]@5 ~@7 [a2,d#4]@48 [g4,d#5,a#5]@47, ~ [c3,c5]@23 ~ [a#2,g4]@23 ~@96, ~@43 [c5,c6]@54 ~@47]/3", // F G D# F Adim D# C D# …
  U: "[~@3 [a#3,d#4,a#4]@50 ~ [a#3,d#4]@110 ~@28, ~@27 d#3@25 ~@44]/4", // D#5
})).s("gm_string_ensemble_2").gain(0.21)

// chords · string ensemble 2 · soft notes
const string_ensemble_2_soft = note("<~@5 A@3 B@2 ~ C@3 ~@25 D@3 ~@33 E@3>".pickRestart({
  A: "[~@43 e4@71 ~@30]/3", B: "[~@19 [g#3,b3]@46 ~@31]/2", C: "[~@22 g4@49 ~ f#4@52 ~@20, ~@11 d5@51 ~@10]/3",
  D: "[~@44 a5@25 ~@3, ~@36 d4@103 ~@5]/3", E: "[~@6 g#4@50 ~ [d#2,g4,a#4]@60 ~@27]/3",
})).s("gm_string_ensemble_2").gain(0.13)

// chords · rock organ
const rock_organ = note(`<
  ~@9 A@2 B@5 C@7 D@7 E@3 F@7 ~@2 G H@3 I J K@2 L@2 M@2 N O P@2 Q R S T P@2 U R V@2 W X@2 Y Z AA@5
>`.pickRestart({
  A: "[~@7 [d5,a5]@24 [d5,a5]]/2", B: "[~@9 c#5@12 ~ [d5,a5]@102 ~ [d4,f#4]@35 ~ [d4,g4]@12 [f#4,d5]@67]/5",
  C: "[~@17 [g4,e5]@11 ~ [f#4,d5]@47 ~ [b4,f#5]@47 ~ a#4@40 ~@3 [f#3,g#3] a#3 [c#4,d#4] f#4 g#4 [a#4,c#5] b4@23 ~ c#5@24 [g#4,b4]@35 [c#5,a#5] [d5,b5]@13 [d5,a5]@65, ~@17 a4@59 ~@49 f#5@47 ~@2 d5@78 ~@84, ~@99 a4@10 ~@59]/7", // C D B5 F#sus2 C#sus2 A#m G#m F# …
  D: "[~@7 g5@12 [c#5,a5]@12 ~ [d5,a5]@98 ~ c#5@12 d5@12 e5@12 c#5@12 c#5@12 d5@12 e5@12 c#5@11 ~ g5@23 ~ f#5@47 ~ g5@11 ~ f#5@11 ~ [b4,e5]@13, ~@131 a4@48 g4@48 d5@71 ~ a#4@23 ~@14]/7", // F#m D5 E5
  E: "[~@11 [a4,d5]@23 ~ [g#4,d5]@47 ~ [a4,d5]@47 ~ b4@13]/3", // D5 G#dim D5
  F: "[~@11 c#5@23 ~ g5@23 ~ f#5@47 ~ g5@11 ~ f#5@11 ~ e5@17 ~ f#5@6 [a4,d5]@23 ~ [g#4,d5]@47 ~ d5@41 a#5 b5@6 a5@48 ~@13, ~@35 d5@71 ~ a#4@23 ~ b4@23 ~@182]/7", // D5 G#dim
  G: "[d4,f#4]@35 ~ [d4,g4]@12", H: "[[f#4,d5]@83 ~ [g4,e5]@11 ~ [f#4,d5]@47 ~, ~@84 a4@59 ~]/3", I: "[b4,f#5]@47 ~",
  J: "[a#4,f#5]@23 ~", K: "[b4@21 ~@3 c#5@24 [g#4,b4]@35 [c#5,a#5] [d5,b5]@12, d5@7 ~, ~@6 a4@5 ~@13]/2",
  L: "[a5@71 ~ g5@11 ~ [c#5,a5]@11 ~, d5@83 ~@13]/2", M: "[d5,a5]/2", N: "c#5 d5 e5 c#5, a4",
  O: "c#5@12 d5@12 e5@12 c#5@11 ~, g4", P: "[g5@23 ~ f#5@47 ~ g5@11 ~ f#5@11 ~, d5@71 ~ a#4@23 ~]/2",
  Q: "[b4,e5]@23 ~ [a4,d5]@23 ~", R: "[g#4,d5]@47 ~", S: "[a4,d5]@47 ~", T: "b4@23 ~ c#5@23 ~",
  U: "e5@17 ~ f#5@6 [a4,d5]@23 ~, b4@23 ~@25", V: "[[d5,a5]@95 ~]/2", W: "[d#5,a#5]@47 ~",
  X: "[~ g#5@23 ~ g5@47 ~ g#5@11 ~ g5@11, ~ [d#4,d#5]@71 ~ b4@23]/2", Y: "~ [c5,f5]@23 ~ [a#4,d#5]@23",
  Z: "~ [a4,d#5]@47", AA: "[~ a#4@100 ~ g#4@50 ~ g4@59 ~@28, ~@51 d#4@55 ~@14]/5",
})).s("gm_rock_organ").gain(0.22).pan(0.3)

// other · pad metallic
const pad_metallic = note("<~@13 A@4 B@6 C@3 ~@11 D@3 ~@33 E F@2 ~@2>".pickRestart({
  A: "[~@41 d5@23, ~@29 d5@59 ~@104, ~@77 d3@59 ~@56]/4",
  B: "[~@77 e6@49 ~@97 a5@65, ~@28 e5@59 ~@39 d5@59 ~@103, ~@29 d6@10 ~@9]/6", C: "[~@83 d6@59 ~@2, ~@32 d5@63 ~@49]/3",
  D: "[~@35 d5@72 ~@37]/3", E: "~@13 a#5@35", F: "[~@8 d#6@25 ~@15, ~ a#5@21 ~@10]/2",
})).s("gm_pad_metallic").gain(0.19).pan(0.7)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@14 A@2 ~@11 B@2 ~@2 C@6 ~@5 D E@2 F G H I ~@4 J K L M@2 N O P Q R S T ~@4 U V W X ~@5
>`.pickRestart({
  A: "[~@29 d3@62 ~@5]/2", B: "[~@35 a2@43 ~@18]/2",
  C: "[~@35 [a2,d3]@6 [a2,d3]@42 e3@11 ~ b2@11 ~ a2@24 d3@23 ~ d3@22 a2@2 d2@23 ~ f#2@24 b2@24 ~@37]/6", // D5
  D: "[d3,f#4]@3 [d4,g4]", E: "[[d3,f#4]@83 ~ [a3,e4]@12]/2", F: "[d3,f#4]@47 ~",
  G: "~@3 c#4, f#3@30 f#3@17 ~, ~ f#4@2 ~", H: "f#3@41 ~ f#3@5 ~, a#3@47 ~", I: "[f#3,b3]@23 ~@25",
  J: "~@36 [a3,d4]@11 ~", K: "c#4@12 d4@12 e4@12 c#4@11 ~", L: "c#4@12 d4@11 e4@12 ~ c#4@11 ~",
  M: "[d3@40 ~@8 d3@24 [f#3,c#4]@23 ~, d4@71 ~@25]/2", N: "[f#3,b3]@24 a3@23 ~", O: "g#3@2 ~",
  P: "[a2,d3]@3 [a2,d3]@17 ~@4", Q: "e3@11 ~ b2@11 ~ a2@24", R: "d3@23 ~ d3@22 a2@2", S: "d2@23 f#2@24 ~", T: "b2 ~",
  U: "~ d#4@47", V: "~ d#3@24 [g3,d4]@23", W: "~ [g3,c4]@24 a#3@23", X: "~ a3@32 ~@15",
})).s("gm_distortion_guitar").gain(0.32).pan(0.8)

// other · timpani
const timpani = note("<~@27 A ~@5 B ~@21 C D ~@4 C D ~@5 E F ~@8>".pickRestart({
  A: "~@11 a2!24 ~ d3 ~@11", B: "~@11 a2!24 d3 ~@12", C: "~@24 a2!24", D: "d3 ~@47", E: "~@24 a#2!24", F: "~ d#3 ~@46",
})).s("gm_timpani").gain(0.54).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~@27 A ~@3 A ~ A@2 ~@7 B@13 C B D B D E C B D B@3 D F G H G H I ~@4>".pickRestart({
  A: "~@35 x ~@12", B: "x ~@2 x!2 ~@3", C: "x ~@2 x ~@4 x ~@7", D: "x ~@5 x ~ x ~@2 x ~@4", E: "x!2 ~ x!2 ~@3",
  F: "x ~@2 x ~@12", G: "~ x ~@17 x ~@5 x ~@22", H: "~ x ~@17 x ~@5 x ~@8 x ~@13", I: "~ x ~@46",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct("<~@42 A@9 B A C A C A@5 C A@6 B D E D F ~@5>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@4 x ~@7 x!2 ~@2", D: "~@13 x ~@23 x ~@10", E: "~@13 x ~@22 x!2 ~@10",
  F: "~@13 x ~@34",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct("<~@14 A ~@19 B ~@18 C ~ C ~@12 B ~@3 D ~@5>".pickRestart({
  A: "~@5 x ~@5 x ~@36", B: "~@11 x ~@4", C: "~@7 x", D: "~@37 x ~@10",
})).gain(0.43)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@42 A B C B A B@2 C A D A C E ~ F G A H A I A J A B A H K L M N O P Q ~@3
>`.pickRestart({
  A: "~ x!7", B: "x!8", C: "x!7 ~", D: "x!6 ~@2", E: "~ x!4 ~@3", F: "~ x ~ x!5", G: "x!4 ~ x!3", H: "x!6 ~ x",
  I: "x!2 ~ x!2 ~@3", J: "~ x!5 ~ x", K: "x!3 ~@5", L: "~@7 x ~@11 x ~@5 x ~@5 x ~@5 x ~@5 x ~@4",
  M: "~ x ~@5 x ~@5 x ~@5 x ~@11 x ~@5 x ~@5 x ~@4", N: "~@7 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@4",
  O: "~ x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@10", P: "~@13 x ~@6 x ~@5 x ~@5 x ~@6 x ~@8",
  Q: "~@3 x ~@5 x ~@6 x ~@5 x ~@5 x ~@5 x ~@6 x ~@6",
})).gain(0.38)

// drums · mid tom
const mid_tom = s("mt").struct("<~@51 A ~ B ~ B ~@5 C ~ D ~@4 E ~@9>".pickRestart({
  A: "~@11 x!2 ~@3", B: "~@11 x ~@4", C: "~@5 x ~ x", D: "~@7 x", E: "~@6 x ~@2 x!2 ~ x!4",
})).gain(0.48)

// drums · open hat
const open_hat = s("oh").struct("<~@44 A ~@4 A ~ A ~@2 B C ~@17 D ~@4>".pickRestart({
  A: "~@7 x", B: "~@5 x!3", C: "x!5 ~@3", D: "~@15 x",
})).gain(0.32)

// drums · crash
const crash = s("cr").struct(`<
  ~@27 A ~@5 A@2 ~@7 B ~@3 B ~@3 B ~ B ~ B C D E B F B C B G B ~ B F H I J K ~@4 L ~
// … 12 more lines

More by Andrea Bocelli