I'm an absolute PD newbie. My only other dataflow programming experience is in NI Labview.
Anyway, I'm in the process of trying to make an OCZ NIA (neural impulse actuator) play with PD, possibly for signal generation, envelopes, etc... it doesn't really matter at this point.
System: 64-bit linux (mostly ubuntu)
The hardware device (nia) is interfaced with PD via PyEXT; module basically reads USB input, does some byteswapping, and passes an array to PD. The module passes an array of fixed length 16 to PD. The array describes a sampled waveform.
Right now, PD patch triggers every input with a metronome because it's simpler to do that than to worry about synchronizing with the driver. So it's basically metronome tick -> new values in the buffer array.
Side note: Apparently arrays in the AMD64 environment are all kinds of fucked. I ended up (in the python module) passing [x1, 0, x2, 0,...,x16,0] to a PD array of length 32; the PD array contains values [x1, x2, ..., x16] in the first 16 values. Kinda strange.
Anyway, here's what I want to do, eventually:
Take a certain number of values in the incoming buffer (not all samples are valid, and the last 16 values are garbage for reasons described above). Put those values into some kind of FIFO queue. (there might be timestamps associated with each sample later on?). Perform some kind of windowing function on that queue. Do a FFT/ smoothing/ whatever on it.
I'm kind of stuck on moving the signal out of the buffer (e.g. on array slicing and copying). Also, should the signal be treated as a control message or an audio signal? It is meant to be a realtime waveform after all.
Any suggestions, comments etc would be greatly appreciated.