Strudelify
24.000 baci cover art

1983 · Celentano Hit Parade (Le Volte Che Adriano È Stato Primo)

24.000 baci

Celentano

KeyC majorTempo165 bpm
0:00/0:00
// 24.000 baci — Celentano
// 165 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 109 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(165/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 · synth strings 1
const synth_strings_1 = note(`<
  ~ A@4 B@6 C@2 D E F@2 D G A@2 C@2 A@2 H@2 ~@2 I@2 A@2 C@2 J@2 B@6 C@2 D E F@2 D G A@2 C@2 A@2 H@2 ~@2 I@2 A@2 C@2 D K
  L@6 M@2 N O P@2 N K Q@2 M@2 Q@2 R@2 ~@2 S@2 Q@2 M@2 N@2 M@2 N@2 M@2 T@2
>`.pickRestart({
  A: "[g3,c4,e4]/2", B: "[g3,c4,e4]/6", C: "[g3,b3,f4]/2", D: "[g3,c4,e4]", E: "[g3,a#3,e4]", F: "[f3,a3,f4]/2",
  G: "[g3,b3,f4]", H: "[[g3,b3,f4]@7 ~]/2", I: "[a3,c4,f4]/2", J: "[[g3,c4,e4]@15 ~]/2", K: "[g#3,c4,f#4]",
  L: "[g#3,c#4,f4]/6", M: "[g#3,c4,f#4]/2", N: "[g#3,c#4,f4]", O: "[g#3,b3,f4]", P: "[f#3,a#3,f#4]/2",
  Q: "[g#3,c#4,f4]/2", R: "[[g#3,c4,f#4]@7 ~]/2", S: "[a#3,c#4,f#4]/2", T: "[[g#3,c#4,f4]@3 ~]/2",
})).s("gm_synth_strings_1").gain(0.17)

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

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A@8 B@3 C@2 D@2 E@2 F G H@2 C@2 H@2 I@2 ~@2 J@6 K@8 C@2 D@2 E@2 F G H@2 C@2 H@2 I@2 ~@2 E@2 H@2 C@2 F L M@6 N@2 O@2
  P@2 Q@2 R@2 N@2 R@2 S@2 ~@2 P@2 R@2 N@2 R@2 N@2 R@2 N@2 T@2
>`.pickRestart({
  A: "[~@15 [g3,c4,e4]@5 [g3,c4,e4]@2 ~ [g3,c4,e4]@5 ~@8 [g3,c4,e4]@3 [g3,c4,e4]@5 ~@8 [g3,c4,e4]@3 [g3,c4,e4]@5 ~@8 [g3,c4,e4]@3 [g3,c4,e4]@5 ~@8 [g3,c4,e4]@3 [g3,c4,e4]@5 ~@8 [g3,c4,e4]@3 [g3,c4,e4]@5 ~@8 [g3,c4,e4]@3 [g3,c4,e4]@5 [g3,c4,e4]@4, ~@15 c3@17 c3@16 c3@16 c3@16 c3@16 c3@16 c3@16, ~@28 [g3,c4,e4]@7 ~@9 [g3,c4,e4]@7 ~@9 [g3,c4,e4]@7 ~@9 [g3,c4,e4]@7 ~@9 [g3,c4,e4]@7 ~@9 [g3,c4,e4]@7 ~@13]/8", // C
  B: "[~@4 [g3,c4,e4]@3 [g3,c4,e4]@5 ~@8 [g3,c4,e4]@3 [g3,c4,e4]@5 ~@8 [g3,c4,e4]@3 [g3,c4,e4]@5 [g3,c4,e4]@4, c3 c3 c3, ~@12 [g3,c4,e4]@7 ~@9 [g3,c4,e4]@7 ~@13]/3", // C
  C: "[~@4 [b3,f4]@2 ~ [b3,f4]@5 ~@8 [b3,f4]@2 ~ [b3,f4]@5 [g3,b3,f4]@4, g2 g2, ~@3 g3@3 g3@5 ~ [g3,b3,f4]@7 g3@3 g3@5 ~@5]/2", // Bdim G7
  D: "[~@4 [g3,c4,e4]@3 [g3,c4,e4]@5 ~@8 [g3,a#3,e4]@3 [g3,a#3,e4]@5 [g3,a#3,e4]@4, c3 c3, ~@12 [g3,c4,e4]@7 ~@13]/2", // C Edim C
  E: "[~@4 [a3,c4,f4]@3 [a3,c4,f4]@5 ~@8 [a3,c4,f4]@3 [a3,c4,f4]@5 [a3,c4,f4]@4, f2 f2, ~@12 [a3,c4,f4]@7 ~@13]/2", // F
  F: "~@4 [g3,c4,e4]@3 [g3,c4,e4]@5 [g3,c4,e4]@4, c3", // C
  G: "~@4 [b3,f4]@2 ~ [b3,f4]@5 [g3,b3,f4]@4, g2, ~@3 g3@3 g3@5 ~@5", // Bdim G7
  H: "[~@4 [g3,c4,e4]@3 [g3,c4,e4]@5 ~@8 [g3,c4,e4]@3 [g3,c4,e4]@5 [g3,c4,e4]@4, c3 c3, ~@12 [g3,c4,e4]@7 ~@13]/2", // C
  I: "[~@4 [b3,f4]@2 ~ [b3,f4]@5 ~@8 [b3,f4]@2 ~ [b3,f4]@5 [g3,b3,f4]@3 [c3,g3,c4,e4], g2@16 g2@15 ~, ~@3 g3@3 g3@5 ~ [g3,b3,f4]@7 g3@3 g3@5 ~@5]/2", // Bdim G7 C G7
  J: "[f2@4 [a3,c4,f4]@3 [a3,c4,f4]@5 ~@8 [a3,c4,f4]@3 [a3,c4,f4]@5 ~@8 [g3,c4,e4]@3 [g3,c4,e4]@5 ~@8 [g3,c4,e4]@3 [g3,c4,e4]@5 ~@8 [b3,f4]@2 ~ [b3,f4]@5 ~@8 [b3,f4]@2 ~ [b3,f4]@5 [g3,b3,f4]@4, ~ f2@3 f2@4 c3@4 c3@4 g2@4 g2@4, ~@12 [a3,c4,f4]@7 ~@9 [a3,c4,f4]@6 ~@10 [g3,c4,e4]@7 ~@9 [g3,c4,e4]@7 g3@3 g3@5 ~ [g3,b3,f4]@7 g3@3 g3@5 ~@5]/6", // F C Bdim G7 F C G7
  K: "[~@4 [g3,c4,e4]@3 [g3,c4,e4]@5 ~@8 [g3,c4,e4]@3 [g3,c4,e4]@5 ~@8 [g3,c4,e4]@3 [g3,c4,e4]@5 ~@8 [g3,c4,e4]@3 [g3,c4,e4]@5 ~@8 [g3,c4,e4]@3 [g3,c4,e4]@5 ~@8 [g3,c4,e4]@3 [g3,c4,e4]@5 ~@8 [g3,c4,e4]@3 [g3,c4,e4]@5 ~@8 [g3,c4,e4]@3 [g3,c4,e4]@5 [g3,c4,e4]@4, c3 c3 c3 c3 c3 c3 c3 c3, ~@12 [g3,c4,e4]@7 ~@9 [g3,c4,e4]@7 ~@9 [g3,c4,e4]@7 ~@9 [g3,c4,e4]@7 ~@9 [g3,c4,e4]@7 ~@9 [g3,c4,e4]@7 ~@9 [g3,c4,e4]@7 ~@13]/8", // C
  L: "~@4 [g#3,c4,f#4]@3 [g#3,c4,f#4]@5 [g#3,c4,f#4]@4, g#2", // G#7
  M: "[~@4 [g#3,c#4,f4]@3 [g#3,c#4,f4]@5 ~@8 [g#3,c#4,f4]@3 [g#3,c#4,f4]@5 ~@8 [g#3,c#4,f4]@3 [g#3,c#4,f4]@5 ~@8 [g#3,c#4,f4]@3 [g#3,c#4,f4]@5 ~@8 [g#3,c#4,f4]@3 [g#3,c#4,f4]@5 ~@8 [g#3,c#4,f4]@3 [g#3,c#4,f4]@5 [g#3,c#4,f4]@4, c#3 c#3 c#3 c#3 c#3 c#3, ~@12 [g#3,c#4,f4]@7 ~@9 [g#3,c#4,f4]@7 ~@9 [g#3,c#4,f4]@7 ~@9 [g#3,c#4,f4]@7 ~@9 [g#3,c#4,f4]@7 ~@13]/6", // C#
  N: "[~@4 [c4,f#4]@2 ~ [c4,f#4]@5 ~@8 [c4,f#4]@2 ~ [c4,f#4]@5 [g#3,c4,f#4]@4, g#2 g#2, ~@3 g#3@3 g#3@5 ~ [g#3,c4,f#4]@7 g#3@3 g#3@5 ~@5]/2", // Cdim G#7
  O: "[~@4 [g#3,c#4,f4]@3 [g#3,c#4,f4]@5 ~@8 [g#3,b3,f4]@3 [g#3,b3,f4]@5 [g#3,b3,f4]@4, c#3 c#3, ~@12 [g#3,c#4,f4]@7 ~@13]/2", // C# Fdim C#
  P: "[~@4 [a#3,c#4,f#4]@3 [a#3,c#4,f#4]@5 ~@8 [a#3,c#4,f#4]@3 [a#3,c#4,f#4]@5 [a#3,c#4,f#4]@4, f#2 f#2, ~@12 [a#3,c#4,f#4]@7 ~@13]/2", // F#
  Q: "[~@4 [g#3,c#4,f4]@3 [g#3,c#4,f4]@5 ~@8 [c4,f#4]@2 ~ [c4,f#4]@5 [g#3,c4,f#4]@4, c#3 g#2, ~@12 [g#3,c#4,f4]@7 g#3@3 g#3@5 ~@5]/2", // C# Cdim G#7 C#
  R: "[~@4 [g#3,c#4,f4]@3 [g#3,c#4,f4]@5 ~@8 [g#3,c#4,f4]@3 [g#3,c#4,f4]@5 [g#3,c#4,f4]@4, c#3 c#3, ~@12 [g#3,c#4,f4]@7 ~@13]/2", // C#
  S: "[~@4 [c4,f#4]@2 ~ [c4,f#4]@5 ~@8 [c4,f#4]@2 ~ [c4,f#4]@5 [g#3,c4,f#4]@3 [c#3,g#3,c#4,f4], g#2@8 g#2@7 ~, ~@3 g#3@3 g#3@5 ~ [g#3,c4,f#4]@7 g#3@3 g#3@5 ~@5]/2", // Cdim G#7 C# G#7
  T: "[~@4 [g#3,c#4,f4]@3 [g#3,c#4,f4]@5 [g#3,c#4,f4]@3 ~ c#3@4 c#3@3 ~ c#3@3 ~@5, c#3@15 [g#3,c#4,f4]@8 [g#3,f4,g#4,c#5]@4 ~@5]/2", // C#
})).s("gm_acoustic_guitar_steel").gain(0.35).pan(0.4)

// other · marimba
const marimba = note(`<
  ~ A B C D E F G H E F I J K L M N O P G H Q R S T U V ~@2 W@2 X Y Z AA G H E F G H E F I J AB L M AC O P G H R@2 AD@2
  AA AE ~@2 AF AG Y AH U@2 AI AJ AK AL AM AN AK AL AO AP AQ AR AS AT AU AV AM AN AW AX AY AZ BA BB ~@2 BC BD BE BF BA@2
  AM@2 BG BA AM@2 BA BH BI BJ
>`.pickRestart({
  A: "~@3 g3 c4@2 ~@2 [c4,f4]@2 ~ [c4,e4] ~@3 g3, ~@4 e4 ~@11", B: "[c4,e4]@2 ~ g3 [c4,f4]@2 ~ [c4,e4] ~@8",
  C: "~@3 g3 [c4,e4]@2 ~ g3 [c4,f4]@2 ~ [c4,e4] ~@3 g3", D: "c4@2 ~ g3 f4@2 ~ c4@2 ~@7, e4 ~@3 c4 ~@2 e4 ~@8",
  E: "~@3 g3 [c4,e4] ~@6 [c4,e4] ~@3 g3", F: "[c4,e4] ~@6 [c4,e4] ~@8",
  G: "~@3 g3 c4@2 ~ g3 [c4,f4]@2 ~ [c4,e4] ~@3 g3, ~@4 e4 ~@11", H: "c4@2 ~ g3 [c4,f4]@2 ~ [c4,e4]@2 ~@7, e4 ~@15",
  I: "g3@2 ~ [b3,f4] ~@3 g3 f4@2 ~@5 g3, ~@8 b3 ~@7", J: "[b3,f4] ~@3 g3@3 [b3,f4]@3 ~@6",
  K: "e4 [c4,e4] c4 [c4,e4] e4 [c4,e4] c4 [c4,e4] e4 [c4,e4] c4 [c4,e4] ~ c4@3, ~@6 e4 ~", // C
  L: "g4 [a#3,g4] a#3 [a#3,g4] g4 [a#3,g4] a#3 [a#3,g4] g4 [a#3,g4] a#3 [a#3,g4] ~ a#3@3, ~@12 g4@3 ~", // D#
  M: "~@3 [a3,d4,f4] ~@4 [a3,c4,f4] ~@7", N: "[a3,c4,f4] ~@6 [a3,c4,f4]@3 ~ [a3,c4] ~@4",
  O: "g3@2 ~ [c4,e4] ~@3 g3 [c4,e4]@2 ~@6", P: "g3@3 [b3,f4] ~@3 g3 [b3,f4] ~@7",
  Q: "b4 [g4,b4] g4 [g4,b4] b4 [g4,b4] g4 [g4,b4] ~ g4@3 ~@4, ~@4 b4 ~@3", // G
  R: "b4 [g4,b4] g4 [g4,b4] b4 [g4,b4] g4 [g4,b4] ~ g4@3 ~@4, ~@8 b4@3 ~@5", // G
  S: "c5 [g4,c5] g4 [g4,c5] c5 [g4,c5] g4 [g4,c5] ~ g4@3 ~@4, ~@4 c5 ~@3", // C5
  T: "c5 [g4,c5] g4 [g4,c5] c5 [g4,c5] g4 [g4,c5] c5 g4@2 ~@5", // C5
  U: "d5 [g4,d5] g4 [g4,d5] d5 [g4,d5] g4 [g4,d5] ~ g4@2 ~@5, ~@4 d5 ~@3", // G5
  V: "d5 [g4,d5] g4 [g4,d5] d5 [g4,d5] g4 [g4,d5] ~ g4@3 ~@3 [e4,c5], ~@4 d5 ~@3", // G5 C
  W: "c5 [f4,c5] f4 [f4,c5] c5 [f4,c5] f4 [f4,c5] c5 f4@2 ~@5", // F5
  X: "c5 [e4,c5] e4 [e4,c5] c5 [e4,c5] e4 [e4,c5] ~ e4@2 ~@5, ~@4 c5 ~@3", // C
  Y: "c5 [e4,c5] e4 [e4,c5] c5 [e4,c5] e4 [e4,c5] ~ e4@3 ~@4, ~@8 c5@3 ~@5", // C
  Z: "d5 [g4,d5] g4 [g4,d5] d5 [g4,d5] g4 [g4,d5] ~ g4@3 ~@4, ~@8 d5@3 ~@5", // G5
  AA: "d5 [g4,d5] g4 [g4,d5] d5 [g4,d5] g4 [g4,d5] ~ g4@3 ~@4, ~@4 d5 ~@3", // G5
  AB: "e4 [c4,e4] c4 [c4,e4] e4 [c4,e4] c4 [c4,e4] e4 [c4,e4] c4 [c4,e4] ~ c4@3, ~@12 e4@3 ~", // C
  AC: "[a3,c4,f4] ~@6 [a3,c4,f4]@3 ~@6", AD: "c5 [g4,c5] g4 [g4,c5] c5 [g4,c5] g4 [g4,c5] ~ g4@3 ~@4, ~@8 c5@3 ~@5",
  AE: "d5 [g4,d5] g4 [g4,d5] d5 [g4,d5] g4 [g4,d5] ~ g4@2 ~@4 [e4,c5], ~@4 d5 ~@3", // G5 C
  AF: "c5 [f4,c5] f4 [f4,c5] c5 [f4,c5] f4 [f4,c5] ~ f4@2 ~@5, ~@8 c5@3 ~@5", // F5
  AG: "c5 [f4,c5] f4 [f4,c5] c5 [f4,c5] f4 [f4,c5] ~ f4@2 ~@5, ~@4 c5 ~@3", // F5
  AH: "c5 [e4,c5] e4 [e4,c5] c5 [e4,c5] e4 [e4,c5] ~ e4@3 ~@4, ~@4 c5 ~@3", // C
  AI: "~@3 g3 c4@2 ~ g3 [c4,f4]@2 ~ [c4,e4] ~@3 g#3, ~@4 e4 ~@11", // F5 C
  AJ: "c4@2 ~ g#3 [c4,f#4]@2 ~ [c4,f#4]@2 ~@7, f#4 ~@15", AK: "~@3 g#3 [c#4,f4] ~@6 [c#4,f4] ~@3 g#3",
  AL: "[c#4,f4] ~@6 [c#4,f4] ~@8", AM: "~@3 g#3 c#4@2 ~ g#3 [c#4,f#4]@2 ~ [c#4,f4] ~@3 g#3, ~@4 f4 ~@11",
  AN: "c#4@2 ~ g#3 [c#4,f#4]@2 ~ [c#4,f4]@2 ~@7, f4 ~@15", AO: "g#3@2 ~ [c4,f#4] ~@3 g#3 f#4@2 ~@5 g#3, ~@8 c4 ~@7",
  AP: "[c4,f#4] ~@3 g#3@3 [c4,f#4]@3 ~@6", // Cdim
  AQ: "f4 [c#4,f4] c#4 [c#4,f4] f4 [c#4,f4] c#4 [c#4,f4] f4 [c#4,f4] c#4 [c#4,f4] ~ c#4@3, ~@3 f4", // C#
  AR: "g#4 [b3,g#4] b3 [b3,g#4] g#4 [b3,g#4] b3 [b3,g#4] g#4 [b3,g#4] b3 [b3,g#4] ~ b3@3, ~@3 g#4", // E
  AS: "~@3 [a#3,d#4,f#4] ~@4 [a#3,c#4,f#4] ~@7", AT: "[a#3,c#4,f#4] ~@6 [a#3,c#4,f#4]@3 ~@6",
  AU: "g#3@2 ~ [c#4,f4] ~@3 g#3 [c#4,f4]@2 ~@6", AV: "g#3@2 ~ [c4,f#4] ~@3 g#3 [c4,f#4] ~@7",
  AW: "c5 [g#4,c5] g#4 [g#4,c5] c5 [g#4,c5] g#4 [g#4,c5] ~ g#4@2 ~@5, ~@4 c5 ~@3", // G#
  AX: "c5 [g#4,c5] g#4 [g#4,c5] c5 [g#4,c5] g#4 [g#4,c5] ~ g#4@3 ~@4, ~@4 c5 ~@3", // G#
  AY: "c#5 [g#4,c#5] g#4 [g#4,c#5] c#5 [g#4,c#5] g#4 [g#4,c#5] ~ g#4@2 ~@5, ~@4 c#5 ~@3", // C#5
  AZ: "c#5 [g#4,c#5] g#4 [g#4,c#5] c#5 [g#4,c#5] g#4 [g#4,c#5] ~ g#4@2 ~@5, ~@8 c#5@3 ~@5", // C#5
  BA: "d#5 [g#4,d#5] g#4 [g#4,d#5] d#5 [g#4,d#5] g#4 [g#4,d#5] ~ g#4@2 ~@5, ~@4 d#5 ~@3", // G#5
  BB: "d#5 [g#4,d#5] g#4 [g#4,d#5] d#5 [g#4,d#5] g#4 [g#4,d#5] ~ g#4@3 ~@3 [f4,c#5], ~@4 d#5 ~@3", // G#5 C#
  BC: "c#5 [f#4,c#5] f#4 [f#4,c#5] c#5 [f#4,c#5] f#4 [f#4,c#5] c#5 f#4 ~@6", // F#5
  BD: "c#5 [f#4,c#5] f#4 [f#4,c#5] c#5 [f#4,c#5] f#4 [f#4,c#5] ~ f#4 ~@6, ~@4 c#5 ~@3", // F#5
  BE: "c#5 [f4,c#5] f4 [f4,c#5] c#5 [f4,c#5] f4 [f4,c#5] ~ f4@2 ~@5, ~@4 c#5 ~@3", // C#
  BF: "c#5 [f4,c#5] f4 [f4,c#5] c#5 [f4,c#5] f4 [f4,c#5] c#5 f4@2 ~@5", // C#
  BG: "d#5 [g#4,d#5] g#4 [g#4,d#5] d#5 [g#4,d#5] g#4 [g#4,d#5] ~ g#4@2 ~@5, ~@8 d#5@3 ~@5", // G#5
  BH: "d#5 [g#4,d#5] g#4 [g#4,d#5] d#5 [g#4,d#5] g#4 [g#4,d#5] ~ g#4@3 ~@4, ~@4 d#5 ~@3", // G#5
  BI: "g#3@3 g#3 a#3@3 c#4@4 g#3 a#3@3 c#4", BJ: "~@7 c#4@5 ~@4",
})).s("gm_marimba").gain(0.23).pan(0.3)

// chords · pizzicato strings
const pizzicato_strings = note(`<
  ~ A B C B D E C B D E F G H I J K L M C B N@2 O P N Q ~@2 R@2 S@2 T@2 C B D E C B D E U G ~@2 J K V W C B N@2 O P N Q
  ~@2 R@2 S@2 T@2 C X Y Z AA AB Y Z AC AD ~@2 AE AF AG AH AA AI ~@5 AJ ~@2 AK@2 AL@2 AM@2 AA AN AO AM AA@2 AM AP AQ AR
>`.pickRestart({
  A: "~@3 c3 [c4,e4] ~@3 [c4,f4] ~@2 [c4,e4] ~@3 c3", B: "[c4,e4] ~@2 c3 [c4,f4] ~@2 [c4,e4] ~@8",
  C: "~@3 c3 [c4,e4] ~@2 c3 [c4,f4] ~@2 [c4,e4] ~@3 c3", D: "~@3 c3 [c4,e4] ~@6 [c4,e4] ~@3 c3",
  E: "[c4,e4] ~@6 [c4,e4] ~@8", F: "g2 ~@2 [b3,f4] ~@3 g2 [b3,f4] ~@6 g2", G: "[b3,f4] ~@3 g2 ~@2 [b3,f4] ~@8",
  H: "[c4,e4] ~@10 [c4,e4] ~@4", I: "~@3 [a#3,e4] ~@3 [a#3,e4] ~@4 [a#3,e4] ~@3",
  J: "~@3 [a3,d4,f4] ~@4 [a3,c4,f4] ~@7", K: "[a3,c4,f4] ~@6 [a3,c4,f4] ~@3 [a3,c4] ~@4",
  L: "~@3 [c4,e4] ~@4 [c4,e4] ~@3 [c4,e4] ~@3", M: "~@3 [b3,f4] ~@4 [b3,f4] ~@3 [g3,d4] ~@3",
  N: "~@4 g3@2 ~@2 b3 ~@3 d4 ~@3", O: "~@4 c4@2 ~@2 e4 ~@3 g4 ~@3", P: "~@3 g4 c4@2 ~@2 e4 ~@3 g4 ~@3",
  Q: "~@3 g4 g3@2 ~@2 b3 ~@3 d4 ~@2 [e4,c5]", R: "~@12 [c4,f4] ~@3", S: "~@12 [c4,e4] ~@3",
  T: "~@4 [b3,f4] ~@7 [b3,f4] ~@3", U: "~@3 [b3,f4] ~@3 g2 [b3,f4] ~@6 g2", V: "c3 ~@2 [c4,e4] ~@3 c3 [c4,e4] ~@7",
  W: "g2 ~@2 [b3,f4] ~@3 g2 [b3,f4] ~@7", X: "[c4,f#4] ~@2 c3 [c4,f#4] ~@2 [c4,f#4] ~@8",
  Y: "~@3 c#3 [c#4,f4] ~@6 [c#4,f4] ~@3 c#3", Z: "[c#4,f4] ~@6 [c#4,f4] ~@8",
  AA: "~@3 c#3 [c#4,f4] ~@2 c#3 [c#4,f#4] ~@2 [c#4,f4] ~@3 c#3", AB: "[c#4,f4] ~@2 c#3 [c#4,f#4] ~@2 [c#4,f4] ~@7 c#3",
  AC: "~@3 [c4,f#4] ~@3 g#2 [c4,f#4] ~@6 g#2", AD: "[c4,f#4] ~@3 g#2 ~@2 [c4,f#4] ~@8",
  AE: "~@3 [a#3,d#4,f#4] ~@4 [a#3,c#4,f#4] ~@7", AF: "[a#3,c#4,f#4] ~@6 [a#3,c#4,f#4] ~@3 [a#3,c#4] ~@4",
  AG: "c#3 ~@2 [c#4,f4] ~@3 c#3 [c#4,f4] ~@7", AH: "g#2 ~@2 [c4,f#4] ~@3 g#2 [c4,f#4] ~@7",
  AI: "[c#4,f4] ~@2 c#3 [c#4,f#4] ~@2 [c#4,f4] ~@8", AJ: "~@15 [f4,c#5]", AK: "~@12 [c#4,f#4] ~@3",
  AL: "~@12 [c#4,f4] ~@3", AM: "~@4 [c4,f#4] ~@7 [c4,f#4] ~@3",
  AN: "~@3 c#3 [c#4,f4] ~@2 c#3 [c#4,f#4] ~@2 [c#4,f4] ~@4", AO: "~@4 [c4,f#4] ~@7 [c4,f#4] ~@2 [c4,f#4]",
  AP: "~@4 [c4,f#4] ~@2 [c4,f#4] ~@4 [c4,f#4] ~@3", AQ: "c#3 ~@2 g#3 a#3 ~@2 c#4 ~@3 g#3 a#3 ~@2 c#4",
  AR: "f3 g#3 ~ a#3 c#4 d#4 ~ f4 ~@8",
})).s("gm_pizzicato_strings").gain(0.37).pan(0.9)

// other · celesta
const celesta = note(`<
  ~@21 A@2 B C A D ~@2 E F G H I J K H ~@12 L M N ~ A@2 B C A D ~@2 E F G H I J ~@10 O P Q ~ R S T ~ U@2 V W U X ~@2 Y Z
  AA AB AC AD ~@2 AC AD ~@2 AC AD AE AF
>`.pickRestart({
  A: "~@4 g4@2 ~@2 b4 ~@3 d5 ~@3", B: "~@4 c5@2 ~@2 e5 ~@3 g5 ~@3", C: "~@3 g5 c5@2 ~@2 e5 ~@3 g5 ~@3",
  D: "~@3 g5 g4@2 ~@2 b4 ~@3 d5 ~@2 [e5,c6]", E: "~@4 c5 ~@6 a4@2 ~@3", F: "g4 ~@6 f4 ~@8", G: "~@4 g4@2 ~@5 e4 ~@4",
  H: "g4 ~@6 c5 ~@8", I: "~@4 d5 ~@6 b4 ~@4", J: "g4 ~@6 b4 ~@8", K: "~@4 e5 ~@6 c5 ~@4",
  L: "~@4 [c5,c6] ~@6 [c5,c6] ~@4", M: "[b4,b5] ~@6 [b4,b5] ~@4 [b4,b5] ~@3", N: "[c5,c6] ~@6 [c5,c6] ~@4 [c5,c6] ~@3",
  O: "[f5,f6] ~@11 [d#5,d#6] ~@3", P: "[c#5,c#6] ~@11 [f5,f6] ~@3", Q: "[f#5,f#6] ~@15",
  R: "[f5,f6] ~@3 [d#5,d#6] ~@3 [c#5,c#6] ~@7", S: "[c5,c6]@5 ~@3", T: "[c#5,c#6] ~@7",
  U: "~@4 g#4@2 ~@2 c5 ~@3 d#5 ~@3", V: "~@4 c#5@2 ~@2 f5 ~@3 g#5 ~@3", W: "~@3 g#5 c#5@2 ~@2 f5 ~@3 g#5 ~@3",
  X: "~@3 g#5 g#4@2 ~@2 c5 ~@3 d#5 ~@2 [f5,c#6]", Y: "~@4 c#5 ~@6 a#4@2 ~@3", Z: "g#4 ~@6 f#4 ~@8",
  AA: "~@4 g#4@2 ~@5 f4 ~@4", AB: "g#4 ~@6 c#5 ~@8", AC: "~@4 d#5 ~@6 c5 ~@4", AD: "g#4 ~@6 c5 ~@8",
  AE: "~@3 f5 f#5 ~@2 g#5 ~@3 f5 f#5 ~@2 g#5", AF: "f5 d#5 ~ c#5 a#4 g#5 ~ c#6 ~@8",
})).s("gm_celesta").gain(0.44).pan(0.6)

// drums · kick
const kick = s("bd").struct("<A B C@24 D ~ E C@29 D ~ E C@7 F C@21 D ~ E C@14 F G>".pickRestart({
  A: "~@15 x", B: "~ x!3", C: "x!4", D: "x ~@3 x ~@3 x ~@6 x", E: "~@3 x", F: "x ~@3 x ~@2 x ~@4 x ~@3",
  G: "x ~@6 x ~@8",
})).gain(0.49)

// drums · snare
const snare = s("sd").struct(`<
  A B@3 C B@15 D B@5 E ~ F B@7 C B@15 D B@5 E ~ G B@7 H B@15 I B@5 E ~ J B@14 H K
>`.pickRestart({
  A: "~@3 x ~@3 x!2 ~@2 x ~@4", B: "~@4 x ~@2 x ~@4 x ~@3", C: "~@4 x ~@2 x ~@4 x!2 ~ x", D: "~@3 x ~@3 x ~@3 x ~@3 x",
  E: "~@4 x ~@2 x ~@3 x!2 ~@3", F: "~@12 x ~@2 x", G: "~@12 x!2 ~ x", H: "~@3 x!2 ~@6 x!3 ~ x",
  I: "~@3 x ~@3 x ~ x ~ x ~@3 x", J: "~@11 x!2 ~@2 x", K: "~@3 x!3 ~@10",
})).gain(0.38)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<A B@19 C B@5 ~@3 B@23 C B@5 ~@3 B@7 ~ B@15 D B@5 ~@3 B@14 ~@2>".pickRestart({
  A: "~@9 x ~@6", B: "~@11 x ~@4", C: "~@8 x!2 ~@6", D: "~ x",
})).gain(0.22)

// drums · pedal hat
const pedal_hat = s("hh").struct("<A B@19 C B@6 ~@2 B@7 D B@15 C B@6 ~@2 B@7 ~ B@15 C B@5 D ~@2 B@14 ~@2>".pickRestart({
  A: "~ x!3", B: "~ x ~ x", C: "~ x!2 ~", D: "~ x ~@2",
})).gain(0.38)

// drums · mid tom
const mid_tom = s("mt").struct("<A ~@19 A ~@31 A ~@15 B ~@15 A ~@22 B ~>".pickRestart({
  A: "~@3 x", B: "~@7 x ~@8",
})).gain(0.44)

// … 21 more lines

More by Celentano