Hi
I've been doing some work writing an interface in Pd to an A3D sound card. (cards with Aureal's "Vortex 2" chipset enabling hardware spatialisation of sound). So far I've implemented a movable 'listener' object and movable sound source(s) which load a sound file in memory and play in a loop.
At present the A3d API works only on Win 98 - and that's what I'm using - waving the -nosound flag on the Pd command line to avoid audio clahes. There's talk of eventual Linux support in the future.
Have got part the way through writing another source object that accepts streamed PCM data from other Pd objects. The object works, however there is a synchronisation problem between Pd and the sound card, leading to glitches after a few seconds. Presently Pd is transferring blocks of 64 bytes to a circular buffer on the card. This buffer seems to tick along at a slightly slower rate to Pd (both are set to work at 44.1) and eventually the card attempts to read parts of the buffer that are concurrently being written to.
It's possible with the A3d API to access the current playback position in the circular buffer and this seems to be the only avenue for synchronisation with the api itself. Is there a way of tying Pd's 'tick rate' to these values?
Cheers, iain