[chuck-users] chuck ide plans / ideas

tazumi tazumi at gmail.com
Tue Jan 23 12:54:00 EST 2007

Hello List,

i was using chuck very much in the last few month.. and - as you all know -
you always want to have some extra features (that are sometimes very
special), some stuff that fits exactly to your needs..

So i decided to start an own Project, an alternative chuck environment..
mainly to have the features of my dreams. anyway, as some other people might
be interested, i would like to introduce and describe this project here, and
would love to hear what others think about those ideas/plans. actually they
are more than plans by now, as maybe 50-60% is already finished for a first
basic usable version...

the main components are of course basic stuff like a source editor with
add/replace/remove shred functions or a lists of the sporked shreads.
(Nothing you cant do with mini audicle so far..)  There will be no direct
connection between the programm and chuck. once chuck is started, all
interaction will be done using osc messages - start/stop shreds, keeping the
list of running shreds etc..

then there are these special features - very often I do pattern-oriented /
loop based stuff when i use chuck. my intention is to create some helping
features for that.
for example i want to have something like code plugins - a feature that
writes some code for you.. mainly they should assist you in tasks that are
very basic and can be used in many situations, but need a lot of code
writing or are bad to handle..

Its hard to explain in general, so look one example:

I often create patterns or sequences using array data. so some typical chuck
code looks like this:

BlitSaw osc => LPF filt => dac;

[ 44, 54, 44, 54, 54]  @=> int note;
[ 0.5, 0.5, 0,5, 0.25, 0.25]  @=> float length;
[8000, 12000, 8000, 12000, 12000] @=> float freq;

int actual = 0;
   playnote (note[actual], length[actual], freq[actual]);
   actuall ++;
   // if (actual > 5) 0 => actual; .. and so on...

this plays a simple little sequence..

Now what i like to do is create a 'Table' or 'Array' Plugin. It will have a
user interface that provides a table (like for example in excel) where you
can enter your data. The table (columns etc) can be defined by the user - in
this case i would create a table with 3 columns, like this:

|   note   |   length   |   freq   |
|  44       |   0.5       |  8000  |
|  54       |   0.5       | 12000 |
|  44       |   0.5       |  8000  |
|  54       |   0.25     | 12000 |
|  54       |   0.25     | 12000 |

so you can enter your values in a more easy and comfortable way.. extra
features like select multiple cells / copy and paste etc. would make life
much easier.. when sporking that file, the plugin will write code that
creates the arrays to your file..
the plugin could also write some additional code that creates for example an
osc receiver with an array updating function.. so while the shred is
running, and you change the value of a cell, the plugin sends an update osc
message to the shred, which updates the changed array element immediately..
so you change sequences (or anything that uses data stored in arrays)
without stopping or replacing the shred.. (all that done by the pugin, you
just have to create a table, enter data, and user that data in your code).
Also, you can do it the other direction: if you update array elements using
a function that sends a osc message back to the program (provided the plugin
) the table will be updated.. One way to keep / store data generated from
within chuck.. i know some people asked about sth like that..

Just one of many ideas..  besides those plugins there will be some other
basic components like a file browser, with sample preview function (as i
also often use samples)
the preview function would do nothing more than create some code like:

sndbuf buf => dac;
"mysample.wav" => buf.read;
buf.length => now;

then the plugin would write that code to a temporary file and sporks it.. So
many stuff could be done which are very easy to implement, by just
generating some code and let chuck do the work :-)

As the Program mainly consists of UI stuff and no realtime / time critical
stuff is needed,  it is written in .Net, i know some people will not like
that but it is perfect for those tasks.. And if some other people using
linux or osx are interested, let me know, then i would keep in mind to only
use parts of the framework that are impelementes in mono too, which i didn't
look after so far..

I really would love to hear some opinions about the ideas.. and i hope i can
come up with a first version soon..

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.cs.princeton.edu/pipermail/chuck-users/attachments/20070123/ea3139d9/attachment.htm 

More information about the chuck-users mailing list