- From: Srikumar Karaikudi Subramanian <srikumarks@gmail.com>
- Date: Sat, 1 Jun 2013 12:35:12 +0530
- To: Joseph Berkovitz <joe@noteflight.com>
- Cc: public-audio WG <public-audio@w3.org>
- Message-Id: <C1632F93-BC83-4644-9D9E-32C38B602012@gmail.com>
Hi Joe, Thanks for pulling up the reference. I'm happy to see precision sync on the radar. Just for completeness, here is a related recent thread on the issue of "playbackTime" in ScriptProcessorNodes. http://lists.w3.org/Archives/Public/public-audio/2013AprJun/0186.html Best, -Kumar On 31 May, 2013, at 7:58 PM, Joseph Berkovitz <joe@noteflight.com> wrote: > Hi Kumar, > > This is an outstanding gap in the API that hasn't yet been remedied, although there is a blueprint (capturing a conference call discussion) for doing so here, as part of Bug 20698: > > https://www.w3.org/Bugs/Public/show_bug.cgi?id=20698#c23 > > …Joe > > > > On May 31, 2013, at 7:24 AM, Srikumar Karaikudi Subramanian <srikumarks@gmail.com> wrote: > >> Hi all, >> >> Which API features do I use to get (for ex.) MIDI and audio events synchronously triggered to within 1ms of precision, given a precise enough MIDI scheduler implementation? >> >> With the current state of the API spec, it appears that the precision to which I can synchronize scheduled MIDI and audio is limited by the buffer size used by the audio API implementation. Unless I'm missing something (in which case I'm happy to have a solution), this appears to be a gap in the API - one that can be filled pretty easily. >> >> Regarding synchronization of audio events with visuals at 60fps, current implementations of the Web Audio API update the AudioContext.currentTime frequently enough that checking "currentTime" within a requestAnimationFrame callback is adequate for most purposes (though not ideal). At a sample rate of 44100Hz, 15ms corresponds to 735 samples and current buffer sizes in implementations are 256 samples or fewer, afaik. By the same token, I would need currentTime to update multiple times every 1ms to get that precision with MIDI, which is too much to ask. >> >> However, if along with AudioContext.currentTime I also have the DOMTimeStamp of the time at which the sample corresponding to currentTime will exit the audio subsystem, then the precision to which I can schedule MIDI and audio will not be limited by the audio buffer size any more. Indeed, the buffer size can be 2048 samples for all I care (though event-to-sound latency will suffer at that size). This will also permit better synchronization with visuals. >> >> Is there currently any way to calculate this DOMTimeStamp value or is this indeed a gap? >> >> A minimal test case for this might be - map a key on the keyboard to trigger, with a delay of 1 sec, MIDI 'C' on channel1 simultaneously with an oscillator-based note and check whether the time difference between the onset of the two sounds is a constant independent of when the key is pressed. >> >> Thanks. >> -Kumar > >
Received on Saturday, 1 June 2013 07:05:53 UTC