Strudelify

gran vals

Francisco Tárrega

KeyA majorTempo160 bpm
0:00/0:00
// gran vals — Francisco Tarréga
// 160 bpm, 3/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 3/4 at bar 2) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/73009; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 161 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 · [...]/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 · violin
const violin = note(`<
  A B C@2 D E F G ~ C E H I J K L A B C@2 D@2 M N O C O H B C I P@2 Q R S T U V Q W Q X Y Z AA AB AC AD Q R S T U V Q W
  Q X Y Z AA AB AE@2 AF@2 AG AH AF@2 AI B AJ@3 AK AL AM AN AO AF@2 AG AH AF@2 AI B AJ@3 AK AL AM AN AP I@3 AQ AR AS AT
  AU I@3 AQ AR AV AC AW I@3 AQ AR AS AT AU I@3 AQ AR AV AC AX B C@2 D E F G ~ C E H I J K L A B C@2 D@2 M N O C O H B C
  I AY@2
>`.pickRestart({
  A: "~@11 e5@5", B: "e5", C: "f#5", D: "g#5", E: "g#5@11 a5@5", F: "a5@11 g#5@5", G: "g#5@5 f#5@5 ~@6", H: "c#6",
  I: "b5", J: "e6@3 d6@2 f#5@5 ~ g#5@5", K: "c#6@3 b5@2 d5@5 ~ e5@5", L: "b5@3 a5@2 c#5@5 ~ e5@5", M: "a5", N: "e6",
  O: "d6", P: "[a5@21 e6@3 d#6@3 f#6@2 e6@3]/2", Q: "c#6 d#6 c#6 ~@2 g#5@5 ~ e5@5", R: "~@3 b4@2 e5@3 g#5@3 e5@2 g#5@3",
  S: "a5 b5 a5 ~@2 b4@5 ~ b4@5", T: "~@5 f#6@3 d#6@3 e6@2 c#6@3", U: "e6@5 b4@5 ~ b4@5", V: "~@5 d#6@3 b5@3 c#6@2 a5@3",
  W: "~@5 e6@3 d#6@3 f#6@2 e6@3", X: "~@3 e4@2 g#4@3 b4@3 e5@2 b5@3", Y: "b5@5 f#4@5 ~ f#4@5",
  Z: "~@3 f#4@2 g#4@3 a4@3 b4@2 c#5@3", AA: "c#5 d#5 c#5 ~@2 g#4@5 ~ e6@5", AB: "d#6@5 c#6@5 ~ d#5@5", AC: "g#4",
  AD: "g#4@5 e6@3 d#6@3 f#6@2 e6@3", AE: "[g#4@21 ~@11]/2", AF: "~@5 d#5@5 ~ d#5@5", AG: "~@5 c#5@5 ~ c#5@5", AH: "c#5",
  AI: "a#4 b4 a#4 ~@2 a4@5 ~ a#4@5", AJ: "d#5", AK: "a#5@11 g#5@5", AL: "d#5@5 b4@5 ~ e5@5", AM: "d#5@11 a#4@5",
  AN: "b4", AO: "f#4@5 ~@11", AP: "f#4@5 ~@6 b5@5", AQ: "~@5 d#6@3 e6@3 f6@2 f#6@3", AR: "e6@3 d#6@2 b4@5 ~ b4@5",
  AS: "~@5 f#5@3 d#5@3 e5@2 c#5@3", AT: "e5@3 d#5@2 g#4@5 ~ g#4@5", AU: "~@11 b5@5", AV: "c#6@3 b5@2 a4@5 ~ a4@5",
  AW: "g#4@5 ~@6 b5@5", AX: "g#4@5 ~@6 e5@5", AY: "[a5@21 ~@11]/2",
})).s("gm_violin").gain(0.3)

// chords · trombone
const trombone = note(`<
  ~ A@6 B C B@2 D@2 ~@4 A@6 E@2 B F G A H D I@2 ~@12 J K L M ~@12 J K L N O P Q R O P S T U V W X Y Z AA AB O P Q R O P
  S T U V W X Y Z AA AC AD@2 AE P O AF AG AH AD@2 AE P O P L N AD@2 AE P O AF AG AH AD@2 AE P O P L N A@6 B C B@2 D@2
  ~@4 A@6 E@2 B F G A H D I@2
>`.pickRestart({
  A: "~@5 [a3,c#4]@5 ~ [a3,c#4]@5", B: "~@5 [b3,d4]@5 ~ [b3,d4]@5", C: "b2@5 c#3@5 ~ d3@5",
  D: "~@5 [d4,g#4]@5 ~ [d4,g#4]@5", E: "~@5 [f#4,b4]@5 ~ [f#4,b4]@5", F: "~@5 [f4,a4]@5 ~ [f4,a4]@5",
  G: "~@5 [e4,a4]@5 ~ [e4,a4]@5", H: "~@5 [b3,d#4]@5 ~ [b3,d#4]@5", I: "[[c#4,e4]@21 ~@11]/2", J: "~@11 [c#4,e4]@5",
  K: "[b3,d#4]@5 [a3,c#4]@5 ~ [f#3,a3]@5", L: "e3@5 b2@5 ~ g#2@5", M: "e3@11 ~@5", N: "e3@5 ~@11", O: "f#3", P: "b3",
  Q: "a#3", R: "~@5 g#3@5 ~ f#3@5", S: "c#4", T: "~@5 g#4@5 ~ f#4@5", U: "~@5 [f#3,b3]@5 ~ [f#3,b3]@5",
  V: "~@5 [g3,c#4]@5 ~ [g3,c#4]@5", W: "~@5 [g#3,b3]@5 ~ [g#3,b3]@5", X: "~@5 [c#4,e4]@5 ~ [c#4,e4]@5",
  Y: "f#3@5 d#3@5 ~ g#3@5", Z: "f#3@5 f3@5 ~ e3@5", AA: "b2@5 f#3@5 ~ d#3@5", AB: "b3@5 ~@11", AC: "b2@5 ~@11",
  AD: "~@5 g#4@5 ~ g#4@5", AE: "~@5 a4@5 ~ a4@5", AF: "b2", AG: "e3@11 e3@5", AH: "b2@11 ~@5",
})).s("gm_trombone").gain(0.3)

// bass · tuba · "C Tuba"
const bass = note(`<
  ~ A B A B A B C ~ B C B D B D E A@2 B A B@2 A F@2 C F D B@2 D G H B@2 I J I C B@4 A@2 C K L M B@2 I J I C B@4 A@2 C K
  L N C O P Q C O P O C Q R B S O T@2 C O P Q C O P O C Q R B S O T@2 D J I C I C U V D J I C I C L N D J I C I C U V D
  J I C I C L N A B A B A B C ~ B C B D B D E A@2 B A B@2 A F@2 C F D B@2 D G H
>`.pickRestart({
  A: "a2", B: "e2", C: "b2", D: "e3", E: "a3", F: "d3", G: "a2@5 e3@5 ~ c#3@5", H: "a2@5 ~@11", I: "f#3", J: "b3",
  K: "~@11 b2@5", L: "e3@5 b2@5 ~ g#2@5", M: "e2@11 ~@5", N: "e2@5 ~@11", O: "f#2", P: "c#3", Q: "a#2", R: "g#2",
  S: "f#2@5 ~@11", T: "b2@5 ~@11", U: "e2@11 e3@5", V: "b2@11 ~@5",
})).s("gm_tuba").gain(0.3)

stack(violin, trombone, bass)

More by Francisco Tárrega