Strudelify
I ricordi del cuore cover art

I ricordi del cuore

I ricordi del cuore

Amedeo Minghi

KeyD minorTempo85 bpm
0:00/0:00
// I ricordi del cuore — Amedeo Minghi
// 85 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 83 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(85/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 · string ensemble 1
const string_ensemble_1 = note("<A@6 B@3 ~ C@4 D@8 E@4 F@8 G@4 H@8 I@2 J@8 K L@5 M@8 N@8 ~@5>".pickRestart({
  A: "[~@31 [a3,d4]@55 ~ [a3,d4]@8 [c2,g3]@32 a1@31 ~ [a3,d4]@33, ~@95 c4@63 ~@34]/6", // D5 C5 D5
  B: "[~@23 [a3,d4,g6]@8 [c2,g3]@32 a1@31 ~@2, ~@31 c4@63 ~@2]/3", C: "[~@31 c2@31 ~ a1@31 ~ d2@33]/4",
  D: "[~@7 [d3,d4]@3 ~ [e3,e4]@3 [f3,f4] [f3,f4]@5 [e3,e4]@5 [d3,d4] ~@10 [e3,e4]@5 [f3,f4]@6 g3@16 ~@16 [e3,e4]@3 [d3,d4]@4 [c3,c4]@8 d4@31 ~@25 a5@4 [g4,g5]@4 ~ c2@31 ~@12 [e5,e6]@9 g6@12 d3@15 ~ e3@3 f3@4 e3@4 f3@4 ~ d2, ~@30 [c3,c4]@6 ~@58 d3 ~@32 f3@32 ~@95 a3@2, ~@31 c2@32 a1@31 ~@97 a1@31 ~ d2@32 ~, ~@31 g3@15 ~ g4@32 ~@79 [e4,e5]@25 ~@73]/8", // D E F E D E F E …
  E: "[~@11 [a3,a5]@4 [g3,g4,g5]@11 [f3,f5]@4 ~ [a2,e3]@31 ~ [c2,c3]@32 [d4,f4]@3 ~ [f4,a4]@4 [e4,g4]@4 a4@4 d4@3 ~ [e4,g4]@4 [c4,e4]@4 [a3,c4]@4 [d2,d3], ~@95 [d2,d3]@31 ~@2, ~@107 f4@8 ~@13]/4", // A G F A5 C Dm F Em …
  F: "[~@6 [d4,d6]@4 [e4,e6]@4 ~ [f5,f6]@5 [e4,e6]@5 [d4,d6]@5 c4 c4@5 [e4,e6]@4 ~ f6@5 ~@32 e5@4 ~@17 a3@4 g3@4 a3@4 f3@4 g3@4 e3@4 [d4,d5] ~@3 [f4,f5]@16 ~@60 [g3,g4]@4 g3@4 [f3,f4]@4 [f3,f4]@3 ~ [e3,e4]@4 [d3,d4]@16 [e3,e4,e5]@8 [f3,f4,f5]@8 [a3,a4], ~@6 d5@2 ~@2 e5@3 ~ f4@6 e5@3 ~@2 d5@3 ~@2 c6@5 ~@5 f5@3 ~@3 g6@27 ~@183, ~@15 [f2,f3]@15 c5@3 ~@3 e5@3 ~ f4@5 ~ [g4,g5]@31 ~@18 f3@16 ~@12 c3@4 d3@28 ~@4 c4@63 ~ a3@31 ~@2, ~@31 e3@64 d2@41 ~@120, ~@31 c2@32 a1@32 d1@45 ~@116]/8", // D E F E D E D F …
  G: "[~@11 [a4,a5]@4 [g3,g4,g5]@8 [f3,f4,d5,d6]@4 [c5,c6]@4 ~@32 g3@32 d4@32 [d3,a3], ~@11 a3@3 ~@17 e4@64 ~@33, ~@31 a3@31 ~@66, ~@31 [a4,a5]@26 ~@71, ~@47 c4@48 ~@33]/4", // A G Dm C D5 A
  H: "[~@7 e3 ~@3 e4@3 [f3,f4]@6 [e3,e4]@5 [d3,d4]@5 c3 [c3,c4]@5 [e3,e4]@6 [f3,f4]@5 g3@14 ~@18 e3@4 [d3,d4]@4 [c3,c4]@7 d3 d3@31 ~ d3@2 ~@6 [d4,d5]@3 [e4,e5]@5 [f4,f5]@5 [e4,e5]@5 ~ d4@4 c4 [c4,e4,c5]@5 [e4,e5]@5 [f4,f5]@6 g3@16 ~@16 [e4,e5]@3 [d4,d5]@4 [c4,c5]@9 [d3,a3,d4,d5]@32 [d3,a3,d4], ~@7 [d3,d4]@5 ~@51 a3@63 ~@33 c3@32 [a2,a3]@32 ~@33, ~@10 e3@4 ~@17 g3@16 [e4,g4]@32 c4@7 ~@8 d4@37 ~@44 [g4,g5]@32 ~@49, ~@79 e4 ~@47 f4@15 ~@11 d5@5 ~@98]/8", // F E D C E F D C …
  I: "[~@7 [d3,d4]@4 [e3,e4,e5]@4 [f3,f4,f5]@5 ~ [e3,e4]@5 [d3,d4]@4 c3 [c3,c4]@5 [e3,e4,e5]@5 ~ f5@4 [g3,g4]@18, ~@20 e5@5 ~@6 g3@15 ~@18, ~@41 [f3,f4]@6 ~@17]/2", // D E F E D C E G …
  J: "[~@7 [e3,e4]@4 [f3,f4,f5]@4 [g3,g4]@5 [f3,f4,f5]@5 ~ e5@4 f4 f5@5 [f3,f4]@5 [g3,g4]@5 a3@15 ~@2 [f3,a3]@8 [f3,f4,f5]@3 ~ [g4,g5]@4 [a3,a4,a5]@5 [g3,g4,g5]@5 [f3,f4]@5 g3 [g3,g5]@11 [c4,c5]@4 ~ c4@16 c4@14 ~@10 c5@8 [d3,a3,d4]@32 [d3,a3]@2 ~@6 [d3,d4]@4 [e3,e4,e5]@4 [f3,f4,f5]@6 ~@2 a4@3 [d3,d4]@4 c3 [c3,c4]@5 [e3,e4,e5]@5 ~ f5@4 [g3,g4]@18, ~@25 [e3,e4]@5 f3@5 ~@11 a4@25 ~@3 g3@4 ~@16 g4@12 ~@5 c5@31 ~ [e4,g4]@16 f4@16 ~@16 d4@4 ~@38 [f3,f4]@6 ~@17, ~@31 d4@32 c4@43 ~@21 [c2,c3,g3]@32 d2@36 ~@61, ~@95 [c3,e4]@33 ~@85 e3@5 ~@5 g3@15 ~@18]/8", // E F G F G F G A …
  K: "~@7 [e3,e4]@4 [f3,f4,f5]@4 [g3,g4]@5 [f3,f4,f5]@5 ~ e5@4 f4 [d4,f5], ~@25 [e3,e4]@5 f3@2", // E F G F Dm E
  L: "[~@4 [f3,f4]@5 [g3,g4]@5 a3@15 ~@2 [f3,a3]@8 [f3,f4,f5]@3 ~ [g4,g5]@4 ~@10 f3@5 g3 [g3,d4,d5,g5]@11 [c4,c5] [c4,c5]@3 ~ c4@15 ~ c4@10 ~@14 c5@8 ~@4 [a2,a3]@4 [d3,d4]@4 [e3,e4]@4 f3@4 [a3,a4]@4 [d4,d5]@4 [e4,e5]@4 [f4,f5], ~@14 a4@25 ~@3 g3@4 ~ [a3,d4,d5]@8 [e4,e5]@8 [c3,e4]@33 ~@64, ~@31 c4@43 ~@21 [c2,c3,g3]@32 d2@33, ~@52 g3@5 ~@5 g4@12 ~@5 c5@26 ~@6 [e4,g4]@16 f4@16 ~@17]/5", // F G F G G5 C A D …
  M: "[~@15 [f5,f6]@16 [c3,g3]@32 ~@16 [e5,e6]@16 [f5,f6]@12 e6@16 [d5,d6]@35 ~ [d5,d6]@12 [c5,c6]@4 [g4,g5]@29 ~@3 [g3,g4]@8 [c4,c5]@8 [d4,d5]@32 [d2,d3,a3,d4], ~@31 [c4,e4]@64 ~@161, ~@31 [e5,e6]@47 ~@178, ~@63 [a2,a3]@32 [d3,d4,f4]@64 [c3,g3,c4]@45 ~@52]/8", // F C5 E F D C G C …
  N: "[~@15 [f3,f4,f5,f6]@15 ~ [c3,g3,e4]@28 ~@4 [a2,c4]@13 ~@3 [e3,e4,e5,e6]@3 ~ [d3,d4,d5,d6]@3 ~ [c3,c4,c5,c6]@8 [d3,d4,d5,d6]@32 [f2,a3,d4,f4]@16 [f2,a3,c4,f4]@16 [g3,c4,e4]@40 [a2,e3,a3]@31 ~@26, ~@31 [g5,g6]@44 ~@52 d3@32 [c2,c3]@36 ~@61, ~@143 f3@11 ~@102]/8", // F C Am E D C D Dm …
})).s("gm_string_ensemble_1").gain(0.2)

// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft = note(`<
  A@6 B@8 C D@7 E@5 ~ F@2 G@5 ~ H@2 ~ I@4 ~ J@7 K@8 L@3 M ~ N@7 O@2 ~@5 P@5
>`.pickRestart({
  A: "[~@31 [d2,a5]@64 [g4,g5]@32 [e4,e5]@28 ~@4 [d2,a4]@33, ~@31 a4@61 ~@35 e3@31 ~@34]/6", // D5 G E D5
  B: "[~@15 a6@8 ~@8 [g4,g5]@32 [e4,e5]@28 ~@4 [d2,d3,f4,d5,a5]@28 ~@4 [f2,c3,c4]@31 ~ [g3,c4]@32 e3@31 ~@17 [d5,f5]@4 g5@4 c5@4 [a4,c5]@4 [d4,a4], ~@7 d6@24 e6@59 ~@133 a3@33, ~@63 e3@31 ~@97 c4@28 ~@3 f3@34, ~@243 e5@8 ~@5]/8", // G E Dm F5 C5 Dm Am D5
  C: "~@6 [d3,d4] ~@3 [e3,e4] ~@4 f2@4 ~@7 [d3,d4]@4 ~@2", // D E D
  D: "[~@31 e3@15 ~@17 [d2,d3]@28 ~@27 a4@4 ~@5 [g3,c4]@32 ~@19 g5@12 [d5,d6]@31 ~@3, ~@95 [f2,c4]@32 ~@32 e3@31 ~@34, ~@159 c4@28 ~@37]/7", // D C5 D F5
  E: "[~@11 a4@4 f2@8 ~@4 f4@3 ~ [c4,e4]@30 ~@14 e6@8 [g5,g6]@12 [d5,d6]@37 ~@28, ~@31 [e5,e6]@43 ~ e5@5 ~@80, ~@63 [c4,e4]@28 ~@69]/5", // C G D E C
  F: "[~@14 e4@4 [d4,d5]@4 [c4,c5]@8 [d4,d5]@29 ~@5]/2", // D C D
  G: "[~@79 [e4,g4,e5]@4 g5@11 ~ d5@16 ~@16 d3@32 ~, ~@31 e3@60 ~@69, ~@83 g4 ~@43 a5@11 ~@22]/5", // Em
  H: "[~@11 [e5,e6]@8 [g5,g6]@12 [d3,a3,d5,d6]@33]/2", I: "[~@31 a2@32 f4@31 ~ a3@32 ~]/4",
  J: "[~@31 f4@34 ~@7 d5@4 ~@14 d5@5 c5@6 ~@26 e4@7 ~ e5@4 ~@4 g5@6 ~@10 f4@4 ~ f5@5 ~ g5@5 a5@24 ~@19 f5@5 ~, ~@111 g5@24 ~@24 d3@32 ~@33, ~@127 a3@47 ~@50]/7",
  K: "[~@10 c6@4 ~ c6@30 ~@2 c4@8 ~@24 f4@20 ~@5 d5@4 ~@11 a5@5 ~@3 [g4,g5]@12 ~@20 e4@8 e5@4 ~@4 g5@6 ~@10 f4@4 ~ f5@5 ~ g5@5 a5@24 ~@8 a4@4 ~ g4@4 ~ f4@4 ~@3, ~@63 a4@37 ~@27 c5@6 ~@10 g5@24 ~@24 d3@32 ~@33, ~@159 a3@47 ~@50]/8", // G
  L: "[~@10 c6@4 ~ c6@30 ~@2 c4@8 ~@24 f4@4 ~@13, ~@63 a4@20 ~@13]/3", M: "~@15 [d4,a4]@15 ~@2",
  N: "[~@43 e5@17 ~@35 e4@45 ~@3 e4@16 [d3,a3]@31 ~@34, ~@31 a3@63 ~@49 c4@8 ~@8 f4@41 ~@24]/7", // D5
  O: "[~@31 e3@13 ~@20]/2", P: "[~@3 [d2,a2,d3,f3,a3,d4]@126 ~@31]/5",
})).s("gm_string_ensemble_1").gain(0.05)

// bass · fretless bass
const bass = note(`<
  ~@6 A ~@6 B@2 ~@6 B@2 ~@3 C D E F G H I J K L@2 M N O I M P D Q R S D T U V W X Y S O E U V W X Y Z@2 AA AB@2 AC AD AE
  AF AG AH AI@2 ~@8
>`.pickRestart({
  A: "d1@31 ~", B: "[d2@53 ~@11]/2", C: "d2@29 ~@3", D: "c2@10 ~@2 c2 ~@3 c2@10 ~@6",
  E: "a1@9 ~@3 a1 ~@3 a1@7 ~ a1@4 c2@4", F: "d2@5 ~ a2@2 ~@8", G: "~@2 f2@3 ~ f2@7 ~ f2@2",
  H: "c2@9 ~@3 c2@2 ~@2 c2@10 ~@2 c2@4", I: "a1@5 ~ a1 ~ a1@3 ~ a1@2 c2@2", J: "d2@10 ~@2 d2 ~@3 d2@8 a1@8",
  K: "d2@10 ~@2 d2@4 f2@11 ~@5",
  L: "[a1@10 ~@2 a1@2 ~@2 a1@12 ~@4 c2@10 ~@2 c2@2 ~@2 c2@7 ~ a1@4 c2@4, ~@7 a1@3 ~@6]/2",
  M: "d2@10 ~@2 d2 ~@3 d2@12 a1@4", N: "d2@10 ~@6 d2@5 ~ d2@5 ~ d2@2 ~@2", O: "c2@10 ~@2 c2 ~@3 c2@11 ~@5",
  P: "d2@10 ~@2 d2 ~@3 d2@7 ~ d2@3 ~ a1@4", Q: "a1@10 ~@2 a1@2 ~@2 a1@4 ~@4 a1 ~@3 c2@4, ~@5 a2@2 ~",
  R: "d2@10 ~@2 d2 ~@3 d2@13 ~@3", S: "d2@9 ~@3 d2@4 f2@10 ~@6", T: "a1@10 ~@2 a1 ~@3 a1@7 ~ a1@4 c2@4",
  U: "d2@10 ~@2 d2 ~@3 d2@10 ~@2 d2@4", V: "f2@9 ~@11 c2@4 f2@8", W: "c2@9 ~@3 c2 ~@3 c2@12 g1@4",
  X: "c2@10 ~@2 c2 ~@3 c2@12 g1@4", Y: "d2@10 ~@2 d2 ~@3 d2@8 a1@4 ~@4",
  Z: "[~@32 c2@9 ~@3 c2 ~@3 c2@10 ~@2 c2@4, f2@9 ~@7]/2", AA: "a1@10 ~@2 a1 ~@3 a1@6 ~@2 a1@3 ~ c2@4",
  AB: "[d2@11 ~ a1@4 d2@4 a1@4 d2@12 a1@4 d2@4 a1@4 d2@10 ~@6]/2", AC: "c2@9 ~@3 c2@3 ~ g1@10 ~@6",
  AD: "c2@10 ~@2 c2@6 ~@6 g1@5 ~@3", AE: "d2@9 ~@3 d2 ~@3 d2@11 ~ a1@4", AF: "d2@5 ~@3 f1@6 ~@2",
  AG: "c2@10 ~@2 c2@2 ~@2 c2@11 ~ g1@4", AH: "a1@10 ~@2 a1@3 ~ a1@7 ~ a1@4 c2@4",
  AI: "[d2@11 ~ a1@4 d2@4 a1@4 d2@11 ~ d2@2 ~@2 d2@4 a1@4 f2@14 ~@2]/2",
})).s("gm_fretless_bass").gain(0.36)

// bass · fretless bass · soft notes
const bass_soft = note(`<
  ~@27 A ~ B ~@4 C ~@3 D A ~@3 A ~@2 C A ~@2 E ~@2 A C A ~@2 E ~@2 A ~@4 F G H ~ I ~@12
>`.pickRestart({
  A: "~@7 c2", B: "~@4 d2 a1 d2@2", C: "~@7 f2", D: "~@12 d2@3 ~@17", E: "~@12 f2@7 ~@13", F: "~@28 d2@3 ~",
  G: "~@7 g1", H: "~@5 c2 ~ c2", I: "~@6 d2 ~@9",
})).s("gm_fretless_bass").gain(0.18)

// other · glockenspiel
const glockenspiel = note(`<
  ~ A ~ B C A ~ B C D ~ B C ~@2 B C E F B C ~@2 G H I ~@19 J K ~@6 J K ~@6 J ~@7 J L ~@12
>`.pickRestart({
  A: "d5 ~@3 d5@2 ~@26", B: "c5 ~@3 c5@2 ~@26", C: "a4 ~@31", D: "d4 ~@3 d4 ~@27",
  E: "d4 f4 e4 f4 d4 f4 e4 c4, ~@4 d4 ~@27", F: "f4@7 ~@9", G: "a4@2 ~@2 [e4,a4] ~@3 [e4,a4] ~@23, e4 ~@31",
  H: "c5 ~@3 c5 ~@3 c5 ~@23", I: "[a4,d5] ~@4 [a4,d5] ~@7 d5 ~@18",
  J: "~@4 [a3,a4] ~@3 [g3,g4] ~@3 [a3,a4] ~@3 [f3,f4] ~@3 [g3,g4] ~@3 [e3,e4] ~@3 [c3,c4] ~@3", K: "d4@7 ~@25, d3 ~@7",
  L: "[d3,d4]@7 ~@25", // D
})).s("gm_glockenspiel").gain(0.26)

// other · glockenspiel · soft notes
const glockenspiel_soft = note("<~ A B C D A B C D E ~ C D ~@2 C D E ~ C D ~@2 F G H ~@57>".pickRestart({
  A: "~@8 d5@2 ~@2 d5@2 ~@6 f5 ~@3 e5 ~@3 c5 ~@3", B: "~@20 f5 ~@3 e5 ~@7", C: "~@4 c5 ~ c5 ~@9",
  D: "~@4 a4@2 ~@2 a4@2 ~@2 a4 ~@19", E: "~@8 d4 ~@3 d4 ~@19", F: "~@12 [e4,a4] ~@19", G: "~@12 c5 ~@19",
  H: "~@8 [a4,d5] ~@4 a4 ~@18", // D5
})).s("gm_glockenspiel").gain(0.13)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A@2 B C D E F C D G H I J K L C D G M N J O@2 P Q R S ~@10 T U ~@34 V W ~@8
>`.pickRestart({
  A: "[~@36 d2@8 f2@19 ~, ~@29 a2@16 ~@19, ~@30 d3@15 ~@19, ~@31 [f3,a3]@14 ~@19, ~@32 d4@13 ~@19]/2", // F
  B: "~@4 d2@6 ~@2 f2@19 ~", C: "~@2 c2@3 ~ e2@9 ~", D: "~@4 c2@7 ~ e2@15 ~@5", E: "~@4 d2@8 f2@19 ~, d4@13 ~@19",
  F: "~@4 d2@7 ~ f2@19 ~", G: "[d3,a3]@2 ~@2 [d3,a3] ~@3 [d3,a3] ~@3 [d3,a3] ~@3 [d3,a3] ~@15, ~@4 d2@7 ~ f2@15 ~@5",
  H: "~@4 f2@7 ~@5 d4@8 e4@8, ~@12 f2@15 ~@5, ~@12 f4@7 ~@13",
  I: "~@2 [c2,c4]@2 ~@2 c4@2 e4@2 c4 ~ c4@4, e4@8 g4@19 ~@5, ~@6 e2@9 ~", J: "a3@4 c2@7 ~ e2@15 ~@5",
  K: "d4 f4 e4 f4 d4 e4 c4 a3", L: "d3@15 ~@17", M: "~@4 f2@7 ~ f2@15 ~@5", N: "~@2 c2@3 ~ e2@9 ~, c4 ~@3",
  O: "[d4 f4 e4 f4 ~ f4 e4 c4 ~ d2@2 f2@5, ~@4 d2@8 f2@23 ~@29, ~@8 d4@4 ~@4 d4@11 ~@5, ~@32 d3@15 ~@17]/2",
  P: "~@4 c2@7 ~ e2@19 ~", Q: "~@4 c2@8 e2@17 ~@3", R: "d4 f4 e4 f4 d4 e4 c4 a3, ~@4 d2@8 f2@15 ~@5",
  S: "d2@13 ~@3, d3@5 ~@11", T: "d4@4 f4@3 ~ e4@3 ~ f4@3 ~ d4@4 e4@4 c4@4 a3@4", U: "d3@7 ~@25",
  V: "~@4 f4@4 e4@4 f4@3 ~ d4@4 e4@4 c4@4 a3@3 ~", W: "f3@3 ~@5",
})).s("gm_acoustic_guitar_nylon").gain(0.35)

// chords · acoustic guitar nylon · soft notes · D5
const acoustic_guitar_nylon_2 = note(`<
  ~@9
  [~@10 [d3,a3] ~ [d3,a3] ~ [d3,a3] ~]
  [~@2 e4@3 f4@3]
  ~@6
  [~@10 [d3,a3] ~ [d3,a3] ~ [d3,a3] ~]
  ~@65
>`).s("gm_acoustic_guitar_nylon").gain(0.13)

// chords · overdriven guitar
const overdriven_guitar = note("<~@6 A B@2 ~@5 C ~@68>".pickRestart({
  A: "d3", B: "[c3@45 ~@19]/2", C: "[d3,a3]@31 ~",
})).s("gm_overdriven_guitar").gain(0.23)

// chords · flute
const flute = note("<~@10 A ~ B ~@14 C D E F C G E H I C E J C D E K C D E L ~@7 L ~@28>".pickRestart({
  A: "~@4 c5 ~@3 c5 ~@3 c5@2 ~@2 f4@10 ~@6", B: "~@8 e4@3 ~ c5 ~@3 c5@4 a4@4 g4@3 ~ f4@4",
  C: "[g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3", // C
  D: "[a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3", // Am
  E: "[a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3", // Dm
  F: "[a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3", // F
  G: "[a3,c4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3", // Am
  H: "[a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3", // Dm D5 F
  I: "[a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 a3 ~@3", // Am
  J: "a3@14 ~@2 [d2,d3]@13 ~@3, d4@29 ~@3, f4@9 ~@23", // D
  K: "[a3,d4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,f4] ~@3 [a3,d4] ~@3 [a3,d4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3, ~@6 d4 ~@9", // D5 Dm D5 Dm
  L: "[d3,d4]@7 ~@25, a3 ~@15", // D
})).s("gm_flute").gain(0.2)

// drums · kick
const kick = s("bd").struct(`<
  ~@27 A@3 B C D E F A@3 B A C G H A C A I A J K L A H M I A J K L A H M N A C G H A C A I A J K L N ~@7
>`.pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x ~@5 x ~@3 x!2 ~@4", C: "x ~@4 x ~ x", D: "x ~@3 x!2 ~@2", E: "x ~@3 x!2 ~ x",
  F: "x ~@10 x ~@2 x ~", G: "x!2", H: "x ~@5 x ~ x ~@2 x ~@2 x ~", I: "x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~",
  J: "x ~@2 x ~ x ~@2", K: "x ~@2 x ~ x ~ x", L: "x ~@7 x ~@2 x ~@4", M: "x ~@2 x!2 ~@2 x", N: "x",
})).gain(0.64)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@31 A B ~ C ~@6 D ~ B D ~@3 B ~ E B ~@4 B ~ E B ~@5 D ~ B D ~@3 B ~ E ~@8
>`.pickRestart({
  A: "~ x", B: "~@7 x", C: "~@5 x ~@2", D: "~@3 x ~@4", E: "~@3 x ~@3 x",
})).gain(0.32)

// drums · snare
const snare = s("sd").struct("<~@27 [~ x ~ x]!35 [~@3 x] [~ x ~ x]!12 ~@8>").gain(0.64)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@27 A B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C ~ A B C A@2 B C A@2 B C A D ~@7
>`.pickRestart({
  A: "x ~ x!3 ~ x!2", B: "x ~ x!3 ~ x ~", C: "x ~ x ~ x!4", D: "x",
})).gain(0.56)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@27 A B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C ~ A B C A@2 B C A@2 B C A ~@8
>`.pickRestart({
  A: "~ x ~@3 x ~@2", B: "~ x ~@3 x ~ x", C: "~ x ~ x ~@4",
})).gain(0.32)

// drums · low tom
const low_tom = s("lt").struct("<~@30 [~@7 x] ~@3 [~@7 x] ~@3 [~@7 x] ~@44>").gain(0.56)

// drums · mid tom
const mid_tom = s("mt").struct("<~@30 [~@3 x] ~@3 [~@3 x] ~@3 [~@3 x] ~@44>").gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@27 A ~@7 A ~@2 B A ~@7 A ~@14 A@2 ~@7 A ~@3 A ~@7>".pickRestart({
  A: "x", B: "~@7 x",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@30 [~@5 x ~@2] ~@3 [~@5 x ~@2] ~@3 [~@5 x ~@2] ~@44>").gain(0.56)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@47 [x!16]!7 [x!2 ~@14] [x!16]!7 x [x!16]!12 x ~@7>").gain(1.22)

stack(
  string_ensemble_1, string_ensemble_1_soft, bass, bass_soft, glockenspiel, glockenspiel_soft, acoustic_guitar_nylon,
  acoustic_guitar_nylon_2, overdriven_guitar, flute, kick, kick_soft, snare, hihat, hihat_soft, low_tom, mid_tom, crash,
  high_tom, cabasa
)

More by Amedeo Minghi