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: Chris Rogers <crogers@google.com>
Date: Wed, 23 May 2012 13:47:20 -0700
Message-ID: <CA+EzO0kfGRA77iJ_MfF14rF-_2J1wSm0YghqEuzTkiKXA8jb6g@mail.gmail.com>
To: Joseph Berkovitz <joe@noteflight.com>
Cc: Audio Working Group <public-audio@w3.org>
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.

Thanks!
Chris

On Wed, May 23, 2012 at 12:42 PM, Joseph Berkovitz <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
> www.noteflight.com
>
>
Received on Wednesday, 23 May 2012 20:47:49 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Wednesday, 23 May 2012 20:47:53 GMT