Strudelify
Caro babbo cover art

La mia storia piano e voce

Caro babbo

Masini

KeyC minorTempo68 bpm
0:00/0:00
// Caro babbo — Masini
// 68 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 75 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(68/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("<~@39 A B@2 C@2 D@3 E ~@2 F@2 ~ G@3 H I@3 J K@3 L M@7 N@3>".pickRestart({
  A: "~@11 bb3@4 ~@17", B: "[~@15 ab3@8 ~ bb3@7 c4@32 ~]/2", C: "[~@31 ab3@16 ~ g3@16]/2",
  D: "[f3@7 eb3@8 ~ d3@7 eb3@8 c3@32 b2@17 ~@16]/3", E: "~ c5@3", F: "[~@12 eb4@4 ~@7 c5@40 ~]/2",
  G: "[~@4 ab4@4 ~@8 g4@15 [ab4,c5]@17 g4@30 ~@10 bb5@8, f4@15 ~@33 d5@16 ~@32]/3", H: "eb5@15 f5@16 ~",
  I: "[ab5@8 g5@7 c5@32 ~ bb4@8 f5@7 ~@9 f4@4 g4@4 ab4@16, ~@21 eb5@5 ~@6]/3",
  J: "g4@8 ab5@4 g5@3 ~ f5@7 ~ eb5@8, ~@15 ab5@8 g5@8 ~",
  K: "[[d5,f5]@8 eb5@7 ~@17 f4@15 ~ c5@15 b4@15 ~@2 eb5@16, ~ c5@3 ~@8, ~@16 ab4@32 g4@31 ~@17]/3", // Dm
  L: "bb4@7 eb4@8 ~ f4@16",
  M: "[ab4@7 g4@7 ~@2 c5@27 d5@4 ~ f5@7 eb5@8 d5@8 ~ eb5@8 ~@7 g4@4 ab4@8 ~ g4@3 ~ [f5,ab5]@4 [g5,ab5]@4 [f5,ab5]@7 [eb5,g5]@8 [d5,f5]@8 [eb5,g5]@8 ~ eb5@32 ~@16 b4@14 ~@10 [g4,eb5]@8, ~@144 c5@49 ~@31, ~@88 g4@15 ~@9]/7", // Fm Abmaj7 Fm Eb Dm Eb Cm
  N: "[[f4,d5]@8 [d4,bb4]@7 ~ [eb4,c5]@58 ~@22]/3", // Dm Gm Cm
})).s("gm_string_ensemble_1").gain(0.36).pan(0.4)

// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@39 A@2 ~ B ~@3 C D E F G@3 H I@2 ~@5 J ~@5 K ~@4 L@3>".pickRestart({
  A: "[~ f3@2 ~]/2", B: "bb3", C: "~@17 g2@10 ~@5", D: "~@5 ab4@10 ~ ab4@16", E: "[g4,bb4]", F: "f4 g4",
  G: "[f4@12 ~@4 g4@15 ab4@32 bb4@19 ~ c5@13, ~@16 d5@8 ~@39 g4@32 ~]/3", H: "~@13 ab4@4 ~@3 d5@12, ~@4 f5@5 ~@7",
  I: "[~@31 b4@14 ~@19]/2", J: "~@12 d5 ~@19", K: "~@21 f4@3 ~@8", L: "[~@35 c3@38 ~@23, ~@10 c6@27 ~@11]/3",
})).s("gm_string_ensemble_1").gain(0.21).pan(0.4)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@18 A B C@8 D@8 E F G H I J K L@2 M ~ N@2 ~@2 O@2 P@4 ~@2 Q R S@7 T@7>".pickRestart({
  A: "~@4 [eb5,g5]@3 bb4", B: "ab4 ~@2 eb5@13 f5@16, ab3 ~",
  C: "[~@24 eb5@23 ~ [g4,bb4]@30 ~@2 [ab3,ab4,c5]@15 ~ b4@15 [c4,c5]@17 [bb3,bb4]@14 ~@2 ab3@16 f3@16 ~@16 b4@15 c4@49, ~@23 c5@24 d5@31 ~ eb5@15 ~ d5@13 ~@3 eb5@49 ~@16 g3@31 ~@49, ~@48 g3@23 ~@7 eb4@3 ~@14 g4@45 ~@3 c5@16 ~ [c5,f5]@33 ~@63, ~@95 g3@9 ~@7 g5@30 ~@2 ab5@32 ~ d5@24 ~@56]/8", // Gm Ab C Bb F5
  D: "[~@15 bb3@64 ~ c4@64 bb3@31 g3@15 bb3@17 ab3@32 g3@17]/8", E: "~@15 f3@17", F: "~ g3@14 ab3@16 ~",
  G: "c4@15 b3@16 ~", H: "c4@15 ~ ab3@16", I: "~ bb3@31, ~ c4 ~@30", J: "~ ab3@11 g3@4 f3@16", K: "~ eb3",
  L: "[f3@15 g3@16 c4@28 ~ bb3@4]/2", M: "~@11 g3@4 f3@16 ~", N: "[~@7 ab3@4 g3@4 f3@9 ab3@7 g3@17 ~@7 g3@8 ~]/2",
  O: "[~@2 [ab4,c5]@6 ~@2 g3@2 ~@3 c4, ~@4 ab3@31 ~@4 g4@23 ~@2, ~@55 eb5@9]/2", // Ab
  P: "[[f3,f4,ab4,c5]@15 [g3,g4,bb4,d5]@15 eb4 [ab3,ab4,c5,eb5]@16 [c4,c5]@16 ~ b3@8 g3@7 ~@9 c4@5 bb3@3 ab3@16 ~@16, ~@47 [g4,d5]@34 ~@7 c5@24 ~@16, ~@64 b4@15 ~@9 eb5@33 ~@7, ~@11 g5@2 ~@3]/4", // Fm Gm Ab C G5
  Q: "~@23 f4@7 ~@2, ~@5 f3@3", R: "[g3,g4]@14 ~@2 c4@9 ~@7",
  S: "[~@7 bb4@9 ab4@31 ~ g3@24 ~@4 eb4@2 ~@2 ab4@5 ~@8 g4 ~@2 f4@16 g5@23 ~@4 d5@4 ~@9 eb5 ~@2 eb5@3 ~@14 c5@3 [d6,g6]@29 d5@3 ~ f4@10 ~@2 f4@3 g4, ~@7 bb3@6 ~@3 c5@47 ~@22 eb5@10 f5@15 ~@33 ab4@17 ~@15 g4@33 ~@16, ~@16 ab3@15 ~@16 d5@27 ~@5 c6@35 ~@21 g6@8 ~ ab6@30 ~@34 c6@16, ~@88 ab4@8 ~@16 g4@32 eb6@16 ~@47 ab5@14 ~@3]/7", // G5
  T: "[d5@7 d5@3 ~ d5@2 ~@2 c5@10 ~@7 bb5@15 [ab4,eb5]@13 [g4,g5]@4 [f4,c5,f5]@15 ~ g4@26 ~@18 c4 ~@4 a6 ~@12 c7@33 ~@49, g5@15 eb6@49 ~@15 c6@16 ~@16 c4@12 ~@4 c3@45 ~@52, ~@7 d6@9 ~@16 bb4@13 ~@2 [ab5,c6]@32 g5@40 ~ g5@80 ~@24, ~@115 c5@8 ~ c5@5 g6@73 ~@22, ~@29 eb6@21 ~@6]/7", // Ab5 G F5 Ab
})).s("gm_string_ensemble_2").gain(0.24).pan(0.6)

// chords · string ensemble 2 · soft notes
const string_ensemble_2_soft = note(`<
  ~@18 A B@3 ~@4 C ~@15 D ~@2 E F ~ G H I ~ J ~@2 K ~ L M N O@8 P@2 Q@5
>`.pickRestart({
  A: "~@21 c4@7 ~@4, ~@17 c5@13 ~@2", B: "[~@2 c5@21 ~@4 ab3@11 ~@10, ~@4 ab5@37 ~@9 ab4@28 ~@18]/3",
  C: "~@8 g4@7 ~@17", D: "g3@15 ~@17", E: "ab3@3 ~@5", F: "g3@5 ~@3", G: "~@17 c4@6 ~@9", H: "f3@16 g3@15 ~", I: "c4",
  J: "~@4 ab4@3 ~@10 c4@9 ~@6, ~@8 c5@7 ~", K: "~@18 ab4@3 c5 ~@10, ~@17 ab3@7 ~@8", L: "~ [f3,f4]",
  M: "g4@15 ~ ab4@16, g3@7 ~@25", N: "~@13 ab4@3",
  O: "[~@12 d4 ~@15 c4@4 ~@2 c4@5 ~@5 g4@3 ~@17 f3@16 ~@16 b4@9 ab3@4 ~@3 eb6@15 ~@8 c5@9 ~@15 d6@15 ~@6 eb5@2 ~@10 [f4,f6]@15 ~ bb5@32 ~@4 c5@3 ~ [c5,f5]@6 ~@2, ~@16 eb5@64 ~@29 ab5@33 ~@10 bb5@21 ~@3 c6@30 ~@50, ~@17 c5@23 ~@108 d5@20 ~@88, ~@25 g4@7 ~@48 g4@26 ~@150]/8", // F F5
  P: "[~@7 c5 ~@8, ~@15 c6@17 ~@32, ~@6 g5@5 ~@5, ~@25 eb5@20 ~@19]/2",
  Q: "[~@31 b5@16 ~ [c5,c6,eb6]@3 ~@17 c5@3 ~@89, ~@15 d6@33 ~@4 c6@84 ~@24, ~@8 d5@13 ~@11 c4@4 ~@44]/5", // Cm
})).s("gm_string_ensemble_2").gain(0.08).pan(0.6)

// bass · fretless bass
const bass = note("<~@55 A@4 B C D@2 E@2 F G H I J K L@2 M N>".pickRestart({
  A: "[~@16 ab2@11 ~ eb3@2 c4@6 bb3@2 ab4@4 c4@2 bb3@4 g3@23 ~ g2@8 ab2@12 ~ b3 c4@3 bb3@2 ~ eb3@2 ab2@9 ~ g2@16, ~@92 eb3@2 bb3 ~@33]/4",
  B: "eb2@2 g2@2 f3 eb3 eb2@2 f2@6 f3@2", C: "g2@8 g3@8 c3@15 ~",
  D: "[bb2@8 c4@2 bb3@2 bb2@3 ~ ab2@23 ~ f2@4 gb2@4 g2@15 ~]/2",
  E: "[g2@4 d3@4 g3@8 ab2@11 ~ eb3@2 c4@7 bb3@2 eb4@9 g4@8 g2@8, ~@39 d4 ~@24]/2",
  F: "g3@4 g2@4 ab2@4 eb3 c4 bb3 eb3, ~@26 b3 ~@5", G: "ab2@16 g2@15 ~", H: "eb3@8 eb2@4 e2@4 f2@11 ~ f2@2 gb2@2",
  I: "g2 c3", J: "bb2@15 ~ ab2@12 g2@4", K: "f2@4 g2 d3 g3 d4", L: "[g4@8 g2@7 ~ c3@12 c3@16 g3@2 c4@18]/2",
  M: "~@2 c4@2 d4@2 [eb4,f4] ~@25, ~@6 g4@19 ~@7", N: "c2@9 ~@7",
})).s("gm_fretless_bass").gain(0.56)

// chords · piano
const piano = note("<~@47 A B C D E F G H I J@4 K L@3 M@3 N O P Q R S@3>".pickRestart({
  A: "~@8 ab4@11 ~@13", B: "~@3 g6, ~@5 d6@3", C: "~@16 c5@8 g4 ~@7, ~@12 f4@11 ~@9",
  D: "~@7 c7@6 ~@3, ~@6 c5@17 ~@9, ~@8 g5@15 ~@9, ~@10 c6@15 ~@7, ~@12 eb6@9 ~@11",
  E: "~@14 bb5@15 ~@3, ~@8 ab4@21 ~@3, ~@5 eb5@8 ~@3, ~@3 ab5@5",
  F: "bb5@4 ~@12 g6@7 ~ c6@4 ~@4, g4@3 ~, ~@4 d5@15 ~@13, ~@8 d6@17 ~@7",
  G: "~@4 f5@2 ab5@2 ~@4 g5 g6 d6 ~, ~ ab5@7 ~@8 g5@7 ~@9, ~@2 f4@5 ~ g4@7 ~, ~@5 d5@3",
  H: "~@10 ab5@2 c6@3 ~ g4@5 ~@9 c6@2, ab4@16 ~@8 g4@7 ~, ab5@8 ~@8 [c6,d6]@11 ~ g5@4, ~@4 eb5@9 ~@13 d5@6", // Csus2
  I: "~@4 d5@7 ~@13 eb5@4 [g4,eb5,g5]@3 ~, g4@11 ~@13 [ab3,ab4,c5,ab5]@7 ~, b5 ~@3", // Cm Ab
  J: "[[f3,f4,ab4,c5,ab5]@15 ~ g3@13 ~@11 d4@6 ~@2 ab3@2 ~@10 eb5@4 ~@8 eb5@6 ~@6 d4@4 ~@4 d4@4 [g4,bb4,eb5]@6 ~@6 d4@3 ~ f3@10 ~@2 f3@3 ~, f5@10 ~@26 g3@9 ~@7 ab3@12 ~@16 g3@20 ~@2 g3@7 ~@19, gb4 ~@15 [g4,bb4,d5]@25 ~@7 c5@8 eb4@8 ~@40 [d4,bb4,eb5]@4 ~@20, ~@60 c5@19 ~ [bb4,d5]@7 ~ [d5,f5]@8 ~@10 g4@5 ~ [ab4,c5,eb5]@15 ~]/4", // Fm Eb Gm Ebmaj7 Bb Dm Ab
  K: "[g3,g4,d5]@12 d4 ~@3 [c5,eb5,g5]@15 ~, d4@9 ~@7 c4@8 ~@8, ~@4 g4 ~@3", // G5 Cm
  L: "[[bb3,eb5,g5]@12 ~@4 ab3@8 eb4@3 ~@5 f4@8 ~@4 f4@2 ab4@2 g4@3 ~@7 g3 ~@7 g6@2 d4@2 ~@2 d6 ~@3 d6@4 ~@2 db5 ~ eb5@3 c6 eb5@3 ~ [g4,g5]@4, bb4@15 ~ c5@26 c4@6 ~@4 d4@8 g3@8 ~@2 g3@6 d4@2 ~@2 ab4@13 ~@3, ~@16 [ab4,eb5]@16 f3@6 ~@2 f3@7 ~ g3@8 g5@4 ~@2 d4@5 ~@7 g6@6 ~@8 [ab5,c6,eb6]@7 ~, ~@64 d6@4 g6@4 d7@7 ~@13 eb5@2 ~@2]/3", // Eb G Ab5 Ab
  M: "[[f5,ab5,c6]@16 g5@4 d5@4 d6@2 bb5@2 [d5,d6]@2 ~@2 eb6@7 ~@3 bb5@2 ~@12 ab6@2 c7@2 bb6@2 ab6@6 eb6@4 [ab4,c6]@6 ~@18, f4@2 ~@13 f6@5 ~@28, g4@2 ~@14 g4@21 ~@3 g4@4 ~@4 ab4@22 ~@26]/3", // Fm D Ab
  N: "~@4 g6@2 eb6@2 c6@2 bb5@2 g5@3 ~@9 f6@2 c6@3 ~@3, eb4@14 ~@2 f4@13 ~@3, ~@5 c5@3, ~@11 f5@2 ~@3",
  O: "~@2 d5@2 ~@2 d5 ~ ab4@4 ~@4, g4@3 ~@5, ~@8 g7@9 ~@15", P: "~@16 eb4 ~@3 eb4@3 ~@9",
  Q: "~@8 [f5,ab5]@4 c5@2 ~@2 b5@2 g5@2 b5 ~ b5@2 g6@2 d6@2 g6 ~ b6 ~, [f4,c6,f6]@7 ~ [g4,d5]@3 d5@2 ~@3, ~@24 g4@7 ~", // Fm F5 G5
  R: "[d5,b6]@2 ~@4 g7 ~@5 g6@3 g4 ~@4 g4@4 c5@3 ~ g4@4, g4@10 d7@5 ~@17, ~@2 g6@9 ~ d5 ~@3 c4@14 ~@2, ~@2 d5@2 g7@3 ~@9", // G
  S: "[~@4 g4@7 ~@2 g4@4 ~@10 eb5@8 ~@11 g4@2 ~@8 c3@22 ~@18, [c4,g5]@15 ~@2 c4@13 ~@6 c4@8 g5@4 ~@48, ~@24 g4@5 ~@9 g4@7 ~@3 c5@30 ~@18, ~@26 [c5,d5]@9 ~@5 d6@7 ~@49, ~@7 c6 ~@8]/3", // C5 Csus2
})).s("gm_piano").gain(0.26)

// chords · piano · soft notes
const piano_soft = note("<~@47 A B C D E F G H I ~ J@2 K L M N O P Q R S ~ T U V W ~@2>".pickRestart({
  A: "~@3 ab5@4 ~", B: "~@9 g5@23, ~@9 g4 ~@22", C: "~@9 f5@7 ~@8 g5@5 ~@3", D: "c5 ~@23 eb6@3 ~@5", E: "~@3 c6",
  F: "~@8 g5 ~@3 g5@20", G: "~ ab4 ~@27 bb5 ~ g5", H: "~@22 g4 ~@9",
  I: "~@13 b5@3 ~@12 eb4@3 ~, ~@8 d6@7 ~@17, ~@5 g5@3 ~@8",
  J: "[~@12 g4@3 ~@2 eb5@9 ~@10 f4@3 ~ f4@5 ~@3 g4@7 ~@7 bb4 ~, ~@16 ab4@11 ~ ab4@17 ~@19]/2",
  K: "~@12 c4 ~@3, ~@22 f4@9 ~", L: "~@10 bb4@2 ~@16 c4@3 ~", M: "~@12 bb3 ~@18 g3", N: "ab4@5 ~@11",
  O: "~@6 d6 ~@3 d4 ~@21", P: "~@6 f4@2 c5 ~@23", Q: "~@6 d5 ~@9, ~@12 g5 ~@19",
  R: "~@12 eb5 ab5 ~@10 d5@2 g5@2 ~@4, ~@16 g4@11 ~@5", S: "~@7 bb4 ~@6 ab5 ~", T: "~@17 g5@3 ~@12",
  U: "~@5 c5@3 ~@18 d5@4 ~@2", V: "~@4 d7 ~@27", W: "eb5@6 ~@5 eb5@6 ~@15",
})).s("gm_piano").gain(0.13)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@18 A B C D E F@7 G H I J K@2 L M N O P Q R S T U V W ~@3 X Y Z AA@2 AB@2 AC AD AE@2 AF@2 AG@2 AH@2 AI@2 AJ@4 ~
>`.pickRestart({
  A: "~@4 eb4@2 f4@2 g4@7 ~", B: "~ f4", C: "eb4@7 ~ eb4@8", D: "d4@15 ~@17", E: "~ ab4",
  F: "[g4@16 f4@8 eb4@8 d4@7 ~ eb4@6 [eb4,f4] d4 c4@17 ~@15 d4@12 ~@21 c4@12 ~@9 eb4@2 [d4,f4]@2 [eb4,g4]@12 ~@18 [eb4,g4]@2 [d4,f4]@2 [c4,eb4]@4 ~@20 bb4@2 ab4@2 g4@9 ~@15, ab4@99 ~@13, ~@111 c5@9 ~@104, ~@112 g4@11 ~@101]/7", // Ebsus2 Dm Eb Dm Cm
  G: "~@12 [c4,eb4]@2 [d4,f4]@2 eb4@11 ~@5", H: "~ eb4 g4@2 ~@4, c5@9 ~@23",
  I: "~@8 bb3@11 ~@13, ~@2 ab4@13 ~@17, ~@4 eb4@11 ~@17", J: "~@4 bb4@2 ab4@2 g4@13 ~@11",
  K: "[~@24 [ab3,c4]@3 ~ [eb3,ab3]@7 ~ eb3@10 ~@18, ~@36 c3@7 ~@21]/2", L: "~@4 [g3,c4]@2 bb3@6 c4@7 ~@13",
  M: "~@20 eb4@9 ~@3", N: "~@5 g3@3 ~@4 d4@3 ~, ~@4 g4@11 ~@17, ~@3 d4@5 ~@3 b3@4 ~, ~@8 c4@7 ~@5 g3@10 ~@2",
  O: "~@2 [c4,eb4] [d4,f4] [eb4,g4]@4", P: "~@14 g4@11 ~@7, ~@3 bb4@3 ~@2", Q: "~@6 ab3 ~ f3@8, ~@16 f2@11 ~@5",
  R: "~@16 f4@2 eb4@2 bb3@2 g3@9 ~",
  S: "~@3 f3 ~@2 g4@2, f2@14 ~@2 g2@13 ~@3, ~@4 c3@11 ~@17, ~@6 f3@4 c4@6 ~@3 g3@12 ~, ~@8 f4@8 ~@5 d4@10 ~",
  T: "~@3 c4@5 ~@7 eb4, c3@7 ~ c3@3 eb4@3 bb3@2, ~@4 g3@12 ~@2 g3@6 bb2@5 ~@3, ~@10 c4@2 ~ g3@2 ~",
  U: "~@6 eb4@4 ~@12 f4@9 ~, ab2 f2, ~@2 eb3@14 ~@2 c3@13 ~, ~ c4@3 ~ c4@3",
  V: "~@11 c4@3 d4@3 b3@8 ~@7, ~ g2@13 ~@2, ~@5 d3@20 ~@7, ~@8 g3@19 ~@5", W: "~@4 ab2@4 ~@5 f2@2 ~",
  X: "~@4 [ab3,c4]@11 ~, ~ eb3 ~@2", Y: "~@2 d4 eb4, ~ g3@3, ~@8 bb3@15 ~ c4@5 ~@3, ~@2 d3@3 ~@3",
  Z: "~@8 c4 ~@3 ab3@3 ~@13 g3@2 ~@2, ~@4 [f2,f3]@11 ~ g2@12 ~@4, ~@4 [c3,f4]@4 ~@2 d3@5 ~, ~@10 c4@6 ~@6 g3@4 d4@5 ~, ~@23 d4 g4@7 ~", // F F5
  AA: "[~@12 [eb3,c4]@4 ~@12 d5@4 ~@4 b4@6 ~@14 c4@2 eb4@2 bb3@3 eb3, ab2@14 ~@38 c3@9 ~@3, ~@2 eb3@8 eb4@6 ~@18 d5@9 ~@17 bb2@2 ~@2, ~@4 c5@4 ab4@8 ~@8 g4@19 ~@11 g3@7 ~@3, ~@6 bb4@10 ~@10 g5@5 ~ g5@9 ~@23]/2", // Cm
  AB: "[ab3@4 ~@4 c4@10 ~@8 bb3@2 ~@16 bb3@2 ~@14 c4@3 ~, ab2@15 ~@5 g2@9 ~@9 g2@6 ~@4 ab2@12 ~@4, ~@4 eb3@9 ~@9 d3@6 ~@2 eb4@12 g3@4 ~@10 ab3@7 ~, ~@3 ab3@6 ~@3 g3@2 f4@4 ~@2 d3@3 ~@3 eb3@4 ~@2]/2",
  AC: "~@4 bb2@9 ~@15 g3@4, ~@5 g2@3",
  AD: "~@4 g3@2 f4@2 eb4@2 ~@2 g3@3 ~@11 ab3@2 ~@2 ab3@2, eb2@6 ~@2 f2@7 ~, ~@9 c3@7, ~@5 f3 c4 f3, ~@22 f4@7 ~@3",
  AE: "[~@6 d4@2 ~@4 g3@3 ~@18 c3@4 ~@3 [c3,c4,eb4]@2 [bb2,bb3]@6 c4@6 ~@2 [eb3,ab3]@4 [g2,g3]@3 ~, g2@13 ~@35 ab2@4 ~@2 ab2@7 ~@3, ~ d3@6 ~ c3@4 ~@20, ~@4 g3@6 d4@6 ~@2 g3@7 ~@39, ~@4 g4@4 ~@2 c4@9 ~@9 c4@4]/2", // Cm Bb Ab5 G
  AF: "[[f3,ab3]@4 ~@2 f3@2 g3@2 ab3@2 [c3,g3]@2 f3@2 g2@9 d3@3 g2@9 ~@3 [c3,c4,eb4]@4 [d3,d4,f4]@4 eb3@9 c4@7, f2@7 ~@25, ~@4 c3@7 ~@5 g3@14 ~@18 [eb4,g4]@16]/2", // Fm C5 Cm Dm Eb
  AG: "[~@12 ab3@2 c4@9 ~@13 bb3@4 g4@4 d4@3 ~ c3@14 ~@2, ~@6 f2@8 ~@10 g2@21 ~@19, ~@8 c3@7 ~@13 d3@17 ~@19, ~@5 f3@3 ~@8 d4@4 ~@12]/2",
  AH: "[~@11 g3@2 ab3@2 ~@9 d3@4 bb3@2 d4@5 g2@5 g4@2 d4@2 [g2,g3]@2 gb3@2 gb2 ~@7 f3@2 ~@2 [c3,f3]@2 [gb2,gb3]@2, ~@4 f2@9 ~@3 g2@14 ~@22 f2@11 ~, ~@6 c3@9 ~@25 d3@6 ~@8 c3@5 ~@5, ~@8 f3@5 ~@35 f3@7 ~@9]/2", // G F5 Gb
  AI: "[~@12 d4@4 ~@3 g3 ~@16 c3@4 ~@4 g3@2 ~@2 ab3@7 ~ [eb3,ab3]@4 [g2,g3]@3 ~, g3@15 ~@49, g2@12 ~@36 ab2@13 ~@3, ~@4 d3@8 ~@4 c3@17 ~@7 [bb2,bb3]@8 ~@16, ~@8 g4@8 ~@12 eb4@11 ~@25]/2", // Ab5 G Bb
  AJ: "[~@12 c4@4 ~@16 g4@4 ~@6 g4@6 ~@16 d4 ~@3 g2 ~@11 g4@8 g2@7 ~ [c2,g4,c5]@20 ~@12, f2@15 ~ g2@27 ~@5 c2@14 ~@2 [c2,c4]@10 ~@6 c2@14 ~@34, f3@7 ~ f3@7 ~@13 d4@10 ~@2 d4@8 ~@12 g3@24 ~@44, ~@4 c3@12 ~@4 d3@14 ~@2 d3@7 ~@9 g2@12 ~@9 g2@7 ~@48, ~@10 ab3@5 ~@9 g3@13 ~ g3@11 ~@7 c3@11 ~@9 c4@15 ~@4 c4@20 ~@13]/4", // C5 C
})).s("gm_acoustic_guitar_nylon").gain(0.4)

// chords · acoustic guitar nylon · soft notes
const acoustic_guitar_nylon_2 = note(`<
  ~@27 A B ~ C D ~@3 E F G ~@3 H ~@3 I J K ~ L M N O ~@4 P Q R S@2 ~@3 T U@2 V ~@6
>`.pickRestart({
  A: "~@3 c4 ~@12", B: "~@17 [bb3,d4]@9 ~@6", C: "~@17 g4@9 ~@6", D: "~@3 c4 ~@4", E: "~@12 ab3@3 ~@17",
  F: "~@12 g3@7 ~@13", G: "~@4 g3@11 ~ ab3@12 ~@4", H: "~@3 ab2 ~@4", I: "~@8 ab4@8 ~@13 ab4@2 ~", J: "~@25 g4@6 ~",
  K: "~@13 eb3@3 ~ ab3@11 c3@2 ~@2", L: "[f3,c4,f4,ab4] ~@3 [f3,c4,g4] ~@3 [f3,c4,f4] ~@7",
  M: "~@5 eb4@19 ~@8, ~@2 c4@7 ~@7", N: "~ ab2@3 ~@4", O: "~@2 g2@11 ~@3", P: "~ d3 ~@30", Q: "~@12 d3@3 ~",
  R: "~@5 bb3 ~@10", S: "[~@22 eb4@15 ~@11 ab3@7 ~@9]/2", T: "~ g3@2 ~ g3@4 ~@24",
  U: "[~@26 g3@11 ~@9 gb2@2 ~@11 c4 ~@4]/2", V: "~@16 g3@2 g3 ~@13",
})).s("gm_acoustic_guitar_nylon").gain(0.24)

// chords · pad warm
const pad_warm = note("<A@5 B@2 C@3 D E F@5 G@8 H@2 I@8 J@3 K L M N@5 O@4 P@3 Q@7 R@4 S@6 T@5>".pickRestart({
  A: "[[eb5,g5]@95 ~@32 [bb3,f4,d5]@33, c5@127 ~@33, ~@95 [ab3,eb5]@31 ~@34, ~@3 bb4@2]/5", // Eb Bb Ab5
  B: "[[g3,g4,bb4,d5]@31 ~ c4@32, ~@31 [g4,c5,eb5]@31 ~@2]/2", // Gm Cm
  C: "[[ab3,bb4,c5,eb5]@31 g3@32 ~@16 f4@16 [ab3,ab4,c5,eb5], ~@31 [bb4,d5]@63 ~@2, ~@31 g4@46 ~@19, ~@63 bb3@32 ~]/3", // Ab Bb
  D: "[ab3,ab4,c5,eb5]@31 ~", E: "[g3,g4,bb4,d5]",
  F: "[[f3,f4,ab4,c5]@15 [g3,b4,d5]@16 c5@24 bb4@7 ~ [ab3,eb4,ab4,c5]@32 [g3,bb4,d5]@16 [c4,c5,eb5]@16 [f3,ab4,c5,eb5]@16 ~ g3@16, ~@15 g4@40 ~@40 g4@32 ~@16 [g4,bb4,d5]@16 ~, ~@31 eb5@64 ~@65, ~@31 c4@32 ~@97]/5", // Fm G Ab Gm Cm Fm7 Gm
  G: "[[ab3,ab4,c5,eb5]@16 [g4,c5]@16 [g4,b4]@15 ~ [c4,c5]@11 [bb3,bb4]@4 ab4@8 ~ bb4@7 ~ [g3,g4,bb4,d5]@32 [ab3,ab4,c5,eb5]@15 [f3,f4,ab4,c5]@16 f5@17 eb5@15 ~ [f3,f4,ab4,c5]@15 ~ g3@15 [c4,c5]@24 [bb3,bb4]@8 ~ [ab4,c5]@16, ~@16 [g3,d5]@32 eb5@32 ~@111 g4@48 ab3@17, ~@48 g4@15 [ab3,eb4,c5]@16 ~@64 [g3,g4,bb4]@32 ~@16 [b4,d5]@15 ~ eb5@48 ~]/8", // Ab C5 G C Bb Gm Ab Fm …
  H: "[[f3,f4,ab4]@16 c5@15 b4@16 ~@4 c4 ~@12, ~@16 d5@37 ~@11, ~ [g3,g4]@2 [g4,c5], ~@48 c4@3 ~@13, ~@49 eb5@15]/2", // Fm G C5
  I: "[~@12 ab4 ~@2 [ab3,bb4,c5,eb5]@32 [bb3,f4,bb4]@32 ~ [g3,bb4]@32 [c4,eb5]@31 ~ bb4@31 [g3,g4,bb4,d5]@32 ~ g4@15 f4@16 ~ [c5,eb5]@16, ~@47 d5@64 ~ c5@63 ~@64 [ab3,ab4]@17, ~@80 g4@63 [ab3,eb5]@32 ~@33 [bb3,bb4,d5]@32 ~@16]/8", // Ab Bb5 Gm Cm Gm Cm Ab Ab5 …
  J: "[~@15 [g3,bb4,d5]@16 [c4,c5]@17 [f3,ab4,c5,eb5]@15 [g3,g4,bb4,d5]@16 [ab3,ab4,bb4,c5]@16 ~, ~@5 g4@11 ~@16, ~@31 eb5@14 ~@51]/3", // Gm C Fm7 Gm Ab
  K: "c5@16 b4@15 ~, [g3,g4,d5]", L: "[c4,c5]@12 [bb3,bb4]@4 ab4@7 ~ bb4@7 ~, eb5, g4 [ab3,eb4,c5]",
  M: "~@15 g5@15 ~@2, [g3,g4,bb4,d5]", // Gm
  N: "[ab3@11 [g3,g4]@4 ~ [f3,f4,ab4]@15 f5@17 eb5@15 [f3,f4,ab4,c5]@17 [g3,b4,d5]@16 [c4,c5]@23 [bb3,bb4]@8 [ab3,eb4,ab4,c5]@17 [f3,f4,ab4,c5]@16, c5@31 ~@49 g4@48 ~@32, [ab4,eb5]@16 g3 ~@14 [g3,g4,bb4]@32 ~@33 eb5@49 ~@15]/5", // G Fm G C Bb Ab Fm Ab5 …
  O: "[g4@15 ~ [g4,b4]@15 ~ [ab4,c5,eb5]@31 [g3,g4,bb4,d5]@32 ~ f4@15 ~ [g3,g4,d5]@16, [g3,d5]@31 ab3@32 ~@32 [f3,c5]@17 ~@16, ~@95 ab4@14 ~@2 b4@16 ~]/4", // G Ab Gm G5 F5
  P: "[[c4,g4,c5,eb5]@31 [ab3,ab4,c5,eb5]@32 [g3,d5]@16 ~ [c4,c5,eb5]@16, ~@63 [g4,bb4]@32 ~]/3", // Cm Ab G5 Cm Gm
  Q: "[[f3,ab4,c5,eb5]@15 [g3,g4,bb4,d5]@16 ~ eb5@15 c5@16 ~ b4@16 [c4,g4]@15 [ab3,ab4]@16 ~ bb4@30 ~ ab3@13 [g3,g4]@3 ~ [f4,c5]@15 f5@16 ~ eb5@15 [f3,f4,ab4,c5]@16 ~, ~@31 [ab3,ab4,c5]@16 [g3,g4,d5]@33 [c5,eb5]@31 [g3,g4,d5]@31 ~ ab4@30 ~@51, ~@143 [c5,eb5]@16 f3@16 [eb3,g4,bb4]@32 ~@17, ~@160 g3 ~@63]/7", // Fm7 Gm C5 Ab G F5 Fm Ab …
  R: "[[g3,b4,d5]@15 ~@24 [bb3,bb4]@8 ab3@16 ~ [f3,f4]@16 c5@15 b4@16 ~ [ab3,ab4,c5,eb5]@16, g4@3 ~@2 [g3,g4,d5]@2 ~, ~@15 [c4,c5]@23 ~@9 [ab4,c5]@32 ~@49, ~ eb5@3 ~@4]/4", // G Bb F Ab G5 C Ab
  S: "[[f3,f4,ab4,c5]@15 ~@16 g5@13 ~@3 [ab3,ab4,eb5]@16 ~ [f3,f4]@16 ~@8 f5@21 ~@2 [f3,ab4,c5,eb5]@16 [g3,g4,b4,d5]@16 [c4,c5]@16 [bb3,bb4]@16 ~ ab4@16, ~@15 [g3,g4,bb4,d5]@32 c5@31 ~@65 eb5@49, ~@63 ab4@16 ~ [g3,g4,bb4,d5]@32 ~@31 g4@32 [ab3,c5]@17]/6", // Fm Ab5 F Fm7 G C Bb Gm …
  T: "[[f3,f4,ab4,c5]@15 ~ c5@15 ~ b4@16 ~@5 c3@83 ~@24, ~@2 [g3,g4,d5]@4 [c4,g4,c5,eb5]@11 ~@3]/5", // Fm G5 Cm
})).s("gm_pad_warm").gain(0.34)

// drums · hihat
const hihat = s("hh").struct("<~@2 [~ x ~@2]!44 ~ [~ x ~@2]!15 ~ [~ x ~@2]!6 ~@6>").gain(0.24)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@46 [~ x ~@2] ~@15 [~ x ~@2] ~@12>").gain(0.08)

// drums · crash
const crash = s("cr").struct("<~@18 A ~@19 B ~@7 A@2 ~@7 A ~@6 A@2 ~@11>".pickRestart({
  A: "~ x!16 ~@15", B: "~@16 x!16",
})).gain(0.08)

// drums · ride
const ride = s("rd").struct("<~@18 A ~@27 A@2 ~@7 A ~@6 A@2 ~@11>".pickRestart({
  A: "~ x ~@6",
})).gain(0.08)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@2 [~@3 x]!67 ~@6>").gain(1.22)

// drums · shaker
const shaker = s("sh").struct("<~ [x ~ x ~ x!4] ~@73>").gain(0.16)

stack(
  string_ensemble_1, string_ensemble_1_soft, string_ensemble_2, string_ensemble_2_soft, bass, piano, piano_soft,
  acoustic_guitar_nylon, acoustic_guitar_nylon_2, pad_warm, hihat, hihat_soft, crash, ride, cabasa, shaker
)

More by Masini