Strudelify

Cuba Libre

Gloria Estefan

KeyG♯ minorTempo240 bpm
0:00/0:00
// Cuba Libre — Estefan Gloria
// 240 bpm, 4/4, key G# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 276 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(240/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 · fretless bass
const bass = note(`<
  ~@32 A B C D@2 B C D@2 B C D@2 B C D@2 B C D@2 B C E@2 B C D@2 B C D@2 B C D@2 B C F@2 B C D@2 B C D@2 B C D@2 B C D@2
  B C D@2 B C D@2 B C D@2 B C G ~ B C D@2 B C D@2 B C D@2 B C D@2 B C D@2 B C E@2 B C D@2 B C D@2 B C D@2 B C D@2 B C
  D@2 B C D@2 B C D@2 B C H ~ B C D@2 B C D@2 B C D@2 B C E@2 ~@48 I J K L I J K L I J K L I J M ~ B C D@2 B C D@2 B C
  D@2 B C D@2 B C D@2 B C D@2 ~@11
>`.pickRestart({
  A: "~@2 g#2@2 ~@2 d#2 ~@3 b1@2 g#1@2 ~@2", B: "a#1@3 ~@5 c#2@6 d#2@2", C: "~@6 d#2 ~ d#1@4 g1@3 ~",
  D: "[g#1@3 ~@5 b1@5 ~ c#2@4 ~@4 c#1@2 c#2@3 ~ b1@3 ~]/2", E: "[g#1@3 ~@5 b1@5 ~ c#2@18]/2",
  F: "[g#1@3 ~@5 b1@5 ~ c#2@4 ~@14]/2", G: "g#1@5 ~@11", H: "g#1@3 ~@13", I: "g#1@3 ~@3 f#1@6 g#1@2 ~@2",
  J: "~@6 g#1@2 f#1@4 g#1@3 ~", K: "g#1@2 ~@4 f#1@6 g#1@3 ~", L: "~@6 g#1 ~ f#1@4 g#1@3 ~", M: "g#1 ~@7",
})).s("gm_fretless_bass").gain(0.45)

// other · piano
const piano = note(`<
  ~@32 A B C D E B C D E B C D E B C D E B C D E B C F@2 ~@31 G H@2 I@2 J@2 K@2 L@2 M@2 N@2 O ~ P@4 Q@2 R@2 S T U@2 V@4
  W@2 X@2 Y@2 Z@2 AA AB AC AD AA AB AC AD AA AB AC AD AA AB AC AE H@2 I@2 J@2 K@2 L@2 M@2 AF@2 AG AH P@4 Q@2 R@2 S T U@2
  AI@4 ~@32 AJ@8 AK@6 AL AM ~@16 P@4 Q@2 R@2 P@4 Q@2 R@2 P@4 Q@2 R@2 AN@8 ~@3
>`.pickRestart({
  A: "~@2 [g#2,g#4]@2 ~@2 [d#2,d#4]@2 ~@2 [b1,b3] ~ [g#1,g#3]@3 ~", // G# D# B G#
  B: "[g#3,g#4,g#5]@2 ~@2 [c#4,e4,c#5,e5]@2 ~@2 [g#3,g#4,g#5]@3 ~@3 [g3,g4,g5]@2", // G# C#m G# G
  C: "~ [c#4,d#4,c#5,d#5] ~@2 [g3,g4,g5] ~ [c#4,d#4,c#5,d#5] ~", // C#sus2 G C#sus2
  D: "[f#3,f#4,f#5]@2 ~@2 [b3,d#4,b4,d#5]@2 ~@2 [f#3,f#4,f#5]@3 ~@3 [f3,f4,f5]@2", // F# B F# F
  E: "~ [b3,c#4,b4,c#5] ~@2 [f3,f4,f5] ~ [b3,c#4,b4,c#5] ~", // Bsus2 F Bsus2
  F: "[[f#3,f#4,f#5]@2 ~@2 [b3,d#4,b4,d#5]@2 ~@2 [f#3,f#4,f#5]@3 ~@3 [f3,f4,f5]@18]/2", // F# B F# F
  G: "~ [d#3,d#4] [b2,b3] [g#2,g#3] [a#2,a#3] [b2,b3] [c#3,c#4] [d3,d4]", // D# B G# A# B C# D
  H: "[[d#4,d#5]@7 ~ [g#3,g#4]@5 ~ a4@8 [d#3,d#4,d#5]@4 ~@2 [d#4,d#5,d#6]@3 ~, ~@7 a3@3 ~@6]/2", // D# G# D#
  I: "[[d#4,d#5,d#6]@8 [f#3,f#4,f#5]@6 [g#3,g#4,g#5]@8 [b3,b5]@5 ~ [d#4,d#6]@2 ~@2]/2", // D# F# G# B D#
  J: "[[c#4,c#5,c#6]@10 ~@2 [b3,b4]@11 ~ [a#3,a#4,a#5]@7 ~, ~@12 b5@9 ~@11]/2", // C# B A#
  K: "[[a#4,a#5]@5 ~ [g#3,g#4,g#5]@7 ~@3, a#3@3 ~@5]/2", // A# G#
  L: "[~@4 [g#4,a#4,c#5] ~@3 [g#3,g#5]@4 ~@6 [a#4,c#5,d#5] ~@3 [a#3,a#5]@5 ~ [e4,e6]@2 ~@2, [e4,e6]@7 ~@7 [g3,g5]@7 ~@11]/2", // A#m7 G# D#7 A# E G
  M: "[~@4 [f#4,g#4] ~@3 [f#3,f#5]@5 ~@5 [g#4,b4]@2 ~@2 [g#3,g#5]@5 ~ [d#4,d#6]@3 ~, [d#4,d#6]@6 ~@8 [f3,f5]@7 ~@11, ~@2 b4 ~@13]/2", // F#sus2 F# G#m G# D# F
  N: "[[c#5,c#6]@6 ~@2 [e5,g#5]@3 ~ [b3,b4,b5]@9 ~@3 [a#3,a#4,a#5]@6 ~@2, c#4 ~@3]/2", O: "[g#3,g#4,g#5]@3 ~@13",
  P: "[[d#3,d#5,d#6]@2 [g#3,g#5]@2 [b3,b5]@2 [e3,e5,e6] ~ [d#3,d#5,d#6]@2 [g3,g5]@2 [a#3,a#5] ~ [d#3,d#5,d#6]@4 [g3,g5]@2 [a#3,a#5]@2 [d#3,d#5,d#6] ~ [e3,e5,e6] ~ [e3,e5]@2 ~@2 [d#3,d#5,d#6]@4 [g#3,g#5]@2 [b3,b5]@2 [e3,e5,e6] ~ [f#3,f#5,f#6] ~ [f#3,f#5,f#6]@2 ~@2 [f3,f5,f6]@4 [g#3,g#5]@2 [c#4,c#6] ~ [e3,e5,e6] ~ [e3,e5,e6]@2 [g#3,g#5] ~ [b3,b5] ~ [d#3,d#5,d#6] ~, ~@26 e6 ~@37]/4", // D# G# B E D# G A# D# …
  Q: "[[d#3,d#5,d#6]@2 [g#3,g#5] ~ [b3,b5] ~ [e3,e5,e6] ~ [e3,e5,e6]@2 [g#3,g#5]@2 [b3,b5] ~ [d#3,d#5,d#6]@4 [g3,g5] ~ [a#3,a#5] ~ [e3,e5,e6] ~ [e3,e5,e6]@4 [g3,a#3,g5,a#5] ~ [e3,e5] ~]/2", // D# G# B E G# B D# G …
  R: "[[d#3,d#5,d#6]@2 [g#3,g#5] ~ [b3,b5] ~ [e3,e5,e6] ~ [e3,e5] ~ [g#3,g#5] ~ [b3,b5] ~ [f3,f5,f6]@4 [g#3,g#5] ~ [b3,b5] ~ [f3,f5,f6] ~ [e3,e5,e6]@4 [g#3,b3,g#5,b5] ~ [d#3,d#5,d#6] ~, ~@4 e6 ~@11]/2", // D# G# B E G# B F G# …
  S: "[g#3,g#4,g#5]@3 ~ c#4@2 [e4,e5] ~ [g#3,g#4,g#5] ~ [g#3,g#5]@2 ~@2 [g3,g4,g5]@2, ~@4 c#5 ~@5 g#4 ~@5", // G# E G# G
  T: "~@2 [c#4,c#5]@3 ~ [d#4,d#5]@3 ~ [g3,g4,g5]@2 ~@2 [f#3,f#4,f#5] ~", // C# D# G F#
  U: "[[f#3,f#4,f#5]@4 b3@2 [d#4,d#5] ~ [f#3,f#4,f#5] ~ [f#3,f#4,f#5]@2 ~@2 [f3,f4,f5]@4 b3@2 [c#4,c#5] ~ [f3,f4,f5]@2 ~@2 [e3,e4,e5]@2 ~@2 [d#3,d#4,d#5] ~, ~@4 b4 ~@13 b4 ~@13]/2", // F# D# F# F C# F E D#
  V: "[[d#3,d#4,d#5]@4 g3@2 [a#3,a#4] ~ [e3,e4,e5]@4 ~@2 [d#3,d#4,d#5]@4 [g3,g4]@3 ~ a#3@2 [e3,e4,e5]@4 ~@2 [d#3,d#4,d#5]@4 [g#3,g#4]@3 ~ b3@2 [e3,e4,e5]@4 ~@2 [f3,f4,f5]@4 g#3@3 ~ b3@2 [f#3,f#4,f#5]@2 ~@2 [g3,g4,g5]@3 ~, ~@4 g4 ~@17 a#4 ~@15 b4 ~@11 g#4 ~@3 b4 ~@9]/4", // D# A# E D# G E D# G# …
  W: "[[g#3,g#4,g#5]@4 [c#4,c#5]@2 [e4,e5]@2 ~@2 [g#3,g#4,g#5]@2 ~@2 [g4,g5]@2 ~@2 [c#4,c#5]@3 ~ [d#4,d#5] ~ [g3,g4,g5]@4 [c#4,d#4,c#5]@2 ~@2, ~@14 g3@4 ~@10 d#5 ~@3]/2", // G# C# E G# G C# D# G …
  X: "[[g#3,g#4,g#5]@4 b3@2 [d#4,d#5]@2 ~@2 [f#3,f#4,f#5]@2 ~@2 [f3,f4,f5]@4 [g#3,g#4]@3 ~ b3@2 [f3,f4,f5]@3 ~ [g#3,b3,g#4,b4]@2 ~@2, ~@4 b4 ~@17 b4 ~@9]/2", // G# D# F# F G# F G#m
  Y: "[[d#3,d#5]@2 g3@2 a#4@2 [e3,e4,e5] ~ [e3,e4,e5]@4 [g3,a#3,g4,a#4] ~ [d#3,d#4,d#5]@4 g3@2 [a#3,a#4] ~ [e3,e4,e5] ~ [e3,e4,e5]@4 [g3,a#3]@2 ~@2, d#4 ~ g4 ~ a#3 ~@23 [g4,a#4] ~@3]/2", // D# E Gm D# A# E Gm
  Z: "[[d#3,d#4,d#5]@2 g#3@2 [b3,b4] ~ [e3,e4,e5] ~ [e3,e4,e5]@4 [g#3,b3,g#4,b4] ~ [f3,f4,f5]@11 ~@7, ~@2 g#4 ~@29]/2", // D# B E G#m F
  AA: "g#4@3 ~ c#5@2 ~@2 g#4@4 ~@2 g4@2, ~@4 e5 ~@11", AB: "~@2 [c#5,d#5]@2 ~@2 g4 ~ g4@4 c#5@2 ~@2, ~@12 d#5 ~@3",
  AC: "f#4@3 ~ d#5@2 ~@2 f#4@4 ~@2 f4@2, ~@4 b4 ~@11", AD: "~@2 [b4,d#5]@3 ~ f4@2 f#4@2 ~@2 g4@2 ~@2",
  AE: "~ [d#3,d#4,b4,d#5] [b2,b3] [g#2,g#3,f4] [a#2,a#3,f#4] [b2,b3] [c#3,c#4,g4] [d3,d4]", // G#m B C# D#m B C#dim D
  AF: "[[e4,e6]@7 ~ [g#3,g#5]@4 ~@2 [g3,g5]@7 ~ [a#3,a#5]@5 ~ [e4,e6]@2 ~@2]/2", // E G# G A# E
  AG: "~@2 [f3,f4] ~ [g3,g4] ~ [g#3,g#4] ~, [d#4,d#6]@3 ~@5", AH: "[a#3,a#4] ~ [b3,b4] ~ [c#4,c#5] ~ [d4,d5] ~",
  AI: "[[d#3,d#4,d#5]@4 g3@2 [a#3,a#4] ~ [e3,e4,e5]@4 ~@2 [d#3,d#4,d#5]@4 [g3,g4]@3 ~ a#3@2 [e3,e4,e5]@4 ~@2 [d#3,d#4,d#5]@4 [g#3,g#4]@3 ~ b3@2 [e3,e4,e5]@4 ~@2 [f3,f4,f5]@18, ~@4 g4 ~@17 a#4 ~@15 b4 ~@25]/4", // D# A# E D# G E D# G# …
  AJ: "[[d#3,d#4,d#5,d#6]@2 [g3,g5] ~ [a#3,a#5]@2 [e3,e4,e5,e6] ~ [e3,e4,e5,e6]@3 ~ [g3,a#3,g5,a#5] ~ [d#3,d#4,d#5,d#6]@4 [g3,g5] ~ [a#3,a#5] ~ [e3,e4,e5,e6] ~ [e3,e4,e5,e6]@4 [g3,a#3,g5,a#5] ~ [d#3,d#4,d#5,d#6]@4 [g#3,g#5]@2 [b3,b5] ~ [e3,e4,e5,e6] ~ [e3,e4,e5,e6]@4 [g#3,b3,g#5,b5] ~ [f3,f4,f5,f6]@4 [g#3,g#5] ~ [b3,b5] ~ [e3,e4,e5,e6] ~ [e3,e4,e5,e6]@4 [g#3,b3,g#5,b5] ~ [d#3,d#4,d#5,d#6]@4 [g3,g5] ~ [a#3,a#5]@2 [e3,e4,e5,e6] ~ [e3,e4,e5,e6]@3 ~ [g3,a#3,g5,a#5] ~ [d#3,d#4,d#5,d#6]@4 [g3,g5] ~ [a#3,a#5] ~ [e3,e4,e5,e6] ~ [e3,e4,e5,e6]@4 [g3,a#3,g5,a#5] ~ [d#3,d#4,d#5,d#6]@4 [g#3,g#5]@2 [b3,b5] ~ [e3,e4,e5,e6] ~ [e3,e4,e5,e6]@4 [g#3,b3,g#5,b5] ~ [f3,f4,f5,f6]@4 [g#3,g#5] ~ [b3,b5] ~ [e3,e4,e5,e6] ~ [e3,e4,e5,e6]@4 [g#3,b3,g#5,b5] ~ [d#3,d#4,d#5,d#6]@2]/8", // D# G A# E Gm D# G A# …
  AK: "[[g#3,g#4,g#5]@5 ~ [a#3,c#4,a#4,c#5]@2 ~@2 [g#3,g#4,g#5]@2 ~@2 [g3,g4,g5]@4 [a#3,a#4]@3 ~ [c#4,c#5]@2 ~@2 [g3,g4,g5]@2 ~@2 [f#3,f#4,f#5]@4 [b3,b4]@2 ~@2 d#5@2 ~@2 [f#3,f#4,f#5]@2 ~@2 [f3,f4,f5]@4 [b3,b4]@4 [c#4,c#5]@3 ~ [e3,e4,e5] ~@3 [d#3,d#4,d#5]@4 [g3,g4]@3 ~ [a#3,a#4]@3 ~ [e3,e4] ~@3 [d#3,d#4,d#5]@4 [g3,g4]@2 ~@2 [a#3,a#4]@3 ~ [e3,e4,e5]@2 ~@2 [d#3,d#4,d#5]@2, ~@37 e5 ~@10]/6", // G# A#m G# G A# C# G F# …
  AL: "~@2 [g#3,b3,g#4,b4]@3 ~ [d#3,d#4,d#5] ~ [e3,e4,e5]@4 ~@2 [f3,f4,f5]@2", // G#m D# E F
  AM: "~@2 [g#3,b3,g#4,b4]@3 ~ [f3,f4,f5] ~ [f#3,f#4]@2 ~@2 [g3,g4,g5]@2 ~@2, ~@8 f#5 ~@7", // G#m F F# G
  AN: "[[g#3,g#4,g#5]@4 [c#4,c#5]@2 [e4,e5]@3 ~ [g#3,g#4,g#5]@2 ~@2 [g3,g5]@4 c#4@4 [d#4,d#5]@4 [g3,g5]@2 ~@2 [f#3,f#4,f#5]@4 [b3,b4]@3 ~ [d#4,d#5]@2 ~@2 [f#3,f#4,f#5]@2 ~@2 [f3,f5]@4 [b3,b4]@4 [c#4,c#5]@2 ~@2 [e3,e4,e5]@2 ~@2 [d#3,d#5]@4 [g3,g4]@2 ~@2 [a#3,a#4] ~ [e3,e4,e5]@3 ~ g3 ~ [d#3,d#4,d#5]@4 g3@2 [a#3,a#4] ~ [d#3,d#4,d#5] ~ [e3,e4,e5]@4 ~@2 [d#4,d#5]@4 [g#3,g#4]@2 b3@2 ~@2 [e3,e4,e5]@3 ~ g#3 ~ [f3,f4,f5]@9 ~@9, ~@14 g4@2 ~@2 c#5@2 ~@6 g4 ~@19 f4@2 ~@14 d#4@3 ~ f#3 ~@15 g4 ~@11 d#3@2 ~@4 b4 ~@9 [g#4,b4,e5] ~@17]/8", // G# C# E G# G D# G F# …
})).s("gm_piano").gain(0.33).pan(0.4)

// chords · epiano2
const epiano2 = note(`<
  ~ A@2 B@2 C@2 D@2 E@2 F@2 E@2 G@2 ~@40 E@2 G@2 E@2 G@2 E@2 G@2 E@2 G@2 E@2 G@2 E@2 G@2 E@2 G@2 E@2 G@2 C@2 D@2 ~@36
  E@2 G@2 E@2 G@2 E@2 G@2 E@2 G@2 C@2 D@2 ~@127
>`.pickRestart({
  A: "[[g#3,a#3,c#4,d#4]@7 [g3,a#3,c#4,d#4]@9]/2", B: "[[f#3,b3,d#4,f#4]@7 [f3,g#3,b3,d#4]@9]/2",
  C: "[[g#3,a#3,c#4,d#4]@7 [g3,a#3,c#4,e4]@9]/2", D: "[[f#3,b3,d#4,f#4]@7 [f3,b3,d#4,g#4]@9]/2",
  E: "[[g#3,a#3,c#4,e4,g#4]@7 [g3,a#3,c#4,d#4,g4]@9]/2", F: "[[f#3,g#3,b3,d#4,f#4]@7 [f3,g#3,b3,d#4,g#4]@9]/2",
  G: "[[f#3,g#3,b3,d#4,f#4,a#4]@7 [f3,g#3,b3,d#4,g#4]@9]/2", // G#m7 Fm7b5
})).s("gm_epiano2").gain(0.22).pan(0.1)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~ A@2 B@2 C@2 D@2 E@2 F@2 E@2 G@2 ~@72 H@2 I@2 J@2 K@2 L@2 M@2 N@2 ~@42 H@2 I@2 J@2 K@2 L@2 M@2 N@2 ~@80 O@2 ~@35
>`.pickRestart({
  A: "[[g#3,a#3,c#4,d#4]@7 [g3,a#3,c#4,d#4]@9]/2", B: "[[f#3,b3,d#4,f#4]@7 [f3,g#3,b3,d#4]@9]/2",
  C: "[[g#3,a#3,c#4,d#4]@7 [g3,a#3,c#4,e4]@9]/2", D: "[[f#3,b3,d#4,f#4]@7 [f3,b3,d#4,g#4]@9]/2",
  E: "[[g#3,a#3,c#4,e4,g#4]@7 [g3,a#3,c#4,d#4,g4]@9]/2", F: "[[f#3,g#3,b3,d#4,f#4]@7 [f3,g#3,b3,d#4,g#4]@9]/2",
  G: "[[f#3,g#3,b3,d#4,f#4,a#4]@7 [f3,g#3,b3,d#4,g#4]@9]/2", H: "[[e3,g#3]@7 a3@9]/2", I: "[[f#3,a#3]@7 [f3,b3]@9]/2",
  J: "[[g#3,c#4]@3 [g3,b3]@3 [f#3,a#3]@2]/2", K: "[[f3,a#3]@11 ~ [f3,g#3]@19 ~]/2",
  L: "[g#3@4 [c#4,e4]@3 [g3,c#4,d#4]@9]/2", M: "[f#3@4 [b3,d#4]@3 [f3,b3,c#4]@9]/2",
  N: "[[g#3,a#3]@3 [g3,b3]@5, c#4]/2", O: "[[g#3,b3,d#4]@31 ~]/2",
})).s("gm_synth_strings_1").gain(0.1).pan(1)

// chords · brass section
const brass_section = note(`<
  ~@48 A B C D E F G H@2 ~@15 I J ~@22 K L M N@2 O@2 P A Q R S T U R S T U R S T U R S T V W X Y Z W AA@2 ~@23 K L M N@2
  O@2 P AB Q R S T U R S T U R S T U R AC@2 ~@50 AD AE AF AG AH AI ~ AD AE AF AG AH ~ A Q R S T U R S T Q R S T U R S T
  Q R S T U R S T ~@10 AJ
>`.pickRestart({
  A: "~ d#4 f4 g4 g#4 a#4 b4 c#5", B: "d#5 ~@3 d#5 ~@3", C: "~@2 c#5 ~@3 d#5@6 e5 ~@3", D: "d#5 ~@7 d#5@5 ~ d#5 ~",
  E: "~ d#5 ~ c#5 d#5@2 b4 ~", F: "c#5@4 d#5@2 ~@8 d#5 ~", G: "~@2 d#5@2 ~@2 c#5@2 d#5@4 a#4 ~@3",
  H: "[b4 ~ g#4 ~ e5@3 d#5@8 ~]/2", I: "~@2 [d#3,d#4,d#5]@3 ~@3 [d#3,d#4,d#5] ~@3 [d#3,d#4,d#5]@2 ~@2",
  J: "~@2 [c#3,c#4,c#5] [b2,b3,b4] [a#2,a#3,a#4] [g#2,g#3,g#4] [f#2,f#3,f#4] [e2,e3,e4] [d#2,d#3,d#4] ~@7, [d#3,d#4,d#5]@5 ~@11", // C# B A# G# F# E D#
  K: "~@3 [g#3,g#4] ~ [a#3,a#4] ~@2 [b3,b4]@2 ~ [c#4,c#5] ~ [d#4,d#5]@2 ~", // G# A# B C# D#
  L: "~ [d#4,d#5] c#4 [b3,b4] [a#3,a#4] [g#3,g#4] [g3,g4] ~@9, [e3,e4,a#4,c#5,e5] ~@7", // D# B A# G# G A#dim
  M: "~@3 [g3,g4] [g#3,g#4] [a#3,a#4] [b3,b4] [c#4,c#5]", N: "[[d#4,d#5]@20 [g#3,g#4]@6 [d#4,d#5]@5 ~]/2",
  O: "[[e4,g#4,c#5]@10 ~@2 [b3,d#4,g4,b4]@10 ~@2 [a#3,c#4,d#4,g4,a#4]@7 ~, c#4@11 ~@5]/2", P: "[g#3,g#4]@3 ~@5",
  Q: "[d#4,d#5]@4 ~@4 [c#4,e4,g#4]@5 ~ [c#4,d#4] ~, ~@7 g4", R: "~@8 [c#4,d#4,g4]@7 ~",
  S: "[b3,f#4]@2 ~@6 [b3,d#4,f#4]@5 ~ [b3,c#4,f4]@2, d#4 ~@15", T: "~@4 [b3,c#4,f4]@3 ~",
  U: "[c#4,e4] ~@7 [c#4,e4,g#4]@5 ~ [c#4,d#4] ~, g#4 ~@6 g4", V: "c#4@4 d#4 ~@9 c#4 ~",
  W: "~@2 c#4 ~@3 c#4 ~ c#4@4 a#3 ~@3", X: "b3@4 d#4 ~@9 b3 ~", Y: "~@2 b3 ~@3 b3 ~ b3@4 g#3 ~@3",
  Z: "a#3@4 c#4@2 ~@8 c#4 ~",
  AA: "[b3@2 ~@2 g#3@2 ~@2 e4@6 [d#4,d#5]@6 [c#4,c#5] [b3,b4] [a#3,a#4] [g#3,g#4] [f#3,f#4] [e3,e4] [d#3,d#4] ~@5]/2", // D# C# B A# G# F# E D#
  AB: "a#3@2 ~@2 [b3,b4]@2 ~@2 [c#4,c#5] ~@3 d4@2 ~@2, a#4 ~@11 d5 ~@3", // B C#
  AC: "[[b3,f#4]@2 ~@6 [b3,d#4,f#4]@5 ~ [b3,c#4,f4]@18, d#4 ~@31]/2", AD: "~@14 [d#4,d#5] ~",
  AE: "~@2 [d#4,d#5] ~@3 [e4,e5] ~ [d#4,d#5] ~@7", AF: "~@4 [d#4,d#5] ~@3", AG: "~@6 [d#4,d#5] ~@9",
  AH: "~@5 [d#4,d#5] ~@2", AI: "~@2 [d#4,d#5] ~@3 e4@2 [d#4,d#5]@3 ~ e4@2 ~@2, ~@6 e5 ~@5 e5 ~@3",
  AJ: "[d#2,d#3]@2 [d#4,d#5]@2 ~@2 d#3@2 [d#4,d#5]@2 ~@2 [g#4,g#5]@3 ~, ~@6 d#2 ~@9", // D# G#
})).s("gm_brass_section").gain(0.3).pan(0.9)

// chords · alto sax
const alto_sax = note(`<
  ~@41 A B C D E B F@2 A B C D E B F@2 ~@64 A B C D E B G@2 ~@16 H ~ I J K ~ L ~ H ~ I J K ~@19 M N O P Q N R S M N O P
  Q N T@2 ~@24 U V W@2 ~@4 X Y Z ~ AA AB AC ~ X Y Z ~ AA AB ~@37
>`.pickRestart({
  A: "c#4@4 d#4 ~@9 c#4 ~", B: "~@2 c#4 ~@3 c#4 ~ c#4@4 a#3 ~@3", C: "b3@4 d#4 ~@9 b3 ~",
  D: "~@2 b3 ~@3 b3 ~ b3@4 g#3 ~@3", E: "a#3@4 c#4@2 ~@8 c#4 ~", F: "[b3 ~ g#3 ~ e4@3 d#4@7 ~@2]/2",
  G: "[b3@2 ~@2 g#3@2 ~@2 e4@6 d#4@6 c#4 b3 a#3 g#3 f#3 e3 d#3 ~@5]/2", H: "c#3@2 ~@2 e3@2 ~@2 g#3@5 ~ g3@2",
  I: "b2@2 ~@2 d#3@2 ~@2 f#3@5 ~ f3@2", J: "~@4 c#3 ~@3 c#3@4 d#3 ~@3", K: "c#3@2 ~@2 e3 ~@3 g#3@5 ~ g3@2",
  L: "b2 ~ d#3 ~ f#3@3 f3", M: "f3@2 ~@6 [f3,g#3]@6 [d#3,g3] ~, g#3 ~@15", N: "~@8 [d#3,g3]@7 ~",
  O: "[d#3,f#3] ~@3 [d#3,f#3]@3 [c#3,f3]", P: "~@4 [c#3,f3]@3 ~", Q: "[e3,g#3]@2 ~@6 [e3,g#3]@5 ~ [d#3,g3] ~",
  R: "f#3@2 ~@6 [d#3,f#3]@6 [c#3,f3] ~, d#3 ~@15", S: "~@2 g#3@2 ~@2 b3@6 e4 ~@3",
  T: "[f#3 ~@3 [d#3,f#3]@3 [c#3,f3]@9, d#3 ~@31]/2", U: "[c#4,e4]@2 ~@2 [g#3,b3]@2 ~@2 [c#4,e4]@5 ~ b3@2, ~@14 d#4 ~",
  V: "~@2 [g3,a#3]@2 ~@8 [g#3,b3]@3 ~", W: "[[b3,d#4] ~@3 [b3,d#4] ~@3 a#3@6 [g#3,b3]@7 ~@11, ~@2 c#4 ~@5]/2",
  X: "d#4@2 ~@2 d#4@2 ~@2 [c#4,e4]@6 [b3,d#4] ~, b3 ~@3 b3 ~@11", Y: "~@2 [g#3,b3] ~@9 [g#3,b3]@4",
  Z: "[b3,d#4] ~@3 [b3,d#4] ~@3 [a#3,c#4]@6 b3@2, ~@14 g#3 ~", AA: "[b3,d#4] ~@3 [b3,d#4]@2 ~@2 [c#4,e4]@6 [b3,d#4] ~",
  AB: "~ [b3,d#4] ~ [g#3,b3]@3 c#4 ~, ~@12 a#3 ~@3", AC: "[b3,d#4] ~@3 [b3,d#4] ~@3 [a#3,c#4]@5 ~ b3@2, ~@14 g#3 ~",
})).s("gm_alto_sax").gain(0.45).pan(0.6)

// other · baritone sax
const baritone_sax = note(`<
  ~@37 A B C@2 A B C@2 A B C@2 A B C@2 A B D@2 ~@44 E@2 F G A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B H@2 ~@28 E@2 F I
  A B C@2 A B C@2 A B C@2 A B D@2 J K L M J N L O J K L M J N D@2 ~@47 G A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 A B C@2
  ~@10 P
>`.pickRestart({
  A: "a#2 ~@3 c#2@3 d#2", B: "~@6 d#3 ~ d#3@2 ~@2 a#2 ~@3", C: "[g#2@2 ~@6 b2@6 c#3@4 ~@4 g#2 ~ g#2@3 ~ c#2@2 ~@2]/2",
  D: "[g#2 ~@3 b2@3 c#3@9]/2", E: "[a#1@11 ~ d#2@12 d#1@7 ~]/2", F: "g#1@5 ~@11",
  G: "~@2 d#2@2 f2@2 g2@2 g#2@2 a#2@2 b2@2 c#3 ~", H: "[g#2 ~@3 b2@3 c#3@2 ~@7]/2",
  I: "a#2 ~@3 b2@2 ~@2 c#3@2 ~@2 d3@2 ~@2", J: "c#2@2 ~@6 c#2@6 d#2 ~", K: "~@3 c#2 d#2 ~ f#2 ~",
  L: "g#2@2 ~@6 b2@6 c#3 ~", M: "~@6 b2 ~ c#3 ~@3 g#2 ~@3", N: "~@6 b2@2 c#3@2 ~@2 a#2 ~@3",
  O: "~@2 g#2@2 ~@2 b2@6 e3 ~@3", P: "d#1@2 d#2@2 ~@2 d#1@2 d#2@2 ~@2 g#2@3 ~",
})).s("gm_baritone_sax").gain(0.35).pan(0.6)

// other · trombone
const trombone = note(`<
  ~@41 A B C D E B F@2 A B C D E B F@2 ~@64 A B C D E B G@2 ~@96 H I J ~ K L M ~@44
>`.pickRestart({
  A: "c#4@2 d#4 ~@4 c#4", B: "~@2 c#4 ~@3 c#4 ~ c#4@4 a#3 ~@3", C: "b3@4 d#4@2 ~@8 b3 ~",
  D: "~@2 b3 ~@3 b3 ~ b3@3 ~ g#3@2 ~@2", E: "a#3@4 c#4 ~@9 c#4 ~", F: "[b3@2 ~@2 g#3 ~@3 e4@6 d#4@13 ~@5]/2",
  G: "[b3@2 ~@2 g#3 ~@3 e4@6 d#4@6 ~@12]/2", H: "d#4@2 ~@2 d#4@2 ~@2 [c#4,e4]@6 [b3,d#4] ~, b3 ~@3 b3 ~@11",
  I: "~@2 [g#3,b3] ~@9 [g#3,b3]@4", J: "[b3,d#4] ~@3 [b3,d#4] ~@3 [a#3,c#4]@6 b3@2, ~@14 g#3 ~",
  K: "[b3,d#4] ~@3 [b3,d#4]@2 ~@2 [c#4,e4]@6 [b3,d#4] ~", L: "~ [b3,d#4] ~ [g#3,b3]@3 c#4 ~, ~@12 a#3 ~@3",
  M: "[b3,d#4] ~@3 [b3,d#4] ~@3 [a#3,c#4]@5 ~ b3@2, ~@14 g#3 ~", // B A#m
})).s("gm_trombone").gain(0.45).pan(0.4)

// other · drawbar organ
const drawbar_organ = note(`<
  ~@65 A@2 B@2 A@2 C@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 ~@136 D E F G D E F G D E F G D E F G ~@35
>`.pickRestart({
  A: "[[g#4,g#5]@3 ~ e5@3 ~ [g#4,g#5]@4 ~@2 [g4,g5]@4 [c#5,d#5]@2 ~@2 [g4,g5] ~ [g4,g5]@4 [c#5,d#5]@2 ~@2, ~@4 c#5 ~@27]/2", // G# G C#sus2 G C#sus2
  B: "[[f#4,f#5]@4 [b4,d#5]@3 ~ [f#4,f#5]@5 ~ [f4,f5]@4 [b4,c#5]@3 ~ [f4,f5] ~ [f4,f5]@4 [b4,c#5]@3 ~]/2", // F# B F# F Bsus2 F Bsus2
  C: "[[f#4,f#5]@4 [b4,d#5]@3 ~ [f#4,f#5]@5 ~ [f4,f5]@4 ~@14]/2", // F# B F# F
  D: "~@4 d#5@2 d#4@2 g#4@2 [b4,d#5] ~ d#4@2 g#4 ~, ~@4 b4 ~@11", // B
  E: "[b4,d#5] ~ d#4 ~ g#4@2 [b4,d#5] ~ d#4@2 g#4@2 [b4,d#5] ~@3", // B
  F: "~@4 d#5@2 d#4@2 g#4@2 [b4,d#5] ~ d#4@2 g#4@2, ~@4 b4 ~@11", // B
  G: "[b4,d#5] ~ d#4@2 g#4@2 b4@2 d#4@2 g#4@2 b4@2 d#4 ~, ~@6 d#5 ~@5 d#5 ~@3", // B
})).s("gm_drawbar_organ").gain(0.17).pan(1)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@33 A B C D A B C D A B C D A B C D A B C D A B C ~ A B C D A B C D A B C D A B C ~ A B C D A B C D A B C D A B C D A
  B C D A B C D A B C D A B ~@2 A B C D A B C D A B C D A B C D A B C D A B C ~ A B C D A B C D A B C D A B C D A B C D
  A B C D A B C D A B ~@2 A B C D A B C D A B C D A B C D ~@64 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A
  B C D ~@3
>`.pickRestart({
  A: "~@8 [c#4,e4] ~ [c#4,e4] ~@5", B: "~@2 [c#4,d#4] ~@5 [c#4,d#4] ~ [c#4,d#4] ~@5", C: "~@8 [b3,d#4] ~ [b3,d#4] ~@5",
  D: "~@2 [b3,c#4] ~@5 [b3,c#4] ~ [b3,c#4] ~@5", // Bsus2
})).s("gm_electric_guitar_jazz").gain(0.25).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~@17 A@14 B ~ A C A C A C A C A C A C A C A C A C A C A C D ~ A C A C A C A C A C A C A C E ~ A C A C A C A C A C A C
  A C A C A C A C A C A@3 C A C A C B@2 A C A C A C A C A C A C A C A C A C A C A C D ~ A C A C A C A C A C A C A C A C
  A C A C A C A@3 C A C A C B ~ A C A C A C A C A C A C A C A C ~@30 B ~ B ~@6 F B F B F B F B F G H G H G H G H G H G H
  G H B ~ A C A C A C A C A C A C A C A C A C A C A C A C B ~@10
>`.pickRestart({
  A: "x!2", B: "x", C: "x ~@2 x!2 ~ x ~", D: "x ~@3 x ~@2 x", E: "~@7 x", F: "~@3 x", G: "x ~ x!2",
  H: "x ~@2 x ~@2 x ~",
})).gain(0.59)

// drums · snare
const snare = s("sd").struct(`<
// … 172 more lines

More by Gloria Estefan