New Tool (2.8): Renoam

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)

Before - some patterns:

Write grammar in ReNoam:

After - generated stuff appended:

Update: File selection ‘cancel’ bug fixed.

Update: v0.8 supports probabilistic context free grammars.

Update: ReNoam is now hosted on the renoise tools page: http://tools.renoise.com/tools/renoam

Thanks for uploading, taking a look!

Interesting, will check it :drummer:

EDIT:

opening your tool and pressing ‘Load’ in the window gives me:

pressing ‘Save’ in the same window:

Song hasn’t been upgraded yet to the latest version in the song settings of Renoise.

Thanks for reporting Jonas.
Ok, I get this if I click ‘cancel’ in the file selector dialog, is this what you did? Will fix it after shopping.

yep

What does mean
A->4 3
A->A 5 5
in reference to the sequence in the last picture?

yep, + more examples please :)

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.

Ok, file selection cancel bug is fixed. I updated the download attachment in the first post.

I see this is not self explanatory if you’re not a linguist.
More examples.

A really basic thing you could do with this is a conventional song structure:

Song -> StructureA

StructureA -> Intro Verse Chorus Verse Chorus Chorus

Intro -> 0
Verse -> 1
Chorus -> 2

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.:

S -> Intro Mid Outro

Mid -> SpeedUp SpeedDown
Mid -> SpeedUp Mid SpeedDown

Mid -> Mid Mid

Intro -> 0
Outro -> 1

SpeedUp -> 2
SpeedDown -> 3

Mid -> 4

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 ( http://en.wikipedia.org/wiki/L-system ) 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.

Cool! Maybe it is interesting to take a look at the following master thesis dealing with musical l-systems for inspiration/ideas:

I like the idea of a generative produced song, with tracks branching out in the pattern matrix like a tree B)

Nice!

Thanks, will definitely have a look at that!

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.

You’d declare alternative rules e.g. like this:

  
Intro -> StructureA <0.8>  
Intro -> StructureB <0.2>  
  

For more info have a look at the example grammars supplied with the tool. There’s also some documentation as PDF etc.

Please note: Grammar checking is not implemented yet. This will be the next thing to do.

FDK This is really awesome

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)

dear effdeeka,

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.

regards,
rhowaldt

LOL rhowaldt! Ok, so shut up and submit your entry to DDRC32 already! ;)

(Actually I think you’d understand this in no time - it just looks a bit weird at first glance. You understood it’s a niche-tool after all :D )

^ 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 :)

Hello f+d+k, is there a chance you have a german translation of the manual of ReNoam? Just asking because you said u studied in Tübingen. :)

Greets, Afreakana