Strudelify

Waltz Katzen Blut

Andrea Motas

KeyF majorTempo160 bpm
0:00/0:00
// Waltz Katzen Blut — Andrea Motas
// 160 bpm, 3/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 3/4 at bar 9) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/4666116; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 88 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. 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.

// chords · cello · "Violoncello"
const cello = note(`<
  A@2 ~@2 B@2 C@2 D E F G H I J@2 K L M D N@2 O P Q E F G H R J@2 K L S T U V W X K Y I Z ~@10 AA AB T E F G H AC J@2 K
  L M T N@2 O P T E F G H AC J@2 K L S T U V AD AE
>`.pickRestart({
  A: "[~@7 [a2,e3,db4]@7 ~@2]/2", B: "[~@14 [d3,b3]@7 ~@11]/2", C: "[~@4 db2@7 [db3,g3]@7 ~@14]/2",
  D: "d3@5 [f3,a3]@3 ~@3 [f3,a3]@3 ~@2", E: "g2@5 [db3,e3]@3 ~@3 [db3,e3]@3 ~@2", F: "f2@5 [a2,d3]@3 ~@3 [a2,d3]@3 ~@2",
  G: "e2@5 [db3,a3]@3 ~@3 [db3,a3]@3 ~@2", H: "eb2@5 [c3,a3]@3 ~@3 [c3,a3]@3 ~@2",
  I: "f2@5 [c3,a3]@3 ~@3 [c3,a3]@3 ~@2", J: "bb2@5 [f3,a3]@3 ~@3 [f3,a3]@3 ~@2",
  K: "g2@5 [d3,bb3]@3 ~@3 [d3,bb3]@3 ~@2", L: "c2@5 [bb2,e3]@3 ~@3 [bb2,e3]@3 ~@2",
  M: "f2@5 [c3,e3]@3 ~@3 [c3,e3]@3 ~@2", N: "e2@5 [bb2,d3]@3 ~@3 [bb2,d3]@3 ~@2", O: "a2@5 a3@5 ~ bb3@5",
  P: "a3@5 e3@5 ~ a2@5", Q: "d2@5 [f3,a3]@3 ~@3 [f3,a3]@3 ~@2", R: "f2@5 g3@5 ~ a3@5",
  S: "a2@5 [c3,e3]@3 ~@3 [c3,e3]@3 ~@2", T: "d2@5 [a2,f3]@3 ~@3 [a2,f3]@3 ~@2", U: "e2@5 [b2,d3]@3 ~@3 [b2,d3]@3 ~@2",
  V: "e2@5 [a2,e3]@3 ~@3 [a2,e3]@3 ~@2", W: "d3@3 ~@2 a2@3 ~@3 f2@3 ~@2", X: "d2@11 ~@5", Y: "c2@5 c2@3 ~@8",
  Z: "f2@5 ~@11", AA: "~@5 a2@11", AB: "a2@5 a2@5 ~ a2@5", AC: "f2@5 [c3,a3]@3 ~@3 [c3,f3]@3 ~@2",
  AD: "d3@5 a2@5 ~ f2@5", AE: "d2",
})).s("gm_cello").gain(0.4)

// chords · cello · "Violoncello" · soft notes
const cello_soft = note("<~@43 A B C D E F G H I J K L ~@33>".pickRestart({
  A: "~@5 [c3,a3]@3 ~@3 [c3,a3]@3 ~@2", B: "f2@5 [c3,ab3]@3 ~@3 [c3,ab3]@3 ~@2", C: "bb2@5 bb2@3 ~@8",
  D: "eb2@5 [bb2,d3]@3 ~@3 [bb2,d3]@3 ~@2", E: "eb3@3 d3@2 c3@3 bb2@3 a2@2 g2@3", F: "d2@11 a2@5", G: "g2@11 ab2@5",
  H: "a2@11 g2@5", I: "gb2@5 d3@5 ~ a3@5", J: "d3", K: "e3@11 e2@5", L: "a2@3 ~@13",
})).s("gm_cello").gain(0.2)

stack(cello, cello_soft)

More by Andrea Motas