Page 1 of 1

KoDream Improv - usage guidelines anywhere?

Posted: Sun Jan 06, 2013 9:45 am
by nikto
Hi, buzzers, and merry xml-smas!

I'm trying to wrap my head around Kodream Improv and its possibilities.
Is there anywhere a reasonable explanation on the web on how the grammar works, and how to set it up for my own needs?

Re: KoDream Improv - usage guidelines anywhere?

Posted: Sun Jan 06, 2013 4:53 pm
by thOke
The Idea:

Formal languges can be used to make music. A formal language is a language which every sentence can be generated from a set of rules. Each of these lines was a rule, the symbol "->" is pronounced "goes to", and the vertical bar is "or",

S -> verse bridge break chorus break verse

verse -> A B C B A | A B C B A

bridge -> thump thump thump thump

break -> dri ri ri ri ri ri ri ri ri ri ri ri lllll

ri -> ro | ti

chorus -> la la hey

Given the rules above a possible sentence is:

A B C B A thump thump thump thump dri ti ro ti ti ro ro ti ro ti ro ro ro lllll la la hey dri ti ro ro ro ro ti ti ti ti ro ro ro lllll A B C A B

With Improv each of the above symbols would correspond to a number that will be used to control a machine's parameter, and the sentences are generated randomly. This is a type of grammar called an acyclic definite clause grammar, so no cycles(such as S->S you have been warned).

Install:

To install place the .dll in your buzz generators directory. Place the sample grammar in your buzz directory.

Using:

To use the sample grammar. Open buzz, create a new generator, such as M3 or voidlead, then connect the new machine to master. Create an improv machine, in the improv's pattern editor create a pattern with a trigger value of 1 somewhere in it, play the pattern in the sequencer. Now in the machine view, right click on improv, then select Assign Machine Edit Grammar.

This should bring up a pop up window. In the pop up window to load a grammar file from the buzz directory, type its name in the "file:" edit box and click load. To save it to the file name in that edit box click save. Now from the machine combo box select the machine which you wish to generate a melody/rhythm for. Then click assign. Click OK, then play the melody.

Creating your own rules, first select a rule in the rule combo box. The rule "S" will always be the first rule used to produce a sentence. Now type a string of symbols in the production edit box, then click add production. The production will appear in the possible productions for the selected rule. If the symbols have not been defined they will appear in semantics list with an integer next to them. If the symbols have already been defined as rules, they will not apear on the right.

Any unseen symbol is intially assumed to be max int which corresponds to a Note Off or a rest if you will. To change this select the note in the semantics list, and in the note box underneath, type an integer value. Then click update note.

Deleteing a production on the right will delete itself, and any symbols which are not referenced by another rule in the tree of possible sentences.
from the html included in version 1.1
http://www.buzzmachines.com/machineinfo.php?id=829

Re: KoDream Improv - usage guidelines anywhere?

Posted: Sun Jan 06, 2013 5:37 pm
by nikto
Yea, I read that, and maybe I'm radically dumb, but it confuses the sh*t out of me.
This, for instance, is mindboggling at best:
Any unseen symbol is intially assumed to be max int which corresponds to a Note Off or a rest if you will.
What 'unseen symbol'?

I thought maybe someone in the know had managed to write a more didactic explanation. For the radically dumb, such as myself.

Re: KoDream Improv - usage guidelines anywhere?

Posted: Sun Jan 06, 2013 6:37 pm
by thOke
i did not use that gen for a while now, but i think it means that any symbol not used in the semantics list works as a note off or rest.

Assumed your song is S, which has patterns A, B and C and you define A as eefefefe, where e is for example C-4, the f works as a note off if it's not defined otherwise.

I have to try it again, but no time right now.

Re: KoDream Improv - usage guidelines anywhere?

Posted: Sun Jan 06, 2013 7:37 pm
by IXix
If you're struggling to get it to work, it's probably because it's broken. I managed to contact KoDream and he kindly put the code on SourceForge but it's in an unfinished state and needs either a bunch of Win32 API dialog stuff or a shiny new WPF GUI.

Re: KoDream Improv - usage guidelines anywhere?

Posted: Sun Jan 06, 2013 8:26 pm
by nikto
thOke wrote:Assumed your song is S, which has patterns A, B and C and you define A as eefefefe, where e is for example C-4, the f works as a note off if it's not defined otherwise.
aha! okay, that's much more understandable! thanks, i seem to get it now.

next thing I don't get: what does 'Semantics' box define?
Image
This is one of thoke's examples. What are those values in the Semantics box? Some tunings, or what? And what is zero in this particular example?
IXix wrote:If you're struggling to get it to work, it's probably because it's broken.
hm, I dunno, it seems to work fine by me, with latest Buzz build. Maybe I can't detect the flaw because I'm still learning the way it reacts to my grammars, but thanks for the alert.

Re: KoDream Improv - usage guidelines anywhere?

Posted: Mon Jan 07, 2013 3:47 am
by snowglobe
nikto wrote:
IXix wrote:If you're struggling to get it to work, it's probably because it's broken.
hm, I dunno, it seems to work fine by me, with latest Buzz build. Maybe I can't detect the flaw because I'm still learning the way it reacts to my grammars, but thanks for the alert.
Still working fine here, too.

next thing I don't get: what does 'Semantics' box define?
Image
This is one of thoke's examples. What are those values in the Semantics box? Some tunings, or what? And what is zero in this particular example?
Semantics is where you get down to the nitty-gritty of assigning actual notes to variable names of your choice.

0:65535 means that a "0" encountered in parsing a production will cause a note off to be sent.
Eb:52 means that an "Eb" will cause note value 52 to be sent (Buzz 52 rather than MIDI 52, iirc)
etc.

Always excited to see people checking out KoDream Improv - an old favorite that had a huge influence on my thinking when I was creating this Java program.

Re: KoDream Improv - usage guidelines anywhere?

Posted: Mon Jan 07, 2013 9:34 am
by nikto
Ok, is there a some kind of reference table to find these values? How do I know that there is a 'buzz value 52' and how do I know that exactly 65535 is a note off?

Re: KoDream Improv - usage guidelines anywhere?

Posted: Mon Jan 07, 2013 9:51 am
by IXix
snowglobe wrote:
nikto wrote:
IXix wrote:If you're struggling to get it to work, it's probably because it's broken.
hm, I dunno, it seems to work fine by me, with latest Buzz build. Maybe I can't detect the flaw because I'm still learning the way it reacts to my grammars, but thanks for the alert.
Still working fine here, too.
I stand happily corrected. One less thing on the todo list.

Re: KoDream Improv - usage guidelines anywhere?

Posted: Mon Jan 07, 2013 7:12 pm
by nikto
Guys, seriously, is there reference info for the Semantics values?
I don't need dodgy tunings tinga had used, just stadard tuning will do. How do I define standard octave? Does anyone have grammar files for that?

Re: KoDream Improv - usage guidelines anywhere?

Posted: Mon Jan 07, 2013 8:08 pm
by IXix
nikto wrote:Guys, seriously, is there reference info for the Semantics values?
I don't need dodgy tunings tinga had used, just stadard tuning will do. How do I define standard octave? Does anyone have grammar files for that?
note value = note + (octave * 16)

C is 1, C# is 2 etc.

So C-0 is 1, C-1 is 17, C-2 is 33 and so on.

Note-off is actually 255 but Improv probably clamps values above that so I expect anything >= 255 is a note-off in Improv

Re: KoDream Improv - usage guidelines anywhere?

Posted: Mon Jan 07, 2013 8:42 pm
by ags
Ok, here goes (puts on robe and wizard hat...):

Buzz notes are 2 digit hex numbers where 1st digit is octave and the 2nd is note. But Kodream Improv displays them as decimal.

So here are the lowest notes, from bottom C up:
0x01 = 1 = c
0x02 = 2 = c#
0x03 = 3 = d
0x04 = 4 = d#
0x05 = 5 = e
0x06 = 6 = f
0x07 = 7 = f#
0x08 = 8 = g
0x09 = 9 = g#
0x0a = 10 = a
0x0b = 11 = a#
0x0c = 12 = b
0x0d = 13 = c
0x0e = 14 = c#
0x0f = 15 = d
0x10 = 16 = d#

0x11 = 17 = c
0x12 = 18 = c#
0x13 = 19 = d
0x14 = 20 = d#
The red notes shouldn't be valid, but I guess he's repeated them here to avoid crashing machines that would get freaked out by invalid notes.

So with that you can (hopefully) see that C-4 is 0x41 or 65.

...and there you have it.

edit: ninja'd by Ix :(
double edit: PS, you can't do "dodgy tunings" in Improv, the machine that recieves the notes needs to support microtonality (or be a tracker with samples in an alternate tuning.)

Re: KoDream Improv - usage guidelines anywhere?

Posted: Mon Jan 07, 2013 8:53 pm
by nikto
Ok, but this last table is different from what IXix wrote:
IXix wrote: note value = note + (octave * 16)
Do they match?

Re: KoDream Improv - usage guidelines anywhere?

Posted: Mon Jan 07, 2013 10:10 pm
by tinga
Kodream improv works, but it can't control another peer machine, in fact it does but with weird methods.
I've a table for the notes somewhere, but where :mrgreen: (and also many bmx with a large notes assignements , it's better to use IX split, or polac loader, thereby you make note's assignement one time)
This machine is a fantastic idea, but a little bit disabled in new buzz :( , the syntax you can use is totaly open, the copy paste is very effective with KoDream, for example indian rhythms are also a syllabic system (many solo on the web in ascii notation), and songs are the name of the notes, many musics use a syllabic systems, i tested it and it's so easy to make music like that, Talvin Singh should use KoDream for his great music.

Re: KoDream Improv - usage guidelines anywhere?

Posted: Tue Jan 08, 2013 9:57 am
by ags
nikto wrote:Ok, but this last table is different from what IXix wrote:
Do they match?
Yes.
IXix wrote: note value = note + (octave * 16)
C = 1, C# = 2 [...etc]
Therefore C-4 = 1 +(4*16) = 65
C-0 = 1 + (0*16) = 1

Re: KoDream Improv - usage guidelines anywhere?

Posted: Tue Jan 08, 2013 10:00 am
by IXix
tinga wrote:Kodream improv works, but it can't control another peer machine, in fact it does but with weird methods
Ah yes, that's why I thought it was broken. Back on the todo list then :roll:

Re: KoDream Improv - usage guidelines anywhere?

Posted: Tue Jan 08, 2013 9:43 pm
by snowglobe
ags wrote:
nikto wrote:Ok, but this last table is different from what IXix wrote:
Do they match?
Yes.
IXix wrote: note value = note + (octave * 16)
C = 1, C# = 2 [...etc]
Therefore C-4 = 1 +(4*16) = 65
C-0 = 1 + (0*16) = 1
Just for the record, what Buzz calls a C4, MIDI says is C3, etc.
I made a chart a few years ago when I was heavily into KoDream Improv
Image

Re: KoDream Improv - usage guidelines anywhere?

Posted: Wed Jan 09, 2013 11:14 am
by nikto
snowglobe, thanks a lot for sharing the chart!