W3C home > Mailing lists > Public > public-audio@w3.org > July to September 2012

Internal loop points (Was: thoughts and questions on the API from a modular synth point of view)

From: Joseph Berkovitz <joe@noteflight.com>
Date: Mon, 16 Jul 2012 14:12:36 -0400
Cc: Peter van der Noord <peterdunord@gmail.com>, "public-audio@w3.org" <public-audio@w3.org>
Message-Id: <D1C334AC-DE0C-423E-962A-4B569EBB7DD9@noteflight.com>
To: Chris Wilson <cwilso@google.com>
Chris W,

Just as an FYI we had previously categorized these internal loop points as a V1 feature at the face-to-face in January and Chris R has indicated an intention to implement them in past conversations.  Not that I speak for him -- I am happy to wait for Chris Rogers to return before discussing more.

I have implemented ADSR and ADHSR software samplers in the past and so I understand the mechanics well. I was not saying that attack phase was the only important phase -- only that it is a unique phase of note production in that it requires a special segment of audio separate from the loop that underlies decay/hold/sustain/release phases.  The internal loop point mechanism is in fact the only feature gap preventing a full ADHSR sampler from being created in Web Audio, since all the other aspects are fully achievable using time-varying gain and filter parameters.

I have filed this issue in the past as Bug 17390 (and originally it was AUDIO_ISSUE_12).

Best,

...Joe

On Jul 16, 2012, at 1:42 PM, Chris Wilson wrote:

> Yup.  To me, that's just a sample-playback synthesizer, but then, I'm not in anyone's marketing department.  :)
> 
> Chris has said several times that we should look at providing a more detailed sample-playback system in the future.  You really need to support a release sample portion as well - not just the attack and loop portions you mention - and I'd personally say we need to handle multi-sampling across pitch also.  Even my now-venerable Kurzweil K2000 (which I purchased in 1993) claimed to transition through the multisamples as it portamentoed from note to note.  (Can't remember if it claimed to do that for pitch bend also.)  That said, the basic AudioBufferSourceNode we have today is very useful, and its light weight makes it ideal for gaming purposes, et al.  I think we would want to add a more complex sample playback node, not change the current one.
> 
> -C
> 
> On Mon, Jul 16, 2012 at 10:30 AM, Joseph Berkovitz <joe@noteflight.com> wrote:
>> 
>> Unfortunately, this term got confused with a single-cycle-table-lookup sample playback in the early nineties.  Although wavetable synthesis will frequently pre-compute the waveform from the harmonic series coefficients and play back a looped single cycle sample, that's not the point.
>> 
>> If you want to have an oscillator that plays from a buffer, a la a single-cycle sample playback engine, it's quite easy - just create a buffer, put a single cycle in it, and use an AudioBufferSourceNode to loop that cycle.
> 
> With respect to the term "wavetable", I want to add that this term today is often applied to commercial sampled-instrument engines such as Native Instruments' Kontakt.
> 
> In these "wavetable" synths, there is far more than a single cycle of a waveform present.  Typically the sample consists of a "leader" capturing the unique sound of the instrument's attack, and then an internal loop that encompasses multiple waveform cycles (how many depends on the nature of the instrument).  These internal loops necessarily have both start and end points internal to the sample, hence the need for such a feature in the Web Audio API. The current "loop-the-entire-sample" flag is not useful at all in these scenarios.
> 
> ... .  .    .       Joe
> 
> Joe Berkovitz
> President
> 
> Noteflight LLC
> 84 Hamilton St, Cambridge, MA 02139
> phone: +1 978 314 6271
> www.noteflight.com
> 
> 

... .  .    .       Joe

Joe Berkovitz
President

Noteflight LLC
84 Hamilton St, Cambridge, MA 02139
phone: +1 978 314 6271
www.noteflight.com
Received on Monday, 16 July 2012 18:13:05 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 16 July 2012 18:13:06 GMT