W3C home > Mailing lists > Public > public-audio@w3.org > April to June 2012

Re: Audio-ISSUE-12 (JLoop start/stop points) [Web Audio API]

From: Olli Pettay <Olli.Pettay@helsinki.fi>
Date: Thu, 24 May 2012 00:07:43 +0300
Message-ID: <4FBD519F.7040704@helsinki.fi>
CC: Audio Working Group <public-audio@w3.org>
On 05/23/2012 11:47 PM, Chris Rogers wrote:
> Hi Joe, could you please add this as a comment in the ISSUE.  Otherwise, it's going to be very difficult for me to track.

Btw, as a generic comment, why does the WG use tracker which is limited to WG members only?
I for example can't file any bugs. Many other WGs use bugzilla[1]

-Olli

[1] https://www.w3.org/Bugs/Public/


>
> Thanks!
> Chris
>
> On Wed, May 23, 2012 at 12:42 PM, Joseph Berkovitz <joe@noteflight.com <mailto:joe@noteflight.com>> wrote:
>
>     Chris,
>
>     I owe you a bit more detail on the loop points issue and the question of whole-sample looping.
>
>     In my proposal I had suggested that loopStart/loopEnd be set to 0 and the sample length in order to loop the entire sample (iff the "loop"
>     attribute is set on the AudioBufferSourceNode).
>
>     After some thought I think that while this behavior obviously makes sense when loopEnd is the sample length, it would be also advantageous to
>     define that whole-sample-looping occurs when loopStart == 0 and loopEnd == 0, and that these in fact be those attributes' default values. This
>     provides a guaranteed way to achieve the whole-sample-looping behavior regardless of what underlying AudioBuffer is set into the
>     AudioBufferSourceNode.
>
>     ...Joe
>
>     On Apr 30, 2012, at 12:31 PM, Audio Working Group Issue Tracker wrote:
>
>>     Audio-ISSUE-12 (Joe Berkovitz): Loop start/stop points [Web Audio API]
>>
>>     http://www.w3.org/2011/audio/track/issues/12
>>
>>     Raised by: Joe Berkovitz
>>     On product: Web Audio API
>>
>>     Hi folks,
>>
>>     At the F2F in January we discussed the need for a more powerful looping construct in AudioBufferSourceNode than simply "loop the whole sound",
>>     in order to support UC6 (wavetable synthesis) and other user cases.  In particular, basic wavetable synths require the ability to start an audio
>>     buffer playing and then have it enter a loop in some arbitrary subrange of that sample [m..n].  Trying to achieve this via explicit scheduling
>>     of various subranges of a sample by calling noteGrainOn() feels unworkable since sample-accurate transitions from one subrange to another could
>>     not be achieved in this way -- and at any rate, it would be very unwieldy. The idea is that noteOn() should perform seamless repetition of the
>>     looped subrange of a sample as an integral part of its behavior.
>>
>>     Somehow this idea has been lost, probably due to the coarse-grain definition of looping in the UC document as simply "Playing / Looping sources
>>     of audio". However it's an essential requirement for wavetable synthesis and my concern is that games and synths will be seriously compromised
>>     without it.
>>
>>     I am proposing that there be separate loopStart and loopEnd properties of AudioBufferSourceNode that are sample-accurate.  If respectively set
>>     to 0 and the length of the sample, these will cause the entire sample to be looped.  If set to offsets M and N, these will cause the sample to
>>     be played by noteOn() and noteGrainOn() as if the sample consisted of contiguous subranges [0..M-1], [M..N], [M..N], ...
>>
>>     Thanks!
>>
>>     ...Joe
>>
>>
>>
>
>     ... .  .    .       Joe
>
>     *Joe Berkovitz*
>     President
>
>     *Noteflight LLC*
>     84 Hamilton St, Cambridge, MA 02139
>     phone: +1 978 314 6271 <tel:%2B1%20978%20314%206271>
>     www.noteflight.com <http://www.noteflight.com>
>
>
Received on Wednesday, 23 May 2012 21:08:11 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Wednesday, 23 May 2012 21:08:12 GMT