W3C home > Mailing lists > Public > public-audio@w3.org > April to June 2016

Minutes, 07 Apr 2016 f2f (Atlanta, day 1)

From: Chris Lilley <chris@w3.org>
Date: Fri, 8 Apr 2016 15:22:14 -0400
To: public-audio@w3.org
Message-ID: <570804E6.40309@w3.org>

and below as text


       [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


           jdsmith, hongchan, rtoyg_m, BillHofmann, BillHofm_,
           padenot, ChrisL


           BillHofmann, jdsmith, hongchan, rtoyg_m


      * [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


       [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

    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
    ... 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

    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


      [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


      [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

    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


      [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,

    mdjp: would you have an issue about per-implementation

    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

    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?

    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

    mdjp: Agreed. Ready for editing.


      [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.


      [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

    rtoyg_m: Should be closed as invalid.


      [23] https://github.com/WebAudio/web-audio-api/issues/768

    mdjp: Marking V1.


      [24] https://github.com/WebAudio/web-audio-api/issues/767

    mdjp: Marking V1.


      [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


      [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
    ... Resolution: spec negative playbackRate as have being
    exactly mirrored behaviour from the positive playbackRate

    <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

    rtoyg_m: Requests specifying min/max values for all
    ... 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

    rtoyg_m: Want to change the range for biquad gain. Currently
    -40 to +40. Suggest -inf to +inf (leaves open to


      [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

    <ghaudiobot> [web-audio-api] padenot pushed 3 new commits to

      [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

    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

    "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
    ... Resolution: merge back the SpatialPannerNode into the
    PannerNode .


      [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

    "Multiple calls to getFloatFrequencyData"

    Will resume on this after lunch.

    <hongchan> ScribeNick: hongchan


      [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

    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

    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

    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

    F2F Resoultion: Yes we will include these properties inthe
    property bag.


      [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

    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

    hoch: this is pretty similar to what we discussed previously.
    (AudioNodeDescriptor in AudioWorkletNode)

    F2F resolution: numberOfIn/Outputs should be in the property

    rtoy_g: having to specify all the options in the dictionary is

    padenot: a dictionary can be inherited, so we can extend on

    (WebIDL allows it)

    BillHofm_: so what happens if an arbitrary property gets passed

    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

    rtoy_g: I think the example looks fine.

    F2F resolution: Agreed


      [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

    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

    hoch: this is irrelvant now.

    ChrisL: just close it.


      [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


      [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

    mdjp: related to this we can quickly review this issue too.


      [51] https://github.com/WebAudio/web-audio-api/pull/665


      [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

    <mdjp> cwilso - are you available for comment on

      [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

    (everyone reading the thread…)

    padenot: the implementation wise, we can use the latency
    information from different platform libraries.

    mdjp: what is the next step?


      [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

    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;-)


      [58] https://github.com/WebAudio/web-audio-api/issues/783

    ChrisL: this is v.next; but this should be a separate node.


      [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.


      [60] https://github.com/WebAudio/web-audio-api/issues/785


      [61] https://github.com/WebAudio/web-audio-api/issues/786

    mdjp: we're not going to implement Doppler effect.

    <rtoyg_m> scribenick: rtoyg_m


      [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


      [63] https://github.com/WebAudio/web-midi-api/issues/161

    mdjp: Analyzer node issue, basically FFT processing


      [64] https://github.com/WebAudio/web-audio-api/issues/788


      [65] http://chuck.cs.princeton.edu/doc/language/uana.html

    <hongchan> (I'll just put it here for the reference, ChucK with

    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



      [67] https://github.com/WebAudio/web-audio-api/issues/457


      [68] https://github.com/WebAudio/web-audio-api/issues/456

    hongchan: Not clear it's really useful to have bypass on each
    ... 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

    padenot: Issue was one-shot ABSN was generating too much


      [70] https://github.com/WebAudio/web-audio-api/issues/371

    Leave in.


      [71] https://github.com/WebAudio/web-audio-api/issues/367

    Leave in.


      [72] https://github.com/WebAudio/web-audio-api/issues/359

    Leave in.


      [73] https://github.com/WebAudio/web-audio-api/issues/358

    Leave in.


      [74] https://github.com/WebAudio/web-audio-api/issues/331

    Leave in.


      [75] https://github.com/WebAudio/web-audio-api/issues/318

    Leave in.

    <ghaudiobot> [web-audio-api] padenot pushed 1 new commit to

      [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


      [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
Technical Director, W3C Interaction Domain
Received on Friday, 8 April 2016 19:22:22 UTC

This archive was generated by hypermail 2.3.1 : Friday, 8 April 2016 19:22:23 UTC