Strudelify

E ancor mi chiedo

Ramazzotti

KeyC majorTempo69 bpm
0:00/0:00
// E ancor mi chiedo — Ramazzotti
// 69 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 76 bars on a 16-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 · fretless bass
const bass = note(`<
  ~@16 A B C D A E F G H@2 I@2 J@2 K@2 L@2 M@3 N O P Q R O S Q R T U V W X B X Y Z AA Z AB X AC X Y Z AA Z AD AE AF AG
  AH AI AJ AK AL@3
>`.pickRestart({
  A: "c2 a#1", B: "f1@6 c2@2 d#2@7 ~", C: "d2@2 ~ g2, ~ g1", D: "c2 d2 ~ d#1, ~ d#2", E: "a1 g#1", F: "g1 g#1",
  G: "a#1 b1", H: "[g1@7 ~ c2@16 f1@6 c2@2]/2", I: "[d#2@7 ~ c2@16 f1@6 c2@2]/2",
  J: "[d#2@4 e2@4 ~@4 d1@9 ~ d1@2 g1@8, ~ d2@2 ~]/2", K: "[g1@7 ~@5 d1@9 ~ d1@2 g2@4 g1@4, ~ d2@2 ~]/2",
  L: "[f1@8 ~@14 e1@2 a1@5 ~ a1 b1, ~@8 e1@13 ~@11, ~@2 e2 ~]/2",
  M: "[c#2@4 a1@4 ~@8 g#2@4 g#1@4 ~@8 g2@7 ~ g1@7 d2, ~@8 g#1@12 ~@4 g1@15 ~@9]/3", N: "g2 g1 c2@2", O: "a#1@4 f1@3 c2",
  P: "d#2@7 ~ d2@8", Q: "~ g2 c2 d2, g1 ~", R: "~ d#1 c2@2, d#2 ~", S: "d#2 d2", T: "a#1 a1", U: "g#1 g1", V: "g#1 a#1",
  W: "b1@8 g1@7 ~", X: "c2", Y: "f1@3 c2 d#2@2 e2@2", Z: "~@4 d1@9 ~ d1@2, d2", AA: "g1@8 g1@7 ~",
  AB: "g1@4 g2@3 g1 f1@4 g1@4", AC: "f1@3 c2 d#2@4", AD: "g2 g1 f1@2", AE: "~@7 e1, e1@13 ~@3, ~ e2",
  AF: "a1@5 ~ a1 b1 c#2@4 a1@4", AG: "~@2 g#2 g#1, g#1@11 ~@5", AH: "~@8 g2@7 ~, g1@15 ~", AI: "g1@7 d2 g2@4 g1@4",
  AJ: "~@2 f1@5 f2, f2@7 ~", AK: "e2", AL: "[d#2@8 d2@15 ~@3 c1@22, ~ c2]/3",
})).s("gm_fretless_bass").gain(0.52)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@3 A B C D E ~@5 F ~@2 G H I J B K L@2 M@5 N@6 O P@2 Q@3 R S@3 T U@3 V W@2 X@2 Y Z Y AA W@2 X@2 Y Z Y AA AB AC AD AE
  AF AG@2 AH@3
>`.pickRestart({
  A: "~@12 a#3 c4 d#4 f4, ~@5 [d#3,g3]@3", B: "g#4 g4 g#4 g4, [c3,d#4] [a#2,d4]",
  C: "a2@4 f2@2 g2@2 g#2@7 ~, [c4,f4]@15 ~, a3 ~", D: "[g2,d#4,g4,a#4] [g#2,c4,g#4]",
  E: "d#4@4 d4@3 ~, [a#2,a#3,f4]@7 ~", F: "~ g#2", G: "[g#3,g#4] [g3,g4] [g#3,g#4] [g3,g4], d#4 d4",
  H: "g4 f4 d#4 d4, g#3, c4@3 ~", I: "[c4,g#4] [b3,g4], f4", J: "[c2,g3,c4] [d2,a#3] [d#2,a#3,d#4]@2",
  K: "a2@2 f2 g2 ~ c5@2 d5, [c4,f4], a3 g#2", // F5
  L: "[[g2,a#3]@4 ~@3 d5 [a#2,a#3,d#5]@4 [b2,b3,d4,d5]@4, d#4@3 ~, d#5@7 ~@9, ~ [g#2,c4] ~@2]/2", // Gm D#5 Bm G#
  M: "[~ [g3,g4]@3 e3@8 ~@4 [c4,c5]@2 [d4,d5]@2 e3@8 [f2,a3,c4,f4]@6 [e2,c4,e4,g4]@2 [d4,f4,f5,a5]@4, [g1,g2] c3@4 [c3,g4,g5]@3 ~@2, ~ [g4,g5]@3 ~@6, ~@3 f3@2 ~@2 f3 ~@2]/5", // G C D F C Dm G C5 …
  N: "[d6@4 a5@4 [d5,g5]@8 [d5,b5]@8 [f5,a5]@8 d6@4 a5@4 g5@6 a5@2 [g5,b5]@4 ~@2 g5@2 b5@5 ~ b5@2 e6@2 b5@2 g5@2 e5@2 a5@6 b5@2 a5@4 [c#6,e6]@4 [g#3,f4,g#5,f6]@8, [d4,f4,f5] [b3,d4]@2 [d4,f4]@2 [b3,d4]@2 [b3,e4]@2 [c#4,e4]@2 ~, ~@4 f5 d5 [g4,d5] ~@5, ~@26 d6@2 g5@5 ~@15]/6", // G5 G F G C#m C# Dm Bm …
  O: "[g#3,f4,g#5,c6] [c4,e4,g5,e6]", P: "[[c4,e4,e5,c6]@2 c4@3 b3 g#3 g3, ~ [g3,d4,g4,g5]@2 c3]/2",
  Q: "[g#3 g3!2 f3 d#3 d3 f4@2 [b3,g4]@2 [c2,g3,d#4] [d2,d4,f4], a#2 g#2@2 d4@2 ~]/3", // Em Cm Dm
  R: "[d#2,g3,d#4]@2 [g#3,g#4] [g3,g4], ~ d#4", // D# G# G
  S: "[[g#3,g#4] [g3,g4] g4 f4 d#4 d4 [c4,g#4]@2 [b3,g4]@2 [c2,g3,c4] [d2,a#3], d4 g#3@2 ~@3, ~@2 c4@3 ~ f4@4 ~@2]/3", // G# G Fm Em C5 Gm
  T: "[d#2,a#3,d#4]@2 g#4 g4, ~ [c3,d#4]", // D#5 Cm
  U: "[g#4@2 g4@2 a2@2 f2 g2 ~ c5@2 d5 [g2,a#3]@4 ~@3 d5 [a#2,a#3,d#5]@4, [a#2,d4] [c4,f4]@2 d#4@3, ~@4 a3@4 g#2@4 d#5@7 ~@5, ~@4 [g#2,c4] ~]/3", // Gm D#5 A# F5 G#
  V: "[b2,b3,d4,d5]@4 ~ [g3,g4]@3, ~ [g1,g2]", W: "[e3@4 ~@2 [c4,c5] [d4,d5], c3, [g4,g5]@3 ~, ~ f3]/2",
  X: "[e3@4 [f2,a3,c4,f4]@3 [e2,c4,e4,g4], [c3,g4,g5]@3 ~, ~@2 f3 ~]/2", Y: "[f5,a5]@2 d6 a5, [d4,f4], ~ f5",
  Z: "[d5,g5] [d5,b5], [b3,d4]", AA: "g5@3 a5 [g5,b5]@2 ~ g5, [b3,d4], d5 [g4,d5], ~@3 d6",
  AB: "b5@5 ~ b5@2 e6@2 b5@2 g5@2 e5@2, [b3,e4], g5 ~", AC: "a5@3 b5 a5@2 [c#6,e6]@2, [c#4,e4]",
  AD: "[g#3,f4,g#5,f6] [g#3,f4,g#5,c6]", AE: "[c4,e4,g5,e6] [c4,e4,e5,c6]", AF: "c4@3 b3, [g3,d4,g4,g5]",
  AG: "[a4@6 b4@2 c5@3 g4@5, c4, [f3,a3] [e3,g3]]/2", AH: "[[d#3,g4] [d3,f4]@2 [c3,e4,g4,c5]@3, [c4,c5] ~]/3",
})).s("gm_string_ensemble_2").gain(0.25).pan(0.3)

// chords · pad warm
const pad_warm = note("<A B C ~ D E F G H I J ~ K E F G H I J ~ K E F L@7 M@3 ~@4 N O@3 P@4 Q@4 R ~@26>".pickRestart({
  A: "g#4 g4 g#4 g4, [c3,d#4] [a#2,c4]", B: "[g#2,g3,c4,d#4,g4]", C: "[c4,f4]@8 [f3,b3,d4]@7 ~, g#3@15 ~",
  D: "g#4 g4 g#4 g4, [c3,d#4] [a#2,d4]", E: "a2 g#2, [c4,f4]", F: "[g2,a#3] [g#2,c4], d#4", G: "d#4 d4, a#3",
  H: "[c4,d#4,g#4]", I: "[f3,g#3,c4]", J: "[g#3,c4] [g3,b3,d4], f4", K: "[c4,d#4] [d4,f4], g#3",
  L: "[[a#3,d#4] [b3,d4,g4]@2 [g3,e4]@2 [a3,f4]@2 [g3,e4]@2 [a3,f4]@2 a3@2 b3, ~@24 c4@31 ~ c4@32 d4@24]/7", // D#5 G C Dm C Dm
  M: "[~ a3@2 b3@2 ~, ~ d4@4 ~]/3", N: "~@2 g#3 g3, ~ c3",
  O: "[g#3 g3!2 f3 d#3 d3 [g#3,c4]@2 [g3,b3,d4]@2 ~@2, a#2 g#2@2 f4@2 ~]/3", // G# G
  P: "[~ [c4,d#4,g#4]@2 [f3,g#3,c4]@2 [g#3,c4] [g3,b3,d4] ~, ~@5 f4@2 ~]/4", // G# Fm G# G
  Q: "[~ [c4,d#4] [d4,f4] a2 g#2 [g2,a#3] [g#2,c4] [a#3,d#4], ~ g#3@2 [c4,f4]@2 d#4@2 ~]/4", R: "[b3,d4,g4]",
})).s("gm_pad_warm").gain(0.18)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@4 A B ~ C ~@8 D E F G A B H I J@4 K@6 L@4 M@2 N O P@2 Q R S T U V W X W Y Z AA Z AB W X W AC Z AA Z AD AE AF AG AH
  AI ~@5
>`.pickRestart({
  A: "g#4@4 g4@2 d#5@2 d5@4 g4@2 g#4 a#4", B: "c5 ~@3", C: "f4@7 ~", D: "[c2,c3] [a#1,a#2]", E: "[f1,f2]", F: "d2 g2",
  G: "d#4 g3 a#3 d#4 f4 a#3 d4 f4 g4@4 g3 a#3 d#4 g4", H: "g2 g#2", I: "a#2 b2",
  J: "[[g1,g2]@4 [c4,c5] [g3,g4] [c4,c5] [d4,d5] [c4,c5] [g3,g4] [c4,c5] [d4,d5] [c4,c5]@6 [d4,d5]@2 [c4,c5] [g3,g4] [c4,c5] [d4,d5] [c4,c5] [g3,g4] [c4,c5] [d4,d5] [f1,f2,c4,c5]@4, ~ [c2,c3]@2 [f1,f2]@2 [c2,c3]@2 ~]/4", // G C G C D C G C …
  K: "[c5 b4 c5@2 g4@2 g5@2 [d2,f4,d5]@16 [g2,g4,d5]@16 [d2,f4,d5]@16 ~@4 g2@4 [f1,f2]@8 ~@8 e4@8 [a1,a3,c#4]@7 b1, ~@7 [g3,b3]@2 ~@3, ~@7 g1 ~ [e2,g3,b3]@2 ~]/6", // Dm G5 Dm F A G Em
  L: "[c#2@2 a1@2 [g#1,g#2,f3,c4]@8 [g1,g2,g3,c4]@8 c4@6 b3@2 g#4@2 g4 d#5, ~@5 [g1,g2,g3]@2 ~]/4", // Fm C5 G
  M: "[d5 g4 g#4 a#4 c5@8 g#4 g4 f4 c5, ~@3 d2]/2",
  N: "[g3,b3,b4] [a3,c4] [b3,d4] [g3,b3,f4] [c2,c4,d#4]@2 [a#2,d4,f4]@2, [g1,g2] ~, ~ g4@2 ~@5", // G Am Bm G7 Cm A# G
  O: "[d#2,d#4,g4] [c2,c3]", P: "[[a#1,a#2] [f1,f2]@2 d2]/2", Q: "g2@8 d#4 g3 a#3 d#4 f4 a#3 d4 f4",
  R: "g4@4 g3 a#3 d#4 g4 g#4@4 g4@2 d#5@2", S: "d5@4 g4@2 g#4 a#4 c5@4 ~@4", T: "~ g2", U: "g#2 a#2", V: "b2 [g1,g2]",
  W: "[c4,c5] [g3,g4] [c4,c5] [d4,d5] [c4,c5] [g3,g4] [c4,c5] [d4,d5], [c2,c3]", X: "[c4,c5]@3 [d4,d5], [f1,f2]",
  Y: "[f1,f2,c4,c5]@8 c5 b4 c5@2 g4@2 g5@2", Z: "[d2,f4,d5]", AA: "[g2,g4,d5]",
  AB: "~@4 g2@4 c4 f4 a4 c5 d5 b4 g4 d4, [g1,g3,b3] ~", AC: "[f1,f2,c4,c5]@8 a4 c5 f5 a5 g5 e5 c5@2",
  AD: "~ g2 [f1,f2]@2, [g3,b3], g1 ~", AE: "~ e4, [e2,g3,b3]", AF: "a1@7 b1 c#2@4 a1@4, [a3,c#4]",
  AG: "[g#1,g#2,f3,c4]", AH: "[g1,g2,g3,c4]", AI: "c4@3 b3, [g1,g2,g3]",
})).s("gm_string_ensemble_1").gain(0.37).pan(0.7)

// other · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@58
  [~@4 f4@3 f4 f4@5 ~ f4 e4]
  [d4@3 c4@4 ~@9]
  [~@3 c4 e4 ~ f4 g4 g4@6 f4 e4]
  [d4@2 e4 c4@4 ~@9]
  ~@14
>`).s("gm_acoustic_guitar_steel").gain(0.59).pan(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  ~@3 A ~@2 B C ~@3 A ~@3 D ~@3 E ~@3 D ~@16 F G ~@2 H I ~@2 J K L M N O P Q R S L M L M T U V W X Y Z AA ~@6
>`.pickRestart({
  A: "~@3 g3@2 d#4 d4 a#3 f3@6 ~@2", B: "~@3 a#2 d#3 f3 g3@2 f3@2 d#3@5 ~", C: "f3 ~",
  D: "~@2 f3 g3 d#4 d4 a#3 f3 g3@2 f3@4 ~@2", E: "~@3 f4@2 d#4 c4 a#3 a#3@6 ~@2", F: "~@11 g3@2 d#4 d4 a#3",
  G: "g3@3 ~@5", H: "~@9 g3@2 d#4 d4 d#4 d4 a#3", I: "a#3@3 ~@5", J: "~@10 f3 g3 d#4 d4 a#3 f3", K: "g3 f3@2 ~@5",
  L: "e4@2 g3@2 [g3,e4]@2 c3 ~ c3 ~ c3@2 e4@2 [g3,e4]@2, c3@5 ~@7 c3@4, g3 ~@6 [g3,e4]@2 [g3,e4]@3 g3 ~@3", // C
  M: "a3@2 a3@2 f4@2 a3 ~ f2 ~ f2@2 a3@2 ~ a3, [f2,f4]@2 f2@2 ~@3 f2, ~@4 a3 ~@2 [a3,f4]@2 [a3,f4]@3 f4@4", // F Dm
  N: "[c3,e4]@2 g3 ~ [c3,e4]@2 g3 [g3,e4] c3 ~ c3@2 [g3,e4]@2 [g3,e4]@2, g3 ~@3 g3 ~@4 [g3,e4]@3 c3@4", // C
  O: "[f2,a3,f4]@2 a3 ~ [f2,f4]@2 a3 ~ f2 ~@3 [a3,f4]@2 [g3,e4]@2, ~@4 a3 ~@2 [a3,f4]@2 [a3,f4]@2 ~@5, ~@5 f2@2 ~", // F Dm C Dm
  P: "f4@2 a3@2 [a3,d4,f4]@2 d3 ~ d3 ~ d3@2 a3@2 ~ a3, d3@5 ~@9 d3@2, a3 ~@6 [a3,d4,f4]@2 [a3,d4,f4]@2 ~ [d4,f4]@4", // Dm
  Q: "f3 ~ f3@2 [g2,b3,d4]@2 f3 ~ g2 ~ g2@2 ~@2 g2@2, [g2,d4]@4 f3 ~@2 [f3,b3,d4]@2 [f3,b3,d4]@3 [f3,b3,d4]@4", // G G5 Bdim
  R: "[d3,a3,f4]@3 ~ [d3,d4,f4]@2 a3 ~ d3 ~ d3@2 ~@2 d3 ~, ~@4 a3 ~@2 [a3,d4,f4]@2 [a3,d4,f4]@2 ~ [a3,d4,f4]@4", // Dm
  S: "[g2,f3,d4]@3 ~ [f3,b3,d4]@2 g2 [f3,b3,d4] a3 ~ a3 ~ [g2,b3,g4]@2 ~ g2, ~@8 f4@3 ~@3 [b3,g4]@2, ~@9 f2@3 ~@4", // G7 Bdim G Em
  T: "~@2 d3 ~ [d3,f4]@2 a3 ~ d3 ~ d3@2 ~@2 d3@2, [a3,f4]@4 a3 ~@2 [a3,f4]@2 [a3,f4]@2 ~ [a3,f4]@4", // Dm
  U: "[g2,d4]@2 b3 ~ [g2,d4]@2 b3 ~ g2 ~ g2@2 ~@2 g2 ~, b3 ~@3 b3 ~@2 [b3,d4]@2 [b3,d4]@2 ~ [b3,d4]@4", // G5 Bm
  V: "a3@2 a3 ~ [a3,f4]@2 d3 [a3,f4] d3 ~ d3@2 ~@2 d3 ~, [d3,f4]@4 ~@5 [a3,f4]@2 ~ [a3,f4]@4", // Dm
  W: "[b3,d4]@2 b3 ~ [b3,d4]@2 ~ b3 [f2,d4]@3 b3!2 ~ b3 ~, g2@2 ~ g2 b3 ~ d4@2, ~@13 f2@2 ~", // Bm Dm
  X: "g4@2 b3 ~ [e3,g4]@2 b3 ~ e3 ~ e3@2 ~@2 e3 ~, b3 ~@3 b3 ~@2 [b3,g4]@2 [b3,g4]@2 ~ [b3,g4]@4", // Em
  Y: "a3 ~ a3 ~ [a3,c#4]@2 a2 [a3,c#4] a2 ~ a2@2 [a3,c#4]@2 a2 a3, [a2,c#4]@4 ~@5 [a3,c#4]@2 ~@5", // A
  Z: "c4@2 [g#2,c4]@2 [g#2,f4]@2 c4 ~@3 g#2@2 c4@2 ~ c4, f4@4 c4 ~@2 [c4,f4]@2 [c4,f4]@2 ~ f4@4, ~@4 g#2 ~@2 g#2", // G# C# F5
  AA: "c4@2 c4 ~ [g2,e4]@2 c4 ~ g2 ~ g2@2 [c4,e4]@2 g2 c4, [g2,e4]@4 c4 ~@2 [c4,e4]@2 [c4,e4]@3 ~@4", // C
})).s("gm_acoustic_guitar_steel").gain(0.2).pan(0.6)

// chords · piano
const piano = note(`<
  A B C D E F G H I J K L M N O H I J P L M Q R S T U@2 V W@4 X Y Z AA AB AC AD@2 AE AF AD@2 AG AH AI AJ AK AL AM AN AM
  AO AP AQ AP AR AM AN AM AO AP AS AP AT AU AV AW AX AY AZ BA BB@3
>`.pickRestart({
  A: "~@4 g4@2 ~ c4 g#4@4 [c4,g4]@4, d#4 ~, [c2,g#4]@5 ~ c2@2 [a#1,d#4]@7 ~, ~@3 c4@3 ~@10", // C5 Fm D#5
  B: "[g#1,c4,d#4,g4]@2 ~@4 [c4,d#4] ~ [f3,c4]@4 [d#3,d#4]@3 ~, ~ g#2 g3@2 ~@4, ~@3 g#1@11 ~@2, ~@3 g#2@4 ~, ~@3 g4 ~@4", // G#maj7 Cm F5 D#
  C: "[d4,f4]@3 ~ [g#3,d4,f4]@2 d3 ~ [f3,b3]@4 b3@3 ~, d2@8 g2@7 ~, g#3 ~@2 d3@2 ~@3 d3 ~@7", // Dm Ddim Fdim
  D: "c4 ~ c4 d#4 ~@2 d4 f4 [d#2,g4]@6 d#4 ~, c2 d2 ~@2, ~ g3@3 f4@2 ~@2 d#4@4 ~@4, ~@5 a#3@3 a#3 ~@7", // D#
  E: "[g#3,d#4,g#4] ~ g4 d#4 g#4@2 g4 d4, c2@3 ~ [a#1,a#2,g#3]@4, ~ c3@2 ~@5, ~@3 g#3@5 ~@8", // G#5 A#7
  F: "[a1,c4,f4]@4 a3@2 a1@2 [g#3,f4]@3 ~ [c4,f4]@4, a3 ~ c4@4 ~@2, ~@4 f4@4 g#1@7 ~", // F C# F5
  G: "[a#3,d#4,g4]@3 ~@3 g4@2 [c4,d#4,g#4]@3 ~@5, g2@2 ~ g2@5 g#2@7 ~, ~@4 a#3@3 ~@9, ~@5 d#4@3 ~@8", // D# G#
  H: "[f3,a#3,d#4]@3 ~ [f3,a#3,d#4]@4 [a#2,d4]@7 ~, a#1@15 ~", // D#sus2 A#
  I: "~@4 g4@3 ~@3 d#4@2 g4@3 ~, c4 ~, c2@6 ~@2 [a#1,a#2,c4]@7 ~, g#4 ~ g#4 ~, ~ c3@2 ~@5", // A#sus2
  J: "g#3 ~@5 d4@2, [f2,c4,g4], ~ f3@2 f3@2 ~@3, ~@3 g#3@4 ~ d#4@8, ~ f4@3", // Fsus2
  K: "[d2,g#3,c4,f4]@3 d2 ~@2 g#3 ~ [b3,d4]@3 f3 [f3,b3,d4]@3 ~, ~@4 [g#3,c4,f4]@3 ~ f3@2 ~@6, ~@5 d2@3 g2@7 ~", // Dm7b5 Bm Bdim Fm
  L: "c4 ~ c4 d#4 ~@2 d4 f4 d#4@4 ~@2 d#4@2, c2@4 d2@4 [d#2,g4]@7 ~, ~ g3@3 f4@2 ~@10, ~@5 a#3@3 a#3 ~@3 a#3@4", // D#
  M: "~@2 c4@2 g4@2 c4@2 ~@4 g4@2 a#3 ~, [c2,c3,d#4,g#4] [a#1,a#2,g#4], ~@5 a#3@2 ~", // G# A#7
  N: "[c4,f4]@2 ~ c4 ~@2 [a1,a2] ~ [c4,f4]@4 f4@2 c4@2, [a1,a2]@2 [c4,f4]@2 g#3 ~@3, ~@2 f3@5 ~ g#1@7 ~", // F5 A F5 A F5
  O: "[g3,a#3,d#4]@2 ~@4 [g1,g2] ~ [g#2,g#3,c4]@4 [g#3,c4,d#4]@2 g#2@2, g1 a#3 ~@2, g2 ~ g2@3 d#4@7 ~@4, ~@3 g3@4 ~ g#1@7 ~", // D# G G#
  P: "[d2,g#3,c4,f4]@3 d2 ~@2 g#3 ~ [b3,d4]@4 [f3,d4]@3 ~, ~@4 [g#3,c4,f4]@3 ~ f3@2 ~@6, ~@5 d2@3 g2@8", // Dm7b5 Bm Dm Fm
  Q: "[c4,f4]@2 ~ c4 ~@2 [a1,a2] ~ [c4,f4]@4 f4@3 ~, [a1,a2]@2 [c4,f4]@2 g#3 ~@3, ~@2 f3@5 ~ g#1@7 ~", // F5 A F5 A F5
  R: "[a#3,d#4]@2 ~@4 a#3@2 [g#3,c4,d#4]@3 ~ [g#3,c4,d#4]@2 g#2@2, [g2,g4]@3 d#4@5 ~@8, ~@2 a#3@3 g2@3 g#2@4 ~@4, ~ g4 ~@2", // D#5 G# G
  S: "[a#3,d#4,g4]@2 g4 a#3 [b2,b3,d4,f4]@4, a#2 ~", T: "[g1,g2]@3 ~@9 g3@2 g3@2, ~@2 [g3,c4,e4] [c4,e4], ~@5 c2@3",
  U: "[[g3,c4,e4]@2 c2 ~ [c2,g3,b3,d4]@4 [a3,c4]@4 ~@4 [f3,a3,c4]@4 [f3,a3,c4]@2 f2 ~@5 g3@2 g3@2, ~@4 f3 ~ [f3,a3,c4]@2 ~@4 [g3,c4,e4]@2 [c4,e4]@2, ~@7 f2@4 ~@2 c2@3]/2", // C G Am F C
  V: "[g3,c4,e4]@2 c2 ~ [c2,g3,b3,d4]@4 [f2,c4,f4]@4 ~@2 f2@2, ~@8 a3 ~@3 [a3,c4,f4]@4", // C G F5 F
  W: "[[a3,c4,f4]@3 f2 [e2,g3,c4,e4]@2 g3 ~ [f3,a3,d4]@4 [a3,d4]@4 [f3,a3,d4]@4 [f3,a3,d4]@2 d2@2 [f3,b3,d4]@4 ~@4 [f3,b3,d4]@4 [f3,b3,d4]@3 ~ [f3,a3,d4]@4 [a3,d4]@4 [f3,a3,d4]@4 [f3,a3,d4]@2 d2@2 ~@2 g2@2 ~@2 g2 ~, f2@2 ~@6 d2@13 ~@3 g1@15 ~ d2@13 ~@3 g1@8, ~@6 f3 ~@15 f3 ~@5 [g3,b3,d4]@2 [g3,b3,d4]@2]/4", // F C Dm D5 Dm Bdim Dm D5 …
  X: "[f2,g3,b3,d4]@4 [g3,b3,d4]@2 f2 ~@5 [g3,b3,e4]@3 ~, ~ e1, ~@2 [g3,b3,e4] ~, ~@5 e2@2 ~", // G7 G Em
  Y: "[e2,g3,b3,e4]@4 ~@2 e2@2 [a1,g3,a3,c#4]@4 ~@2 a1 b1, ~ [g3,b3,e4] ~ [g3,a3,c#4]", // Em A7 Em A7
  Z: "[g3,a3,c#4]@3 ~@3 c#2@2 [f2,c4,f4]@4 ~@2 f2 ~, c#2@4 [g3,a3,c#4]@4 g#3@3 ~ [g#3,c4,f4]@4", // A7 F5 A7 Fm
  AA: "[f2,g#3,c4,f4]@4 ~@2 f2@2 [g3,c4,e4]@3 ~@3 g2@2, ~ [g#3,c4,f4] g2 [g3,c4,e4]", // Fm C Fm C
  AB: "[g3,c4,e4]@4 [g3,c4,e4]@3 ~ [g2,f3,a3,c4,d4]@4 ~@2 g2@2, g2@2 ~ [f3,a3,c4,d4]", // C Dm7
  AC: "c4@3 ~ b3@3 ~@5 g4@3 ~, [g2,g3,d4]@7 ~ c4@8, ~@4 c2@3 ~, ~@2 g#4 ~, ~@5 c3@2 ~", // G5
  AD: "[~@2 d#4@2 g4@3 ~ g#3@2 ~@6 d#4@8 [d2,g#3,c4,f4]@3 d2 ~@2 g#3 ~, [a#1,a#2,c4]@7 ~ [f2,c4,g4]@16 ~@5 d2@3, g#4@2 ~@3 f3@2 f3@2 ~@7, ~@11 g#3@4 g#3@4 ~@9 [g#3,c4,f4]@3 ~, ~@3 f4@3 ~@2]/2", // Dm7b5 A#sus2 Fsus2 Fm
  AE: "[b3,d4]@3 f3 [f3,d4]@3 ~ c4 ~ c4 d#4 ~@2 d4 f4, g2@2 c2 d2, f3@2 ~@7 g3@3 f4@2 ~@2, ~@13 a#3@3", // Bm Dm
  AF: "d#4@4 ~@2 d#4@2 ~@4 g4@3 ~, [d#2,g4]@7 ~ c2@6 ~@2, a#3 ~@3 a#3@4 c4@8, ~@2 g#4 ~, ~@5 c3@2 ~", // D#
  AG: "[b3,d4]@3 f3 [f3,b3,d4]@3 ~ c4 ~ c4 d#4 ~@2 d4 f4, g2@2 c2 d2, f3@2 ~@7 g3@3 f4@2 ~@2, ~@13 a#3@3", // Bm Bdim
  AH: "d#4@2 ~ d#4 ~ c4 g4 c4, [d#2,g4]@7 ~ [c2,c3,d#4,g#4]@8, a#3 ~@3 a#3@4 ~@8", // D# G#
  AI: "~@4 g4@2 a#3 ~ [c4,f4]@2 ~ c4 ~@2 [a1,a2] ~, [a#1,a#2,g#4]@2 [a1,a2] [c4,f4], ~@2 a#3@4 ~@4 f3@5 ~", // F5 A A#7 A F5
  AJ: "g#3 ~ f4 c4 [a#3,d#4] ~@2 a#3, [c4,f4]@4 ~@6 a#3@3 g2@3, ~@2 g#3@5 ~ [g2,g4]@3 d#4@5, ~@3 g4", // D#5 F5 G
  AK: "[g#2,c4]@2 [g#3,c4,d#4] g#2 [a#3,d#4,g4]@2 g4 a#3, [g#3,d#4]@3 ~@5 a#2@8", AL: "[b2,b3,d4,f4]@8 [g1,g2]@3 ~@5",
  AM: "~@4 g3@2 g3@2 [g3,c4,e4]@2 c2 ~ [c2,g3,b3,d4]@4, [g3,c4,e4] [c4,e4] ~@2, ~@2 c2@7 ~@7", // C G C
  AN: "[a3,c4]@4 ~@4 [f3,a3,c4]@4 [f3,a3,c4]@2 f2 ~, f3 ~ [f3,a3,c4]@2 ~@4, ~@3 f2@4 ~", // Am F
  AO: "[f2,c4,f4]@4 ~@2 f2@2 [a3,c4,f4]@3 f2 [e2,g3,c4,e4]@2 g3 ~, a3 ~@3 [a3,c4,f4]@4 f2@2 ~@6", // F5 F C F
  AP: "[f3,a3,d4]@2 [a3,d4]@2 [f3,a3,d4]@2 [f3,a3,d4] d2, d2@13 ~@3, ~@2 f3 ~@5", // Dm D5 Dm
  AQ: "[f3,b3,d4]@4 [f3,b3]@4 [f3,b3,d4]@4 [f3,b3,d4]@3 ~, g1@15 ~", // Bdim Fdim Bdim
  AR: "g4@2 b3 ~ b3 ~ b3 ~ [f2,a3,c4]@2 f3 f2 [g2,b3,d4]@2 [g3,d4] g2, [g2,d4]@4 ~ g2@3 f3 ~@3 g3 ~ b3@2, b3 ~@3 g4@3 ~@9", // F G G5
  AS: "[f3,b3,d4]@4 b3@4 [f3,b3,d4]@4 [f3,b3,d4]@3 ~, g1@15 ~", // Bdim
  AT: "~@2 g2@2 ~@2 g2 ~ [f2,g3,b3,d4]@4 [g3,b3,d4]@2 f2 ~, g1 ~, [g3,b3,d4]!2 ~@2", // G7 G
  AU: "~@2 [g3,b3,e4] e2 [e2,b3,e4]@2 ~ e2, e1@8 e1@7 ~, [g3,b3,e4]@4 ~@4 g3@3 ~ [g3,b3,e4]@4, ~ e2@2 ~@5", // Em E5 Em
  AV: "[a1,g3,a3,c#4]@4 ~@2 a1 b1 [g3,a3,c#4]@3 ~@3 c#2@2, ~ [g3,a3,c#4] c#2 [g3,a3,c#4]", // A7
  AW: "[f2,c4,f4]@4 ~@2 f2 ~ [f2,g#3,c4,f4]@4 ~@2 f2@2, g#3@3 ~ [g#3,c4,f4]@4 ~@4 [g#3,c4,f4]@4", // F5 Fm
  AX: "[g3,c4,e4]@3 ~@3 g2@2 [g3,c4,e4]@4 [g3,c4,e4]@3 ~, g2 [c4,e4] g2@2", // C
  AY: "[g2,f3,a3,c4,d4]@4 ~@2 g2@2 c4@3 ~ b3@3 ~, ~@4 [f3,a3,c4,d4]@4 [g2,g3,d4]@7 ~", // Dm7 G5
  AZ: "[f2,a3,f4]@2 ~@3 c4 ~ f2, ~ f4@2 ~, ~ [a3,c4] a3 [a3,c4,f4], ~@6 f2@7 ~@3", // F Am F
  BA: "[e2,g3,c4,e4]@2 ~@3 c4 [c4,e4] e2, ~@2 e4@3 ~@3, ~@4 [g3,c4]@4 g3@7 ~, ~@3 e2@3 ~@2", // C C5
  BB: "[[d#2,c4,g4]@7 ~ [d2,c4,f4,g4]@15 ~ [c2,c3,g3,c4,e4]@24]/3", // Cm Dm7 C
})).s("gm_piano").gain(0.38).pan(0.4)

// chords · piano · soft notes
const piano_soft = note(`<
  A B C D E F G H I J ~ K ~ L ~ H M J N K ~ O ~@3 P ~ Q R S R ~ T U ~@3 V W X Y Z AA X ~ AB ~ AC ~@3 AD ~ AE AF AG AF
  ~@2 AD ~ AE AF AH AF ~@4 AI ~@6
>`.pickRestart({
  A: "~@11 c4 ~@4", B: "~@8 f4@4 c4@3 ~", C: "~@2 g#3@2 ~@6 d3@2 f3@2 d3 ~", D: "~@12 a#3@3 ~, ~@10 d#3@5 ~",
  E: "~@10 d4@3 ~@3", F: "~ a3 ~@4 g#3@2", G: "~@3 [c4,d#4,g#4]", H: "~@2 a#2@2 ~@2 a#2@2 [f3,a#3]@7 ~",
  I: "~@3 d#4 ~@3 d#4", J: "~@7 g#3@3 ~ g#3@5, ~@5 f3@3", K: "~@10 d#3@5 ~", L: "~@10 g#3@5 ~, ~ g#2",
  M: "~@6 d#4@2 ~@6 d#4 ~", N: "~@11 f3 b3@3 ~", O: "~@10 g#3@4 c4 ~, ~ g#2", P: "~@5 f3 ~@2", Q: "~@5 a3 ~@2",
  R: "~@7 f3", S: "~@3 [f3,b3,d4]", T: "~@7 e2", U: "e1@7 ~@9", V: "~@7 d#4", W: "~@6 d#4 ~@9",
  X: "~ d4 ~@2, ~ f3@3 ~@4, ~@3 g#3@5 ~@8", Y: "~@4 b3@3 ~@9", Z: "~@2 d#3@5 ~@7 d#4@2", AA: "~@3 d#4 ~@4",
  AB: "~@2 d#3@5 ~@9", AC: "[g#1,g#2] ~", AD: "~ f3 ~@6", AE: "~ a3 ~@6", AF: "~@3 f3 ~@4", AG: "~ d4 ~@2",
  AH: "~ [f3,d4] ~@2", AI: "~ g3 ~@2",
})).s("gm_piano").gain(0.25).pan(0.4)

// chords · french horn
const french_horn = note("<~@24 A@4 B@2 C@8 ~@12 D@3 E F@2 G H D@3 E I@2 F@2 J@2 K L M ~@3 N@2>".pickRestart({
  A: "[~ [g3,e4]@2 [a3,f4]@2 [g3,c4,e4]@2 [a3,c4,f4], ~ c4@4 ~@3]/4", B: "[~ [g3,e4] f4@4 b3@2, ~ d4@3]/2",
// … 63 more lines

More by Ramazzotti