KoDream Improv - usage guidelines anywhere?

Post Reply
nikto
Posts: 46
Joined: Mon Nov 21, 2011 9:17 pm

KoDream Improv - usage guidelines anywhere?

Post 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?
User avatar
thOke
Posts: 343
Joined: Thu Nov 24, 2011 7:14 am

Re: KoDream Improv - usage guidelines anywhere?

Post 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
nikto
Posts: 46
Joined: Mon Nov 21, 2011 9:17 pm

Re: KoDream Improv - usage guidelines anywhere?

Post 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.
User avatar
thOke
Posts: 343
Joined: Thu Nov 24, 2011 7:14 am

Re: KoDream Improv - usage guidelines anywhere?

Post 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.
User avatar
IXix
Posts: 1113
Joined: Wed Nov 23, 2011 3:24 pm

Re: KoDream Improv - usage guidelines anywhere?

Post 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.
nikto
Posts: 46
Joined: Mon Nov 21, 2011 9:17 pm

Re: KoDream Improv - usage guidelines anywhere?

Post 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.
snowglobe
Posts: 356
Joined: Wed Nov 23, 2011 12:36 pm

Re: KoDream Improv - usage guidelines anywhere?

Post 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.
nikto
Posts: 46
Joined: Mon Nov 21, 2011 9:17 pm

Re: KoDream Improv - usage guidelines anywhere?

Post 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?
User avatar
IXix
Posts: 1113
Joined: Wed Nov 23, 2011 3:24 pm

Re: KoDream Improv - usage guidelines anywhere?

Post 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.
nikto
Posts: 46
Joined: Mon Nov 21, 2011 9:17 pm

Re: KoDream Improv - usage guidelines anywhere?

Post 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?
User avatar
IXix
Posts: 1113
Joined: Wed Nov 23, 2011 3:24 pm

Re: KoDream Improv - usage guidelines anywhere?

Post 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
ags
Posts: 169
Joined: Sat Nov 26, 2011 4:06 pm

Re: KoDream Improv - usage guidelines anywhere?

Post 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.)
nikto
Posts: 46
Joined: Mon Nov 21, 2011 9:17 pm

Re: KoDream Improv - usage guidelines anywhere?

Post by nikto »

Ok, but this last table is different from what IXix wrote:
IXix wrote: note value = note + (octave * 16)
Do they match?
User avatar
tinga
Posts: 526
Joined: Tue Nov 22, 2011 5:25 pm

Re: KoDream Improv - usage guidelines anywhere?

Post 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.
ags
Posts: 169
Joined: Sat Nov 26, 2011 4:06 pm

Re: KoDream Improv - usage guidelines anywhere?

Post 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
User avatar
IXix
Posts: 1113
Joined: Wed Nov 23, 2011 3:24 pm

Re: KoDream Improv - usage guidelines anywhere?

Post 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:
snowglobe
Posts: 356
Joined: Wed Nov 23, 2011 12:36 pm

Re: KoDream Improv - usage guidelines anywhere?

Post 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
nikto
Posts: 46
Joined: Mon Nov 21, 2011 9:17 pm

Re: KoDream Improv - usage guidelines anywhere?

Post by nikto »

snowglobe, thanks a lot for sharing the chart!
Post Reply