Strudelify

Malagueña

Pablo de Sarasate

KeyD majorTempo70 bpm
0:00/0:00
// Malagueña — Pablo de Sarasate
// 70 bpm, 3/8, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5886985; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 204 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(70/1.5)

// 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 · pizzicato strings
const pizzicato_strings = note("<~@54 A B C D A E C F G H I J K L M N O P Q R ~@129 S>".pickRestart({
  A: "[d4,a4,f#5]@5 a5@3 f#5@3 a5@2 f#5@3", B: "[d4,a4]@5 ~@11", C: "[d4,a#4,g5]@5 a#5@3 g5@3 a#5@2 g5@3",
  D: "[d4,a#4]@5 ~@11", E: "[d4,d5]@3 a4@2 a5@3 f#5@3 a5@2 f#5@3", F: "[d4,d5]@3 a#4@2 a#5@3 g5@3 a#5@2 g5@3",
  G: "[d4,a4,f#5]@5 a5@3 f#5@3 d5@5", H: "a4@3 f#4@2 d4@5 ~ [d4,a4,f#5]@5", I: "[d4,a#4,g5]@5 a#5@3 g5@3 d5@5",
  J: "a#4@3 g4@2 d4@5 ~ [d4,a#4,g5]@5", K: "[d4,a4,f#5]@5 a5@3 f#5@3 d5@2 a4@3", L: "f#4@3 d4@2 a5@3 f#5@3 d5@2 a4@3",
  M: "[d4,a#4,g5]@5 a#5@3 g5@3 d5@2 a#4@3", N: "g4@3 d4@2 a#3@3 g3@3 a#5@2 g5@3",
  O: "[d4,a4,f#5]@5 a5 ~ g5 f#5 e5 ~ d5@3 ~@2", P: "a4 g4 ~ f#4 e4 d4@3 ~@3 [d4,a4,f#5]@5",
  Q: "[d4,a#4,g5]@5 d5 ~ c5 a#4 a4 ~ g4@3 ~@2", R: "d4 c4 ~ a#3 a3 g3@3 ~@8", S: "d4@3 ~@13",
})).s("gm_pizzicato_strings").gain(0.3)

// chords · violin · "Violin II"
const violin = note(`<
  A B A B A B A B A@3 B A B A@2 C D@2 C D@2 E F@2 E F@2 G H I E F@2 G H I E F@2 A J K L K@3 M N O P@4 Q R S T U V W X
  Y@2 Z T U V W X AA AB AC@2 AD AE AD AE AD ~@3 AF@3 AG@3 AF@2 AH@3 AF@2 AI AJ AK AH@3 AF@2 AL AM AN AO AN AP AQ ~ AR@3
  AS@3 AR@2 AT@3 AR@2 AI AJ AK AT@3 AR@2 AL AM AN AO AN AP AU ~ AV A B A B A@3 B A B A@2 C D@2 C D@2 E F@2 E F@2 G H I E
  F@2 G H I E F@2 A J K L K@3 M N O AW AX AW AX AW AX AW AX AY AZ AY AZ BA@3 ~@2
>`.pickRestart({
  A: "~@5 [a3,d4]@5 ~ [a3,d4]@5", B: "~@5 [a#3,d4]@5 ~ [a#3,d4]@5", C: "~@5 [c#4,f#4]@5 ~ [c#4,f#4]@5",
  D: "~@5 [d4,f#4]@5 ~ [d4,f#4]@5", E: "~@5 [b3,e4]@5 ~ [b3,e4]@5", F: "~@5 [c#4,e4]@5 ~ [c#4,e4]@5",
  G: "~@5 [c#4,a4]@5 ~ [c#4,a4]@5", H: "~@5 [b3,g#4]@5 ~ [a3,g4]@5", I: "~@5 [a3,f#4]@5 ~ [a3,f4]@5",
  J: "~@5 [a#3,e4]@5 ~ [a#3,e4]@5", K: "~@5 [a3,f4]@5 ~ [a3,f4]@5", L: "~@5 [c#4,f4]@5 ~ [c#4,f4]@5",
  M: "~@5 [e4,g4]@5 ~ [e4,g4]@5", N: "~@5 [f#4,a4]@5 ~ [f#4,a4]@5", O: "~@5 [a3,g4]@5 ~ [a3,g4]@5",
  P: "[~@5 [a3,f#4]@16 g3@3 a3@3 a#3@2 c4@3]/2", Q: "d4@5 ~@11", R: "~@11 d4@5", S: "g4@5 g4@5 ~ g4@5",
  T: "g4@2 a4@2 ~ f#4@3 ~@3 g4@3 ~@2, ~@2 g4 ~@5", U: "a4@11 f#4@5", V: "d4@11 d4@5", W: "c4@5 c4@5 ~ c4@5",
  X: "c4@2 d4@2 ~ a#3@3 ~@3 c4@3 ~@2, ~@2 c4 ~@5", Y: "[d4@27 d4@5]/2", Z: "g4@5 a#4@5 ~ a4@5",
  AA: "d4@3 ~@2 [f#4,d5]@3 d4@3 [f#4,d5]@3 ~@2", AB: "~@5 [f#4,d5]@3 d4@3 [f#4,d5]@3 ~@2",
  AC: "~@5 [g4,d#5]@3 d#4@3 [g4,d#5]@3 ~@2", AD: "[f#4,d5]@5 ~@11", AE: "[g4,d5]@5 ~@11", AF: "~@5 [b4,d5]@5 ~@6",
  AG: "~@5 [c5,d5]@5 ~@6", AH: "~@5 [c5,e5]@5 ~@6", AI: "~@5 [a4,c5]@11", AJ: "~@5 [d4,b4]@5 ~ [d4,c5]@5",
  AK: "[d4,b4]@5 ~@11", AL: "~@5 [a4,c5]@5 ~@6", AM: "~@5 [g4,b4]@5 ~ [f#4,c5]@5", AN: "[g4,b4]@5 ~@6 [a#4,c#5]@5",
  AO: "[b4,d5]@5 ~@6 [f#4,c5]@5", AP: "[b4,d5]@5 ~@6 [c4,f#4]@5", AQ: "[b3,g4]@5 g3@5 ~@6", AR: "~@5 [g4,b4]@5 ~@6",
  AS: "~@5 [f#4,c5]@5 ~@6", AT: "~@5 [g4,c5]@5 ~@6", AU: "[b3,g4]@5 ~@11", AV: "g3",
  AW: "~@3 [a3,d4]@3 ~@2 [a3,d4]@3 ~@5", AX: "~@5 [a#3,d4]@11", AY: "[a3,d4]", AZ: "[g3,e4]", BA: "[a3,d4]/3",
})).s("gm_violin").gain(0.15)

// other · viola
const viola = note(`<
  A B A B A B A B A@3 B A B A@2 C D@2 E F G H I@2 J K L M N O P I@2 Q R O P I@2 S T U V U@2 O W X Q Y Z Y AA ~@16 AB@2
  AC@2 AD@5 ~@3 AE@3 AF@3 AE@2 AG@3 AE@2 AH AI AJ AG@3 AK@2 AL O AM AN AO AP AQ ~ AK@3 AR@3 AK@2 AL@3 AK@2 AH AI AJ AL@3
  AK@2 AH O AM AN AO AP AQ ~ AS A B A B A@3 B A B A@2 C D@2 E F G H I@2 J K L M N O P I@2 Q R O P I@2 S T U V U@2 O W X
  Q AT AU AT AU AT AU AT AU AV AW AV AW AX@3 ~@2
>`.pickRestart({
  A: "d3@5 f#3@5 ~ f#3@5", B: "d3@5 g3@5 ~ g3@5", C: "f#3@5 f#3@5 ~ f#3@5", D: "f#3@5 b3@5 ~ b3@5",
  E: "e3@5 a#3@5 ~ a#3@5", F: "d3@5 b3@5 ~ b3@5", G: "b3@5 b3@5 ~ b3@5", H: "e3@5 g#3@5 ~ g#3@5", I: "e3@5 a3@5 ~ a3@5",
  J: "d3@5 g#3@5 ~ g#3@5", K: "c#3@5 a3@5 ~ a3@5", L: "a3@5 a3@5 ~ a3@5", M: "a3@5 e4@5 ~ e4@5", N: "b3@5 e4@5 ~ c#3@5",
  O: "d3@5 d4@5 ~ d4@5", P: "e3@5 d4@5 ~ d4@5", Q: "a3@5 c#4@5 ~ c#4@5", R: "b3@5 d4@5 ~ c#3@5", S: "d3@5 f3@5 ~ f3@5",
  T: "c3@5 g3@5 ~ g3@5", U: "f3@5 c4@5 ~ c4@5", V: "f3@5 a#3@5 ~ a#3@5", W: "a#3@5 d4@5 ~ d4@5", X: "a3@5 d4@5 ~ d4@5",
  Y: "d3@5 a3@5 ~ d4@5", Z: "d3@5 a#3@5 ~ e4@5", AA: "d3@5 a#3@5 ~ d#4@5", AB: "d3@5 d4@5 ~ a3@5",
  AC: "d3@5 d#4@5 ~ a#3@5", AD: "[d4,a4]@5 ~@11", AE: "g3@5 g4@5 ~@6", AF: "d3@5 f#4@5 ~@6", AG: "c3@5 g4@5 ~@6",
  AH: "c3@5 e4@5 ~ c3@5", AI: "d3@5 g4@5 ~ f#4@5", AJ: "[g3,g4]@5 ~@11", AK: "g3@5 d4@5 ~@6", AL: "c3@5 e4@5 ~@6",
  AM: "g3@5 ~@6 [d#3,g3]@5", AN: "[d3,g3]@5 ~@6 d3@5", AO: "[g3,d4]@5 ~@6 [d#3,g3]@5", AP: "[d3,g3]@5 ~@6 [d3,d4]@5",
  AQ: "g3@5 ~@11", AR: "d3@5 d4@5 ~@6", AS: "g3", AT: "~@3 f#3@3 ~@2 f#3@3 ~@5", AU: "~@5 [d3,g3]@11", AV: "[f#3,a3]",
  AW: "[g3,a#3]", AX: "f#3/3",
})).s("gm_viola").gain(0.15)

// chords · pizzicato strings
const pizzicato_strings_2 = note("<~@54 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 ~@133 C>".pickRestart({
  A: "[f#3,d4]@5 ~@11", B: "[g3,d#4]@5 ~@11", C: "d3@3 ~@13",
})).s("gm_pizzicato_strings").gain(0.15)

// other · cello
const cello = note(`<
  A B A B A B A B A@3 B A B A@2 C D C@2 D@2 E F E@2 F@14 G H I J I K G J F@2 L@4 ~@16 L@4 A@5 ~@3 M@3 N@3 M O P@3 M O Q
  R B P@3 M O Q R S R S R T ~ M@3 N@3 M O P@3 M O Q R B P@3 M O Q R S R S R U ~ V A B A B A@3 B A B A@2 C D C@2 D@2 E F
  E@2 F@14 G H I J I K G J F@2 W X W X W X W X Y@4 Z@3 ~@2
>`.pickRestart({
  A: "d2@5 ~@11", B: "g2@5 ~@11", C: "f#2@5 ~@11", D: "b2@5 ~@11", E: "e2@5 ~@11", F: "a2@5 ~@11", G: "d3@5 ~@11",
  H: "c3@5 ~@11", I: "f2@5 ~@11", J: "a#2@5 ~@11", K: "f3@5 ~@11", L: "d2", M: "g2@5 ~@6 d3@5", N: "d2@5 ~@6 d3@5",
  O: "g2@5 ~@6 g2@5", P: "c2@5 ~@6 g2@5", Q: "c2@5 ~@6 c2@5", R: "d2@5 ~@6 d2@5", S: "g2@5 ~@6 d#2@5",
  T: "g3@5 g2@5 ~@6", U: "g3@5 ~@11", V: "g2", W: "d2@3 ~@2 a2@3 ~@3 d3@3 ~@2", X: "g2@3 ~@2 d2@11", Y: "d2/2",
  Z: "d2/3",
})).s("gm_cello").gain(0.15)

// chords · pizzicato strings
const pizzicato_strings_3 = note("<~@54 A@2 B@3 A@2 B@2 A B@2 A@2 B@2 ~@133 C>".pickRestart({
  A: "[d2,a2]@5 ~@11", B: "[d2,a#2]@5 ~@11", C: "d2@3 ~@13",
})).s("gm_pizzicato_strings").gain(0.15)

stack(pizzicato_strings, violin, viola, pizzicato_strings_2, cello, pizzicato_strings_3)