Strudelify

Mi Buen Amor

Gloria Estefan

KeyA minorTempo122 bpm
0:00/0:00
// Mi Buen Amor — Estefan Gloria
// 122 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 115 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(122/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(`<
  ~@5 A B C D E F G H I J K L M N O P Q R S T E U G H I J K L M V O P Q R S W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL
  AM AN AO AP AQ AR AS AT AU ~@4 I J K L M N O P Q R S W X Y Z AA AB AC AD AE AF F AH AI AJ AK AL AM AN AO AP AQ AR AV
  AT AW AX AY@2 AZ@7
>`.pickRestart({
  A: "a2@5 ~ e2@6 a2@3 ~", B: "d2@10 ~@2 a2@4 d2@8 d3@7 ~", C: "g2@3 g3@3 d3@2", D: "g2 ~@3 g2@10 ~@2",
  E: "c2@11 ~ g2@8 c3@4 d2@4 d#2@4", F: "e2 g#2 b2 e2", G: "a2@12 c2@12 e2@7 ~", H: "a1@11 ~ e2@8 a1@4 b1@4 c2@2 ~@2",
  I: "c#2@11 ~ e2@10 ~@2 c#2@7 ~", J: "e2@11 ~ e2@3 ~ a1@7 ~ a1@7 ~", K: "d2@12 a2@12 a1@7 ~",
  L: "d3@7 ~ c3@8 b2@8 a2@6 ~@2", M: "g#2@9 ~@3 g#2@11 ~ d3@6 ~@2", N: "e2@11 ~ b2@4 g#2@6 ~@2 e2@7 ~",
  O: "a2@20 e2@8 a2@3 ~", P: "a1@7 ~ b1@7 ~ c2@6 ~@2 c#2@7 ~", Q: "d2@9 ~@3 d2@15 ~ a2@4", R: "d3@12 d2@12 d3@7 ~",
  S: "g2@9 ~@3 g2@15 ~ d3@4", T: "g3@6 g2 ~ g1@8", U: "e2@8 g#2@8 b2@8 e2@7 ~", V: "e2@11 ~ b2@4 g#2@7 ~ e2@7 ~",
  W: "g3@6 g2 ~ f2@8", X: "e2@11 ~ b2@12 b1@8", Y: "e2@3 b2@3 b1 e2", Z: "a1@11 ~ e2@12 a2@8",
  AA: "a1@11 ~ e2@12 a2@7 ~", AB: "f#2@9 ~@3 f#2@12 a2@8", AC: "d2@12 a2@11 ~ d2@8", AD: "g2@11 ~ g2@15 ~ d2@4",
  AE: "g1@12 g2@12 d2@7 ~", AF: "c2@3 g2@2 c3 d2 d#2", AG: "e2@7 ~ g#2@8 b2@8 e2@8", AH: "a2@3 e2@3 a1@2",
  AI: "e2@4 a2@3 ~ a2@4 g#2@4", AJ: "c2@20 c3@11 ~", AK: "c2@8 c2@7 ~ d2@8 e2@7 ~", AL: "f2@3 c2@3 f2@2",
  AM: "f1@6 c2@6 f2@3 ~", AN: "a#1@12 f2@17 ~@3", AO: "a#1@11 ~ f2@16 ~@4", AP: "c2@25 ~@3 d2@2 ~@2", AQ: "e2@7 ~",
  AR: "d2@31 ~", AS: "g2@31 ~", AT: "c2@31 ~", AU: "g1@31 ~", AV: "g2@15 ~", AW: "a2@17 a1@15", AX: "~@3 d2@15 g#2@14",
  AY: "[~ g2@31]/2", AZ: "[~@16 c3@31 e3@9 d3@19 g2@44 c3@83 ~@22]/7",
})).s("gm_acoustic_bass").gain(0.45).pan(0.3)

// chords · string ensemble 1
const string_ensemble_1 = note("<A B C D E ~@59 A B F G H ~@46>".pickRestart({
  A: "~@24 g5@3 f6@5", B: "e6 ~@3 e3@2 [f3,g5] [g3,f6], ~@4 g5@17 ~@11",
  C: "e6 ~ d3@2 f3 g#5 b5 [d3,f6], g#3@8 ~@12 e3@9 ~@3, ~@5 g#5@13 ~@14", // Dm
  D: "[c3,e6]@9 ~@3 a5@2 ~@7 c4@4 b3@3 a3@4, ~@9 d3@8 [e3,a5]@15", // C A5
  E: "~@4 c6@4 ~ b3@3 [a3,a5]@4 [g#3,g#5]@4 ~ g3@10 ~, c4@2 b5 ~@2 a5@3", // A G#
  F: "e6@4 ~@4 d3@7 f3@5 g#5@4 b5@4 [d3,f6]@4, g#3@2 ~@3 e3@2 ~, ~@5 g#5@13 ~@14", // Dm
  G: "[c3,e6]@9 ~@3 a5@2 ~@10 b3@4 a3@4, ~@9 d3@8 [e3,a5]@15, ~@21 c4@5 ~@6", // C A5
  H: "~@4 c6@4 ~@4 a3@4 [g#3,g#5]@4 ~ g3@10 ~, c4@8 b5@3 a5@4 ~@5 a5@12, ~@9 b3@4 ~@19", // G#
})).s("gm_string_ensemble_1").gain(0.35).pan(0.3)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  A B@4 C@4 ~@35 D E@2 F@2 G H I@5 J K@2 L@3 M N@2 O@4 P Q R S@2 ~@10 T U@2 V@2 G H W@4 X J K@2 Y@3 M Z@2 ~@6 AA@4
>`.pickRestart({
  A: "~@23 g5@4 f6@5",
  B: "[e6@4 d5@4 c5@4 b4@4 ~@7 g5@4 ~@16 c5@5 ~@2 g#5@5 ~ g#4@3 ~ b4@3 ~ a4@3 ~ e5@3 b4@4 ~ e5@3 ~ c5@4 e5@4 d5@4 c5@4 e5@7 d5@4 c5@4 ~ [e4,a#4]@4 [a4,b4]@9 ~@3, ~@4 g5@15 ~@8 f6@4 e6@5 g#5@13 ~@6 b5@4 f6@4 e6@11 ~ a5@2 ~@2 a5@30 ~@19, ~@16 c5@11 ~ d5@4 b4@12 ~@4 d5@9 ~@71]/4", // Edim Asus2
  C: "[~ g3@28 ~@4 f#3@27 ~@4 [b3,d4]@33 ~@31, e4 ~, ~ c4@58 ~@4 g3@34 ~@31]/4", D: "~@19 c6@7 a5@6, ~@3 e3@13",
  E: "[~@23 d4@8 ~@25 g5@8, f#3@24 ~@7 c4@8 a3@9 d3@16, ~ d6@31 c6@12 a5@12 ~@8]/2",
  F: "[~@16 d5@9 c5@7 b4@22 ~@10, f5@17 ~@47, ~ g3@49 ~@14]/2", G: "~@15 e5@9 [a5,c6]@8",
  H: "[g#5,b5]@15 e5 e5@7 ~ b5@8, ~@23 g#5@8 ~", // G#m
  I: "[[e5,a5]@19 [e5,c6]@5 ~@4 d6@3 ~ e6@7 ~ d6@4 [a5,c6]@4 [c6,e6]@8 [b5,d#6]@7 ~@25 c4@20 d4@12 e4@7 ~@9 c6@3 ~ a5@2 ~@2 [a5,c6]@4 a5@4 [d5,f5]@4 [c5,d5]@4, ~@24 [c6,e6]@5 ~@2 c6@9 ~@24 d6@27 ~@44 e6@4 ~@21, ~@27 b5@4 ~@8 b5@5 ~@19 a#5@30 ~@46 c6@2 ~@19, ~@73 c5@14 ~@61 f5@2 ~@10, ~@79 g4@14 ~@34 f4@20 ~@13]/5", // A5 C Am C B Am Dm Csus2 …
  J: "~ a4@6 ~ e5@4 [f5,g#5]@3 ~ e5@4 [d5,f5]@10 ~@2, c5@5 ~@2 g5@5 ~@3 g5@5 ~@12", // Fm Dm
  K: "[~@9 g#5@11 [g3,c6]@11 ~ g#3@8 c4@8 d4@13 ~@3, ~@8 f3@12 ~@11 f6@16 ~@17]/2", // C5
  L: "[~@7 [e3,e5]@8 ~ g3@7 ~ c4@7 c#4@22 ~@27 f#5@8 ~ d5@7, ~@15 g5@8 c6@8 e6@17 ~@15 g4@14 f#4@11 d4@8, ~@64 g5@17 ~@15]/3", // E
  M: "f5@7 ~, f4@3 ~", N: "[~@8 e4@8 d4@7 ~@10 g3@22 g5@4 f6@5, ~@23 c4@32 ~@9, ~@32 d4@23 ~@9]/2",
  O: "[e6@4 d5@4 c5@4 b4@4 ~@7 g5@4 ~@16 c5@4 ~@3 g#5@5 ~ g#4@3 ~ b4@3 ~ a4@3 ~ e5@3 b4@4 ~ e5@3 ~ c5@4 e5@4 d5@3 c5@4 ~ e5@7 d5@4 c5@4 ~ [e4,a#4]@4 [a4,b4]@9 ~@3, ~@4 g5@15 ~@8 f6@4 e6@5 g#5@13 ~@6 b5@4 f6@4 e6@11 ~ a5@2 ~@2 a5@30 ~@19, ~@16 c5@11 ~ d5@4 b4@12 ~@4 d5@9 ~@71]/4", // Edim Asus2
  P: "~@2 e3 a3", Q: "b3@2 c4@2 c#4@3 ~", R: "~@11 f5@8 a5@4 g5@5 f5@4",
  S: "[~@8 a4@7 g4@8 f4@8 e4@14 ~@19, a5@17 ~@47]/2", T: "~@19 c6@6 a5@7, ~@3 e3@13",
  U: "[~@23 d4@8 ~@25 g5@8, f#3@24 ~@7 c4@8 a3@8 d3@17, ~ d6@31 c6@12 a5@12 ~@8]/2",
  V: "[f5@16 d5@9 c5@7 b4@22 ~@10, g3@49 ~@15]/2",
  W: "[[e5,a5]@18 ~ c6@4 ~ e6@3 ~ d6@3 ~ e6@8 [b5,d6]@4 [a5,c6]@4 [c6,e6]@7 ~ d#6@7 ~@24 c4@21 d4@12 e4@8, ~@18 e5@5 c6@4 b5@4 c6@9 ~@15 b5@8 a#5@30 ~@35, ~@64 d6@27 ~@37, ~@73 c5@14 ~@41, ~@79 g4@14 ~@35]/4", // A5 Bm Am C
  X: "~@8 c6@3 ~ a5@2 ~@2 [a5,c6]@4 a5@4 [d5,f5]@4 [c5,d5]@4, f4@5 ~@3, ~@7 e6@4 c6@2 ~@7 f5@2 ~@10", // Am Dm Csus2
  Y: "[~@8 e3@7 ~ g3@7 ~ c4@7 c#4@22 ~@27 f#5@8 ~ d5@7, ~@7 e5@8 g5@8 c6@8 e6@17 ~@15 g4@14 f#4@11 d4@8, ~@64 g5@17 ~@15]/3",
  Z: "[~@8 g4@8 c5@7 g5@8 d5@16 c#5@15 ~@2, ~@31 e5@32 ~]/2", AA: "[~@24 c3@79 ~@25, ~@23 [e4,c5]@79 ~@26]/4",
})).s("gm_string_ensemble_2").gain(0.56).pan(0.7)

// chords · piccolo
const piccolo = note("<~@4 A B C D E ~@26 F G H I J@2 K ~@33 F G H I L@2 M ~@26 N@2 O@5>".pickRestart({
  A: "~@28 e6 ~@3", B: "c6 ~@5 c6@13 ~ b5@2 ~ a5 g#5 ~ a5@2 b5 c6@3, ~@19 a5@2 ~@11", C: "e6@11 c#6@2 d6@15 e6@2 d#6@2",
  D: "~ d6@24 ~@3 f#6 ~ f#6@2, ~@29 g6@2 ~", E: "d6 ~@4 c6 ~ c6@2 g5@12 ~@11, ~@3 d6 ~@12", F: "~@5 e5 a5 b5",
  G: "c6@4 e6@3 d6@4 d#6@2 e6@10 ~ c6@8, ~@23 a6@9", H: "[e6,g6]@16 [a5,c6]@7 ~ c6@8, ~@23 g6@9",
  I: "[a5,f#6]@8 [g5,e6]@8 [f#5,d6]@13 ~@3", // D C D
  J: "[~@9 [a5,d6]@8 ~@15 b5@12 [g5,d6]@4 [f5,a5]@12 [f5,b5]@4, ~@17 [c6,g6]@7 d6@18 ~@22, ~@23 a5@8 ~@33]/2", // D5 G5 F Fdim C5
  K: "~ g#5@13 ~@18, e5@13 ~@19",
  L: "[~@9 [a5,d6]@8 ~@15 b5@11 [g5,d6]@5 [f5,a5]@12 [f5,b5]@4, ~@17 [c6,g6]@7 d6@18 ~@22, ~@23 a5@8 ~@33]/2", // D5 G5 F Fdim C5
  M: "~ g#5@13 ~@18, e5@7 ~@9", N: "[~@27 e6@4 c6@9 ~ c6@5 g5@9 a5@9, ~@13 d#6 ~@18]/2",
  O: "[~@2 c6@10 b5@11 d6@30 c#6@3 c6@73 ~@31]/5",
})).s("gm_piccolo").gain(0.32).pan(0.2)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@9 A B C@2 D E@3 F@2 G H I@4 A J C@2 K L@3 M@2 N H O@4 P Q@3 R S@3 T U@3 V@2 W@2 X@2 Y@4 Z@2 ~@3 AA K AB@3 AC@2 N H
  AD@4 P AE@3 AF AG@3 T AH@3 AI@2 W@2 AJ@2 AK@4 AL AM AN AO@8 ~
>`.pickRestart({
  A: "~@6 g3 e4, c3@7 ~, ~@4 g3@15 ~@13, ~@8 e4@11 ~@13, ~@3 c5@5",
  B: "~@12 b4@4 ~@9 b3@6 ~, e3, ~@4 b3@15 ~@3 e4@10, ~@9 e4@7 d5@15 ~",
  C: "[~@20 e4@4 ~@4 e4@7 ~@13 e4@11 ~@5, c5@59 ~@5, ~@12 a4@15 ~@9 a4@23 ~@5, ~@24 a3@15 ~@3 a3@17 ~@5]/2",
  D: "~ e4@9 ~@7 e3@3 ~@4 e3@3 ~ c#4@4, c#3, ~@3 e4@5, ~@20 a3@7 ~@5",
  E: "[~@4 a3@4 ~@4 g4@4 ~@22 a3@4 ~@9 [f4,a4]@3 ~@2 g4@3 ~ [d4,f4]@2 ~@2 g#4 ~@7 d4@4 ~@12 f4@6 ~@2, a2@16 [e3,e4]@15 ~ d4@9 ~@3 [d4,f4]@6 ~@5 e4@3 ~@6 [f4,a4]@12 f4@12 ~@8, g4@8 c#4@7 ~@9 a3@9 d3@61 ~@2, ~@47 a3@19 ~@15 a3@13 ~@2]/3", // F Dm E Dm F
  F: "[~@8 b4@12 ~@16 e4@8 ~@16 e4@3 ~, ~ g#3@17 ~@3 b4@43, ~@4 e4@21 ~@8 g#3@23 g#3@7 ~, ~@11 e4@4 ~]/2",
  G: "~@7 e3, a2, ~@5 a3@15 a4@12, ~ c4@2 a3, ~@12 e4@19 ~", H: "a2@4 b2@4 c3@4 c#3@3 ~",
  I: "[~@24 c4@5 ~@4 f#4@9 ~@10 a3@4 d3@7 ~@21 b3@4 ~@17 g3@11 d4@9 ~@3, ~ d3@15 ~ d3@12 ~ d3@6 ~@28 g3@16 ~@8 g3@14 ~@26, ~@4 c4@15 ~@109, ~@8 d4@23 ~@2 d4@36 ~@3 d4@21 ~@35, ~@12 g4@20 ~@12 f#4@28 ~@4 g4@18 ~@2 g4@29 ~@3]/4",
  J: "~@6 b4@2 ~@5 b3@3, e3, ~@2 b3@8 ~ e4@5, ~@9 e4@7 d5@14 ~@2",
  K: "e4@9 ~@8 e3@3 ~@4 e3@4 c#4@4, c#3, ~@3 e4@5, ~@20 a3@7 ~@5",
  L: "[~@4 a3@4 ~@4 g4@4 ~@22 a3@4 ~ [d4,f4]@4 ~@4 [f4,a4]@3 ~@2 g4@3 ~ [d4,f4]@2 ~@2 g#4 ~@23 f4@6 ~@2, a2@16 [e3,e4]@15 ~ d3@61 ~@3, g4@8 c#4@7 ~@9 a3@11 ~@12 a3@19 ~@5 d4@7 ~@3 a3@13 ~@2, ~@32 d4@9 ~@14 e4@3 ~@6 [f4,a4]@11 f4@13 ~@8]/3", // Dm F Dm E F
  M: "[~@8 b4@12 ~@16 e4@8 ~@12 g#3@5 e4@3, ~ g#3@17 ~@2 b4@43 ~, ~@4 e4@21 ~@8 g#3@23 ~@8, ~@11 e4@4 ~]/2",
  N: "~@7 e3, a2, ~@5 a3@15 a4@4 a3@8, ~@8 c4@23 ~, ~@12 e4@19 ~",
  O: "[~@25 c4@5 ~@2 f#4@10 ~@10 a3@4 d3@7 ~@21 b3@4 ~@17 g3@11 d4@9 ~@3, ~ d3@15 ~ d3@12 ~ d3@6 ~@28 g3@16 ~@8 g3@14 ~@26, ~@4 c4@15 ~@109, ~@8 d4@22 ~@2 d4@36 ~@4 d4@21 ~@35, ~@6 g4@10 ~@6 f#4@14 ~@2 g4@9 ~ g4@15 ~]/4",
  P: "~@12 g#4@7 ~ g#3@4 [e3,g#4]@4 [b2,e4]@4, ~ [e3,e4]@19 ~@12, ~@8 g#3@10 ~@2 b4@9 ~@3", // E E5 E
  Q: "[~@4 e4@5 ~@7 g#3@4 ~@4 e3@4 e4@3 ~@21 c4@7 ~@9 e4@4 ~@8 a2@2 ~@10 a4@4, b4@40 e4@23 ~ a3@12 e4@10 ~@2 e4@8, g#3@15 ~@5 e4@7 ~ g#3 ~@4 a3@11 a4@8 ~@8 c5@19 ~@17, ~@12 g#4@18 ~@6 c4@10 ~@2 a3@8 ~@4 c4@7 ~@5 c4@10 ~@2 c4@12, ~@38 a2@41 ~ [g2,g3]@16]/3", // G
  R: "~ d4 ~@5 d4, f#3!2, ~ f#4@23 f#4@8, ~@8 d4@11 d4@8 ~@5, ~@11 a4@21",
  S: "[~@33 b3@3 ~@37 d4@2 ~ g4@15 ~@5, d3@15 d2@9 d4@4 f4@16 f4@30 ~@22, ~@3 f#4@29 ~@6 d4@19 g3@3 d4@8 b3@21 ~@7, ~@8 d4@11 d3@13 g3@13 b3@3 g3@4 b3@12 g3@24 ~@8, ~@12 a4@21 ~@8 g2@49 ~@6]/3",
  T: "~@7 c4, ~ c3@23 [c3,e4]@7 ~, ~ g4@7 e4@16 ~@8, ~@4 c4@15 c4@9 ~@4, ~@12 g4@19 ~", // C
  U: "[~@8 e4@8 ~@12 b3@4 ~@57 g#3@7, e3@20 e3@12 ~ a3@19 a4@8 c4@9 ~@7 e4@8 c4@10 ~@2, ~@4 g#4@15 ~@5 e4@11 ~ c4@18 ~@2 a3@10 ~@2 a3@11 ~@2 a3@6 ~@9, ~@16 b4@21 ~@7 e4@18 ~@2 a4@25 ~@7]/3",
  V: "[~@2 a#3@4 ~@8 g3@2 ~@12 a#3@2 e4 ~, e4@15 ~ e4@13 ~@3, c3@15 ~@2 c3@21 ~@11 c3@14 ~, ~@12 g3@9 a#3@8 ~@15 a#3@8 g3@7 ~@5, ~@24 g4@35 ~@5]/2",
  W: "[~@12 f3@8 ~@4 a3@3 ~@5 g#3@12 ~@8 g#3@8 ~@4, ~ f3@10 ~@17 f3@7 ~@13 f3@13 ~@3, ~@4 f4@37 ~@3 f4@17 ~@3, ~@8 a3@9 ~@3 c4@7 ~@37]/2",
  X: "[~@16 g#3@4 [c4,d4,f4] ~@15 [c4,d4] ~@20 c4@6 ~, [c4,d4,f4]@9 ~@13 d4@9 ~, g#3@7 ~@37 c4@11 ~@9, ~ a#2@62 ~, ~@24 g#3@7 ~]/2", // Dm7 Csus2 Dm7
  Y: "[~ [c4,e4]@10 ~@5 c3@4 ~@4 c3@8 ~@4 c#4@6 ~@2 a3@6 ~@2 g3@8 c#4@4 d3@12 ~@12 a3@4 d3@5 ~@15 g2@4 g3@4 ~@4 g3@3 ~, ~ c3@15 ~@4 c4@7 ~@6 a2@14 ~@3 a2@14 ~@16 d3@9 ~@8 g2@14 ~@9 g2@8, ~@12 e4@53 ~@11 f#4@8 f#4@18 ~@2 b3@16 ~@8, ~@44 c#4@15 ~@41 g3@7 ~ d4@20]/4", // C
  Z: "[c3@12 ~@21 [b3,d4]@27 ~@4, c4@7 ~@9, ~@12 e4@21 ~@31, ~@8 c3@7 ~@17, ~@19 g3@40 ~@5]/2", // Bm
  AA: "~@20 a2@4 b2@3 ~ c3@2 ~@2",
  AB: "[~@4 a3@4 ~@4 g4@4 ~@22 a3@4 ~@9 [f4,a4]@3 ~@2 g4@3 ~ [d4,f4]@2 ~@2 g#4 ~@7 d4@4 ~@12 f4@6 ~@2, a2@16 [e3,e4]@15 ~ d3@61 ~@3, g4@8 c#4@7 ~@9 a3@11 ~@12 a3@19 ~@15 a3@13 ~@2, ~@32 d4@9 ~@3 [d4,f4]@6 ~@5 e4@3 ~@6 [f4,a4]@12 f4@12 ~@8]/3", // F Dm E Dm F
  AC: "[~@8 b4@12 ~@16 e4@8 ~@12 g#3@5 e4@3, ~ g#3@17 ~@2 b4@43 ~, ~@4 e4@21 ~@7 g#3@24 ~@8, ~@11 e4@4 ~]/2",
  AD: "[~@25 c4@5 ~@3 f#4@9 ~@10 a3@4 d3@7 ~@21 b3@4 ~@17 g3@11 d4@9 ~@3, ~ d3@15 ~ d3@12 ~ d3@6 ~@28 g3@16 ~@8 g3@14 ~@26, ~@4 c4@15 ~@109, ~@8 d4@22 ~@3 d4@36 ~@3 d4@21 ~@35, ~@12 g4@20 ~@12 f#4@28 ~@4 g4@19 ~ g4@30 ~@2]/4",
  AE: "[~@4 e4@5 ~@7 g#3@4 ~@4 e3@4 e4@3 ~@21 c4@7 ~@9 e4@4 ~@8 a2@2 ~@10 a4@4, b4@40 e4@23 ~ a3@12 e4@10 ~@2 e4@8, g#3@15 ~@5 e4@7 ~ g#3 ~@3 a3@12 a4@8 ~@8 c5@19 ~@17, ~@12 g#4@18 ~@6 c4@10 ~@2 a3@8 ~@5 c4@7 ~@4 c4@10 ~@2 c4@12, ~@38 a2@41 ~ [g2,g3]@16]/3", // G
  AF: "~ d4 ~@5 d4, f#3!2, ~ f#4@23 f#4@8, ~@8 d4@11 d4@8 ~@5, ~@3 a4@5",
  AG: "[~@33 b3@3 ~@37 d4@2 ~ g4@15 ~@5, d3@16 d2@16 g3@13 b3@4 g3@3 b3@12 g3@24 ~@8, ~@3 f#4@21 d4@9 ~@5 d4@19 g3@3 d4@8 b3@21 ~@7, ~@8 d4@11 d3@9 f4@16 f4@30 ~@22, ~@12 a4@21 ~@8 g2@49 ~@6]/3",
  AH: "[~@7 e4@9 ~@12 b3@4 ~@56 g#3@7 ~, e3@20 e3@12 ~ a3@19 a4@8 c4@10 ~@6 e4@8 c4@10 ~@2, ~@3 g#4@13 b4@21 ~@7 e4@18 ~@2 a4@25 ~@7, ~@24 e4@11 ~ c4@18 ~@2 a3@10 ~@2 a3@11 ~@2 a3@6 ~@9]/3",
  AI: "[~@2 a#3@4 ~@8 g3@2 ~@12 a#3@2 e4 ~, e4@31 ~ e4@26 ~@6, c3@15 ~@2 c3@21 ~@10 c3@14 ~@2, ~@12 g3@11 ~ g4@35 ~@5, ~@20 a#3@9 ~@15 a#3@8 g3@7 ~@5]/2",
  AJ: "[~@16 g#3@4 [c4,d4,f4] ~@15 [c4,d4]@2 ~@19 c4@6 ~, [c4,d4,f4]@9 ~@13 d4@9 ~, g#3@7 ~@37 c4@11 ~@9, ~ a#2@62 ~, ~@49 g#3@13 ~@2]/2", // Dm7 Csus2 Dm7
  AK: "[~ e4@8 ~@7 c3@4 c4@4 c3@8 ~@5 c#4@6 ~ a3@5 ~@3 g3@8 c#4@4 d3@12 ~@12 a3@4 d3@5 ~@15 g2@4 g3@4 ~@4 g3@3 ~, c3@15 ~@18 a2@14 ~@2 a2@14 ~@17 d3@10 ~@7 g2@14 ~@9 g2@8, c4@10 ~@2 e4@53 ~@11 f#4@8 f#4@18 ~@2 b3@16 ~@8, ~@44 c#4@15 ~@41 g3@7 ~ d4@20]/4",
  AL: "c3@12 ~@7 g3@13, c4@7 ~, ~@3 e4@5, ~@8 c3@7 ~", AM: "~@7 c#4, a2@23 ~ a2@8, ~ a3@3 c#4@3 ~, ~ d4@3, ~@3 e4@5",
  AN: "~@13 a4@4 ~@9 a#4@6, ~ d3@16 g#2@15, ~@6 c4@13 ~@2 c4@11, ~@9 d4@9 ~@6 f4@8",
  AO: "[~@3 a4@64 ~@28 c4@10 ~@9 c3@6 ~@14 e3@5 ~@10 d4@30 ~@5 c5@64 ~@8, ~ b3@64 ~@20 g3@24 ~ g3@10 ~@19 b3@42 [g3,e4]@64 ~@11, ~@2 [g2,d4]@64 ~@15 c3@33 ~@6 [a2,a3]@21 ~@38 c3@64 ~@13, ~@90 e4@30 ~@25 g3@35 d4@64 ~@12, ~@105 c4@14 ~@10 c4@11 d3@43 g4@64 ~@9]/8", // C G5 A
})).s("gm_acoustic_guitar_steel").gain(0.26).pan(0.6)

// chords · acoustic guitar steel · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@11 A ~ B ~@3 C@2 D ~@2 E F@2 ~@2 A ~ B ~@3 C@2 G ~@2 E H@2 ~@2 I ~@3 J ~@2 K L M ~ N ~ O P Q R ~ S T U ~@5 B ~@3 C@2
  G ~@2 E F@2 ~@2 I ~@3 J ~@2 K L V ~ N ~ O W@2 R ~ S T U X ~ Y@3 ~@6
>`.pickRestart({
  A: "~ a3@19 ~@12", B: "~@5 a3@10 ~@17", C: "[~@25 e4@11 ~@28, ~@9 g#3@7 ~@16]/2", D: "~ b4@2 ~@29, a4@5 ~@3",
  E: "~@6 d3@15 ~@7 a3@3 ~", F: "[~@4 b3@14 ~@10 b3@13 ~@5 b3@9 ~@9]/2", G: "a4@5 ~@3, b4 ~@15",
  H: "[~@4 b3@15 ~@9 b3@13 ~@5 b3@9 ~@9]/2", I: "~@24 a4@3 ~@5", J: "~@4 b3@9 ~@19",
  K: "~@6 b3@2 ~@2 b3 ~@5, ~@12 a3 ~@19", L: "~@3 a4@4 ~@9", M: "~@9 c4 ~@22", N: "~@5 a#3@2 ~@25", O: "~@3 f3@4 ~@9",
  P: "~@25 g#3@2 ~@5", Q: "g#3@5 ~@4 g#3@3 ~@20", R: "~@28 c4@3 ~", S: "~@4 a3@11 ~@17", T: "~@3 g3 ~@4",
  U: "~@4 g3@11 ~@17", V: "~@4 c4 ~@11", W: "[~@25 g#3@2 ~@4 g#3@5 ~@5 g#3@3 ~@20]/2", X: "~@21 a3@11",
  Y: "[~@3 g3@32 ~@13]/3",
})).s("gm_acoustic_guitar_steel").gain(0.15).pan(0.6)

// other · viola
const viola = note("<~ A B C D ~@60 A B C D ~@46>".pickRestart({
  A: "~@4 d5@4 c5@4 b4@4 c5@11 d5@5", B: "b4@11 c5@5 d5@8 g#4@4 b4@4", C: "a4 e5 b4 e5 c5 e5 d5 c5",
  D: "~@3 d5@4 c5@4 ~ b4@4 g#4@4 a4@12, e5@5 ~@27",
})).s("gm_viola").gain(0.21).pan(0.3)

// chords · piano
const piano = note(`<
  ~@5 A B C D E F G@2 H I J@2 K L M N O P Q R S T@3 U V@3 W@4 X@3 Y Z@8 AA AB AC@2 AD@2 AE AF AG AH AI@3 AJ AK AL ~@4 U
  V@3 AM@4 AN@3 Y AO@8 AA AP AQ@2 AR@2 AS AT AU AH AV@3 AW AK AX ~@10
>`.pickRestart({
  A: "e4@3 ~@3 [g3,c4]@2, a2@31 ~, [g3,c4]@3 ~, ~@12 e4@19 ~", B: "~@12 e4@19 ~, [f#3,c4]@31 ~, ~ d3@31",
  C: "~@25 g3@7, g2@31 ~, g3 b4, ~ [b3,d4]@31, ~@9 a4@23", D: "~ [a3,e4] ~@7 g2@18 ~@5, ~ c4@2 ~@5 [b3,d4,f4]@18 ~@6",
  E: "~@3 e4, c4, e4@3 ~, c3!2, ~@3 g4@5", F: "~@3 b4, e4@5 b3@3, b3 e3, e3@3 g#4@5, ~@5 e2@11",
  G: "[~@7 a3, a4@10 a3@3 a4@3, a2@15 a2@17, ~ c4@2 e4@13, ~@2 a3@3 c4 a3@3 c5@7]/2",
  H: "~@3 c#4, e4, c#4@3 ~, c#3@5 c#3@3, ~@3 a4@5", I: "~@3 e4, a2, ~ a3@3 a3@4, ~ c#4@3, ~@3 a4@5",
  J: "[~@5 c4 ~ a3, d4@14 a3@4 d3@5 ~@3 d3@6, d3@6 f4@17 ~@9, ~ a3@9 a3@2 d3@4 d4@7 ~ b3@8, ~@3 d2@29]/2",
  K: "~@3 b3@2 ~@2 e4, g#2, e4@3 e4@4 ~, ~ g#3@2 g#3, ~@5 b3@3", L: "~@3 e4, g#4, b3@5 b3@3, ~@3 b4@5, ~ e3",
  M: "~@7 e3, [a2,a4], ~@3 a3@5 a3@4 a3@4, ~@3 e4@5, ~@3 c4@2 c4@3", // A
  N: "~@12 c#3@3 ~, a2@15 ~, ~@4 b2@11 ~, ~@8 c3@7 ~", O: "~@3 d3, e4, c4@4 d3 c4@3, d3@3 g4@5, ~@3 d2@13",
  P: "~ f#4@11 ~@8 a3@12, [d2,d4], a3@5 ~@3, ~@3 f#4@5, ~ d3", Q: "~@7 d3, g2@3 d4, d4@5 b3@3, b3 g3, g4@2 g3 g4@5",
  R: "~@3 b3, [g2,d4], b3@3 ~, ~@4 g3@5 ~@7, ~@3 g4@5", // G5
  S: "~@28 g3@3 ~, ~ [c3,e3]@30 ~, ~ g3@19 d5@11 ~, ~ c4@10 d#5@20 ~, ~@5 d5 e5@6 c4@4", // C
  T: "[~@25 b3@7 ~@52 e5@12, e3@20 g#4@11 ~@5 a4@36 a3@8 ~ a3@15, ~@5 g#3@27 a3@12 c5@52, ~@3 e5@16 a4@5, ~@17 e4@15 ~@9 a2@23 ~@4 a5@27 ~]/3",
  U: "~@5 c#4@3, ~@4 c#4@15 ~@13, ~@12 a4@19 ~",
  V: "[~@9 e4@7 ~@4 a3@10 a2@2 ~@56 a4@8, g4@30 a3@39 d4@3 c5@4 d4@4 b4@16, [e3,c#4]@16 a2@14 ~@2 d4 d3@11 a4@20 d5@21 d4@11, ~@11 d2@21, ~@33 f4@19 d4@5 f4@39]/3", // C#m
  W: "[~@29 b2@2 ~@3 b4@10 ~@12 e4@6 ~@27 a3@6 ~@21 c5@12, g#2@30 ~@2 e3@12 b4@19 ~@8 a3@5 c5@19 d5@2 d#5@11 d5@5 a3@15, g#4@12 e4@18 ~ e4@21 b3@11 c4@19 a3@2 c4@44, ~@5 b3@15 g#4@12 ~ [e2,g#4]@30 ~@2 [a2,e4,a4]@63, ~@8 g#3@22 ~ b3@17 e3@14 e3@35 a3 e5 g5@29]/4", // E A5
  X: "[~ g4@11 ~@16 g4@3 ~@2 f#4@11 ~@16 d3@3 ~ g4@11 ~@17 g3@4, c4@19 c4@12 a3@21 a3@11 b3@25 b3@7 ~, ~ e4@23 e4@8 d4@24 d4@24 g3@12 ~@4, ~ d3@15 d3@15 d3@17 ~ d3@11 ~@3 g2@32 ~, ~@12 g4@16 ~@16 f#4@19 ~ g3@8 ~@4 g4@20]/3",
  Y: "~ b3@11 ~ b3@4 [f3,b3,d4,f4]@13 ~@2, ~ [g3,d4,g4]@15 ~@16", // Bdim G5
  Z: "[~ b3@11 ~@21 g#4@11 ~@12 d4@7 ~@2 a4@11 ~@76 f#3@8 ~@24 [d4,f#4]@7 ~@33 b3@12 ~@13 g3@6 ~, e4@32 d4@24 ~@7 c4@17 a3@16 a3@16 g3@8 c4@40 [d4,f#4]@24 ~@7 b3@18 g3@3 b3@9 d4@15 b3@5 g3@4 d4@11, ~ e3@8 ~@3 b3@20 b3@20 b3@12 ~ a2@61 ~@34 d3@17 d3@15 [g2,d3]@64, ~@17 e3@12 e3@19 ~ e3@14 e3@5 ~@8 a4@16 a4@35 ~ f#4@20 f#4@11 ~@33 d4@24 g3@8 g4@32, ~@20 b4@12 ~@12 g#4@19 ~ e4@24 e4@12 c4@8 c5@18 ~@3 a4@43 a4@20 ~ f4@6 g3@5 f4@51 ~]/8", // D G5
  AA: "[c4,e4]@3 ~@3 c3@2, c3@3 ~, ~@3 e4@5, ~ c2, ~@5 g4@3", // C
  AB: "~@3 b3@2 b3@3, e2@31 ~, [b3,e4]@12 g#4@19 ~, ~@4 e3@5 ~@7", // E5
  AC: "[~@7 g#4, [a2,a4]@15 a2@17, ~@4 c4@15 ~ c4@8 c4@8 c4@9 ~@3 [e4,a4]@16, ~@8 a3@9 ~@7 a3@16 ~ a3@23, ~@3 e4@5 a4@4 ~@4]/2", // A A5
  AD: "[~ [f3,g3]@2 ~@53 e3@5 c3@3, e4@33 g3@7 c3@8 d3@5 g3@9 ~@2, ~ c3@23 c3@9 a#3@29 ~@2, ~@6 a#3@10 g4@15 ~, ~@12 g3@5 c2@45 ~@2]/2", // Fsus2
  AE: "~ f4@11 ~@12 f3@8, f2, c4@5 c4@3, ~ f3@16 ~@15, ~@3 f4@5",
  AF: "~@21 g#3@9 ~@2, [f2,d4]@15 ~, g#3@19 ~@13, ~ [c4,g4]@29 ~@2, ~@5 f3@10 ~", // Dm C5
  AG: "~ g#3@10 ~@8 g#3@13, ~ [d4,f4]@31, ~ [a#2,c4]@21 ~@10", // Dm A#sus2
  AH: "~@5 g4@8 ~@12 g#3@6 ~, a#2@31 ~, ~@5 c4@27, ~@5 g#3@5 ~@3 g#3@8 ~@11, ~@17 f4@14 ~",
  AI: "[~@24 c3@7 ~@26 c#4@6 ~@2 f#4@11 ~@13 d3@7, c3@24 ~@8 c#4@24 ~@7 a3@21 a3@12, c4@20 c4@11 ~ g3@32 d3@17 d3@8 ~@7, ~ e4@10 e4@33 e4@20 ~@12 f#4@20, ~@8 c2@24 ~ a2@17 ~@15 [d2,c4]@31]/3", // D7
  AJ: "~ d4@11 ~@12 g3@8, g2!2, ~ b3@31, ~ g3@23 ~@8, ~@3 d4@5",
  AK: "~@3 c3, [c2,c4], ~ g3@20 g3@11, ~@7 c3@10 ~@15, ~@3 e4@5", AL: "[g2,g3,b3,d4]@31 ~",
  AM: "[~@29 b2@2 ~@3 b4@10 ~@12 e4@6 ~@27 a3@6 ~@21 c5@12, g#2@30 ~@2 e3@12 b4@19 ~@2 [e4,a4]@43 d5@5 a3@15, g#4@12 e4@18 ~@2 e4@20 b3@11 c4@8 a3@5 c5@6 a3@2 c4@44, ~@5 b3@15 g#4@12 ~ [e2,g#4]@30 ~ a2@33 a3 e5 g5@29, ~@8 g#3@23 b3@17 e3@14 e3@33 d5@2 d#5@31]/4", // A5 E
  AN: "[~ g4@11 ~@16 g4@3 ~@2 f#4@11 ~@16 d3@3 ~@2 g3@7 ~@20 g3@4, c4@19 c4@12 a3@21 a3@11 b3@25 b3@7 ~, ~ e4@23 e4@8 d4@24 d4@24 g3@12 ~@4, ~ d3@15 d3@15 d3@17 ~ d3@11 ~@4 g2@32, ~@12 g4@16 ~@16 f#4@19 ~ g4@11 ~ g4@20]/3",
  AO: "[~ [e3,b3]@11 ~@21 g#4@11 ~@12 d4@7 ~@2 a4@11 ~@76 f#3@8 ~@24 [d4,f#4]@7 ~@33 b3@12 ~@13 g3@6 ~, ~ e4@32 ~@11 g#4@19 ~ e4@24 e4@12 c4@8 c5@4 g3@8 c4@40 [d4,f#4]@24 ~@7 b3@18 g3@3 b3@9 d4@15 b3@5 g3@4 d4@11, ~@12 b3@20 d4@24 ~@7 c4@17 a3@16 a3@30 ~@3 a4@43 a4@20 ~ f4@6 g3@5 f4@51 ~, ~@17 e3@12 e3@19 ~ e3@14 e3@5 ~@8 a4@16 a4@35 ~ f#4@20 f#4@11 ~@33 d4@24 g3@8 g4@32, ~@20 b4@12 b3@20 b3@12 ~ a2@61 ~@34 d3@17 d3@15 [g2,d3]@64]/8", // E5 D G5
  AP: "~@3 b3@2 b3@3, e2@31 ~, [b3,e4]@12 g#4@19 ~, ~@8 e3@9 ~@15", // E5
  AQ: "[~@7 g#4, [a2,a4]@15 a2@17, ~@4 c4@16 c4@8 c4@8 c4@9 ~@3 [e4,a4]@16, ~@8 a3@9 ~@7 a3@16 ~ a3@23, ~@3 e4@5 a4@4 ~@4]/2", // A A5
  AR: "[~ [f3,g3]@2 ~@53 e3@6 c3@2, e4@33 g3@7 c3@8 d3@5 g3@9 ~@2, ~ c3@23 c3@9 a#3@30 ~, ~@6 a#3@10 g4@15 ~, ~@12 g3@5 c2@45 ~@2]/2", // Fsus2
  AS: "~ f4@11 ~@12 f3@7 ~, f2, c4@5 c4@3, ~ f3@16 ~@15, ~@3 f4@5",
  AT: "~@21 g#3@9 ~@2, [f2,c4,d4,g4]@15 ~, g#3@19 ~@13, ~@5 f3@10 ~", // Fsus2
  AU: "~ g#3@10 ~@8 g#3@13, ~ [d4,f4]@31, ~ [a#2,c4]@22 ~@9", // Dm A#sus2
  AV: "[~@24 c3@7 ~@26 c#4@6 ~@2 f#4@11 ~@13 d3@7, c3@24 ~@8 c#4@24 ~@7 a3@21 a3@12, c4@20 c4@11 ~ g3@32 d3@16 ~ d3@8 ~@7, ~ e4@10 e4@33 e4@20 ~@12 f#4@20, ~@8 c2@24 ~ a2@17 ~@15 [d2,c4]@31]/3", // D7
  AW: "d4@11 ~@13 g3@8, b3, g3@3 ~, g2!2, ~@3 d4@5", AX: "[a2,g3,d4,e4]@31 ~",
})).s("gm_piano").gain(0.25).pan(0.3)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@11 A@2 ~@2 B ~@2 C ~@3 D ~ E F G H@2 I ~ J@2 K ~@5 L ~ M ~ N@2 O P ~@2 Q R@2 S T U@2 ~@3 V W ~ X@2 ~@5 I ~ J@2 Y ~@5
  Z ~ AA ~ N@2 O P ~@2 Q AB@2 S T U@2 ~@3 V W ~ X@2 ~@11
>`.pickRestart({
// … 109 more lines

More by Gloria Estefan