- From: Chris Lilley <chris@w3.org>
- Date: Fri, 8 Apr 2016 15:22:14 -0400
- To: public-audio@w3.org
https://www.w3.org/2016/04/07-audio-minutes.html
and below as text
[1]W3C
[1] http://www.w3.org/
- DRAFT -
Audio Working Group Teleconference
07 Apr 2016
See also: [2]IRC log
[2] http://www.w3.org/2016/04/07-audio-irc
Attendees
Present
jdsmith, hongchan, rtoyg_m, BillHofmann, BillHofm_,
padenot, ChrisL
Regrets
Chair
mdjp
Scribe
BillHofmann, jdsmith, hongchan, rtoyg_m
Contents
* [3]Topics
1. [4]Goals for F2F
2. [5]Audio Worker
3. [6]Issue resolution session 1
* [7]Summary of Action Items
* [8]Summary of Resolutions
__________________________________________________________
<mdjp> trackbot, start meeting
<BillHofmann> ScribeNick BillHofmann
<BillHofmann> ScribeNick: BillHofmann
<scribe> Meeting: Web Audio F2F
Goals for F2F
mdjp: agenda reviewed
Audio Worker
<rtoyg_m>
[9]https://github.com/WebAudio/web-audio-api/issues/776
[9] https://github.com/WebAudio/web-audio-api/issues/776
<mdjp> [10]https://github.com/WebAudio/web-audio-api/issues/776
[10] https://github.com/WebAudio/web-audio-api/issues/776
<mdjp> [11]https://github.com/WebAudio/web-audio-api/issues/777
[11] https://github.com/WebAudio/web-audio-api/issues/777
<mdjp> [12]https://github.com/WebAudio/web-audio-api/issues/778
[12] https://github.com/WebAudio/web-audio-api/issues/778
<mdjp> [13]https://github.com/WebAudio/web-audio-api/issues/779
[13] https://github.com/WebAudio/web-audio-api/issues/779
hoch: first example is how to import a script - two potential
patterns (issue 776)
... either under window or under audiocontext - padenot liked
audiocontext
padenot: not sure anymore - may make sense to use first item
for consistency
hoch: advantage of audiocontext is binding to context specific
data (e.g., samplerate)
... however, audioworkletnode has access to context
padenot: exposing context should address this
rtoyg_m: other items besides samplerate - latency will be added
padenot: as well, currentTime, but you can get that by hand.
hoch: could/should be a param on process method
BillHofmann: what about (e.g.) an object renderer that needs
number of channels from destination node?
padenot: plausibly something you can configure on load, or with
postMessage
... note that other current examples are 1:1 with target object
--> window; note ours could/are specific to audiocontext
BillHofmann: what's the disadvantage of loading once (on
window)
padenot: issue is name collision
BillHofmann: would always need to use URL, anyway
hoch: other issue with singleton is with multiple contexts,
with context-specific data
padenot: could do init on instantiation...
hoch: what about shared expensive resources (e.g. HRTF)?
padenot: could share immutable data with postMessage (via
postMessage)
<hongchan>
[14]https://github.com/WebAudio/web-audio-api/issues/778#issuec
omment-204138788
[14] https://github.com/WebAudio/web-audio-api/issues/778#issuecomment-204138788
hongchan: sharing assets should be done manually
consensus - window scoped context is preferred
<hongchan>
[15]https://github.com/WebAudio/web-audio-api/issues/777
[15] https://github.com/WebAudio/web-audio-api/issues/777
hongchan: about how you instantiate worklet
... prefer both new and factory
padenot: people expect a "create" method
... should do both
... (because is consistent with other elements in API)
all: discussion of details of new/create parameter - structure
for AudioParams, inputs, outputs, ...
hongchan: details in issue - need to revise for exact WebIDL
syntax, but...
padenot: looks good
[16]https://github.com/WebAudio/web-audio-api/issues/778
[16] https://github.com/WebAudio/web-audio-api/issues/778
hongchan: How to initialize - this is difficult
all: discussion of details in issue
hongchan: perhaps should set aside, and take up later
padenot: proposal to allow a new of a local AudioParam
hongchan: currently no constructure for AudioParam, and people
will want to know why they can't use this outside
<hongchan>
[17]https://github.com/WebAudio/web-audio-api/issues/779
[17] https://github.com/WebAudio/web-audio-api/issues/779
hongchan: messaging for AudioWorklet
... seems easy - postMessage/onmessage
padenot: order is postMessage/onmessage, then process
hongchan: note they're not necessarily synced
padenot: propose handle events first
rtoyg_m: actually, doesn't matter - implementation detail,
really.
mdjp: would you have an issue about per-implementation
differences?
rtoyg_m: no real way you can tell
hongchan: might want specific information in the event
... e.g. timestamp info
mdjp: what would you want to know that for?
padenot: maybe to determine delay?
hongchan: might want to know currentTime of when event was
created
mdjp: will take up at next call.
Issue resolution session 1
<BillHofm_> ScribeNick: jdsmith
<mdjp> [18]https://github.com/WebAudio/web-audio-api/issues/348
[18] https://github.com/WebAudio/web-audio-api/issues/348
rtoyg_m: foolip raised a question on what "balanced" means,
which was meant to be an in between for "interactive" (short
latency) and "playback" (long latency)
... We are still using these three latency catagories now.
mdjp: If you select "interactive" you get the shortest latency?
Yes.
padenot: You'd presumably select that for WebRTC use.
rtoyg_m: That breaks WebRTC on phone, however...
... foolip also suggests using "latencyHint" for the numeric
latency hint. I like "baseLatency" to express it's the core
latency of the input-output connection, without latency added
by other nodes.
... "Balanced" is needed for WebRTC, and would represent 10ms
latency. There is some buffering (vs. "Interactive" which is
spec'd as the lowest possible latency), but it's still close to
real time.
mdjp: Change "processingLatency" in issue 348 to "baseLatency"
to clarify it's meaning. We also accept the revision to add the
number value.
... Marking ready for edting.
[19]https://github.com/WebAudio/web-audio-api/issues/780
[19] https://github.com/WebAudio/web-audio-api/issues/780
mdjp: Agreed. Ready for editing.
[20]https://github.com/WebAudio/web-audio-api/issues/771
[20] https://github.com/WebAudio/web-audio-api/issues/771
rtoyg_m: Issue is that users can design a lowpass filter that
we cannot represent.
... Example in issue shows the difference. You can use cookbook
to implement the filter.
... Compare the results. Differences are audible.
<rtoyg_m>
[21]http://rtoy.github.io/webaudio-hacks/more/biquad/biquad-low
pass-q.html?usedB=true
[21] http://rtoy.github.io/webaudio-hacks/more/biquad/biquad-lowpass-q.html?usedB=true
mdjp: Decision: Use audio cookbook, but use Q in dB.
[22]https://github.com/WebAudio/web-audio-api/issues/769
[22] https://github.com/WebAudio/web-audio-api/issues/769
rtoyg_m: Should be closed as invalid.
[23]https://github.com/WebAudio/web-audio-api/issues/768
[23] https://github.com/WebAudio/web-audio-api/issues/768
mdjp: Marking V1.
[24]https://github.com/WebAudio/web-audio-api/issues/767
[24] https://github.com/WebAudio/web-audio-api/issues/767
mdjp: Marking V1.
[25]https://github.com/WebAudio/web-audio-api/issues/766
[25] https://github.com/WebAudio/web-audio-api/issues/766
BillHofm: Automations you do yourself would likely have the
same behaviors.
mdjp: Marking V1. All V1 items above (3 total) are ready for
editing.
[26]https://github.com/WebAudio/web-audio-api/issues/95
[26] https://github.com/WebAudio/web-audio-api/issues/95
rtoyg_m: Playback rate is -100 to +100, but we've never
described negative playback behavior.
... cwilso has proposed a behavior in the absence of looping
and when looping is present that seems complete.
mdjp: Issue was marked ready for editing 1 year ago.
padenot: Behavior should be symmetrical whether forward or
backward.
... Resolution: spec negative playbackRate as have being
exactly mirrored behaviour from the positive playbackRate
behaviour.
<cwilso> I am in the office, BTW and can jump on the phone if
it would help.
<mdjp> cwilso things are going ok but you are always welcome to
dial in. See my email for skype details.
[27]https://github.com/WebAudio/web-audio-api/issues/762
[27] https://github.com/WebAudio/web-audio-api/issues/762
rtoyg_m: Requests specifying min/max values for all
AudioParams.
... Only ones to be agreed upon are playbackRate and detune.
mdjp: PlaybackRate will be -100 to +100, detune will be -inf to
+inf. Others noted in issue.
... Marked ready for edting.
[28]https://github.com/WebAudio/web-audio-api/issues/760
[28] https://github.com/WebAudio/web-audio-api/issues/760
rtoyg_m: Want to change the range for biquad gain. Currently
-40 to +40. Suggest -inf to +inf (leaves open to
implementation).
[29]https://github.com/WebAudio/web-audio-api/issues/759
[29] https://github.com/WebAudio/web-audio-api/issues/759
<ghaudiobot> [web-audio-api] padenot closed pull request #773:
759 biquad gain is db (gh-pages...759-biquad-gain-is-db)
[30]https://github.com/WebAudio/web-audio-api/pull/773
[30] https://github.com/WebAudio/web-audio-api/pull/773
<ghaudiobot> [web-audio-api] padenot pushed 3 new commits to
gh-pages:
[31]https://github.com/WebAudio/web-audio-api/compare/ab068b55b
1f0...f633b27f68af
[31] https://github.com/WebAudio/web-audio-api/compare/ab068b55b1f0...f633b27f68af
<ghaudiobot> web-audio-api/gh-pages 0855669 Raymond Toy: Fix
#759: biquad gain is in dB...
<ghaudiobot> web-audio-api/gh-pages 60025a5 Raymond Toy: Tidy
<ghaudiobot> web-audio-api/gh-pages f633b27 Paul Adenot: Merge
pull request #773 from rtoy/759-biquad-gain-is-db...
rtoyg_m: Editorial. Change pushed already.
padinot: Closed.
[32]https://github.com/WebAudio/web-audio-api/issues/757
[32] https://github.com/WebAudio/web-audio-api/issues/757
padinot: Should just return a typeerror.
mdjp: If array buffer has been neutered then promise rejected
with type error. Marked "ready for editing"
[33]https://github.com/WebAudio/web-audio-api/issues/749
[33] https://github.com/WebAudio/web-audio-api/issues/749
"Merge SpatialPannerNode back into PannerNode?"
rtoyg_m: Agree with making this change. Probably need to
deprecate the old API, but keep for compat.
jdsmith: Other specs leave deprecated APIs in, but highlight
the preferred in text.
BillHofm: My suggestion as well.
padenot: Change is submitted by rtoy. Looks good, ready to
merge.
... Resolution: merge back the SpatialPannerNode into the
PannerNode .
[34]https://github.com/WebAudio/web-audio-api/issues/739
[34] https://github.com/WebAudio/web-audio-api/issues/739
"loadHRTFDatabase for SpatialPanner" using promise?
padenot: Currently to a lazy load.
roytg_m: Chrome loads fast, possibly shouldn't.
jdsmith: What happens on spatialPanner if it's not loaded?
padenot: We output silence.
royt_g: Same.
mdjp: Resolution move to V.next and consider along side
requests for custom HRTFs.
[35]https://github.com/WebAudio/web-audio-api/issues/729
[35] https://github.com/WebAudio/web-audio-api/issues/729
"Multiple calls to getFloatFrequencyData"
Will resume on this after lunch.
<hongchan> ScribeNick: hongchan
[36]https://github.com/WebAudio/web-audio-api/issues/729
[36] https://github.com/WebAudio/web-audio-api/issues/729
mdjp: so we're looking at the difference in implementation.
hoch: is this notion of stable state a part of web platform?
padenot: yes, html.
... should return the same data.
rtoyg_m: we should fix the implementation to follow the
expectation.
F2F Resolution: getFrequencyData() should return the same value
for multiple calls for the same currentTime.
[37]https://github.com/WebAudio/web-audio-api/issues/703
[37] https://github.com/WebAudio/web-audio-api/issues/703
rtoy_g: most of them are obvious.
BillHofm_: what is our policy on float vs double.
rtoy_g: generally double for time, float for everything else.
... let's start with 696.
[38]https://github.com/WebAudio/web-audio-api/issues/696
[38] https://github.com/WebAudio/web-audio-api/issues/696
rtoy_g: the pattern will be - new FooNode(context, opiotns)
options as in property bag.
padenot: we should go by the type name. (e.g. new GainNode)
rtoy_g: we keep the old factory pattern intact, so no property
bag init options for them.
ChrisL: so if you pass in these values (channel count and etc)
does it change dynamically?
padenot, rtoy_g: yes.
mdjp: it would be weird to exclude them from the options.
[39]https://github.com/WebAudio/web-audio-api/issues/697
[39] https://github.com/WebAudio/web-audio-api/issues/697
F2F Resoultion: Yes we will include these properties inthe
property bag.
[40]https://github.com/WebAudio/web-audio-api/issues/698
[40] https://github.com/WebAudio/web-audio-api/issues/698
F2F resolution: No longer deprecated. constructor and property
bag required for all parameters.
[41]https://github.com/WebAudio/web-audio-api/issues/699
[41] https://github.com/WebAudio/web-audio-api/issues/699
ChrisL: ScriptProcessor is a great example - we should not
encourage people to use this anymore. We keep it, but we don't
want the new constructor.
<ChrisL> no-one is relying on a script processor node
constructor, so no web compat issues; do not add a constructor
[42]https://github.com/WebAudio/web-audio-api/issues/700
[42] https://github.com/WebAudio/web-audio-api/issues/700
hoch: this is pretty similar to what we discussed previously.
(AudioNodeDescriptor in AudioWorkletNode)
F2F resolution: numberOfIn/Outputs should be in the property
bag.
rtoy_g: having to specify all the options in the dictionary is
cumbersome.
padenot: a dictionary can be inherited, so we can extend on
that.
(WebIDL allows it)
BillHofm_: so what happens if an arbitrary property gets passed
in?
padenot, rtoy_g: it gets ignored.
BillHofm_: for AudioWorkletNode, when and where this
initialization happens? Who's responsible for it?
hoch: that needs to be done in the constructor, the developer
of the node is responsible.
[43]https://github.com/WebAudio/web-audio-api/issues/702
[43] https://github.com/WebAudio/web-audio-api/issues/702
rtoy_g: I think the example looks fine.
F2F resolution: Agreed
[44]https://github.com/WebAudio/web-audio-api/issues/703
[44] https://github.com/WebAudio/web-audio-api/issues/703
ChrisL: can we make the imag part optional? in most cases they
are zero.
F2F: Agreed with caveat that if real or imag are undefined they
will default to array of 0s.
[45]https://github.com/WebAudio/web-audio-api/issues/671
[45] https://github.com/WebAudio/web-audio-api/issues/671
rtoy_m: he is requesting power-law automation. reasonable.
ChrisL: yes.
mdjp: so is this v1 or v2?
F2F: this should be v2.
[46]https://github.com/WebAudio/web-audio-api/issues/740
[46] https://github.com/WebAudio/web-audio-api/issues/740
hoch: this is irrelvant now.
ChrisL: just close it.
[47]https://github.com/WebAudio/web-audio-api/issues/737
[47] https://github.com/WebAudio/web-audio-api/issues/737
padenot: we have the processing model specced, but I will add a
clear definition in there.
F2F: Update to define as 1 block
[48]https://github.com/WebAudio/web-audio-api/issues/730
[48] https://github.com/WebAudio/web-audio-api/issues/730
<rtoyg_m>
[49]https://www.chromestatus.com/metrics/feature/timeline/popul
arity/1251
[49] https://www.chromestatus.com/metrics/feature/timeline/popularity/1251
rtoyg_m: according to this metric, we can remove this safely.
F2F: No web compat issue setVelocity will be removed
[50]https://github.com/WebAudio/web-audio-api/issues/652
[50] https://github.com/WebAudio/web-audio-api/issues/652
mdjp: related to this we can quickly review this issue too.
[51]https://github.com/WebAudio/web-audio-api/pull/665
[51] https://github.com/WebAudio/web-audio-api/pull/665
[52]https://github.com/WebAudio/web-audio-api/issues/606
[52] https://github.com/WebAudio/web-audio-api/issues/606
rtoyg_m: negative rolloff does not make sense.
mdjp: any idea on this?
rtoyg_m: what happens if you swap min and max? garbage in
garbage out?
ChrisL: yes I think so.
[53]https://github.com/WebAudio/web-audio-api/issues/251
[53] https://github.com/WebAudio/web-audio-api/issues/251
<mdjp> cwilso - are you available for comment on
[54]https://github.com/WebAudio/web-audio-api/issues/251
[54] https://github.com/WebAudio/web-audio-api/issues/251
mdjp: we can come back to that.
[55]https://github.com/WebAudio/web-audio-api/issues/12
[55] https://github.com/WebAudio/web-audio-api/issues/12
(everyone reading the thread…)
padenot: the implementation wise, we can use the latency
information from different platform libraries.
mdjp: what is the next step?
<rtoyg_m>
[56]https://github.com/pozdnyakov/web-audio-api/commit/a20fe47f
0bf084db909a9960fa1d13d803b7f112
[56] https://github.com/pozdnyakov/web-audio-api/commit/a20fe47f0bf084db909a9960fa1d13d803b7f112
padenot: I want to clear up the confusion between
dynamic/static latency in the PR.
rtoyg_m: what happens if you plug-in a different audio device
with a different latency?
padenot: the latency value is static, but it can be changed
when the system changes.
... notification might be possible from AudioOutputDeviceAPI,
not us.
mdjp: Paul, can you take over?
padenot: yes.
[57]https://github.com/WebAudio/web-audio-api/issues/251
[57] https://github.com/WebAudio/web-audio-api/issues/251
hoch: the problem here is that we can't subclass or create a
custom node from a subgraph without using hacky overriding on
connect() method.
padenot: yeah, overriding connect() can cause some collision
between libraries.
mdjp: let's connect with cwilso@ for more progress on this.
... take 20!
<mdjp> 25;-)
<ChrisL>
[58]https://github.com/WebAudio/web-audio-api/issues/783
[58] https://github.com/WebAudio/web-audio-api/issues/783
ChrisL: this is v.next; but this should be a separate node.
<ChrisL>
[59]https://github.com/WebAudio/web-audio-api/issues/784
[59] https://github.com/WebAudio/web-audio-api/issues/784
mdjp: 2) exposing latency in AudioWorkletNode
padenot: note that this is the latency of individual node, not
the tail time.
<ChrisL>
[60]https://github.com/WebAudio/web-audio-api/issues/785
[60] https://github.com/WebAudio/web-audio-api/issues/785
<ChrisL>
[61]https://github.com/WebAudio/web-audio-api/issues/786
[61] https://github.com/WebAudio/web-audio-api/issues/786
mdjp: we're not going to implement Doppler effect.
<rtoyg_m> scribenick: rtoyg_m
<ChrisL>
[62]https://github.com/WebAudio/web-audio-api/issues/787
[62] https://github.com/WebAudio/web-audio-api/issues/787
BillHofm_: Streaming decodeAudioData is very useful; but need
to define use cases. It's definitely v.next
<ChrisL>
[63]https://github.com/WebAudio/web-midi-api/issues/161
[63] https://github.com/WebAudio/web-midi-api/issues/161
mdjp: Analyzer node issue, basically FFT processing
<ChrisL>
[64]https://github.com/WebAudio/web-audio-api/issues/788
[64] https://github.com/WebAudio/web-audio-api/issues/788
<hongchan>
[65]http://chuck.cs.princeton.edu/doc/language/uana.html
[65] http://chuck.cs.princeton.edu/doc/language/uana.html
<hongchan> (I'll just put it here for the reference, ChucK with
UAna)
hongchan: Chuck can do fft processing.
padenot: Current webaudio implementation of this would be
difficult. The time domain processing is important part.
mdjp: Webmidi for Firefox and Edge.
... Scanning over v2 issues
#496: encodeAudioData.
padenot: Discussed in video working group, but it's odd since
video is tied to a real clock.
... Connect offline context to media stream to encode data.
... Like a video editor on the web.
[66]https://github.com/WebAudio/web-audio-api/issues/468
[66] https://github.com/WebAudio/web-audio-api/issues/468
Keep.
[67]https://github.com/WebAudio/web-audio-api/issues/457
[67] https://github.com/WebAudio/web-audio-api/issues/457
[68]https://github.com/WebAudio/web-audio-api/issues/456
[68] https://github.com/WebAudio/web-audio-api/issues/456
hongchan: Not clear it's really useful to have bypass on each
AudioNode.
... What about source node?
BillHofm_: It becomes a noise generator. :-)
<BillHofm_> Now that I think about it, probably better a
60/50Hz line noise. :)
padenot: Leave in for now.
[69]https://github.com/WebAudio/web-audio-api/issues/373
[69] https://github.com/WebAudio/web-audio-api/issues/373
padenot: Issue was one-shot ABSN was generating too much
garbage
[70]https://github.com/WebAudio/web-audio-api/issues/371
[70] https://github.com/WebAudio/web-audio-api/issues/371
Leave in.
[71]https://github.com/WebAudio/web-audio-api/issues/367
[71] https://github.com/WebAudio/web-audio-api/issues/367
Leave in.
[72]https://github.com/WebAudio/web-audio-api/issues/359
[72] https://github.com/WebAudio/web-audio-api/issues/359
Leave in.
[73]https://github.com/WebAudio/web-audio-api/issues/358
[73] https://github.com/WebAudio/web-audio-api/issues/358
Leave in.
[74]https://github.com/WebAudio/web-audio-api/issues/331
[74] https://github.com/WebAudio/web-audio-api/issues/331
Leave in.
[75]https://github.com/WebAudio/web-audio-api/issues/318
[75] https://github.com/WebAudio/web-audio-api/issues/318
Leave in.
<ghaudiobot> [web-audio-api] padenot pushed 1 new commit to
gh-pages:
[76]https://github.com/WebAudio/web-audio-api/commit/6a0938bc46
cc7030577f285378ec864705eefc01
[76] https://github.com/WebAudio/web-audio-api/commit/6a0938bc46cc7030577f285378ec864705eefc01
<ghaudiobot> web-audio-api/gh-pages 6a0938b Paul Adenot: Make
it so that the lower bound for the required sample-rate is
8000...
[77]https://github.com/WebAudio/web-audio-api/issues/303
[77] https://github.com/WebAudio/web-audio-api/issues/303
Close this one because offline context has suspend/resume.
Summary of Action Items
Summary of Resolutions
[End of minutes]
__________________________________________________________
--
Chris Lilley
@svgeesus
Technical Director, W3C Interaction Domain
Received on Friday, 8 April 2016 19:22:22 UTC