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