Strudelify

Heaven's What I Feel (Corazon Prohibido)

Gloria Estefan

KeyC majorTempo133 bpm
0:00/0:00
// Heaven's What I Feel (Corazon Prohibido) — Estefan Gloria
// 133 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 164 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(133/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 · piano
const piano = note(`<
  A@6 B@4 ~@14 C@2 ~ D@3 E@2 ~@4 F G H@2 I@2 J@2 K@2 L@2 M@2 J@2 K@2 N@2 O@8 ~@16 C@2 ~ D@3 E@2 ~@4 F G H@2 I@2 J@2 K@2
  L@2 M@2 J@2 K@2 N@2 O@16 P@2 Q@2 R@4 I@2 J@2 K@2 L@2 M@2 J@2 K@2 N@2 M@2 J@2 K@2 L@2 S@4
>`.pickRestart({
  A: "[~@4 c5@4 g4@4 c5@2 g5@6 c5@3 ~ f5@3 ~ e5@2 c5@5 ~ c5@4 g4@4 c5@2 g5@6 c5@4 f5@4 e5@2 c5@5 ~ c5@4 g4@4 c5@2 g5@6 c5@4 f5@4 e5@2 c5@2]/6",
  B: "[~@2 c5@2 g4@2 c5 g5@3 c5@2 f5@2 e5 ~ [c1,c2]@14 ~@2, ~@30 c5@7 ~@27]/4", // C
  C: "[~@14 [e5,g5]@8 [c5,e5,g5]@9 ~, ~@14 c6@17 ~]/2", // Em C
  D: "[~@44 d6@2 e6 ~, ~@3 a5@4 e6@16 ~, ~@7 b5@9 ~@14 [e5,g5,c6]@17 ~, ~@8 [d4,f4,a4,c5,c6]@8 [e4,g4,c5]@31 ~, ~@11 d6@5 ~@32]/3", // C Dm7 C
  E: "[[c5,f5]@5 [a4,c5]@4 [f4,a4]@4 [c4,f4,a4]@3, [a5,f6], ~@5 f5@11, ~@9 c5@7]/2", F: "c4@9 ~ [c4,f4]@5 ~, a4",
  G: "[f#3,c4,a4]@10 ~@2 [f#3,f#4,a4]@3 ~, f#4 ~", // F#dim F#m
  H: "[[g3,g4,b4]@7 ~ [g3,g4,d5]@3 ~@20 [c4,d4,e4,f4,g4], ~@12 [g3,g4]@14 [a6,b6,c7] [d6,e6,f6,g6] [a5,b5,c6] [e5,f5,g5] [a4,b4,c5,d5]@2, ~@13 d5@12 [d7,e7]@7, ~@23 [b7,c8]@9, ~@3 [f7,g7,a7]]/2", // G G5 C G Am Em7 Am Em …
  I: "[b3 ~@5 g4@4 ~@12 [g5,e6]@9 ~, c3@14 [e5,c6]@17 ~, ~@2 g3@29 ~, ~@5 c4@26 ~, ~@10 [g4,c5]@21 ~]/2", // C C5
  J: "[~@3 e4 ~@3 [b4,d5], d5@9 d6@2 [b5,g6]@5, e3 e4, b4@3 g5@13, ~@2 e4 b4@6 b5 e3@6]/2", // Bm Em
  K: "[~@26 c5@5 ~, f3@22 a4@9 ~, a4@13 f4 c5@6 f4@11 ~, ~@5 f4@5 f5@21 ~, ~@7 g5@24 ~]/2",
  L: "[g#4@3 ~@10 g#4@3, d5@9 d5@7, f3@3 f3@5, ~@3 g#4@10 ~@3, ~@3 f5@4 f5@9]/2",
  M: "[~@6 g4@4 ~@12 [g5,e6]@9 ~, c3@14 [e5,c6]@17 ~, ~@2 g3@29 ~, ~@5 c4@26 ~, ~@10 [g4,c5]@21 ~]/2", // C C5
  N: "[g#4@3 ~@6 d5@3 [a#2,f4]@4, d5@9 ~@7, f3@3 f3@3 ~@2, ~@3 g#4@9 ~@4, ~@3 f5@4 f5@5 ~@4]/2", // A#5
  O: "[~@4 c5@4 g4@4 c5@2 g5@6 c5@3 ~ f5@3 ~ e5@2 c5@5 ~ c5@4 g4@4 c5@2 g5@6 c5@4 f5@4 e5@2 c5@5 ~ c5@4 g4@4 c5@2 g5@6 c5@4 f5@4 e5@2 c5@5 ~ c5@4 g4@4 c5@2 g5@6 c5@4 f5@4 e5@2 c5@2]/8",
  P: "[[g4,c5]@5 ~@4 [g5,b5,c6]@6 ~, [a3,e5]@15 ~, ~@5 [g4,b4,c5]@10 ~, ~@7 e6@8 ~]/2", // C5 Cmaj7 A5 Cmaj7
  Q: "[~@10 c5@4 ~@8 [c6,a6]@9 ~, [d3,c4,e4,f4,a4]@31 ~, ~@10 [e5,f5]@21 ~, ~@14 [c5,a5]@17 ~]/2", // F Dm7 Fmaj7 F
  R: "[f4@8 a#4@8 d5@12 ~@4 b4@14 b4@5 ~@12 [c4,d4,e4,f4,g4], [a#2,a#3]@32 ~@26 [a6,b6,c7] [d6,e6,f6,g6] [a5,b5,c6] [e5,f5,g5] [a4,b4,c5,d5]@2, ~@8 f4@24 ~@25 [d7,e7]@7, ~@16 a#4@16 g5@19 ~@4 [b7,c8]@9, ~@28 d5@23 ~@5 [f7,g7,a7]@8]/4", // C A# Am Em7 Am Em D7 Dsus2 …
  S: "[[d4,g4]@2 ~@5 c7@8 ~, [c3,g3]@17 e5@32 ~@15, ~@4 [d4,e4]@5 [g5,c6]@16 ~@7, ~@9 [g4,c5]@17 [d6,e6]@32 ~@6, ~@16 d5@11 g6@32 ~@5]/4", // G5 C5 Dsus2 C5 Dsus2
})).s("gm_piano").gain(0.4).pan(0.4)

// bass · synth bass 1
const bass = note(`<
  ~@15 A B@2 C@2 D@2 E@2 F G H I J@2 K L M N O P Q R S@2 T U V W X Y Z Y T U V W X Y Z AA AB@2 AC@2 AD@2 AE AF AB@2 AC@2
  AD@2 AE AF AB@2 AC@2 AD@2 AE AF F G H I J@2 K L M N O P Q R S@2 T U V W X Y Z Y T U V W X Y Z AA AB@2 AC@2 AD@2 AE AF
  AB@2 AC@2 AD@2 AE AF AG@2 AH@2 AI@2 AJ AK T U V W X Y Z Y T U V W X Y Z AA T U V W X Y Z Y AL@4
>`.pickRestart({
  A: "~@3 a#1", B: "[c2@27 ~ g1@2 c2@2]/2", C: "[a#1@7 c2]/2", D: "[a1@14 f1 g1]/2", E: "[g#1@29 ~ g#1@2]/2",
  F: "a1@3 ~ a1@3 ~ a1@3 ~ a1@2 a2!2", G: "a1@3 ~ a1@4 a1@4 a1@2 c2 ~", H: "d2@3 ~ d2@3 ~ d2@3 ~ d2 ~ c2 ~",
  I: "d2@3 ~ d2@3 ~ d2@3 ~ d2@2 c2 ~", J: "e2@3 ~ e2@3 ~ e2@3 ~ e2@2 d2 ~", K: "c2@3 ~ c2@2 ~@2 c2@3 ~ c2 ~ a#1 ~",
  L: "c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~", M: "d2@3 ~ d2@2 c2 ~ d2@2 ~@2 d2@3 ~", N: "d2@3 ~ d2@3 ~ d2@2 ~@2 d2@2 c2 ~",
  O: "e2@3 ~ e2@2 d2 ~ e2@3 ~ e2@3 ~", P: "e2@3 ~ e2@3 ~ e2@3 ~ e2@3 ~", Q: "f2@3 ~ f2@3 ~ f2@3 ~ f2@3 ~",
  R: "f#1@3 ~ f#1@7 ~ f#1@3 ~", S: "[g1@7 ~ g1@2 ~@2 g1@15 ~ g1@3 ~]/2", T: "c2 ~ c2 ~ c2 ~ c2@3 ~ c2 ~ c2@2 a#1 b1",
  U: "c2 ~ c2 ~ c2 ~ c2@3 ~ c2 ~ c2 ~ c2 ~", V: "e2 ~ e2 ~ e2 ~ e2@3 ~ e2 ~ e2@2 d2 d#2",
  W: "e2 ~ e2 ~ e2 ~ e2@3 ~ e2 ~ e2 ~ e2 ~", X: "f2 ~ f2 ~ f2 ~ f2@3 ~ f2 ~ f2@2 d#2 e2",
  Y: "f2 ~ f2 ~ f2 ~ f2@3 ~ f2 ~ f2 ~ f2 ~", Z: "f2 ~ f2 ~ f2 ~ f2 ~ f2@3 ~ f2@2 d#2 e2",
  AA: "f2 ~ f2 ~ f2 ~ f2 ~ a#1@3 ~ b1@3 ~", AB: "c2 ~ c2 ~ c2 ~ c2@3 ~ c2@3 ~ c2 ~",
  AC: "a#1 ~ a#1 ~ a#1 ~ a#1@3 ~ a#1@3 ~ a#1 ~", AD: "a1 ~ a1 ~ a1 ~ a1@3 ~ a1@3 ~ a1 ~",
  AE: "g#1 ~ g#1 ~ g#1 ~ g#1@3 ~ g#1@3 ~ g#1 ~", AF: "g#1 ~ g#1 ~ g#1@4 g#1@3 ~ g#1@3 ~",
  AG: "a1@2 ~ a1 ~@2 a1 a2 e1@2 e2 ~ g1@2 g2 ~", AH: "d2@2 ~ d2 ~@2 d2 d3 a1@2 a2 ~ c2@2 c3 ~",
  AI: "[a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1@4 a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1!2]/2",
  AJ: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~", AK: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g2@2 g1 ~ g2@2", AL: "[~ c2@50 ~@13]/4",
})).s("gm_synth_bass_1").gain(0.45).pan(0.6)

// chords · epiano1
const epiano1 = note(`<
  A@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I@2 J@2 K@2 L@2 ~@32 A@2 B@2 C@2 M@2 N O P@2 Q@4 R@2 S T U@4 ~@32 A@2 B@2 C@2 M@2 A@2
  B@2 C@2 M@2 ~@36
>`.pickRestart({
  A: "[c3@4 ~@3 g4, e4, g4@11 d4@5, c4@5 c4@3, ~@9 g3@7]/2",
  B: "[a#2@4 ~@3 g4, f4@11 f4@5, c4@5 c4@3, a3@9 a3@7, ~ a#2]/2",
  C: "[f4@7 ~@4 c4@5, a2, c4@11 ~@5, a3@5 ~@3, ~@7 f4@9]/2",
  D: "[g#2@7 ~ g#3@4 [a#2,a#3,d4,f4]@4, [c4,f4]@3 ~, g#3@6 ~ g#2@5 ~@4]/2", // A# F5
  E: "[c3@2 ~@5 g4, e4@11 e4@5, c4@5 c4@3, g3@3 ~@6 g3@7]/2",
  F: "[a#2@4 ~@3 g4, f4@3 f4, c4@5 c4@3, a3@3 ~ a#2@4, ~@9 a3@7]/2",
  G: "[f4@7 ~@5 c4@4, c4@3 ~, a2@8 ~ a3@5 ~@2, a3@6 ~ f4@4 ~@5]/2",
  H: "[g#2@6 ~@3 f4@3 [g#3,f4]@2 [a#2,a#3,f4]@2, [c4,f4]@9 ~@7, g#3@4 ~@3 g#3@5 ~@4]/2", // C# A#5 F5
  I: "[g4@3 ~@8 c5@5, [c3,d4,e4], ~@3 g4@13, ~@5 c4@4 c4@7, ~@3 g3@5]/2", // C
  J: "[~@11 c4@5, e4, c4@5 a#2@3, a#2@5 a3@2 a4@9, a4@3 f4@13]/2",
  K: "[~@7 a3, [a2,c4,f4], a3@5 c5@11, ~@3 a4@8 a4@5, ~@7 e5@9]/2", L: "[g#2,d4,f4,g#4]/2",
  M: "[g#2@7 ~ g#3@8, [c4,f4], g#3@6 ~ g#2@9]/2", N: "[c3,g3,c4]@10 c4@2 g3@2 [d4,e4,g4] ~, g4@13 ~@3",
  O: "~@2 d4@2 ~@2 c4@7 ~@3, ~ g4@7, ~ e4@2 ~@5, ~@2 [c3,g3]@5 ~", // C5
  P: "[a3@20 c5 ~ [c5,d5] ~@2 e5@2 d5@2 ~ c5 ~, c3@31 ~, f4@16 ~@8 a3@3 ~@2 a3@3, ~@25 d#5 ~@6]/2", // Csus2
  Q: "[~@10 a3@3 ~ [a3,c4,f4] ~@3 [a3,c4,f4]@8 ~@6 g#3@9 ~@3 g#3@3 ~ g#3@3 ~ g#3@2 g4 g#4 a4@2 b4@2 c5@2 d5 ~, f4@6 ~@7 f4@13 ~@6, c4@5 ~@11 d4@7 ~@9, a3 ~@7, ~ a2@21 ~@10 g#2@22 ~@10]/4", // F
  R: "[~@28 g5@3 ~, c3@29 ~@3, g4@14 g5@11 ~@7, e5@12 c5@9 ~ c5@9 ~, ~@9 g3@9 g4@10 ~@4]/2", S: "[c3,a4,c5,f5]@15 ~",
  T: "~@2 [f4,c5] ~@7 g#4 a4@4 ~, c3@15 ~, ~@10 c5@5 ~", // F5
  U: "[~@10 f4@4 ~@6 b2 ~@11 [g#3,d4]@9 ~ [d4,f4] ~@7 [d4,f4] ~@2 g#3 ~@6 [d4,f4]@3 ~, [a2,c4]@20 a2@11 ~ g#2@31 ~, a3@17 ~ a3@10 ~@27 g#4@8 ~, ~@14 a4@8 c4@6 ~@26 d4@5 ~@5, ~@26 f4@15 ~@13 f4@2 ~@8]/4", // G#dim Dm Am
})).s("gm_epiano1").gain(0.3).pan(0.7)

// chords · epiano1 · soft notes
const epiano1_soft = note(`<
  ~ A ~@3 B C ~ D@2 E@2 F@2 G@2 ~@3 H I@2 ~@35 A ~@3 B C ~ J ~@4 K ~@8 L@2 ~@33 A ~@3 B C ~@2 A ~@3 B C ~@37
>`.pickRestart({
  A: "c3@5 c3@3", B: "~ a3@3", C: "~@3 g#3", D: "[~@6 c3@7 c3@3, ~@3 g3@2 g3@4 ~@7, ~@2 c3 ~@5]/2",
  E: "[~@6 a3@3 ~@7]/2", F: "[~@7 a3, ~@6 a3@3 ~@2 f4@5, ~ a2]/2",
  G: "[~@11 g#2@3 ~@2, ~@4 g#3@3 ~@2 c4@5 ~@2, ~@6 g#2@5 ~@5]/2", H: "~ a3@7", I: "[~@5 a3 a3@3 a3@5 ~@2]/2",
  J: "~@12 c3 ~@3", K: "~@8 a2@7 ~", L: "[~@13 g#3@5 ~@6 g#3@7 ~]/2",
})).s("gm_epiano1").gain(0.13).pan(0.7)

// chords · pad warm
const pad_warm = note("<A@8 B@8 ~@40 A@8 ~@48 A@16 ~@36>".pickRestart({
  A: "[c4@32 a#3@32 a3@32 g#3@24 a#3@7 ~, g4@125 ~@3]/8", B: "[g4@93 ~@3 g#4@24 ~@8, g5@121 ~@7]/8",
})).s("gm_pad_warm").gain(0.29).pan(0.7)

// other · synth strings 1
const synth_strings_1 = note(`<
  ~@15 A B@3 C D@4 ~@7 E@6 F@3 G@2 H I J@2 K L M@4 N O P@2 ~@17 Q R@2 S@3 T ~@7 E@6 F@3 G@2 H I J@2 K L M@4 N O P@2 ~@6
  U V W@6 U X Y Z AA@2 AB AC AD@2 G@2 H I J@2 K L M@4 N O P@2 G@2 H I J@2 AE@2 AF@3 ~
>`.pickRestart({
  A: "~@5 c5@11", B: "g5/3", C: "f5 e5", D: "[c5@27 g5@24 c6@7 ~@6]/4", E: "[~@8 a4@4 b4@3 c5@81]/6", F: "[d5@7 ~]/3",
  G: "g5/2", H: "a5@3 b5", I: "g5@15 ~", J: "[c5@23 ~ f5@4 e5@4]/2", K: "d5@7 ~@3 g5 ~@3 g#5@2",
  L: "~@2 a#5@2 ~@2 c6@2 ~@2 d6 ~@3 g6@2", M: "e6/4", N: "g6@3 d6", O: "c6@3 g5", P: "[f5@25 ~@7]/2", Q: "~ g4",
  R: "[c5@7 g5]/2", S: "[c6@11 f6]/3", T: "c7 ~", U: "c6 d6", V: "d#6 f6", W: "[g6@22 f6 e6]/6", X: "d#6@8 f6@5 ~@3",
  Y: "b5@7 ~ c6@8", Z: "e6@11 ~@5", AA: "[a5@20 g5@4 a5@4 c6@3 ~]/2", AB: "a#5 d6", AC: "a6@15 ~", AD: "[g6@11 ~@5]/2",
  AE: "[d5@7 ~ f5@24]/2", AF: "[[c5,g5]@47 ~]/3",
})).s("gm_synth_strings_1").gain(0.35).pan(0.7)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@23 A B ~@21 C D ~@31 A B ~@21 C D ~@16 E F G H I J ~ K ~@14 C D ~@7 L ~@7 M N@2 ~@2
>`.pickRestart({
  A: "~@12 c6 b5 a#5 g5", B: "a5 ~@7", C: "~@10 g5 ~@3 g#5 ~", D: "~@2 a#5 ~@3 c6 ~@3 d6 ~@3 g6 ~",
  E: "~@2 g5 ~ f5 ~ e5 ~", F: "c5@2 ~@2 g5@2 ~@2 a5@3 ~ g5@2 ~@2", G: "e5 ~ c5 ~ f5 ~ e5 ~", H: "c5 ~ g5 ~ a5 ~ g5 ~",
  I: "~@2 c5 ~ f5 ~ e5 ~", J: "c5@2 ~@2 g5@3 ~ a5@2 ~@2 g5@2 ~@2",
  K: "~@8 b4 [c5,c#5] d5 [d#5,e5] f5 [f#5,g5] g#5 [a5,a#5]", L: "~@8 g4 [g#4,a4] a#4 [b4,c5] c#5 [d5,d#5] e5 [f5,f#5]",
  M: "f4 d#4 f4 g4 g#4 g4 g#4 a#4 c5 a#4 c5 d5 d#5 d5 d#5 f5", N: "g5/2",
})).s("gm_string_ensemble_1").gain(0.35).pan(0.4)

// other · lead 2 sawtooth
const lead_2_sawtooth = note("<~@8 [c5!3 c6 ~ c5 c6 c5!2 c6 ~ c5 ~ c6 ~@2]!8 ~@148>")
  .s("gm_lead_2_sawtooth").gain(0.07).pan(0.3)

// other · lead 2 sawtooth · soft notes
const lead_2_sawtooth_soft = note("<~@8 [~@4 c5 ~@5 c5 ~ c5 ~ c5!2]!8 ~@148>")
  .s("gm_lead_2_sawtooth").gain(0.04).pan(0.3)

// chords · lead 8 bass lead
const lead_8_bass_lead = note(`<
  ~@24 A@2 B@2 C D A@2 B@2 C@2 E F G ~ H@2 I@2 E@2 J@2 H@2 I@2 E@2 J@2 K@2 L@4 M N K@2 L@4 M N K@2 L@4 M N A@2 B@2 C D
  A@2 B@2 C@2 E F G ~ H@2 I@2 E@2 J@2 H@2 I@2 E@2 J@2 K@2 L@4 M N K@2 L@4 M N O P Q R S@2 T U H@2 I@2 E@2 J@2 H@2 I@2
  E@2 J@2 H@2 I@2 E@2 J@2 ~@4
>`.pickRestart({
  A: "~@2 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4]!2 ~@2 [a3,c4,e4] ~", // Am
  B: "~@2 [a3,d4,f4] ~@3 [a3,d4,f4] ~@3 [a3,d4,f4]!2 ~@2 [a3,d4,f4] ~", // Dm
  C: "~@2 [b3,e4,g4] ~@3 [b3,e4,g4] ~@3 [b3,e4,g4]!2 ~@2 [b3,e4,g4] ~", // Em
  D: "~@2 [b3,e4,g4] ~@3 [b3,e4,g4]!2 ~@2 [b3,e4,g4] ~@3 [b3,e4,g4] ~", // Em
  E: "~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4]!2 ~@2 [a3,c4,f4] ~", // F
  F: "~@2 [a3,c4,f#4] ~@3 [a3,c4,f#4] ~@3 [a3,c4,f#4]!2 ~@2 [a3,c4,f#4] ~", G: "[b3,d4,g4] ~@7 [b3,g4] ~@3 [b3,g4] ~@3",
  H: "~@2 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4]!2 ~@2 [g3,c4,e4] ~", // C
  I: "~@2 [g3,b3,e4] ~@3 [g3,b3,e4] ~@3 [g3,b3,e4]!2 ~@2 [g3,b3,e4] ~", // Em
  J: "~@2 [g#3,d4,f4] ~@3 [g#3,d4,f4] ~@3 [g#3,d4,f4]!2 ~@2 [g#3,d4,f4] ~", // Ddim
  K: "~@2 [g3,c4,e4]!2 ~@2 [g3,c4,e4] ~@3 [g3,c4,e4]!2 ~@2 [g3,c4,e4] ~", // C
  L: "~@2 [a3,c4,f4]!2 ~@2 [a3,c4,f4] ~@3 [a3,c4,f4]!2 ~@2 [a3,c4,f4] ~", // F
  M: "~@2 [g#3,d4,f4]!2 ~@2 [g#3,d4,f4] ~@3 [g#3,d4,f4] [d4,f4] g#3 ~ [g#3,d4,f4] ~", // Ddim Dm Ddim
  N: "~@2 [g#3,d4,f4]!2 ~@2 [g#3,d4,f4] ~@3 [g#3,d4,f4]!2 ~@2 [g#3,d4,f4] ~", // Ddim
  O: "~@2 [g3,c4,e4] ~@2 [g3,c4,e4] ~ [g3,c4,e4]@3 ~ [g3,c4,e4] ~@2 [g3,c4,e4] ~", // C
  P: "~@2 [g3,c4,e4] ~@2 [g3,c4,e4] ~ [g3,c4,e4]@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~", // C
  Q: "~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~ [a3,c4,f4]@3 ~ [a3,c4,f4] ~@2 [a3,c4,f4] ~", // F
  R: "~@2 [a3,c4,f4] ~@2 [a3,c4,f4] ~ [a3,c4,f4]@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~", // F
  S: "~@2 [a#3,d4,f4] ~@2 [a#3,d4,f4] ~ [a#3,d4,f4]@3 [a#3,d4,f4] ~@3 [a#3,d4,f4] ~", // A#
  T: "~@2 [g3,b3,d4] ~@2 [g3,b3,d4] ~ [g3,b3,d4]@2 ~ [g3,b3,d4] ~@3 [g3,b3,d4] ~", // G
  U: "~@2 [g3,b3,d4] ~@2 [g3,b3,d4] ~ [g3,b3,d4]@5 ~@4", // G
})).s("gm_lead_8_bass_lead").gain(0.2).pan(0.3)

// chords · pad sweep
const pad_sweep = note("<~@16 A@2 ~@5 B ~@140>".pickRestart({
  A: "[c2@15 ~, c3@25 ~@7]/2", B: "[d4,f4,g#4]@15 ~",
})).s("gm_pad_sweep").gain(0.43).pan(0.8)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@32 A@6 ~ B A C A C A C A C A C A C A C A D A C A C A C A D A@15 D A C A C A C A C A@6 ~ B A C A C A C A C A C A C A
  C A D A C A C A C A D A C A C A C A ~ A C A C A C A E A C A C A C A C A C A C A C A D A C A C A C A F ~@4
>`.pickRestart({
  A: "~ x ~ x", B: "~@8 x ~ x ~ x ~ x!2", C: "~@4 x ~@7 x ~ x!2", D: "~@3 x!2 ~@6 x!2 ~@3", E: "~@8 x!8",
  F: "~@4 x ~@5 x ~ x ~ x!2",
})).gain(0.57)

// drums · clap
const clap = s("cp").struct(`<
  ~@32 A@6 ~@2 A@15 ~ A@7 ~ A@15 ~ A@14 ~@2 A@15 ~ A@7 ~ A@7 ~ A@7 ~ A@15 ~ A@7 B ~@4
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.64)

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

// drums · open hat
const open_hat = s("oh").struct(`<
// … 83 more lines

More by Gloria Estefan