See also: IRC log
+present rtoyg_m
<hongchan> +present hongchan
<cwilso> +present cwilso
<padenot> +present padenot
<MikeAssenti> +present MikeAssenti
Pick a scribe victim?
<hongchan> https://github.com/WebAudio/web-audio-api/wiki/AudioWorklet-Examples
<joe> Ray can you scribe? (I'll scribe when you talk)
Yes.
<joe> thanks!
<scribe> scribenick: rtoyg_m
hongchan: Issues came up in writing examples.
mailing list thread: http://lists.w3.org/Archives/Public/public-audio/2016AprJun/0058.html
joe: What additional things do we
need?
... How do audioparams get initialized from the main thread
side when instantiating a worklet node.?
... Need sequence diagram to show sync and async handling? How
do these work on a worklet? Not nailed down in examples.
... Can you subclass audioworklet node? Would be useful.
... VU meter example shows this.
... Would optimize for this use case because worklets
(probably) would be in libraries.
... How should the packaging issue be handled?
hongchan: Subclassing should not be a issue since we already allow this.
<joe> https://lists.w3.org/Archives/Public/public-audio/2016AprJun/0062.html
<hongchan> https://lists.w3.org/Archives/Public/public-audio/2016AprJun/0073.html
hongchan: Seems overkill to do subclassing to handle this case.
<joe> https://lists.w3.org/Archives/Public/public-audio/2016AprJun/0073.html
joe: These are two approaches, not exclusive.
hongchan: Doesn't like two approaches having two separate files to define worklets.
<hongchan> https://jsfiddle.net/cjcskv7u/2/
hongchan: Having one unified
place make more sense.
... Proposes new approach in jsfiddle link by defining two
classes when registering the worklet node.
joe: Any comments?
ian: is looking over the ramifications.
joe: Like everything in one
class, but makes it impossible to name things in the global
scope to instantiate it.
... Current approach prevents subclassing which we do
want.
... With single file, it should import the necessary scripts
and do the required things.
... Node really needs to live in the main scope.
ian: There are ways to get
hongchan's example to work, but might be too confusing for
developers?
... Not something we want to do because it can leak state
horribly.
joe: With all other nodes,
they're ready to use from the main thread (even if audio thread
side isn't). Worklets should behave the same.
... Is this possible? Instantiate processor in main
thread?
... With that, original design is ok.
... To summarize, when you instantiate a worklet node the
constructor will instantiate the processor class and won't
return until it's done.
... Can we pass options arg from node all the way to
processor?
... Simplifies handling of worklets.
... audioworklet would get new options arg to pass to
processor.
ian: workletnode arg gets cloned and passed to processor.
joe: Do we need to separate out options between known ones and node specific?
ian: We could.
joe: Which is cleaner?
hongchan: doesn't like two options.
joe: Or one options arg with a data: for other dictionary options for the processor.
ian: Looking to see if anyone
else does this....
... A single dictionary is fine and the whole thing gets
structure-cloned.
joe: Excellent; can we move
on?
... How do audioparams get declared and initialized.
... At the moment declaration is on the processor, but in a
later example it's moved to the node.
hongchan: audioparam belongs to node, not processor. Haven't yet decided.
joe: Another thing: What if param descriptor array were part of options parameter.
ian: Argues that the should be tightly coupled to processor.
joe: Agrees. In favor of leaving audioparam on processor.
hongchan: param defined in node, but only processor has access to param contents.
joe: Both sides need to know what
params are.
... Doesn't matter where they're defined, but the more
constrained place is the processor.
hongchan: How is subclassing now possible?
joe: Maybe we should discuss
initializing audioparams.
... Where does intialization actually happen? Appears
magical.
... Having super() do the initialization of the audioparams so
everything is set up and to the processor.
ian: Doesn't need to be (caching, etc), but fundamentally looks synchronous. Which is good.
joe: We touched everything and feels like we have a path forward.
ian: processor() is the onlly place with access to audioparams?
joe: Yes.
ian: parameter descriptors should be static.
hongchan: If so, can't access from processor.
<joe> +1 on that
ian: Should work. Then worklet node magically knows the audioparams, synchronously.
padenot: Generally agrees with the approach.
joe: Should rework the examples using this new approach.
honghan: Needs a lot of work to fix up everything for the spec.
joe: can help, but lets work on
the examples.
... Let's keep pushing ahead.
... Any other business?
... Adjourn. Really good call.
<joe> ACTION: Joe and Hongchan to update examples and IDL to reflect today's discussion [recorded in http://www.w3.org/2016/06/02-audio-minutes.html#action01]
<trackbot> Created ACTION-132 - And hongchan to update examples and idl to reflect today's discussion [on Joe Berkovitz - due 2016-06-09].
This is scribe.perl Revision: 1.144 of Date: 2015/11/17 08:39:34 Check for newer version at http://dev.w3.org/cvsweb/~checkout~/2002/scribe/ Guessing input format: RRSAgent_Text_Format (score 1.00) Succeeded: s/this/hongchan's example/ Found ScribeNick: rtoyg_m Inferring Scribes: rtoyg_m WARNING: No "Topic:" lines found. Present: cwilso hongchan WARNING: Fewer than 3 people found for Present list! WARNING: No meeting chair found! You should specify the meeting chair like this: <dbooth> Chair: dbooth Found Date: 02 Jun 2016 Guessing minutes URL: http://www.w3.org/2016/06/02-audio-minutes.html People with action items: hongchan joe WARNING: Input appears to use implicit continuation lines. You may need the "-implicitContinuations" option. WARNING: No "Topic: ..." lines found! Resulting HTML may have an empty (invalid) <ol>...</ol>. Explanation: "Topic: ..." lines are used to indicate the start of new discussion topics or agenda items, such as: <dbooth> Topic: Review of Amy's report[End of scribe.perl diagnostic output]