- From: Lonce Wyse <lonce.wyse@zwhome.org>
- Date: Wed, 30 Jan 2013 23:07:13 +0800
- To: public-audio@w3.org
Hello, As a sound modeler who makes heavy use of ScriptProcessorNodes, I have to say that this would make my life so much easier. Bringing ScriptProcessorNodes in to the family of other Audio Nodes with a consistent behavior and API would enable many more developers to push this amazing emerging audio engine in to new creative territory. Kumar - your post with details and elegant code was (as always) enlightening. I second the motions! Thanks, - lonce On 1/30/2013 1:51 PM, Srikumar Karaikudi Subramanian wrote: > Hi all, > > When designing abstractions for building sharable audio > components, the ScriptProcessorNode's peculiarities make it > rather problematic to deal with compared to the native nodes. > In particular, the absence of built-in scheduling and dynamic > lifetime management capabilities necessitates special treatment > for these nodes. The following suggestions help remove these > problems. > > 1. Permit creation of script nodes without inputs. > This better models source nodes. Passing 0 for > "number of input channels" may be enough at the API level. > > 2. Add start(t) and stop(t) methods to permit script nodes > to be used as signal sources, with such nodes not taking > up any system resources during their inactive periods. > It would be possible to automatically add start/stop methods > if the node is recognized as a source node at creation time. > > 3. Add dynamic lifetime support similar to native nodes, > whereby unreferenced “signal processor” script nodes driven > by source nodes are automatically released once the source > node finishes, even if the source node is itself a script node. > To achieve this, the time at which the inputs cease must > be available as part of the event structure passed to the > onaudioprocess callback, so that the callback can begin > any tail phase that it needs to complete before it commits > suicide. > > 4. Specify a convention and/or API to support tail times beyond > the time indicated in a stop(t) call or after its inputs have > been end-of-lifed. > > I wrote a (rather lengthy) post that works through a simple > use case (an oscillator driving a gain node to make a "chime") > to show the need for the above additions.[1] The post > is somewhat code-heavy, but that's part of the point. Doing what > it set out to do shouldn't need much code! The functionality > for the above features is captured in the function named > "scriptWithStartStopTime" towards the end of the post [2]. > > Happy to be educated about anything that I may have > misunderstood here. > > Regards, > -Kumar > > [1] http://sriku.org/blog/2013/01/30/taming-the-scriptprocessornode/ > [2] http://sriku.org/blog/2013/01/30/taming-the-scriptprocessornode/#final-scriptWithStartStopTime >
Received on Wednesday, 30 January 2013 15:09:44 UTC