Strudelify

Piazzola Libertango for 3 Cello

Astor Piazzola

KeyF majorTempo120 bpm
0:00/0:00
// Piazzola Libertango for 3 Cello — Astor Piazzola
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5495295; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 101 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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.

// other · cello · "Violoncello"
const cello = note(`<
  ~@11 A B@2 C@2 D@2 E@2 F G H I J K L M L M N O P Q@3 R S T U V W A X Y Z T AA AB AC AD E AE A AF AG AH AI AJ AK AL@2
  AM AN AO AP AQ AR F G H I J K L M L M N O P Q@3 F G H I J K L M L M N O P Q@3 AS
>`.pickRestart({
  A: "d5", B: "c5", C: "b4", D: "bb4", E: "a4", F: "~@2 a4@2 bb4@2 a4 ~ bb4@2 a4@2 f5@2 d5@2",
  G: "~@2 a4@2 bb4@2 a4 ~ f5@2 d5@2 a4@2 bb4@2", H: "~@2 ab4@2 a4@2 ab4 ~ a4@2 ab4@2 e5@2 b4@2",
  I: "~@2 ab4@2 a4@2 ab4 ~ e5@2 b4@2 ab4@2 a4@2", J: "~@2 g4@2 a4@2 g4 ~ a4@2 g4@2 e5@2 bb4@2",
  K: "~@2 g4@2 a4@2 g4 ~ e5@2 bb4@2 g4@2 a4@2", L: "~@2 f4@2 g4@2 f4 ~ g4@2 f4@2 d5@2 a4@2",
  M: "~@2 f4@2 g4@2 f4 ~ d5@2 a4@2 f4@2 g4@2", N: "~@2 f4@2 g4@2 f4 ~ g4@2 f4@2 d5@2 ab4@2",
  O: "~@2 f4@2 g4@2 f4 ~ d5@2 ab4@2 f4@2 g4@2", P: "~@2 e4@2 f4@2 e4 ~ f4@2 e4@2 db5@2 g4@2",
  Q: "~@2 e4@2 f4@2 e4 ~ db5@2 g4@2 e4@2 f4@2", R: "a5", S: "a5@3 a5 g5 f5 e5 d5", T: "e5", U: "e5@4 e5@3 f5",
  V: "g5 ab5 g5 f5 g5@12", W: "g5@3 a4 f5 e5 d5 db5", X: "d5@4 d5 a4 d5 e5", Y: "f5", Z: "f5@3 a4 f5 e5 f5 d5",
  AA: "e5@8 e5@3 e5@2 e5@3", AB: "e5 f5 e5 d5 e5@12", AC: "e5 e5@3 d5@4 d5@6 d5@2, ~ f5 ~@14",
  AD: "e5 d5 [b4,db5] bb4 a4@12", AE: "eb5", AF: "d5 gb4@2 g4", AG: "a4@2 bb4@2 db5@2 d5 ~", AH: "~@3 c5@3 db5@2",
  AI: "db5@2 c5 ~", AJ: "~ db5 e5 d5", AK: "db5", AL: "d5@3 a4@3 d5@2", AM: "b4@3 e5@3 b4@2", AN: "b4@3 d5@3 b4@2",
  AO: "d5@3 g4@3 d5@2", AP: "d5@3 g4@3 g4@2", AQ: "a4@3 d5@3 a4@2", AR: "f5 e5 d5 c5 bb4 a4 g4 f4", AS: "d5 a4 d5@2",
})).s("gm_cello").gain(0.3)

// other · cello
const cello_2 = note(`<
  ~@20 A@7 B C@2 D@2 E@2 F@2 A@7 B C@2 D@2 E@2 F G H I J K L M N@2 O P Q@2 R S T U A@7 B C@2 D@2 E@2 F ~ N V R@2 W X Y Z
  AA AB AC Q AD AE AF@2 AG
>`.pickRestart({
  A: "d2@3 ~@3 d2@3 ~@3 d2@2 ~@2", B: "d2@3 ~@3 d2@3 ~@3 d3@2 ~@2", C: "c3@3 ~@3 c3@3 ~@3 c3@2 ~@2",
  D: "b2@3 ~@3 b2@3 ~@3 b2@2 ~@2", E: "bb2@3 ~@3 bb2@3 ~@3 bb2@2 ~@2", F: "a2@3 ~@3 a2@3 ~@3 a2@2 ~@2",
  G: "a2@3 ~@8 g3 ab3 a3 bb3 b3", H: "c4@12 c4@2 eb3 d3", I: "db3@2 d3@2 a3@2 c4@2 bb3@2 a3@2 ~@2 g3 a3", J: "bb3",
  K: "bb3@4 bb3 gb3 g3 a3", L: "bb3 a3 bb3@6 bb3@6 b3 c4", M: "db4 c4 e4 g4 c5 bb4 a4 g4", N: "a4", O: "f4",
  P: "f4@3 a3", Q: "ab3", R: "e4", S: "e4@3 g3", T: "f3", U: "[d3,a3]!8", V: "a4@3 a3 g4 f4 e4 d4", W: "g4",
  X: "g4@3 a3 f4 e4 d4 db4", Y: "d4", Z: "d4@4 ~ a3 d4 e4", AA: "f4@6 db4 e4", AB: "d4@3 a3@2 g3@3 f3@2 g3@2 a3@2 c4@2",
  AC: "e4@3 e4@2 ab3@3 ab3@8", AD: "e4 f4 e4 d4 e4@12", AE: "e4@4 e4 f4 e4 d4",
  AF: "[e4 d4@2 db4@2 bb3@2 a3@2 g4@2 f4@2 e4@2 e4]/2", AG: "d4 a3 d3@2",
})).s("gm_cello").gain(0.3)

// bass · pizzicato strings
const bass = note(`<
  [d2@3 d2@3 d2@2]!11
  [d2@3 d2@3 d3@2]
  [c3@3 c3@3 c3@2]!2
  [b2@3 b2@3 b2@2]!2
  [bb2@3 bb2@3 bb2@2]!2
  [a2@3 a2@3 a2@2]!2
  ~@81
>`).s("gm_pizzicato_strings").gain(0.25)

stack(cello, cello_2, bass)