Lindenmayer systems in Renoise


(fugue) #1

Is there any easy way to use Lindenmayer systems (L-systems) in Renoise?

I spotted the very cool ReNoam tool, which looked promising, but since it’s limited to Chomskyan context-free grammars (CFGs) and probabilistic context free grammars (PCFGs) it can’t be used for this purpose, because neither CFGs nor PCFGs can represent L-systems.

(For those of you wondering what L-systems have to do with music, here are a couple of good, brief overviews [1],[2], and another good one that’s not so brief: [3] )


(f+d+k) #2

Oh, I remember back then someone (I think Djeroek~~)~~ asked me if ReNoam could support L-systems, so I had a quick look into them, but didn’t have the time to really work on it.

I have to admit I completely forgot about this tool… And TBH, I didn’t like Lua at all, for some reason it never clicked with me, and I never really was keen on coming back to it.
Anyways, thanks for the pointers, I’ll definitely have another look out of interest, but it’s very unlikely I’ll really implement any of it. But if anybody else likes to do it, any parts of ReNoam may be re-used if needed.

Edit:
Did you see this one: http://www.renoise.com/tools/clip-composing-language ? I’m not sure what exactly can be done with it though, shame I never tried it.


(fugue) #3

First, let me thank you, f+d+k, for writing ReNoam. It looks very useful as it is, and I look forward to using it to experiment with CFGs and PCFGs.

As for Clip, it looks interesting, and I tried to install it, but it seems to be incompatible with Renoise 3.1.0b4, it hasn’t been updated since 2013, and the website hosting its official documentation [1] does not resolve (though I did find the docs on another site [2]). I think it’s fair to say that project is dead.

If I was going to roll my own L-system implementation, at this point I’d probably start with something like XStream, which is a much more recent and living project, which is compatible with the latest version of Renoise. I need to re-learn Lua (it’s been a long time), along with XStream, and the Renoise API for that to happen, though, which might take a while.


(fugue) #4

I just realized there’s one more way to do this, which is to directly write a track in a format that Renoise can understand, like xrns. That way, Renoise would only be used for playback (and/or editing), and the track can be written using any programming language.

I took a look at an xrns file, and it’s just a zip file with flacs for instruments and an XML file containing the rest of the track. The XML is clear enough, and may even be documented somewhere, and it doesn’t seem like it would be that hard to generate, especially if I wind up just modifying an existing track that has all the instruments and various track metadata already set up by Renoise.

The main downside of this approach is the track couldn’t be generated and modified live. Renoise would have to re-load the track to get new data to play.


(f+d+k) #5

Yeah, you can do this for sure. The Schemas are coming with Renoise: <RenoiseFolder>/Resources/Schemas/

IIRC, Conner_Bw did some work in PHP for offline processing XRNS. Maybe there’s something to build on… I’m not sure if it’s still available though.

I also thought about generating XRNS files a few years ago, but never really did it. Basically I started implementing a couple of classes etc. in Java in order to generate compositions, but soon I thought I could generate the sounds as well, rather than using Renoise as a player – and then I remembered ChucK, got totally distracted and experimented with that for a while… Oh well :lol:

(Definitely need to check out XStream…)