Strudelify

Cielito Lindo

Trini Lopez

KeyG majorTempo160 bpm
0:00/0:00
// Cielito Lindo — Trini Lopez
// 160 bpm, 3/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 160 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(160/3)

// 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 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@4 A B C D E F G@2 H@6 I@2 J K L M N O@7 P Q@3 ~@4 A B C D E F G@2 H@6 I@2 J K L M N O@7 P Q@3 R S T U V W@2 X Y Z AA
  AB AC AD AE@2 AF@6 AG@2 AH AI AJ AK AL AM@7 AN AO@3 AP AQ AR AS@5 AT AU AV AW AX AY AZ@2 BA@6 BB@2 BC BD BE BF BG BH@7
  BI BJ@3 BK BL BM BN BO BP BQ BR
>`.pickRestart({
  A: "[d2,d3] ~@4 [a3,d4,f#4]@9 ~@2", B: "[a1,a2] ~@4 [a3,c#4,g4]@8 ~@3", C: "[d2,d3] ~@4 [a3,d4,f#4]@10 ~",
  D: "[a1,a2] ~@4 [a3,c#4,g4]@10 [d2,d3]", E: "~@5 [a3,d4,f#4]@10 ~", F: "[d#2,d#3]@2 ~@3 [a3,c#4,f#4]@9 ~@2",
  G: "[[e2,e3]@2 ~@8 b2 ~@5 e3@5 ~@11, ~@5 [g3,b3,e4,g4]@17 ~@10]/2", // E Em
  H: "[[a1,a2]@2 ~@3 [g3,c#4,e4,g4]@10 e2@2 ~@4 [g3,c#4,e4,g4]@10 [a1,a2]@2 ~@4 [g3,c#4,e4,g4]@10 e2@2 ~@4 [g3,c#4,e4,g4]@10 ~ a1@2 ~@3 [g3,c#4,e4,g4]@10 e2@2 ~@4 [g3,c#4,e4]@10 ~, ~@63 a2@2 ~@19 g4@10 ~@2]/6", // A C#dim A C#dim
  I: "[[d2,d3]@2 ~@8 a2@2 ~@4 d3@5 ~@11, ~ [a3,d4,f#4]@4 ~@3]/2", J: "[d2,d3]@4 ~ [a3,d4,f#4]@2 ~@3 [a3,d4,f#4]@2 ~@4",
  K: "[f#2,f#3]@3 ~@2 [a#3,d4,f#4]@2 ~@3 [a#3,d4] ~@5, ~@5 f#4 ~@2", L: "[g2,g3]@3 ~@2 [b3,d4,g4] ~@4 [d4,g4] b3 ~@4",
  M: "[e2,e3]@3 ~@2 [b3,d4,g4] ~@4 [b3,d4,g4] ~@5", N: "[a2,a3]@3 ~@2 [b3,d4,g4] ~@4 [b3,d4,g4] ~@5",
  O: "[[a1,a2]@3 ~@2 [c#4,g4] ~@4 [a3,c#4,g4] ~@4 [d2,d3]@4 ~ [d4,f#4]@2 ~@4 [a3,d4,f#4] ~@5 d3@3 ~@2 [a3,d4,f#4]@2 ~@9 d3@3 ~@2 [f#3,a3]@10 [d#2,d#3]@4 ~ b3@6 c4@5 [e2,e3]@3 ~@3 [g3,b3]@10 [a1,a2]@2 ~@4 [g3,a3,e4]@10 ~, ~@5 a3@2 ~@13 a3 ~@10 d2@3 ~@13 d2@3 ~@18 f#3@10 ~@34]/7", // A C#dim A7 D F#m D# E G …
  P: "[e2,e3]@3 ~@2 [g3,b3]@11", // E G
  Q: "[[a1,a2]@2 ~@3 b3@5 c#4@5 [d2,d3]@2 ~@9 a2@2 ~@3 d3@4 ~@13, ~@5 g3@10 ~@6 [f#3,d4]@15 ~@12]/3", // A D
  R: "[f#4,a4,d5] ~@4 [f#4,a4,d5] ~@2 d4 ~ [d4,f#4,a4,d5] ~@2 b3 ~ d5, d4@5 ~@11", // D
  S: "[g4,a4] ~@4 [g4,a4,d5] ~@2 e4 ~ [e4,g4,a4,d5] ~@2 b3 ~ d5, e4@5 ~@11", // Gsus2 Em7
  T: "[f#4,a4] ~@4 [f#4,a4,d5] ~@2 d4 ~ [d4,f#4,a4,d5] ~ b3 ~@2 [e4,g4,a4,e5], d4@5 ~@11", U: "~@5 [a2,a3]@6 ~@5",
  V: "[f#4,a4,d5] ~@4 [f#4,a4,d5] ~@2 d4 ~ [d4,f#4,a4,d5] ~@2 b3 ~@2, d4@5 ~@11", // D
  W: "[[g4,a4,d5] ~@4 [g4,a4,d5] ~ e4 ~@2 [e4,g4,a4,d5] ~@2 b3 ~ [f#4,a4,d5] ~@5 [f#4,a4,d5] ~@2 d4 ~ [d4,f#4,a4,d5] ~ b3 ~@2 [c4,f4,g4,a#4,d5], e4@5 ~@10 d4@6 ~@11]/2", // Gsus2 Em7 D Gm7
  X: "~@5 [c2,c3,e4,g4,a#4,c5]@6 ~@5", Y: "~@5 [c4,f4,a4]@9 ~@2", Z: "[c2,c3] ~@4 [c4,e4,a#4]@8 ~@3",
  AA: "[f2,f3] ~@4 [c4,f4,a4]@10 ~", AB: "[c2,c3] ~@4 [c4,e4,a#4]@10 [f2,f3]", AC: "~@5 [c4,f4,a4]@10 ~",
  AD: "[f#2,f#3]@2 ~@3 [c4,e4,a4]@9 ~@2", AE: "[[g2,g3]@2 ~@8 d3 ~@5 g3@5 ~@11, ~@5 [a#3,d4,g4,a#4]@17 ~@10]/2",
  AF: "[[c2,c3]@2 ~@3 [a#3,e4,g4,a#4]@10 g2@2 ~@4 [a#3,e4,g4,a#4]@10 [c2,c3]@2 ~@4 [a#3,e4,g4,a#4]@10 g2@2 ~@4 [a#3,e4,g4,a#4]@10 ~ c2@2 ~@3 [a#3,e4,g4,a#4]@10 g2@2 ~@4 [a#3,e4,g4]@10 ~, ~@63 c3@2 ~@19 a#4@10 ~@2]/6", // C Edim C Edim
  AG: "[[f2,f3]@2 ~@8 c3@2 ~@4 f3@5 ~@11, ~ [c4,f4,a4]@4 ~@3]/2", AH: "[f2,f3]@4 ~ [c4,f4,a4]@2 ~@3 [c4,f4,a4]@2 ~@4",
  AI: "[a2,a3]@3 ~@2 [c#4,f4,a4]@2 ~@3 [c#4,f4] ~@5, ~@5 a4 ~@2", AJ: "[a#2,a#3]@3 ~@2 [d4,f4,a#4] ~@4 [f4,a#4] d4 ~@4",
  AK: "[g2,g3]@3 ~@2 [d4,f4,a#4] ~@4 [d4,f4,a#4] ~@5", AL: "[c3,c4]@3 ~@2 [d4,f4,a#4] ~@4 [d4,f4,a#4] ~@5",
  AM: "[[c2,c3]@3 ~@2 [e4,a#4] ~@4 [c4,e4,a#4] ~@4 [f2,f3]@4 ~ [f4,a4]@2 ~@4 [c4,f4,a4] ~@5 f3@3 ~@2 [c4,f4,a4]@2 ~@9 f3@3 ~@2 [a3,c4]@10 [f#2,f#3]@4 ~ d4@6 d#4@5 [g2,g3]@3 ~@3 [a#3,d4]@10 [c2,c3]@2 ~@4 [a#3,c4,g4]@10 ~, ~@5 c4@2 ~@13 c4 ~@10 f2@3 ~@13 f2@3 ~@18 a3@10 ~@34]/7", // C Edim C7 F Am F# G A# …
  AN: "[g2,g3]@3 ~@2 [a#3,d4]@11", // G A#
  AO: "[[c2,c3]@2 ~@3 d4@5 e4@5 [f2,f3]@2 ~@9 c3@2 ~@3 f3@4 ~@13, ~@5 a#3@10 ~@6 [a3,f4]@15 ~@12]/3", // C F Dm
  AP: "~@2 c5@2 ~ e5@3 d6@3 c6@2 f5@3, a4@15 ~", AQ: "~@2 g#4@3 c#4@3 d#4@2 f4@3 c5@3, g#5@15 ~",
  AR: "~@3 d5@2 e5@3 c6@2 f#5@3 c5@2 ~, [g4,a#4]", // Gm
  AS: "[~@3 f4@2 g3@3 a3@3 b3@2 ~@51 f5@16, [b4,d#5], g5@4 ~, ~@13 c#3@67]/5", AT: "~@5 [g3,c4,e4]@9 ~@2",
  AU: "[g1,g2] ~@4 [g3,b3,f4]@8 ~@3", AV: "[c2,c3] ~@4 [g3,c4,e4]@10 ~", AW: "[g1,g2] ~@4 [g3,b3,f4]@10 [c2,c3]",
  AX: "~@5 [g3,c4,e4]@10 ~", AY: "[c#2,c#3]@2 ~@3 [g3,b3,e4]@9 ~@2",
  AZ: "[[d2,d3]@2 ~@8 a2 ~@5 d3@5 ~@11, ~@5 [f3,a3,d4,f4]@17 ~@10]/2", // D Dm
  BA: "[[g1,g2]@2 ~@3 [f3,b3,d4,f4]@10 d2@2 ~@4 [f3,b3,d4,f4]@10 [g1,g2]@2 ~@4 [f3,b3,d4,f4]@10 d2@2 ~@4 [f3,b3,d4,f4]@10 ~ g1@2 ~@3 [f3,b3,d4,f4]@10 d2@2 ~@4 [f3,b3,d4]@10 ~, ~@63 g2@2 ~@19 f4@10 ~@2]/6", // G Bdim G Bdim
  BB: "[[c2,c3]@2 ~@8 g2@2 ~@4 c3@5 ~@11, ~ [g3,c4,e4]@4 ~@3]/2", BC: "[c2,c3]@4 ~ [g3,c4,e4]@2 ~@3 [g3,c4,e4]@2 ~@4",
  BD: "[e2,e3]@3 ~@2 [g#3,c4,e4]@2 ~@3 [g#3,c4] ~@5, ~@5 e4 ~@2", BE: "[f2,f3]@3 ~@2 [a3,c4,f4] ~@4 [c4,f4] a3 ~@4",
  BF: "[d2,d3]@3 ~@2 [a3,c4,f4] ~@4 [a3,c4,f4] ~@5", BG: "[g2,g3]@3 ~@2 [a3,c4,f4] ~@4 [a3,c4,f4] ~@5",
  BH: "[[g1,g2]@3 ~@2 [b3,f4] ~@4 [g3,b3,f4] ~@4 [c2,c3]@4 ~ [c4,e4]@2 ~@4 [g3,c4,e4] ~@5 c3@3 ~@2 [g3,c4,e4]@2 ~@9 c3@3 ~@2 [e3,g3]@10 [c#2,c#3]@4 ~ a3@6 a#3@5 [d2,d3]@3 ~@3 [f3,a3]@10 [g1,g2]@2 ~@4 [f3,g3,d4]@10 ~, ~@5 g3@2 ~@13 g3 ~@10 c2@3 ~@13 c2@3 ~@18 e3@10 ~@34]/7", // G Bdim G7 C Em C# D F …
  BI: "[d2,d3]@3 ~@2 [f3,a3]@11", // D F
  BJ: "[[g1,g2]@2 ~@3 a3@5 b3@5 [c2,c3]@2 ~@9 g2@2 ~@3 c3@4 ~@13, ~@5 f3@10 ~@6 [e3,c4]@15 ~@12]/3", // G C
  BK: "[d2,d3]@3 ~@2 [g3,b3,f4] ~@4 [g3,b3,f4] ~@5", BL: "[g1,g2]@3 ~@2 [g3,b3,f4] ~@4 [g3,b3,f4] ~@5",
  BM: "[c2,c3]@3 ~@2 [g3,c4,e4] ~@4 [g3,c4,e4] ~@5", BN: "[g1,g2]@3 ~ e4 [g3,c4] ~@4 [g3,c4,e4] ~@5",
  BO: "[f1,f2]@3 ~@2 [a3,c4,f4] ~@4 [a3,c4,f4] ~@5", BP: "[g1,g2]@3 ~@2 [b3,d4,f4,g4] ~@4 [b3,d4,f4,g4] ~@5",
  BQ: "[c2,c3,c4,e4,g4]@2 ~@8 [g2,c4,e4,g4] ~@5", BR: "[c4,e4,g4] ~@7",
})).s("gm_string_ensemble_1").gain(0.21)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@3 A B C B D E@2 F@7 G@3 H@5 I@3 J K@5 L@2 ~@3 A B C B D E@2 F@7 G@3 H@5 I@3 J K@5 L@2 ~@8 M N M O P@2 Q@7 R@3 S@5
  T@3 U V@5 W@2 ~@8 X Y X Z AA@2 AB@7 AC@3 AD@5 AE@3 AF AG@5 AH@2 AI AJ AK AJ AL AM AN@2
>`.pickRestart({
  A: "~@13 [a4,a5]@3", B: "[d5,d6]@2 ~@3 [d5,d6]@8 [b4,b5]@3", C: "[c#5,c#6]@11 [a4,a5]@5",
  D: "[c#5,c#6]@10 [a4,a5]@5 ~", E: "[[d5,d6]@2 ~@3 [d5,d6]@8 [b4,b5]@8 [c#5,c#6]@8 [a4,a5]@3]/2",
  F: "[~ [a4,a5]@2 [g4,g5]@2 [e4,e5]@13 e5@3 [d#5,f#5]@2 ~ g5@2 [c#5,a5]@3 [b4,b5]@2 ~ c#6@4 ~ c#6@5 c#6@11 b4@5 ~@3 a5@2 ~@2 f#5@2 e5@2 [b4,g5]@5 ~@3 d5@2 c#5@3 b4@3 f#5@5 g5@5 a5@3 c#5@2 ~ e5@2 g5@3 a5@3 c#6@3, [g4,g5]@2 ~@21 d5@3 ~@5 a4@22 b5@8 ~@3 g5@4 ~@32 a5@5 ~@7, ~@58 c#5@5 e5@2 ~@9 e5@11 a4@14 ~@13]/7", // A G E D#m F#m B Em G
  G: "[f#6@2 e6@3 g5@5 ~@3 c#6@2 e5@2 f#5@2 e5@2 d6@13 a5@3 b5@2 c#6@2 ~ d6@3 e6@3, ~@5 b5@8 ~@2 c#6@6 ~@27, ~@10 f#5@6 ~@5 d5@11 ~@16]/3",
  H: "[~@2 f6@3 e6@3 d#6@2 d6@3 ~@5 c6@3 b5@3 a#5@2 ~ a5@2 ~@6 g5@2 f#5@3 f5@2 e5@3 d#5@2 ~@3 c#5@3 b4@3 a#4@3 a4@2 g#4@2 ~@3 d#6@3 d6@3 c#6@2 c6@3 b5@3, f#6@16 e6@11 ~@2 g#5@6 ~@13 d5@13 ~@2 e6@15 ~@2, ~@13 c#6@6 ~@7 d6@6 b5@32 [g4,b4]@5 ~@11]/5", // G
  I: "[a#5@2 a5@3 g#5@3 g5@2 ~@3 f5@2 ~@3 d#5@2 ~@3 c#5@3 c5@3 b4@2 a#4@3 c5@3 a4@3 ~@2 [a3,f#4,d5,a5]@5 ~, e6@10 f#5@9 ~@29, ~@11 d6@4 e5@3 ~@3 d5@17 ~@10, ~@16 f#6@5 d6@19 ~@8]/3", // D
  J: "[d5,b5]@5 ~@5 [a3,d5,a5]@6, [b3,f#4]@3 ~@7 f#4@4 ~@2", // G D5 B5
  K: "[[f#5,b5]@5 [b3,f#4]@4 ~ [a3,f#4,c5,a5]@4 ~ [g4,e5,b5,g6]@4 ~@2 [g4,e5,b5,g6]@5 ~ [g5,e6]@7 ~@3 [a4,e5,c#6]@5 ~ a5@4 ~ [e5,b5]@5 ~@5 [e5,a5]@11 [g3,e4,b4,g5]@5 ~ e4@4 ~, [b3,f#4]@3 ~@23 [e4,b4]@8 ~@8 [c#4,a4,c#5]@5 [b3,g4]@5 ~@6 [c#4,a4]@6 ~@10 [a3,a4,a5]@6]/5", // B5 F#dim Em C A E5 A5 Em …
  L: "[[d4,d5,f#5]@2 [e4,g4,c#5,e5]@3 [f#4,a4,d5]@17 ~@10]/2", M: "[f5,f6]@2 ~@3 [f5,f6]@8 [d5,d6]@3",
  N: "[e5,e6]@11 [c5,c6]@5", O: "[e5,e6]@10 [c5,c6]@5 ~",
  P: "[[f5,f6]@2 ~@3 [f5,f6]@8 [d5,d6]@8 [e5,e6]@8 [c5,c6]@3]/2", // F D E C
  Q: "[~ [c5,c6]@2 [a#4,a#5]@2 [g4,g5]@13 g5@3 [f#5,a5]@2 ~ a#5@2 [e5,c6]@3 [d5,d6]@2 ~ e6@4 ~ e6@5 e6@11 d5@5 ~@3 c6@2 ~@2 a5@2 g5@2 [d5,a#5]@5 ~@3 f5@2 e5@3 d5@3 a5@5 a#5@5 c6@3 e5@2 ~ g5@2 a#5@3 c6@3 e6@3, [a#4,a#5]@2 ~@21 f5@3 ~@5 c5@22 d6@8 ~@3 a#5@4 ~@32 c6@5 ~@7, ~@58 e5@5 g5@2 ~@9 g5@11 c5@14 ~@13]/7", // C A# G F#m C D Gm A#
  R: "[a6@2 g6@3 a#5@5 ~@3 e6@2 g5@2 a5@2 g5@2 f6@13 c6@3 d6@2 e6@2 ~ f6@3 g6@3, ~@5 d6@8 ~@2 e6@6 ~@27, ~@10 a5@6 ~@5 f5@11 ~@16]/3",
  S: "[~@2 g#6@3 g6@3 f#6@2 f6@3 ~@5 d#6@3 d6@3 c#6@2 ~ c6@2 ~@6 a#5@2 a5@3 g#5@2 g5@3 f#5@2 ~@3 e5@3 d5@3 c#5@3 c5@2 b4@2 ~@3 f#6@3 f6@3 e6@2 d#6@3 d6@3, a6@16 g6@11 ~@2 b5@6 ~@13 f5@13 ~@2 g6@15 ~@2, ~@13 e6@6 ~@7 f6@6 d6@32 [a#4,d5]@5 ~@11]/5", // A#
  T: "[c#6@2 c6@3 b5@3 a#5@2 ~@3 g#5@2 ~@3 f#5@2 ~@3 e5@3 d#5@3 d5@2 c#5@3 d#5@3 c5@3 ~@2 [c4,a4,f5,c6]@5 ~, g6@10 a5@9 ~@29, ~@11 f6@4 g5@3 ~@3 f5@17 ~@10, ~@16 a6@5 f6@19 ~@8]/3", // F
  U: "[f5,d6]@5 ~@5 [c4,f5,c6]@6, [d4,a4]@3 ~@7 a4@4 ~@2", // Dm F5 D5
  V: "[[a5,d6]@5 [d4,a4]@4 ~ [c4,a4,d#5,c6]@4 ~ [a#4,g5,d6,a#6]@4 ~@2 [a#4,g5,d6,a#6]@5 ~ [a#5,g6]@7 ~@3 [c5,g5,e6]@5 ~ c6@4 ~ [g5,d6]@5 ~@5 [g5,c6]@11 [a#3,g4,d5,a#5]@5 ~ g4@4 ~, [d4,a4]@3 ~@23 [g4,d5]@8 ~@8 [e4,c5,e5]@5 [d4,a#4]@5 ~@6 [e4,c5]@6 ~@10 [c4,c5,c6]@6]/5", // D5 Adim Gm D# C G5 C5 Gm …
  W: "[[f4,f5,a5]@2 [g4,a#4,e5,g5]@3 [a4,c5,f5]@17 ~@10]/2", X: "[c5,c6]@2 ~@3 [c5,c6]@8 [a4,a5]@3",
  Y: "[b4,b5]@11 [g4,g5]@5", Z: "[b4,b5]@10 [g4,g5]@5 ~",
  AA: "[[c5,c6]@2 ~@3 [c5,c6]@8 [a4,a5]@8 [b4,b5]@8 [g4,g5]@3]/2", // C A B G
  AB: "[~ [g4,g5]@2 [f4,f5]@2 [d4,d5]@13 d5@3 [c#5,e5]@2 ~ f5@2 [b4,g5]@3 [a4,a5]@2 ~ b5@4 ~ b5@5 b5@11 a4@5 ~@3 g5@2 ~@2 e5@2 d5@2 [a4,f5]@5 ~@3 c5@2 b4@3 a4@3 e5@5 f5@5 g5@3 b4@2 ~ d5@2 f5@3 g5@3 b5@3, [f4,f5]@2 ~@21 c5@3 ~@5 g4@22 a5@8 ~@3 f5@4 ~@32 g5@5 ~@7, ~@58 b4@5 d5@2 ~@9 d5@11 g4@14 ~@13]/7", // G F D C#m Em A Dm F
  AC: "[e6@2 d6@3 f5@5 ~@3 b5@2 d5@2 e5@2 d5@2 c6@13 g5@3 a5@2 b5@2 ~ c6@3 d6@3, ~@5 a5@8 ~@2 b5@6 ~@27, ~@10 e5@6 ~@5 c5@11 ~@16]/3",
  AD: "[~@2 d#6@3 d6@3 c#6@2 c6@3 ~@5 a#5@3 a5@3 g#5@2 ~ g5@2 ~@6 f5@2 e5@3 d#5@2 d5@3 c#5@2 ~@3 b4@3 a4@3 g#4@3 g4@2 f#4@2 ~@3 c#6@3 c6@3 b5@2 a#5@3 a5@3, e6@16 d6@11 ~@2 f#5@6 ~@13 c5@13 ~@2 d6@15 ~@2, ~@13 b5@6 ~@7 c6@6 a5@32 [f4,a4]@5 ~@11]/5", // F
  AE: "[g#5@2 g5@3 f#5@3 f5@2 ~@3 d#5@2 ~@3 c#5@2 ~@3 b4@3 a#4@3 a4@2 g#4@3 a#4@3 g4@3 ~@2 [g3,e4,c5,g5]@5 ~, d6@10 e5@9 ~@29, ~@11 c6@4 d5@3 ~@3 c5@17 ~@10, ~@16 e6@5 c6@19 ~@8]/3", // C
  AF: "[c5,a5]@5 ~@5 [g3,c5,g5]@6, [a3,e4]@3 ~@7 e4@4 ~@2", // F C5 A5
  AG: "[[e5,a5]@5 [a3,e4]@4 ~ [g3,e4,a#4,g5]@4 ~ [f4,d5,a5,f6]@4 ~@2 [f4,d5,a5,f6]@5 ~ [f5,d6]@7 ~@3 [g4,d5,b5]@5 ~ g5@4 ~ [d5,a5]@5 ~@5 [d5,g5]@11 [f3,d4,a4,f5]@5 ~ d4@4 ~, [a3,e4]@3 ~@23 [d4,a4]@8 ~@8 [b3,g4,b4]@5 [a3,f4]@5 ~@6 [b3,g4]@6 ~@10 [g3,g4,g5]@6]/5", // A5 Edim Dm G D5 G5 Dm A5 …
  AH: "[[c4,c5,e5]@2 [d4,f4,b4,d5]@3 [e4,g4,c5]@17 ~@5 g4@3 ~@2]/2", AI: "f5@10 ~ d5@2 ~@3", AJ: "~@5 g4 ~@4 g4 ~@5",
  AK: "e5@10 c5@3 ~@3", AL: "a4@5 c5@5 a4@4 ~@2", AM: "b4@5 d5@5 g5@3 ~@3", AN: "[g5@21 ~@11]/2",
})).s("gm_string_ensemble_2").gain(0.36)

// bass · pizzicato strings · "PIZZICATO"
const bass = note(`<
  ~@4 A B A B A C D E B F G H B H I J A K L H M B A@2 N C H B H B O J ~@4 A B A B A C D E B F G H B H I J A K L H M B
  A@2 N C H B H B O J ~@8 P Q P Q P K R S Q T U L Q L V W P X Y L Z Q P@2 AA K L Q L Q AB W ~@8 Q AC Q AC Q AD I J AC AE
  AF A AC A AG Z Q AH P A L AC Q@2 U AD A AC A AC AI Z ~@8
>`.pickRestart({
  A: "d2 ~@15", B: "a1 ~@15", C: "d#2 ~@7", D: "e2 ~@9 b2 ~@5", E: "e3 ~@15", F: "~ e2 ~@14", G: "~ a1@2 ~@13",
  H: "e2 ~@15", I: "d2 ~@9 a2 ~@5", J: "d3 ~@15", K: "f#2 ~@7", L: "g2 ~@15", M: "a2 ~@15", N: "~ d2@2 ~@13",
  O: "d2 ~@10 a2 ~@4", P: "f2 ~@15", Q: "c2 ~@15", R: "g2 ~@9 d3 ~@5", S: "g3 ~@15", T: "~ g2 ~@14", U: "~ c2@2 ~@13",
  V: "f2 ~@9 c3 ~@5", W: "f3 ~@15", X: "a2 ~@7", Y: "a#2 ~@15", Z: "c3 ~@15", AA: "~ f2@2 ~@13", AB: "f2 ~@10 c3 ~@4",
  AC: "g1 ~@15", AD: "c#2 ~@7", AE: "~ d2 ~@14", AF: "~ g1@2 ~@13", AG: "c2 ~@9 g2 ~@5", AH: "e2 ~@7",
  AI: "c2 ~@10 g2 ~@4",
})).s("gm_pizzicato_strings").gain(0.2).pan(0.4)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  A B C B D E D F G H I J K L M N O P Q R S@4 T U V@2 W X Y Z AA AB AC AD A B C B D E D F G H I J K L M N O P Q R S@4 T
  U V@2 W X Y Z AA AB AC AD ~@8 AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU@4 AV AW AX@2 AY AZ BA BB BC BD BE BF
  ~@8 BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW@4 BX BY BZ@2 CA CB CC CD CE CF CG CH CI@2 CJ@2 CK CL CM CN
>`.pickRestart({
  A: "d2@2 [f#4,d5] a4 ~ [f#4,a4,d5] ~@2 [f#4,a4,d5] ~ [f#4,a4,d5] ~@2 a1 ~@2", // D
  B: "e2@2 [g4,c#5,e5] ~@2 [g4,c#5,e5] ~ [g4,c#5,e5] ~@2 [g4,c#5,e5] ~@2 a1 ~@2", // C#dim
  C: "d2@2 [f#4,a4,d5] ~@2 [f#4,a4,d5] ~@2 [f#4,a4,d5] ~ [f#4,a4,d5] ~@2 a1 ~@2", // D
  D: "d2@5 [f#4,a4,d5] ~@2 [f#4,a4,d5] ~@2 [f#4,a4,d5] ~@4", E: "a1@5 [g4,c#5,e5]@7 ~@4", F: "a1@4 ~ [g4,c#5,e5]@6 ~@5",
  G: "d2 ~@4 [f#4,a4,d5] ~ [f#4,d5] a4 ~ [f#4,a4,d5] ~@5", H: "d#2@5 [f#4,a4,c#5]@9 ~@2",
  I: "e2@5 [e4,g4,b4] ~@2 [e4,g4,b4] ~ [e4,g4,b4] ~@5", J: "[e3,e4,g4,b4] ~@3",
  K: "a2@5 [e4,g4,a4,c#5] ~@4 [e4,g4,a4,c#5] ~@5", L: "e2@4 ~ [e4,g4,a4,c#5] ~@5 [e4,g4,a4,c#5] ~@4",
  M: "a2@3 ~@2 [e4,g4,a4,c#5] ~@4 c#5 [e4,g4,a4] ~@4", N: "e2@4 ~ [e4,g4,a4,c#5] ~@4 [e4,g4,c#5] a4 ~@4",
  O: "a2@3 ~@2 [e4,g4,a4,c#5] ~@5 [e4,g4,a4,c#5] ~@4", P: "e2@3 ~@2 [e4,g4,a4,c#5] ~@5 [e4,g4,a4,c#5] ~@4",
  Q: "d2@5 [f#4,d5] ~@2 [f#4,d5] ~ [a2,f#4,d5] ~@2 [f#4,d5] ~@2", R: "[d3,f#4,d5]@3 ~@13",
  S: "[[d2,a3] [f#2,a#3] ~ e2, d4@21 ~@11, f#3 [g2,g3,b3]]/4", T: "[a2,g3,b3,d4]", U: "[a1,a3,c#4]",
  V: "[[f#3,a3,d4]@29 ~@3, d2@31 ~]/2", W: "~@5 d2 [f#3,a3] ~ [f#3,a3] ~ [d2,f#3,a3] ~@5",
  X: "~@5 [d#2,f#3,b3] ~@5 [d#2,f#3,c4] ~@4", Y: "~@5 e2 [g3,b3] ~ [g3,b3] ~@2 [e2,g3,b3] ~@4",
  Z: "~@6 [a2,g3,a3,e4] ~@4 [a2,g3,a3,e4] ~@4", AA: "~@6 [e2,g3,a3,e4] ~ [g3,a3,e4] ~@2 [e2,g3,a3,e4] ~@4",
  AB: "~@5 [g3,b3] ~@5 [a2,g3,c#4] ~@4, ~@5 a2@2 ~@9", AC: "~@5 [d3,f#3,d4] ~@2 [f#3,d4] ~@2 [a2,f#3,d4] ~@4",
  AD: "[d3,f#3,d4] ~@15", AE: "~@5 [a4,c5,f5] ~@2 [a4,c5,f5] ~@2 [a4,c5,f5] ~@4", AF: "c2@5 [a#4,e5,g5]@7 ~@4",
  AG: "f2@5 [a4,c5,f5] ~@2 [a4,c5,f5] ~@2 [a4,c5,f5] ~@4", AH: "c2@4 ~ [a#4,e5,g5]@6 ~@5",
  AI: "f2 ~@4 [a4,c5,f5] ~ [a4,f5] c5 ~ [a4,c5,f5] ~@5", AJ: "f#2@5 [a4,c5,e5]@9 ~@2",
  AK: "g2@5 [g4,a#4,d5] ~@2 [g4,a#4,d5] ~ [g4,a#4,d5] ~@5", AL: "[g3,g4,a#4,d5] ~@3",
  AM: "c3@5 [g4,a#4,c5,e5] ~@4 [g4,a#4,c5,e5] ~@5", AN: "g2@4 ~ [g4,a#4,c5,e5] ~@5 [g4,a#4,c5,e5] ~@4",
  AO: "c3@3 ~@2 [g4,a#4,c5,e5] ~@4 e5 [g4,a#4,c5] ~@4", AP: "g2@4 ~ [g4,a#4,c5,e5] ~@4 [g4,a#4,e5] c5 ~@4",
  AQ: "c3@3 ~@2 [g4,a#4,c5,e5] ~@5 [g4,a#4,c5,e5] ~@4", AR: "g2@3 ~@2 [g4,a#4,c5,e5] ~@5 [g4,a#4,c5,e5] ~@4",
  AS: "f2@5 [a4,f5] ~@2 [a4,f5] ~ [c3,a4,f5] ~@2 [a4,f5] ~@2", AT: "[f3,a4,f5]@3 ~@13",
  AU: "[[f2,c4] [a2,c#4] ~ g2, f4@21 ~@11, a3 [a#2,a#3,d4]]/4", AV: "[c3,a#3,d4,f4]", AW: "[c2,c4,e4]",
  AX: "[[a3,c4,f4]@29 ~@3, f2@31 ~]/2", AY: "~@5 f2 [a3,c4] ~ [a3,c4] ~ [f2,a3,c4] ~@5",
  AZ: "~@5 [f#2,a3,d4] ~@5 [f#2,a3,d#4] ~@4", BA: "~@5 g2 [a#3,d4] ~ [a#3,d4] ~@2 [g2,a#3,d4] ~@4",
  BB: "~@6 [c3,a#3,c4,g4] ~@4 [c3,a#3,c4,g4] ~@4", BC: "~@6 [g2,a#3,c4,g4] ~ [a#3,c4,g4] ~@2 [g2,a#3,c4,g4] ~@4",
  BD: "~@5 [a#3,d4] ~@5 [c3,a#3,e4] ~@4, ~@5 c3@2 ~@9", BE: "~@5 [f3,a3,f4] ~@2 [a3,f4] ~@2 [c3,a3,f4] ~@4",
  BF: "[f3,a3,f4] ~@15", BG: "~@5 [e4,g4,c5] ~@2 [e4,g4,c5] ~@2 [e4,g4,c5] ~@4", BH: "g1@5 [f4,b4,d5]@7 ~@4",
  BI: "c2@5 [e4,g4,c5] ~@2 [e4,g4,c5] ~@2 [e4,g4,c5] ~@4", BJ: "g1@4 ~ [f4,b4,d5]@6 ~@5",
  BK: "c2 ~@4 [e4,g4,c5] ~ [e4,c5] g4 ~ [e4,g4,c5] ~@5", BL: "c#2@5 [e4,g4,b4]@9 ~@2",
  BM: "d2@5 [d4,f4,a4] ~@2 [d4,f4,a4] ~ [d4,f4,a4] ~@5", BN: "[d3,d4,f4,a4] ~@3",
  BO: "g2@5 [d4,f4,g4,b4] ~@4 [d4,f4,g4,b4] ~@5", BP: "d2@4 ~ [d4,f4,g4,b4] ~@5 [d4,f4,g4,b4] ~@4",
  BQ: "g2@3 ~@2 [d4,f4,g4,b4] ~@4 b4 [d4,f4,g4] ~@4", BR: "d2@4 ~ [d4,f4,g4,b4] ~@4 [d4,f4,b4] g4 ~@4",
  BS: "g2@3 ~@2 [d4,f4,g4,b4] ~@5 [d4,f4,g4,b4] ~@4", BT: "d2@3 ~@2 [d4,f4,g4,b4] ~@5 [d4,f4,g4,b4] ~@4",
  BU: "c2@5 [e4,c5] ~@2 [e4,c5] ~ [g2,e4,c5] ~@2 [e4,c5] ~@2", BV: "[c3,e4,c5]@3 ~@13",
  BW: "[[c2,g3] [e2,g#3] ~ d2, c4@21 ~@11, e3 [f2,f3,a3]]/4", BX: "[g2,f3,a3,c4]", BY: "[g1,g3,b3]",
  BZ: "[[e3,g3,c4]@29 ~@3, c2@31 ~]/2", CA: "~@5 c2 [e3,g3] ~ [e3,g3] ~ [c2,e3,g3] ~@5",
  CB: "~@5 [c#2,e3,a3] ~@5 [c#2,e3,a#3] ~@4", CC: "~@5 d2 [f3,a3] ~ [f3,a3] ~@2 [d2,f3,a3] ~@4",
  CD: "~@6 [g2,f3,g3,d4] ~@4 [g2,f3,g3,d4] ~@4", CE: "~@6 [d2,f3,g3,d4] ~ [f3,g3,d4] ~@2 [d2,f3,g3,d4] ~@4",
  CF: "~@5 [f3,a3] ~@5 [g2,f3,b3] ~@4, ~@5 g2@2 ~@9", CG: "~@5 [c3,e3,c4] ~@2 [e3,c4] ~@2 [g2,e3,c4] ~@4",
  CH: "[c3,e3,c4] ~@15", CI: "[d3,g3,b3,f4]/2", CJ: "[c3,g3,c4,e4]/2", CK: "[f2,a3,c4,f4]", CL: "[g2,g3,b3,f4]@15 ~",
  CM: "[c3,g3,c4,e4]@7 ~@3 [g2,g3,c4,e4] ~@5", CN: "[g3,c4]@5 ~@11, e4@3 ~@13, c2 ~@15",
})).s("gm_brass_section").gain(0.22)

// chords · orchestral harp · "HARP"
const orchestral_harp = note("<~@113 A ~@4 B@3 ~@39>".pickRestart({
  A: "~@2 [a#3,g#4,a#5,g#6] ~@13", // A#7
  B: "[~@29 b5@2 [e5,g5,c6] ~@16, ~@15 c#3@6 c#4@2 g#4 b4@2 c#5 f5 g#5@3 c3@2 ~@15, ~@17 f3@15 ~@16, ~@9 g#3@2 f4@5 ~@8, ~@5 b3@3 ~@4]/3", // C
})).s("gm_orchestral_harp").gain(0.17).pan(0.4)

// other · glockenspiel · "GLOCKENSPL"
const glockenspiel = note("<~@117 A B ~@32 C D E F E G H I ~>".pickRestart({
  A: "d#6 ~@15", B: "b5 ~@15", C: "~@11 g5 ~@4", D: "f6@6 ~@5 d6 ~@4", E: "~@5 g5 ~@4 g5 ~@5", F: "e6@4 ~@6 c6 ~@5",
  G: "a5@2 ~@3 c6 ~@4 a5 ~@5", H: "b5 ~@4 d6 ~@4 g6 ~@5", I: "g6 ~@7",
})).s("gm_glockenspiel").gain(0.18)

// drums · clap
const clap = s("cp").struct(`<
  ~@26 A B C D E F G H I J ~@26 A B C D E F G H I J ~@70 A B C D E F G H I J ~@8
>`.pickRestart({
  A: "~@5 x ~ x ~ x!2 ~@5", B: "x ~ x ~ x!2 ~@10", C: "~@6 x!2 ~ x!2 ~@5", D: "x ~ x ~@2 x ~@10",
  E: "~@5 x ~ x!2 ~ x ~@4 x", F: "x ~@2 x ~ x ~@5 x ~ x!2 ~", G: "x ~@2 x ~ x ~@4 x!2 ~ x ~@2",
  H: "x ~ x ~ x ~ x ~@4 x ~ x!2 ~", I: "x ~@4 x ~ x ~ x!2 ~@2 x ~ x", J: "x",
})).gain(0.2)

// drums · splash
const splash = s("cr").struct(`<
  ~@4 A ~ A ~ B ~ B ~@9 C@6 ~@9 D ~@4 A ~ A ~ B ~ B ~@9 C@6 ~@9 D ~@3 D ~@3 D ~@40 A ~ A ~ B ~ B ~@9 C@6 ~@9 D ~@7 C
>`.pickRestart({
  A: "~@5 x ~@2 x ~@2 x ~@4", B: "~@5 x ~ x ~@2 x ~@5", C: "x", D: "~@5 x ~@10",
})).gain(0.2)

// drums · triangle
const triangle = s("triangles:35").struct(`<
  ~@7 A ~@3 B ~@16 B ~ B ~ C D ~@9 A ~@3 B ~@16 B ~ B ~ C D ~@53 A ~@3 B ~@16 B ~ B ~ C D ~@10
>`.pickRestart({
  A: "~@5 x ~@10", B: "x", C: "~ x ~@14", D: "~@15 x",
})).gain(1.95)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct(`<
  A@2 B@2 ~ C ~ C ~ C ~@26 A@2 B@2 ~ C ~ C ~ C ~@26 D@2 E F G H E I ~@41 C ~ C ~ C ~@34
>`.pickRestart({
  A: "~@2 x ~@2 x ~ x ~@2 x ~@5", B: "~@3 x ~ x ~ x ~@2 x ~@5", C: "~@5 x ~@10", D: "x ~@4 x ~@2 x ~@2 x ~@4",
// … 7 more lines

More by Trini Lopez