Strudelify

Mexico de Noche

BEBU SILVETTI

KeyG majorTempo180 bpm
0:00/0:00
// Mexico de Noche — BEBU SILVETTI
// 180 bpm, 6/8, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5958255; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 234 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Guitarra acústica.
setcpm(180/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.

// other · piano · "Flauta"
const piano = note(`<
  ~@4 A B C@2 ~@20 D E D F D E G H I J I K L M N O P@2 Q R P@2 S T U@2 V W U@2 Q X Y@2 Z AA Y@2 V AB AC@2 AD ~ P@2 Q R
  P@2 S T U@2 V W U@2 Q X Y@2 Z AA Y@2 V AB AC@2 AE@2 ~@16 D E D F D E G H I J I K L M N O P@2 Q R P@2 S T U@2 V W U@2 Q
  X Y@2 Z AA Y@2 V AB AC@2 AD ~ P@2 Q R P@2 S T U@2 V W U@2 Q X Y@2 Z AA Y@2 V AB AC@2 AE@2 ~@16 D E D F D E G H I J I K
  L M N O@2 A B C@2 A B C@2 A B C@2 AF
>`.pickRestart({
  A: "~@3 g5@2 b5@3 f#6@3 b5@2 g5@3", B: "~@3 g5@2 b5@3 f#6@3 d6@2 g5@3", C: "~@3 g#5@2 c#6@3 e6@3 c#6@2 g#5@3",
  D: "f6 f#6@4 e6@3 f#6@5 e6@3", E: "a6@5 g6@5 ~ f#6@2 e6@3", F: "a6@15 ~", G: "e6 f#6@4 e6@3 f#6@5 e6@3",
  H: "a6@5 f6@5 ~ a6@5", I: "d#6 e6@4 d6@3 e6@5 d6@3", J: "g6@5 f6@5 ~ e6@2 d6@3", K: "g6@5 d#6@5 ~ g6@5",
  L: "d6@5 c6@3 d6@5 c6@3", M: "b5@5 c6@3 e6@5 g6@3", N: "b6@5 a6@3 d7@5 c7@3", O: "b6@5 b6@5 ~ b6@5", P: "[d6@15 ~]/2",
  Q: "g5@15 ~", R: "~@3 c6@2 d6@3 e6@3 d6@2 c6@3", S: "a5@15 ~", T: "~@5 f5@3 g5@3 a5@2 d6@3", U: "[c6@15 ~]/2",
  V: "f5@15 ~", W: "~@3 a#5@2 c6@3 d6@3 c6@2 a#5@3", X: "~@5 d#5@3 f5@3 g5@2 c6@3", Y: "[a#5@15 ~]/2", Z: "d#5@15 ~",
  AA: "~@3 g#5@2 a#5@3 c6@3 a#5@2 g#5@3", AB: "~@5 a#5@3 g#5@3 a#5@2 g#5@3", AC: "[g5@15 ~]/2", AD: "f#5 g5@14 ~",
  AE: "[f#5@15 ~]/2", AF: "e5 [e5,f5] f5 [e5,f5] e5 [e5,f5] f5 [e5,f5] e5 [e5,f5] f5 [e5,f5] e5 [e5,f5] f5 [e5,f5]",
})).s("gm_piano").gain(0.29).pan(0.3)

// other · alto sax · "Saxofón contralto"
const alto_sax = note(`<
  ~@24 A B C D ~@12 A B C D E F G@2 E F H@2 I J K@2 I J G@2 L M N@2 L M K@2 G@2 O P E F G@2 E F H@2 I J K@2 I J G@2 L M
  N@2 L M K@2 G@2 Q@2 ~@12 A B C D ~@12 A B C D E F G@2 E F H@2 I J K@2 I J G@2 L M N@2 L M K@2 G@2 O P E F G@2 E F H@2
  I J K@2 I J G@2 L M N@2 L M K@2 G@2 Q@2 ~@12 A B C D ~@12 A B C D ~@13 R
>`.pickRestart({
  A: "d4@5 c4@3 d4@5 c4@3", B: "b3@5 c4@3 e4@5 g4@3", C: "b4@5 a4@3 d5@5 c5@3", D: "a#4 b4@4 b4@3 b4@3 ~@5",
  E: "d5@3 d5@3 ~@2 d5@5 c5@3", F: "d5", G: "g4/2", H: "a4", I: "c5@3 c5@3 ~@2 c5@5 a#4@3", J: "c5", K: "f4/2",
  L: "a#4@3 a#4@3 ~@2 a#4@5 g#4@3", M: "a#4", N: "d#4/2", O: "f#4 g4@15", P: "g4@5 a4@5 ~ b4@5", Q: "[f4 d4@31]/2",
  R: "g4",
})).s("gm_alto_sax").gain(0.27).pan(0.4)

// other · tenor sax · "Saxofón tenor"
const tenor_sax = note(`<
  ~@24 A B C D ~@12 A B C D E F G@2 H F I@2 J K L@2 J K G@2 M N O@2 M N G@2 P@2 Q R E F G@2 S F I@2 J K L@2 J K G@2 M N
  O@2 M N G@2 P@2 T@2 ~@12 A B C D ~@12 A B C D E F G@2 H F I@2 J K L@2 J K G@2 M N O@2 M N G@2 P@2 Q R E F G@2 S F I@2
  J K L@2 J K G@2 M N O@2 M N G@2 P@2 T@2 ~@12 A B C D ~@12 A B C D ~@13 U
>`.pickRestart({
  A: "c4@8 b3@5 a3@3", B: "b3@8 g3@5 b3@3", C: "c4@8 d4@5 c4@3", D: "b3@3 ~@2 b3@5 ~ b3@5",
  E: "g4@3 g4@3 ~@2 f#4@5 f4@3", F: "g4", G: "c4/2", H: "g4@3 g4@3 ~@2 f#4@5 d#4@3", I: "d4/2",
  J: "f4@3 f4@3 ~@2 f4@5 d4@3", K: "f4", L: "a3/2", M: "d#4@3 d#4@3 ~@2 d#4@5 c#4@3", N: "d#4", O: "g#3/2", P: "b3/2",
  Q: "a#3 b3@15", R: "b3@5 d4@5 ~ e4@5", S: "g4@3 g4@3 ~@2 f#4@5 e4@3", T: "[a3 f#3@31]/2", U: "e4",
})).s("gm_tenor_sax").gain(0.27).pan(0.6)

// other · acoustic guitar nylon · "Guitarra clásica [Tablatura]"
const acoustic_guitar_nylon = note(`<
  ~@8 A@2 B C D E D F D E D G H I H J K L M N D E D F D E O G H I H J K L M P Q R S T Q R F U V W X Y V W S Z AA AB AC
  AD AA AB X AE AF@2 AG AH Q R S T Q R F U V W X Y V W S Z AA AB AC AD AA AB X AE AF@2 AI@2 D E D F D E D G H I H J K L
  M N D E D F D E O G H I H J K L M P Q R S T Q R F U V W X Y V W S Z AA AB AC AD AA AB X AE AF@2 AG AH Q R S T Q R F U
  V W X Y V W S Z AA AB AC AD AA AB X AE AF@2 AI@2 D E D F D E D G H I H J K L M N D E D F D E O G H I H J K L M P@2 A
  AJ C@2 A AK C@2 A@3 C AL
>`.pickRestart({
  A: "e2@3 g3@2 b3@3 f#4@3 b3@2 g3@3", B: "a3@3 g#4@2 c#5@3 e5@3 c#5@2 g#4@3", C: "a2@3 g#3@2 c#4@3 e4@3 c#4@2 g#3@3",
  D: "f4 f#4@4 e4@3 f#4@5 e4@3", E: "a4@5 g4@5 ~ f#4@2 e4@3", F: "a4", G: "a4@5 f4@5 ~ a4@5",
  H: "d#4 e4@4 d4@3 e4@5 d4@3", I: "g4@5 f4@5 ~ e4@2 d4@3", J: "g4@5 d#4@5 ~ g4@5", K: "d4@5 c4@3 d4@5 c4@3",
  L: "b3@5 c4@3 e4@5 g4@3", M: "b4@5 a4@3 d5@5 c5@3", N: "a#4 b4@4 b4@3 b4@3 ~@5", O: "e4 f#4@4 e4@3 f#4@5 e4@3",
  P: "b4@5 b4@5 ~ b4@5", Q: "d5@3 d5@3 ~@2 d5@5 c5@3", R: "d5", S: "g4", T: "~@3 c5@2 d5@3 e5@3 d5@2 c5@3",
  U: "~@5 f4@3 g4@3 a4@2 d5@3", V: "c5@3 c5@3 ~@2 c5@5 a#4@3", W: "c5", X: "f4", Y: "~@3 a#4@2 c5@3 d5@3 c5@2 a#4@3",
  Z: "~@5 d#4@3 f4@3 g4@2 c5@3", AA: "a#4@3 a#4@3 ~@2 a#4@5 g#4@3", AB: "a#4", AC: "d#4",
  AD: "~@3 g#4@2 a#4@3 c5@3 a#4@2 g#4@3", AE: "~@5 a#4@3 g#4@3 a#4@2 g#4@3", AF: "g4/2", AG: "f#4 g4@15",
  AH: "g4@5 a4@5 ~ b4@5", AI: "[f4 f#4@31]/2", AJ: "b2@3 g3@2 d4@3 f#4@3 d4@2 g3@3",
  AK: "e2@3 g3@2 d4@3 f#4@3 d4@2 g3@3", AL: "~ f#4@3, e2, ~ b2@15, ~ g3@7, ~@3 b3@13",
})).s("gm_acoustic_guitar_nylon").gain(0.26).pan(0.6)

// other · synth strings 1 · "Violín"
const synth_strings_1 = note(`<
  A@3 B C@3 B D A@3 D E D E D E D F G H G I J K L M D E D E D E D F G H G N J K L M O@2 P@2 O@2 Q@2 R@2 S@2 R@2 P@2 T@2
  U@2 T@2 S@2 P@2 H V O@2 P@2 O@2 Q@2 R@2 S@2 R@2 P@2 T@2 U@2 T@2 S@2 P@2 W@2 D E D E D E D F G H G I J K L M D E D E D
  E D F G H G N J K L M O@2 P@2 O@2 Q@2 R@2 S@2 R@2 P@2 T@2 U@2 T@2 S@2 P@2 H V O@2 P@2 O@2 Q@2 R@2 S@2 R@2 P@2 T@2 U@2
  T@2 S@2 P@2 W@2 D E D E D E D F G H G I J K L M D E D E D E D F G H G N J K L M X A@3 B C@3 B D A@3 D
>`.pickRestart({
  A: "e4/3", B: "f#4", C: "b4/3", D: "e4", E: "a4", F: "a4@5 f4@5 ~ a4@5", G: "d4", H: "g4", I: "g4@5 d#4@5 ~ g4@5",
  J: "c5@8 b4@5 a4@3", K: "b4@8 g4@5 b4@3", L: "c5@8 d5@5 c5@3", M: "b4@3 ~@2 b4@5 ~ b4@5", N: "g4@5 d#4@5 ~ d4@5",
  O: "d5/2", P: "g4/2", Q: "a4/2", R: "c5/2", S: "f4/2", T: "a#4/2", U: "d#4/2", V: "g4@5 a4@5 ~ b4@5", W: "f#4/2",
  X: "d5",
})).s("gm_synth_strings_1").gain(0.31)

// bass · electric bass finger · "Bajo eléctrico"
const bass = note(`<
  A@2 B@2 A@2 B@2 A@2 B@2 A B A B A B A C D E D E F G H@2 A B A B A B A C D E D E F I H@2 J K J K J K L M N O N O N O P
  Q R S R S R S T U J K V W J K J K J K L M N O N O N O P Q R S R S R S T U J K X Y A B A B A B A C D E D E F G H@2 A B
  A B A B A C D E D E F I H@2 J K J K J K L M N O N O N O P Q R S R S R S T U J K V W J K J K J K L M N O N O N O P Q R
  S R S R S T U J K X Y A B A B A B A C D E D E F G H@2 A B A B A B A C D E D E F I H@2 J A@2 B@2 A@2 B@2 A@2 B@2 Z
>`.pickRestart({
  A: "e2 b1", B: "a2 e2", C: "a2 f#2", D: "d2 a2", E: "g1 d2", F: "c2 g2", G: "c2 a2", H: "b1 f#2", I: "b1 g2",
  J: "c2@8 g2@3 g2@5", K: "c3@8 g2@3 g2@5", L: "f2@8 c2@3 c2@5", M: "f2@5 g2@5 ~ a2@5", N: "a#1@8 f2@3 f2@5",
  O: "a#2@8 f2@3 f2@5", P: "d#2@8 a#1@3 a#1@5", Q: "d#2@5 f2@5 ~ g2@5", R: "g#1@8 d#2@3 d#2@5", S: "g#2@8 d#2@3 d#2@5",
  T: "c#2@8 g#2@3 g#2@5", U: "c#3@8 g#2@3 g#2@5", V: "g1@8 d2@3 d2@5", W: "g1@5 a1@5 ~ b1@5", X: "b1@8 f#2@3 f#2@5",
  Y: "b2@8 f#2@3 f#2@5", Z: "e2",
})).s("gm_electric_bass_finger").gain(0.35).pan(0.3)

// chords · epiano2 · "Piano"
const epiano2 = note(`<
  ~@4 A@2 B@2 A@2 B@2 C D C D C D C D E F E F G H I@2 C D C D C D C D E F E F G H I@2 J@4 K@2 L@2 M@4 N@2 O@2 P@4 Q@2
  R@2 J@2 F S J@4 K@2 L@2 M@4 N@2 O@2 P@4 Q@2 R@2 J@2 F@2 C D C D C D C D E F E F G H I@2 C D C D C D C D E F E F G H
  I@2 J@4 K@2 L@2 M@4 N@2 O@2 P@4 Q@2 R@2 J@2 F S J@4 K@2 L@2 M@4 N@2 O@2 P@4 Q@2 R@2 J@2 F@2 C D C D C D C D E F E F G
  H I@2 C D C D C D C D E F E F G H I@2 ~@13 T
>`.pickRestart({
  A: "[[e2,e3,e4,g4,b4]@15 ~]/2", B: "[[a2,a3,a4,c#5,e5]@15 ~]/2", C: "[e2,e3,e4,g4,b4]@15 ~",
  D: "[a2,a3,a4,c#5,e5]@15 ~", E: "[d2,d3,d4,f4,a4]@15 ~", F: "[g2,g3,g4,b4,d5]@15 ~", G: "[c3,c4,g4,c5,e5]@15 ~",
  H: "[c3,c4,e4,g4,b4]@15 ~", I: "[b2,b3,d#4,f#4,a4]@15 ~", J: "[[c3,c4,e4,g4,c5]@15 ~]/2",
  K: "[[c3,c4,d#4,g4,c5]@15 ~]/2", L: "[[f2,f3,a4,c5,f5]@15 ~]/2", M: "[[a#2,a#3,d4,f4,a#4]@15 ~]/2",
  N: "[[a#2,a#3,c#4,f4,a#4]@15 ~]/2", O: "[[d#2,d#3,d#4,g4,a#4]@15 ~]/2", P: "[[g#2,g#3,g#4,c5,d#5]@15 ~]/2",
  Q: "[[g#2,g#3,g#4,b4,d#5]@15 ~]/2", R: "[[c#3,c#4,f4,g#4,c#5]@15 ~]/2", S: "[g2,g3,f#4,b4,d5]@15 ~",
  T: "~@5 b5@11, [e2,e3,e4] g5@3, ~ g4@15, ~ b4@7, ~@3 e5@13", // E
})).s("gm_epiano2").gain(0.28)

// drums · claves
const claves = s("clave:2").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~@2
>`.pickRestart({
  A: "x!2", B: "~@5 x ~@5 x ~@4",
})).gain(0.69)

stack(piano, alto_sax, tenor_sax, acoustic_guitar_nylon, synth_strings_1, bass, epiano2, claves)