Declarative representations are also very groovy, I loved the HarmTrace guys [1] view of harmonic analysis as parsing by a grammar so the AST reflects the harmony of the piece (for instance secondary dominants are similar to subordinate clauses in normal language). It is incomplete modeling sure, yet it generates a infinite variety from a finite set of generators, that make sense tonally (hand picked, not machine-inferred).
if you're interested in live coding, you might also want to check out Glicol (https://glicol.org).
Its parser and audio engine are also implemented purely in Rust, and it supports declarative, dynamic updates. A no_std version for embedded systems is also in development.
Declarative representations are also very groovy, I loved the HarmTrace guys [1] view of harmonic analysis as parsing by a grammar so the AST reflects the harmony of the piece (for instance secondary dominants are similar to subordinate clauses in normal language). It is incomplete modeling sure, yet it generates a infinite variety from a finite set of generators, that make sense tonally (hand picked, not machine-inferred).
[1] https://github.com/haas/harmtrace
renoise is super cool.
if you're interested in live coding, you might also want to check out Glicol (https://glicol.org).
Its parser and audio engine are also implemented purely in Rust, and it supports declarative, dynamic updates. A no_std version for embedded systems is also in development.
Online playground: https://pattrns.renoise.com/
Here's a video showing how to use it in the Renoise DAW.
https://youtu.be/9c9Qq5LieBY?t=46
Can anyone recommend something similar for Python or Golang?
[flagged]