pix.test.at
                         _       _  _   
 _ __   __ _ _ __   ___ | |_   _| || |  
| '_ \ / _` | '_ \ / _ \| | | | | || |_ 
| | | | (_| | |_) | (_) | | |_| |__   _|
|_| |_|\__, | .__/ \___/|_|\__, |  |_|  
          |_|_|            |___/        

okay, here is a hasty release of nqpoly4.

i've been mentioning this to too many people, so i had to finally put it online, even though i haven't had time to clean it up as much as i'd like. i was working on a better help file but it will have to wait (here's hoping you like learning by example).

the main differences in this version are:

new object name. the new object name is nqpoly4. i decided to put a version number in the name because this version is completely incompatible with the old one. it's version 4 because versions 2 and 3 are incomplete attempts at a rewrite, lost on my harddrive somewhere.

no more audio outlet. you now send audio out of your "grains" using throw~ and catch~ objects. this makes it less ugly to make stereo grains, or grains that deal with audio input. it also takes the emphasis away from audio "grains", since that is only part of what nqpoly can be used for. i also dropped the ~ from the name for the same reason.

extra grain creation parameters. the first two parameters passed to a grain are its index, and the total number of grains that exist. see the minimal-test.pd patch for an example. these values are used in the gem example included with this release.

files:

nqpoly4.pd and nqpwrap4.pd are the core files. as with the last version, your grains either need to be in the same directory as these files, or on PDs path.

minimal.pd and minimal-test.pd are a very simple test to show how voice creation / delegation works. on opening minimal-test.pd you should see:

created_with: 0 5 param_1 param_2  
created_with: 1 5 param_1 param_2  
created_with: 2 5 param_1 param_2  
created_with: 3 5 param_1 param_2  
created_with: 4 5 param_1 param_2

this shows each of the copies of the minimal.pd grain being created. the first parameter is an index, and the second parameter is the total number of grains being created.

if you click the foo bar message box, you will send a trigger to the first available copy of minimal.pd which should print:

voice: 0
called_with: foo bar
waiting_1000ms: bang
voice: 0
finished: bang

this just prints which voice has been activated, and which parameters it was activated with. the grain pretends to take 1000ms to process the message, so that you can test object delegation. if you press the foo bar button twice within 1000ms, you will see:

voice: 0
called_with: foo bar
waiting_1000ms: bang
voice: 1
called_with: foo bar
waiting_1000ms: bang
voice: 0
finished: bang
voice: 1
finished: bang

the first foo bar message arrives at voice 0. while it is busy processing the first message, the second message is handed to voice 1.

kind of terse, but that's really all there is to it.

petal.pd and petal-test.pd make up a simple gem example. with the gem library loaded, have a look at petal-test.pd. this is only one possible way you could use gem with nqpoly, there is much more room for experimentation. this patch is also interesting because it doesn't use the voice delegation part of nqpoly. it is really just using nqpoly as a way to avoid a lot of cut+paste work.

tabgrain.pd, tabgrain-test.pd, phasor.pd and tabar~.pd make up the obligatory granular synthesis patch. tabgrain-test.pd is a little complicated, but if you click all of the message boxes, you should start getting sound output. the tabgrain.pd object is the beginnings of a granulab-style granular synthesiser, it's mostly complete, requiring just a little more work on the pre-nqpoly4 side to give it similar functionality. i keep telling myself i'll do this one day.

this probably counts are an increase in the amount of documentation for nqpoly, if you have already read the documentation from the last version. so, if you would like to understand nqpoly a little more, i suggest you check out the old version.

you can also email me if you have any questions.

--
pix.test.at