During my aggressive push to learn as much as possible about SuperCollider over the weekend, I’ve translated an earlier Csound etude of mine into SC code that generates a sequence in real-time using a Markov chain. I’ve come away with a few thoughts.
While I believe Csound definitely has an sharp edge in the DSP department, SuperCollider excels in allowing users to compose their own algorithmic sequencers. Even though the syntax of this Smalltalk-based language looks and feels very slippery to me, the SC code comes off as being much more concise and expressive than the Csound counterpart.
As for the work itself, I consider this to be very much a technical exercise; There is still so much about SuperCollider I’m completely ignorant of, including basic patterns and Pbinds, etc, and grinding against a problem like this is a big help in leveling up. Though it appears I’ll be able to build a generic Markov chain engine, separating the the SynthDefs from the nodes in a reusable function of some sort, which is the long term goal. This earliest of prototypes already goes pretty far in this direction, but there is plenty room for improvement.
Grab the SuperCollider code.
Be sure and check out the MarkovSet class in the MathLib quark. I honestly haven’t spent much time with it myself but it might provide some pointers for your code.
-Nick
….which is to say that the code you’ve done seems great! What I meant was for doing a more generic version.. MarkovSet might be a good substitute or reference.
Thanks Nick for the recommendation. I’ve yet to explore any of the quarks as I’m still learning the fundamentals of the language. Seems to be filled with a lot of things I want to play with, though. :)