Strudelify

Un mondo d'amore

Morandi

KeyG minorTempo87 bpm
0:00/0:00
// Un mondo d'amore — Morandi
// 87 bpm, 4/4, key G minor. 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 61 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(87/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 · acoustic bass
const bass = note(`<
  A B C@2 D@7 E F G H@3 I J@5 K@8 L M N O P Q@3 R S T U V W X Y Z AA@5 AB AC AD AE AF AG AH@2
>`.pickRestart({
  A: "~@7 g2@17", B: "~@5 g2@2 ~ g2@16", C: "[~@12 g2@3 ~@4 f2@41 ~@3 f2@4 ~@2 f2@27]/2",
  D: "[~@17 f2@4 ~@3 g2@40 ~@4 g2@4 ~@2 g2@39 ~@5 g2@3 ~@3 f2@41 ~@3 f2@3 ~@3 f2@40 ~@4 f2@3 ~@4 g2@43 ~@7 g2@46 ~@4 g2@5 ~@6]/7",
  E: "~@2 d2@7 ~@6 g2@6 ~@6 d2@7 ~@6 a2@6 ~@2", F: "~@4 d2@6 ~@7 g2@3 ~@3 a2@4 ~@2 bb2@4 ~@3 d2@4 ~@2 g2@5 ~",
  G: "~@7 d2@7 ~@5 g2@6 ~@7 d2@7 ~@5 a2@4",
  H: "[~@9 d2@6 ~@6 g2@3 ~@4 a2@4 ~@2 bb2@4 ~@2 d2@4 ~@2 g2@5 ~@8 d2@7 ~@5 g2@6 ~@6 d2@7 ~@5 a2@6 ~@7 d2@6 ~@6 g2@3 ~@3 bb2@4 ~@2 c3@3 ~@3 d3@4 ~@2]/3",
  I: "g2@5 ~@7 d2@6 ~@6 g2@6 ~@6 d2@7 ~@5",
  J: "[a2@6 ~@6 d2@6 ~@6 g2@3 ~@6 g2@3 f2@3 ~@3 f2@4 ~ bb2@7 ~@5 f2@7 ~@5 bb2@7 ~@5 bb2@6 ~@6 f2@6 ~@3 f2@2 ~ g2@3 ~@3 a2@4 ~@2 bb2@7 ~@4 bb2@7 ~@5 eb2@7 ~@5 eb2@8 ~@4 f2@8 ~@4 f2@4 ~@2 eb2@5 ~ d2@8 ~@4 e2@4 ~@2 gb2@4 ~@2 g2@7 ~@4 g2@7 ~@5 c2@3]/5",
  K: "[~@9 c2@8 ~@4 d2@7 ~@5 d2@6 ~@6 g2@36 ~@5 g2@3 ~@3 g2@36 ~@6 g2@3 ~@3 f2@38 ~@3 f2@3 ~@3 f2@37 ~@5 f2@4 ~@2 g2@39 ~@4 g2@4 ~@2 g2@38 ~@6 g2@3 ~@3 f2@40 ~@3 f2@3 ~@4]/8",
  L: "f2@39 ~@4 f2@3 ~@2", M: "~ g2@43 ~@4", N: "~ g2@15", O: "~@5 g2@5 ~@7 d2@7 ~@6 g2@6 ~@6 d2@6",
  P: "~@7 a2@6 ~@6 d2@6 ~@7 g2@3 ~@3 a2@4 ~@2 bb2@4",
  Q: "[~@2 d2@4 ~@2 g2@5 ~@8 d2@7 ~@5 g2@6 ~@7 d2@7 ~@5 a2@6 ~@7 d2@6 ~@6 g2@3 ~@3 a2@4 ~@2 bb2@4 ~@3 d2@4 ~@2 g2@5 ~@7 d2@7 ~@5 g2@6 ~@6]/3",
  R: "~ d2@7 ~@5 a2@6 ~@6 d2@6 ~@6 g2@3 ~@4 bb2@4", S: "~@2 c3@4 ~@2 d3@4 ~@2 g2@5 ~@7 d2@6 ~@6 g2@6 ~@4",
  T: "~@2 d2@7 ~@6 a2@6 ~@6 d2@6 ~@6 g2@3 ~@6", U: "g2@3 f2@3 ~@3 f2@4 ~@2 bb2@7 ~@5 f2@7 ~@5 bb2@7 ~@2",
  V: "~@3 bb2@6 ~@6 f2@6 ~@3 f2@2 g2@3 ~@3 a2@4 ~@2 bb2@7 ~@3", W: "~@2 bb2@7 ~@5 eb2@7 ~@5 eb2@8 ~@4 f2@8 ~@2",
  X: "~@2 f2@4 ~@2 eb2@5 ~ d2@8 ~@3 e2@4 ~@2 gb2@4 ~@2 g2@7 ~@4", Y: "~ g2@7 ~@5 d2@7 ~@5 d2@8 ~@4 d2@7 ~@4",
  Z: "~ d2@6 ~@5 g2@7 ~@5 d2@8 ~@4 g2@8 ~@4",
  AA: "[d2@4 ~@2 f2@4 ~@2 g2@7 ~@5 d2@8 ~@4 g2@8 ~@3 d2@4 ~@2 g2@3 ~@3 f2@8 ~@4 c2@7 ~@5 f2@8 ~@4 c2@4 ~@2 eb2@4 ~@2 f2@8 ~@4 c2@7 ~@5 f2@8 ~@3 c2@4 ~@2 f2@4 ~@2 g2@7 ~@5 d2@8 ~@4 g2@8 ~@4 d2@4 ~@2 f2@4 ~@2 g2@7 ~@5 d2@8 ~@3 g2@8 ~@4 d2@3]/5",
  AB: "~@3 g2@3 ~@3 f2@8 ~@4 c2@7 ~@5 f2@8 ~@4 c2@3", AC: "~@3 eb2@4 ~@2 f2@8 ~@3 c2@7 ~@5 f2@8 ~@4 c2@4",
  AD: "~@2 f2@4 ~@2 g2@7 ~@5 d2@8 ~@4 g2@8 ~@4 d2@4", AE: "~@2 f2@4 ~@2 g2@7 ~@4 d2@8 ~@4 g2@8 ~@4 d2@4 ~",
  AF: "~ g2@3 ~@3 f2@8 ~@4 c2@7 ~@5 f2@8 ~@4 c2@4 ~", AG: "eb2@4 ~@2 f2@8 ~@4 c2@7 ~@5 f2@8 ~@4 c2@4 ~@2",
  AH: "[f2@4 ~@2 g2@47 ~@43]/2",
})).s("gm_acoustic_bass").gain(0.31)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note("<A@2 B C@8 D@6 E F@5 G@8 H I J K@3 L@2 M@3 N O@4 P Q@8 R@5>".pickRestart({
  A: "[~@52 a3@6 g3@5 ~@2 d4@5 ~@20 b3 ~@5, ~@12 g2@50 ~ g2@33, ~@13 d3@49 ~@2 [d3,g3]@32, ~@14 g3@7 d4@6 c4@6 d4@6 b3@7 d4@17 ~ b3@7 d4@6 c4@6 d4@12 ~, ~@14 b3 d4 g4@48 ~ g4@31]/2", // G5
  B: "~@6 a3@6 ~ g3 ~@6 c4@5 ~@13 c4@7 a3@3, d4@12 ~@5 f2@9 c4@6 bb3@12 ~@4, ~@3 c3@5, ~@19 f3@29, ~@19 a3 f4@28",
  C: "[~@9 g3@6 f3@5 ~@2 c4@5 ~@20 a3 ~@11 g3@6 ~ f3 ~@6 g4@47 ~@3 g4@48 ~@2 [c4,f4]@48 ~@3 f4@48 ~ [g2,d3,g3,b3,d4,g4]@42 ~@2 [c3,e3,g3,c4]@3 ~@3 [g2,d3,g3,b3,d4,g4]@45 ~@12 [bb3,d4,g4]@4, ~@3 c4@17 f2@50 ~@2 d4@49 ~ [b3,d4]@48 ~@53 [a3,c4]@49 ~@44 e4@3 ~@65, ~@21 c3@49 d3@49 ~@2 d3@49 ~@214, ~@21 f3 a3@6 c4@6 bb3@7 c4@12 c4@12 ~@4 g2@50 ~ g2@50 ~ [f2,c3]@50 ~ [f2,c3,f3]@50 ~@101 g2@11, ~@22 f4@48 ~ [g3,b3]@50 g3@45 ~@6 [f3,a3]@49 ~@163]/8", // F5 G C G Gm Bm Am F5 …
  D: "[~@2 c3@3 ~@16 [bb3,d4,g4]@6 c3@3 ~@3 [bb3,d4,g4]@4 ~@3 [d3,d4,gb4]@9 ~@9 [a3,gb4]@7 ~@6 [bb3,d4,g4]@6 c3@3 ~@4 [bb3,d4,g4]@6 ~@13 c3@3 ~@15 [bb3,d4,g4]@7 c3@3 ~@3 [bb3,d4,g4]@4 ~@2 [d3,d4,gb4]@10 ~@9 [a3,gb4]@6 ~@7 [bb3,d4,g4]@6 c3@3 ~@3 [bb3,d4,g4]@6 ~@13 c3@3 ~@15 [bb3,d4,g4]@6 c3@3 ~@3 [bb3,d4,g4]@4 ~@2 [d4,gb4]@8 ~@11 [a3,gb4]@6 ~@6 [bb3,d4,g4]@6 c3@3 ~@3 [bb3,d4,g4]@6, ~@5 d3@9 ~ g2@12 ~@3 d3@9 ~@10 [d4,gb4]@6 d4@14 ~@27 [bb3,d4,g4]@12 ~ [bb3,d4,g4]@12 ~@19 a3@16 d4@14 ~@27 [bb3,d4,g4]@12 [bb3,d4,g4]@12 ~@18 a3@17 ~@23 d3@9, ~@8 [bb3,d4,g4]@12 ~@20 a3@18 ~@22 d3@9 ~@17 d3@9 ~@16 d3@9 ~@10 [d4,gb4]@9 ~@6 g2@12 ~@13 g2@12 ~@13 g2@12 ~@22 gb4@8 ~@31, ~@52 a2@13 g2@13 ~@12 g2@12 ~@13 g2@12 ~@26 a2@13 ~@15 d3@9 ~@16 d3@9 ~@15 d3@9 d3@9 d4@6 ~ d4@14 ~@19, ~@251 a2@12 ~ g2@12 ~@12]/6", // Gm D Gm D Gm D Gm D …
  E: "~@12 c3@3 ~@15 [bb3,d4,g4]@6 c3@3 ~@3 [bb3,d4,g4]@4 ~@2, g2@12 ~@3 d3@9 g2@12 ~@3 d3@8 ~, ~ [bb3,d4,g4]@2 [bb3,d4,g4]@2 ~@3", // Gm
  F: "[[d4,gb4]@8 ~@10 [a3,gb4]@6 g3@5 ~@4 f4@3 [c4,f4]@6 [c4,f4]@5 bb2@6 ~@3 f4@3 f4@3 ~@6 f4@3 [bb2,f3,bb3,d4,f4]@6 bb3@3 ~@6 bb3@3 ~@3 f4@3 c3@6 ~@3 f4@3 f4@3 ~@6 f4@3 [bb2,f3,bb3,d4,f4]@6 bb3@3 ~@5 bb3@3 ~@3 f4 ~@2 eb3@6 ~@3 g4@3 g4@3 ~@6 g4@3 [c3,f3,a3,c4,f4]@6 a3@3 ~@6 a3@3 ~@3 f4@3 d3@6 ~@3 gb4@3 gb4@3 ~@6 gb4@3 [d3,g3,bb3]@5 bb3@3 ~@6 bb3@3 ~@3 g4@3 [c3,g3,c4,eb4,g4]@3, a3@17 ~@13 g3@6 ~@11 [f3,bb3,d4,f4]@12 [f3,bb3]@6 ~@12 f3@6 f3@6 ~@6 [f3,a3,c4,f4]@12 [f3,a3]@6 ~@12 f3@5 f3@6 ~@6 [g3,bb3,eb4,g4]@12 [g3,bb3]@6 ~@12 f3@6 f3@6 ~@6 [gb3,a3,d4,gb4]@12 [gb3,a3]@6 ~@11 g3@6 g3@6 ~@9, d3@9 gb4@8 ~@45 f4@6 ~@18 [d4,f4]@9 ~@12 c4@12 ~@9 [bb3,d4]@5 d4@9 ~@12 eb4@12 ~@9 [a3,c4,f4]@6 [c4,f4]@9 ~@12 d4@12 [d4,g4]@8 [bb3,d4,g4]@6 [d4,g4]@9 ~@3, ~@9 d4@5 ~ d4@9 ~@35 d4@12 ~@9 [bb3,d4,f4]@6 ~@24 f4@6 ~@12 f4@11 ~@18 g4@6 ~@42 gb4@6 ~@29, ~@12 a2@12 [g2,bb3,d4,g4]@11 ~ [f2,f3,a3]@12 ~@5 bb2@11 ~ [bb2,f3,bb3]@6 ~@6 bb2@11 ~ [bb2,f3,bb3]@6 ~@6 c3@11 ~ [c3,f3,a3]@6 ~@6 bb2@11 [bb2,f3,bb3]@6 ~@6 eb3@11 ~ [eb3,g3,bb3]@6 ~@6 c3@11 ~ [c3,f3,a3]@6 ~@6 d3@11 ~ [d3,gb3,a3]@6 ~@5 d3@11 ~ [d3,g3,bb3]@6 ~@3]/5", // D F5 Bb F Gm Cm Bb Bb5 …
  G: "[~@6 g4@3 g4@3 ~@6 g4@3 [d3,gb3,a3,d4,gb4]@6 a3@3 ~@6 a3@3 ~@4 d3 ~@36 a3@6 g3@5 ~@25 b3 ~@11 a3@6 g3 ~@41 g3@6 f3@4 ~@2 c4@5 ~@19 a3 ~@11 g3@6 f3 ~@6 g4@46 ~@2 [d4,g4]@48 ~@2 [c4,f4]@47 ~ f2, ~@3 c3@9 g4@6 ~@12 [a3,d4,gb4]@6 [d4,gb4]@7 g2@47 ~ [g2,d3]@47 f2@47 ~ f2@48 ~@2 d4@48 ~@100, ~@9 eb4@12 ~@6 gb3@6 gb3@6 ~@3 gb4@2 g3@42 ~@6 g3@42 ~@5 c3@47 ~ c3@47 d3@48 ~@2 [d3,b3]@48 ~@52, ~@9 [g3,c4]@6 [c3,g3,c4]@6 ~@6 d3@11 ~ [d3,gb3,a3]@5 b3@7 d4@6 c4@6 d4@5 b3@6 d4@16 ~@2 b3@6 d4@6 c4@6 d4@12 d4@12 ~@6 f3@6 c4@6 bb3@6 c4@6 a3@6 c4@16 ~ f3 a3@6 c4@6 bb3@6 c4@12 c4@12 ~@3 g2@49 ~ g2@49 ~ [f2,c3]@49 ~@2, ~@45 d4 g4@45 ~ d4 g4@45 ~@2 [a3,c4] f4@45 ~@2 f4@46 ~ [g3,b3]@49 g3@44 ~@6 [f3,a3]@48 ~@2]/8", // D G5 F5 D G5 G C5 D …
  H: "~ [c4,f4]@47, [c3,f3,a3]", I: "~@2 [g2,d3,g3,b3,d4,g4]@42 ~ [c3,e3,g3,c4,e4]@3",
  J: "~ g4@11, ~@3 [g2,d3,g3,b3,d4]@44 ~", // G
  K: "[~@17 c3@4 ~@15 [bb3,d4,g4]@6 c3@3 ~@3 [bb3,d4,g4]@4 ~@3 [d4,gb4]@8 ~@10 [a3,gb4]@6 ~@7 [bb3,d4,g4]@6 c3@3 ~@3 [bb3,d4,g4]@6 ~@13 c3@3 ~@15 [bb3,d4,g4]@7 c3@2, ~@5 g2@12 ~@4 d3@9 g2@12 ~@3 d3@9 ~ d3@9 [d4,gb4]@6 d4@14 ~@27 [bb3,d4,g4]@12 [bb3,d4,g4]@12 ~@9, ~@11 [bb3,d4,g4]@12 ~ [bb3,d4,g4]@12 ~@19 a3@18 ~@22 d3@9 ~@16 d3@9 ~@15, ~@67 a2@12 g2@12 ~@13 g2@12 ~@13 g2@12 ~@3]/3", // Gm D Gm D Gm
  L: "[~@4 [bb3,d4,g4]@4 ~@2 [d4,gb4]@8 ~@11 [a3,gb4]@6 ~@6 [bb3,d4,g4]@6 c3@3 ~@4 [bb3,g4]@6 ~@12 c3@3 ~@15 [bb3,d4,g4]@6, ~ d3@9 a3@16 d4@14 ~@13 d4@6 ~@7 [bb3,d4,g4]@12 [bb3,d4,g4]@12 ~@6, ~@10 d3@9 [d4,gb4]@9 ~@68, ~@22 a2@12 ~ g2@12 ~@3 d3@9 ~ g2@12 ~@3 d3@9 g2@12]/2", // Gm D Gm Eb Gm D
  M: "[~ c3@3 ~@3 [bb3,d4,g4]@4 ~@2 [d4,gb4]@8 ~@10 [a3,gb4]@6 ~@6 [bb3,d4,g4]@7 c3@3 ~@3 [bb3,d4,g4]@6 ~@12 c3@3 ~@15 [bb3,d4,g4]@6 c3@3 ~@3 [bb3,d4,g4]@4 ~@3 [d4,gb4]@8 ~@10 [a3,gb4]@6 [g2,bb3,d4,g4]@6 g3@3, ~@4 d3@9 a3@15 d4@14 ~@26 [bb3,d4,g4]@12 [bb3,d4,g4]@12 ~@18 a3@16 d4@9 g3@5 ~@4, ~@13 d3@9 [d4,gb4]@9 ~@89 [d4,gb4]@8 ~@16, ~@25 a2@12 g2@12 ~@4 d3@9 g2@12 ~@3 d3@9 g2@12 ~@3 d3@8 ~@2 d3@9 ~@3 a2@12 ~@9]/3", // Gm D Gm D Gm D
  N: "f4 [c4,f4]@2 [c4,f4]@2 bb2@2 ~ f4!2 ~@2 f4 [bb2,f3,bb3,d4,f4]@2 [bb2,f3,bb3], ~ [f2,f3,a3]@4 [f3,bb3,d4,f4]@4 d4@4 ~@3, ~@7 bb2@3 f4@2 ~@4, ~@9 [f3,bb3]@2 [bb2,f3,bb3]@2 ~@3", // F5 Bb Bb5 F Bb Bb5
  O: "[~@6 bb3@3 ~@3 f4@3 c3@6 ~@3 f4@2 f4@3 ~@6 f4@3 [bb2,f3,bb3,d4,f4]@6 bb3@3 ~@6 bb3@3 ~@3 f4 ~@2 eb3@6 ~@3 g4@3 g4@3 ~@6 g4@3 [c3,f3,a3,c4,f4]@6 a3@3 ~@6 a3@3 ~@3 f4@3 d3@5 ~@3 gb4@3 gb4@3 ~@6 gb4@3 [d3,g3,bb3,d4,g4]@6 bb3@3 ~@6 bb3@3 ~@3 g4@3 d3@6 ~@3 gb4@3 gb4@3 ~@6 gb4@3 [d3,gb3,a3,d4,gb4]@6 a3@3 [a3,d4,gb4]@2, [bb3,d4,f4]@6 [d4,f4]@9 ~@6 c3@8 f4@6 ~@12 f4@12 ~@18 g4@6 ~@41 gb4@6 ~@18 [d4,g4]@9 ~@12 d4@12 ~@11, ~@3 f3@6 [bb2,f3,bb3]@6 [f3,a3,c4,f4]@11 c4@12 ~@6 f3@6 f3@6 ~@6 [g3,bb3,eb4,g4]@12 [g3,bb3]@6 ~@12 f3@6 f3@6 ~@6 [gb3,a3,d4,gb4]@11 [gb3,a3]@6 ~@12 g3@6 g3@6 ~@6 [gb3,a3,d4,gb4]@12 [gb3,a3]@6 ~@17, ~@26 [f3,a3]@6 [c3,f3,a3]@6 ~@6 bb2@11 ~ [bb2,f3,bb3]@6 ~@6 eb3@11 ~ [eb3,g3,bb3]@6 ~@6 c3@11 ~ [c3,f3,a3]@6 ~@5 d3@11 ~ [d3,gb3,a3]@6 ~@6 d3@11 ~ [d3,g3,bb3]@6 ~@6 d3@11 ~ [d3,gb3,a3]@6 ~@6 [d3,gb3]@5, ~@47 [bb3,d4]@6 d4@9 ~@12 eb4@12 ~@9 [a3,c4,f4]@6 [c4,f4]@9 ~@11 d4@12 ~@9 [bb3,d4,g4]@6 ~@24 gb4@6 ~@14]/4", // Bb F Gm D Bb Dm G5 Bb5 …
  P: "~@4 a3@2 ~@3 gb4@3 ~@30 d4@6, ~ gb3@5 [d3,gb3,a3]@6 ~@12 c4@12 b3@12, ~@4 d4@9 d4@5 ~ d4@11 d4@12 ~@6, ~@4 gb4@5 ~@5 g4@34", // D
  Q: "[a3@6 g3@4 ~@26 b3 ~@10 a3@6 g3 ~@6 c4@5 ~@30 g3@6 f3@5 ~@2 c4@5 ~@18 a3 ~@11 g3@6 f3 ~@40 a3@6 g3@4 ~@2 d4@5 ~@18 b3 ~@11 a3@6 g3 ~@6 c4@5 ~@30 g3@6 f3@5 ~@25 a3 ~@11 g3@6 f3 ~@5 d4@5 ~@30 a3@4, ~@10 g2@47 ~ [f2,c3]@47 ~ f2@47 ~ b3 d4 g4@45 ~ g4@45 ~@3 f4@45 ~@2 c4 f4@45 ~@2 g4@39, ~@11 d3@46 ~@2 f3@42 ~@6 c3@46 d3@47 ~ d3@46 ~@2 f3@42 ~@6 f3@42 ~@3 g2@42, ~@11 g3@7 d4@6 c4@6 d4@12 d4@12 ~@6 a3@6 c4@6 bb3@6 c4@6 a3@6 c4@16 ~ f3@6 c4@6 bb3@6 c4@12 c4@12 ~@3 g2@47 ~ g2@47 ~ [f2,c3]@47 ~ [f2,c3]@47 [d3,g3]@41, ~@12 [b3,d4] g4@45 ~@2 f4@45 ~@2 a3 f4@45 ~ g3@6 d4@6 c4@6 d4@6 b3@6 d4@16 ~ g3 b3@6 d4@6 c4@5 d4@12 d4@12 ~@6 a3@7 c4@6 bb3@6 c4@5 a3@6 c4@16 ~@2 a3@6 c4@6 bb3@6 c4@12 c4@12 ~@5 b3@6 d4@6 c4@6 d4@6 b3@6 d4@10]/8", // F5 G5 Bm
  R: "[~@2 g3@4 ~@2 d4@5 ~@18 b3 ~@11 a3@6 g3 ~@6 c4@5 ~@30 g3@6 f3@5 ~@25 a3 ~@11 g3@6 f3 ~@5 g4@47 ~@42, ~@6 g2@47 f2@47 ~@2 [f2,c3]@47 ~@91, ~@7 d3@46 ~ c3@47 ~ f3@42 ~@4 [g2,d3]@47 ~@45, ~@7 g3@7 d4@5 c4@6 d4@12 d4@12 ~@6 f3@7 c4@5 bb3@6 c4@6 a3@6 c4@16 ~@2 a3@6 c4@6 bb3@6 c4@12 c4@12 ~@4 g3@47 ~@44, ~@7 b3 g4@45 ~@2 a3 f4@45 ~@2 c4 f4@45 ~ [b3,d4]@47 ~@43]/5", // F5 G5 Bm
})).s("gm_acoustic_guitar_steel").gain(0.17).pan(0.4)

// other · vibraphone
const vibraphone = note("<A@2 B C@6 ~@14 D@2 E F G@4 H ~@15 I J@7 K L M N O@2>".pickRestart({
  A: "[~@14 g5@6 d6@7 c6@6 d6@6 b5@6 ~ d6@6 a5@6 g5@4 ~@3 g5@6 d6@6 c6@6 d6@7 b5@6]/2",
  B: "d6@6 a5@6 g5@3 ~@4 f5@6 c6@7 bb5@6 c6@6 a5@4",
  C: "[~@2 c6@6 g5@6 ~ f5@4 ~@2 f5@7 c6@6 bb5@6 c6@6 a5@7 c6@6 g5@6 f5@6 ~ g5@46 ~@3 g5@47 ~@4 f5@46 ~@4 f5@43 ~@23]/6",
  D: "[~@45 g5@5 ~ d6@6 c6@6 d6@5 b5@6 d6@6 a5@6 g5@3 ~@3 g5@4]/2",
  E: "~@2 d6@6 c6@6 d6@6 b5@6 d6@6 a5@5 g5@3 ~@3 f5@5", F: "~@2 c6@6 bb5@5 c6@6 a5@6 c6@6 g5@6 f5@3 ~@3 f5@5",
  G: "[~ c6@6 bb5@6 c6@6 a5@6 c6@6 g5@6 f5@6 g5@45 ~@4 g5@47 ~@3 f5@45 ~@5]/4", H: "f5@43 ~@5",
  I: "~@12 g5@5 ~ d6@6 c6@6 d6@6 b5@6 d6@6",
  J: "[a5@6 g5@3 ~@3 g5@6 d6@6 c6@6 d6@6 b5@6 d6@5 a5@6 g5@3 ~@3 f5@6 c6@6 bb5@6 c6@6 a5@6 c6@6 g5@6 f5@3 ~@3 f5@6 c6@6 bb5@6 c6@5 a5@6 ~ c6@5 g5@6 f5@6 g5@5 ~ d6@6 c6@6 d6@6 b5@6 d6@6 a5@6 g5@3 ~@3 g5@6 d6@6 c6@5 d6@6 b5@6 d6@6 a5@6 g5@3 ~@3 f5@6 c6@6 bb5@6 c6@6 a5@6 c6@6 g5@5 f5@3 ~@4 f5@6 c6@6 bb5@6 c6@5 a5@6 c6@6 g5@4]/7",
  K: "~@2 f5@6 g5@5 ~ d6@6 c6@6 d6@6 b5@6 d6@5 a5@5", L: "~@2 g5@3 ~@3 g5@6 d6@5 c6@6 d6@6 b5@6 d6@6 a5@5",
  M: "~ g5@3 ~@3 f5@6 c6@6 bb5@6 c6@6 a5@6 c6@5 g5@6", N: "f5@3 ~@3 f5@7 c6@6 bb5@5 c6@6 a5@6 c6@6 g5@6",
  O: "[f5@6 g5@47 ~@43]/2",
})).s("gm_vibraphone").gain(0.19).pan(0.7)

// chords · bandoneon
const bandoneon = note("<~@12 A@5 B C@6 ~@12 D@3 E@2 F G@4 H@7 I@7 ~>".pickRestart({
  A: "[~@42 [bb5,d6]@25 [c6,eb6]@12 [bb5,d6]@13 c6@13 d6@6 c6@6 [g5,bb5]@19 ~@6 [bb5,d6]@25 [c6,eb6]@12 [bb5,d6]@12 gb6@12 e6@6 gb6@7 [bb5,g6]@18 ~@6, ~@92 a5@20 ~@79 a5@24 ~@25]/5", // Bb Cm Bb Gm Bb Cm Bb Eb
  B: "[bb5,d6]@2 [c6,eb6] [bb5,d6]", // Bb Cm Bb
  C: "[gb6@12 e6@5 gb6@5 ~ [bb5,g6]@12 [a5,f6]@9 ~@3 [f5,bb5,d6]@45 ~@3 [f5,a5,c6]@22 ~@2 [f5,bb5,d6]@22 ~ [g5,bb5,eb6]@24 [f5,a5,c6]@24 [gb5,a5]@23 [g5,bb5]@23 ~ [eb5,g5,c6]@24 [gb5,a5,c6]@24 ~@3, a5@23 ~@167 d6@46 ~@52]/6", // Eb Dm Bb F Bb Eb F Gbm …
  D: "[~@8 [bb5,d6]@25 [c6,eb6]@12 [bb5,d6]@13 c6@12 d6@6 c6@6 [g5,bb5]@19 ~@7 [bb5,d6]@24 [c6,eb6]@12, ~@58 a5@19 ~@67]/3", // Bb Cm Bb Gm Bb Cm
  E: "[~ [bb5,d6]@12 gb6@12 e6@6 gb6@6 [bb5,g6]@18 ~@7 [bb5,d6]@24 [c6,eb6]@10, ~@13 a5@25 ~@58]/2", // Bb Eb Bb Cm
  F: "~@2 [bb5,d6]@12 gb6@13 e6@5 gb6@6 [bb5,g6]@10, ~@14 a5@23 ~@11", // Bb Eb
  G: "[~@3 [a5,f6]@10 ~@2 [f5,bb5,d6]@46 ~ [f5,a5,c6]@22 ~@2 [f5,bb5,d6]@22 ~@2 [g5,bb5,eb6]@24 [f5,a5,c6]@23 [gb5,a5]@23 ~ [g5,bb5]@11, ~@157 d6@35]/4", // Dm Bb F Bb Eb F Gbm Gm
  H: "[~@13 [d5,gb5,a5]@24 [gb5,a5,c6]@23 [g5,b5,d6]@95 [f5,a5,c6]@95 [g5,b5,d6]@86]/7", // D Gbdim G F G
  I: "[~@9 [f5,a5,c6]@95 [g5,b5,d6]@95 [f5,a5,c6]@95 ~@42]/7", // F G F
})).s("gm_bandoneon").gain(0.11).pan(0.6)

// drums · tambourine
const tambourine = s("tb").struct(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI N AJ AK Q AL AM AN AO AP T AQ V AR AS T
  AT V W AU AV T AW V AU AX ~
>`.pickRestart({
  A: "~@9 x!11 ~ x!20 ~@7", B: "~@11 x!5 ~ x!20 ~ x!10", C: "~@15 x!18 ~ x!12 ~@2", D: "~@15 x!13 ~ x!15 ~@4",
  E: "~@23 x ~ x!12 ~@11", F: "~@26 x!6 ~@2 x!3 ~@11", G: "~@28 x!9 ~ x!4 ~@6", H: "~@30 x!2 ~ x!4 ~@2 x!3 ~@6",
  I: "~@13 x ~ x", J: "~@4 x ~@5 x ~@5 x ~@6 x ~@5 x ~@11 x ~@6", K: "x ~@5 x ~@5 x ~@5 x ~@6 x ~@18 x ~@3",
  L: "~@8 x ~@12 x ~@11 x ~@12 x ~", M: "~@10 x ~@12 x ~@12 x ~@11", N: "x ~@12 x ~@11 x ~@12 x ~@9",
  O: "~@3 x ~@11 x ~@12 x ~@11 x ~@7", P: "~@4 x ~@12 x ~@11 x ~@11 x ~@6", Q: "~@5 x ~@12 x ~@11 x ~@11 x ~@5",
  R: "~ x ~ x ~ x ~ x", S: "~@6 x ~@11 x ~@8 x ~@2 x ~@5 x ~@4 x ~@5 x",
  T: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x",
  U: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~",
  V: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
  W: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2",
  X: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x!9", Y: "x!22 ~@17 x!9",
  Z: "x!26 ~@14 x!8", AA: "x!21 ~@16 x!11", AB: "x!17 ~@26 x!5", AC: "x!7 ~ x ~@35 x!4", AD: "~ x!2 ~@2 x!3 ~@38 x!2",
  AE: "x!10 ~ x ~@36", AF: "x!6 ~@2 x!3 ~@37", AG: "~@8 x ~@5 x ~@5 x ~@5 x ~@6 x ~@5 x ~@5 x ~@2",
  AH: "~@9 x ~@6 x ~@5 x ~@5 x ~@5 x ~@5 x ~@7", AI: "~@11 x ~@12 x ~@11 x ~@11", AJ: "~@2 x ~@12 x ~@11 x ~@11 x ~@8",
  AK: "~@4 x ~@11 x ~@12 x ~@11 x ~@6", AL: "~@7 x ~@11 x ~@11 x ~@12 x ~@3", AM: "~@2 x ~@2 x ~@2 x ~@2 x",
  AN: "~@3 x ~@3 x ~@3 x ~@2 x!2", AO: "~ x ~ x ~ x!11",
  AP: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x",
  AQ: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
  AR: "~ x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2",
  AS: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x",
  AT: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~", AU: "x!16",
  AV: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x",
  AW: "~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", AX: "x!7 ~@9",
})).gain(0.17)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<A B C D E F G H I J K ~@13 L M N O P Q R S T U ~@25 V ~>".pickRestart({
  A: "~@8 x ~@32 x ~ x!5", B: "x!6 ~@4 x ~@37", C: "x!8 ~@38 x!2", D: "x!7 ~ x!3 ~@33 x!4",
  E: "x!2 ~ x!10 ~@24 x!9 ~ x", F: "x!19 ~ x!6 ~@6 x!2 ~@3 x!4 ~ x!6", G: "x!15 ~ x!12 ~@14 x!6",
  H: "x!10 ~ x!19 ~@7 x!2 ~@3 x!6", I: "x!6 ~ x!21 ~ x!4 ~@9 x ~@5", J: "x ~@6 x ~@5 x ~@5 x ~@6 x ~@11 x ~@5 x ~@3",
  K: "~@3 x ~@5 x ~@5 x ~@6 x ~@5 x ~@2 x ~@16", L: "~@22 x!12 ~@4 x ~@9", M: "~@26 x!8 ~@14", N: "~@21 x!12 ~@15",
  O: "~@17 x!16 ~@15", P: "~@9 x!35 ~@4", Q: "~@3 x!2 ~@3 x!21 ~ x!16 ~@2", R: "~@12 x!27 ~ x!8",
  S: "~@6 x!2 ~@3 x!9 ~ x!27", T: "x ~@10 x ~@5 x ~@5 x ~@5 x ~@6 x ~@5 x ~@5",
  U: "~@6 x ~@6 x ~@5 x ~@5 x ~@5 x ~@5 x ~@6 x ~@2 x", V: "~@7 x!4 ~@5",
})).gain(0.08)

stack(bass, acoustic_guitar_steel, vibraphone, bandoneon, tambourine, tambourine_soft)

More by Morandi