After one and a half years I proudly present my first renoise tool!
(…even though I think LUA is damn ugly and I loathe it from the depth of my heart – which shows you how much I love renoise! )
ReNoam <<<
I don’t know if this is useful/interesting for anyone of you. Just check it out.
With ReNoam, you write a context-free grammar, hit the ‘Generate’ button, and a pattern sequence is appended to the sequencer.
A small example is loaded when you start the tool for the first time.
If you don’t like the outcome, simply undo with renoise.
So, this is very beta, please comment and report bugs.
I’m on WinXP, I wonder if it works on other systems, too.
Some screenshots to give you a basic idea of what the tool is about. (I ripped parts of Vivace’s Jong Belegen)
The complete derivation steps, applying one rule per step would have been in this case:
Song
=>
Intro A B
=>
0 0 1 2 A B
=>
0 0 1 2 A 5 5 B
=>
0 0 1 2 A 5 5 5 5 B
=>
0 0 1 2 A 5 5 5 5 5 5 B
=>
0 0 1 2 4 3 5 5 5 5 5 5 B
=>
0 0 1 2 4 3 5 5 5 5 5 5 7
You can have a look at what the generator does by opening the scripting editor.
If there is more than 1 matching rule (like in this case A → 4 3 and A → A 5 5), the algorithm picks one of them randomly with the same probability each.
The rule A → A 5 5 uses recursion. This is fine, as long as you supply some termination rule, too. If not, you will end up in an infinite loop. I will implement some basic grammar checking, but right now you have to be a bit careful with this.
This would always generate the pattern sequence 0 1 2 1 2 2, because there are no alternative rules, and the generator always expands the symbols the same way, applying the same rules. It would just save you a bit of clicking and that’s it. Boring.
But if you specify more alternative rules, giving the generator a random choice, things get more interesting, e.g.:
Now this would always start with pattern 0 and end with pattern 1.
But in between there may be structures with balanced paired patterns 2 and 3, mixed with pattern 4.
Have to wrap my head around the syntax/grammar/rules thing, reminds me of l-system ( L-system - Wikipedia ) like generators, could these be emulated in this tool?
At first glance, the main difference in L-systems seem to be the different application of rules. In L-systems it’s parallel, applying as many rules as match in one single step, whereas the generator in ReNoam is a classic left-to-right depth-first algorithm. It applies one rule in one step, i.e. searches the symbols from left to right for matching rules, applies one of them, and restarts from the left again.
My wild guess is ReNoam can’t do that L-systems stuff with the simple context-free approach. But maybe I will go for more powerful grammers in the future. Problem is, the more powerful the grammar, the more complex the way to use it…
I think the next step will be a probabilistic context-free grammar (PCFG). Right now, if there are two or more matching rules, the generator picks one of them, all with equal probability. With a PCFG you can adjust those probabilities.
Hey there, the new version 0.8 of ReNoam is available from the first post the renoise tools page.
The new version supports probabilistic context free grammars (PCFG)!
This means you are now able to set probabilities for the generator’s choice of rules.
btw the L-Systems table n things remind a bit of Fibonacci’s Numbers (wp) (warning, lots of uninteresting mathematics and only very few references to rabbit population growth)
i have absolutely no idea how to use this. but it doesn’t matter at all. i know instinctively that, although it is a niche-tool, this idea is damn awesome. keep up the good work.
^ sorry, have been a bit inactive around these parts. am in the middle of some personal stuff which switched my priorities for a bit. am going to get more into music again now though, so i’ll definitely make sure i’ll check out your tool when it comes to that. and maybe i’ll join a DDRC again too