[PD] PD latency and timing accuracy with HID
Hans-Christoph Steiner
hans at eds.org
Wed Jul 5 07:28:35 CEST 2006
On Jul 4, 2006, at 10:08 AM, rubber glove wrote:
>
> The main factor seems to be that pd only processes control messages in
> between audio frames. Reducing the audio latency seems to bring the
> jitter down to about 5ms but no further when I try it on WinXP or
> Linux.
>
> Aha... that makes sense to me. So it is not so much just the
> 'hardware to pd' step, but also the control message passing within
> PD that is throwing off the timing here.
>
>
> I would expect USB to add more jitter, as it passes through a more
> complex path than serial or MIDI data before being handed to pd.
>
> I think I am basically stuck with USB no matter how I go, as the
> computers involved here are all eMacs. Using midi or serial would
> involve a USB interface anyway.
>
>
> If you need better timing, why not record the audio into one channel
> along with the button on the other channel? There is essentially no
> jitter with the audio stream because it passes through the sound
> hardware at a fixed rate. The button could just emit a click when
> pressed. Then you have no jitter beyond the time it takes to push the
> button.
>
> That's an interesting possibility, but I am only really using the
> button clicking as a simple way to test the timing. In actual use,
> the input would be a range of values from the rotary encoder of the
> knob... converting that into audio and back into numerical values
> seems altogether too complicated (frequency modulation?)
>
> However, it brings to mind other possibilities:
>
> If I modify the HID object to convert it into a signal-based
> external, then pass the values as signals, the timing should be
> much tighter? This seems to have the advantage that the input
> values will always be automatically lined up with the audio, no
> matter what the latency is set to.
>
> Alternatively, If I incorporate the HID code into my external, and
> process the knob events myself, I would avoid any additional timing
> errors and be left with only the jitter inherent to the device, no?
>
> Thanks much for the info...
I would also like to see the [hid] code be as low jitter as
possible. I haven't had a chance to measure it yet tho. Unless
things are really taxing the CPU, I don't think that the Pd messaging
will cause more than ~1.5ms of jitter (1 block of 64 samples divided
by 44100 samples). Perhaps running Pd at 96KHz or 192KHz would
reduce that jitter, provided that the block size remains 64.
I think that the first step is to devise some tests to find the true
source of the jitter. I did some quick searches about USB HID jitter
and didn't find much, except this:
http://elists.resynthesize.com/max-msp/2005/08/1515529/
It seems that this person thinks that Mac OS X's USB MIDI driver has
lower jitter than the USB HID driver. Ultimately, if we find the
source of the problem, I would like to include it in the next version
of [hid].
.hc
------------------------------------------------------------------------
Using ReBirth is like trying to play an 808 with a long stick. -
David Zicarelli
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20060705/c6d98924/attachment.htm>
More information about the Pd-list
mailing list