[chuck-users] semi complicated midi setup

Graham Percival gpermus at gmail.com
Tue Nov 22 01:15:44 EST 2005


On 18-Nov-05, at 10:53 AM, Atte André Jensen wrote:

> I'd like to control chuck from my 3 usb keyboards. Preferably with the 
> abiliy to split one or more of the keyboards to different sounds, 
> dynamic voice allocation is a must for polyphonic sound.
>
> I'd like to make the code as modular as possible, in order to easily 
> create one such setup for each song. This means that the definition of 
> which keyboard(s) is spilt and how + routing to actual instruments + 
> code for each instrument should be in seperate files.
>
> I'm still very new to chuck, so my first question is simply: is this 
> at all possible with chuck?

Yes.  To use chuck with multiple files, include them all on the command 
line.  ie
$ chuck foo.ck bar.ck

> The second question: (if possible) could soneone provide a rough 
> outline, how to achieve what I'd like?

The beauty of a language like chuck is that you can solve any problem 
in many different ways.  I don't think this is the best solution, but 
it's the easiest to explain:

1)  get MIDI information from keyboard.  This is covered in the manual.
2)  Look at the midi info;
if ((notein>x)&&(notein<y)) inst1(notein);
if ((notein>z)&&(notein<a)) inst2(notein);
...

fun void inst1(int note)
{
   Bowed foo;   // or any other stk instrument; see the docs.
   foo.freq => std.mtof(note);
   1=>foo.startStuff;  // I can't remember if it's noteOn or startBow or 
whatever.
   2::second=>now; // or however long you want this to be... you could 
certainly write this to stop when you receive a midi note off, but 
that's left as an exercise to the reader.  :)
   1=>foo.stopStuff;
}


That should be enough to get you started.

Cheers,
- Graham


More information about the chuck-users mailing list