07:47:55 RRSAgent has joined #audio 07:47:55 logging to http://www.w3.org/2016/09/22-audio-irc 07:47:57 RRSAgent, make logs world 07:47:57 Zakim has joined #audio 07:47:59 Zakim, this will be 28346 07:47:59 ok, trackbot 07:48:00 Meeting: Audio Working Group Teleconference 07:48:00 Date: 22 September 2016 07:52:52 padenot has joined #audio 07:54:46 hongchan has joined #audio 07:55:02 hello 07:58:52 hi ! 08:01:05 joe has joined #audio 08:01:58 Hi Paul! 08:02:13 …and Joe. 08:02:27 Hi hongchan - do you want us to start the hangout so you can listen in? 08:02:37 kawai has joined #audio 08:02:39 micbuffa has joined #audio 08:03:01 I've sent an invite. Can anyone (with camera/mic) click the link? 08:03:36 I have but its doesn't look like it wants to connect. 08:03:44 Oh. 08:03:52 "Requesting to join the video call...." 08:03:53 I'll try 08:04:48 I registered Joe's email address. 08:05:20 are you able to add mine (matthewparadis@gmail.com) as thats where the mic is connected. 08:05:59 Okay, just did. 08:09:08 Do we have an agenda today? 08:09:52 I can tune in from 9am-1pm and hope this works for you all. 08:11:54 Introductions 08:12:53 olivier has joined #audio 08:12:57 hongchan, could you hear the intros? 08:12:59 https://www.w3.org/2011/audio/wiki/F2F_Sep_2016 08:13:12 Present+ OlivierThereaux(obs) 08:13:15 I heard it - but didn't get a chance to jump in. Heh. 08:13:23 mikeassenti has joined #audio 08:13:46 (honestly, I can't hear matt's voice really well.) 08:14:04 I'll tell Matt, mayebe he can switch mics 08:14:29 matt: 08:14:35 s/minutes/agenda/ 08:16:10 hongchan, we moved the mic, let us know if this is still bad, better, whatever 08:17:51 Yeah, I think it's better. 08:19:29 kawai_ has joined #audio 08:20:58 matt: let's have spec editors give an overview of the current open questions with AudioWorklet 08:21:30 ChrisL has joined #audio 08:22:18 (hmm.. the audio is breaking up on my side, but I'll continue to tune in as much as possible.) 08:22:26 padenot: there a number of PRs to look at. at the bottom of some PRs, there are notes that we have to look at issue X or Y so there's a biet of work remaining. Basically in good shape 08:23:04 padenot: this is probably the first Worklet being implemented so that will be an interesting test for the spec 08:23:38 rtoy: I agree with what Paul said. I think we're in good shape, but we need to figure out the lifetime question 08:23:50 kawai__ has joined #audio 08:24:06 Lifetime PR https://github.com/WebAudio/web-audio-api/pull/959 08:24:49 hongchan: I tried to respond to all the feedback from the TAG and believe I covered most all of it. There are a few remaining critical issues 08:25:15 hongchan: lifetime issue is one of them. Also a couple more questions like ownership of objects like the global scope and relationship with AudioContext 08:25:38 hongchan: we also have some internal storage areas that are not exposed to users and these are unusual features requiring some discussion 08:25:55 olivexu has joined #audio 08:26:01 hongchan: also the messaging system is somewhat different 08:26:37 hongchan: I was hoping Ian could drop by if possible 08:27:32 joe: any other feedback from the group 08:28:13 padenot: the mapping relationship between global scope(s) and contexts 08:29:54 rtoyg_m has joined #audio 08:30:14 https://github.com/WebAudio/web-audio-api/issues?utf8=%E2%9C%93&q=is%3Aopen%20lifetime 08:32:10 shepazu has joined #audio 08:33:42 It is fine for the mentin of tail time to be informative, as the normative part is in the definition of each node type 08:35:50 joe: 08:36:23 padenot: I was thinking about the fact that returning false means you're done, but yo ucan get called again and change the return value 08:36:42 padenot: one thing that is important is that if a node finishes, you can trash it right then 08:36:55 padenot: so that exactly at the node's finish, it becomes free 08:38:25 padenot: tjere is no way even if you have a reference to a stopped ABSN to make it do anything 08:38:49 rtoy: I think if we return false from process(), it's all over: we just stop doing anything 08:40:14 joe counter argument, other nodes die because the application sets the node to stop functioning at a pointin time. Difference with worklet is that it can internally reach a point there it has finished processing. 08:40:50 joe: are there other nodes that coninue to live on because there is a reference to it. Eg delay, inputs can be disconnected then reconnected. 08:46:55 micbuffa: the same problem as a js worker. You cannot be sure that it can be gc'd even with no references. Terminate/cloee method can be called. How can you decide that a worker without any reference but is preparing something should diw? 08:47:13 joe the question is 08:47:44 never to be asked (scribe error) 08:49:26 joe perhaps there needs to be a way to know if there are inputs connected AND references exist. The processor would then be aware if it is still relevant. 08:49:59 padenot if num inputs is 0 and you drop all references then you know it can not be reused. 09:02:43 Chris: why doesn't WA use the same GC rules. padenot a node can have no reference but it has to be able to make a sound. Eg oscillator scheduled in the future. Holds a reference which is dropped when finishde 09:06:06 https://developer.mozilla.org/en-US/docs/Glossary/Truthy 09:06:11 https://rawgit.com/WebAudio/web-audio-api/96fb6d4746fb69a77ef229bfe894c5d401c3395d/index.html 09:06:19 That's the proposal we're looking at 09:07:45 joe with an internal reference approach we do not need to refer to the input array? 09:07:54 https://github.com/WebAudio/web-audio-api/pull/959/files 09:10:05 hongchan: the text suggests that we are only checking active reference not connected inputs joe: that is down to the implementation. Emptu array is a good way to communicate this as it does not break any iteration in the processor. 09:10:10 https://github.com/WebAudio/web-audio-api/issues/475#issuecomment-245960736 09:11:21 hongchan: I think returning true/false on every quantum is wastefull, it might be worth seperating the this out as a seperate function. 09:11:56 hongchan: this is hte same thing but a different pattern 09:12:31 joe language might be " the UA is free to consult the keepAlie method to determine the state of the node." We would not specify the frequency of this check. 09:14:36 joe: one more reason to decide. if process is documented as having a return value it forces developers to think about it. 09:15:20 hongchan: I'd like to note that other types of worklet have a similar issue to determine lifetime and the keepalive pattern is being discussed right now. 09:15:47 hongchan will continue to comunicate with iank_ around this. 09:16:21 rrsagent, make logs public 09:16:43 joe: we will go with the return boolean idea, its possible that this might change based on other groups implementing worklet but they are essentialy equivalent. 09:16:57 joe: I think we have an answer to the lifetime question... 09:17:03 42 09:17:57 padenot: can Worklets communicate with each other? 09:18:33 padenot: I'd say not. but we could do more than JS allows at present. for instance share read-only values between nodes of the same type 09:18:57 padenot: not sure if read-only array slices in ECMAscript proposal have gone anywhere 09:19:17 padenot: if shared memory is achievable then I'd argue against inter-Worklet communication 09:20:14 padenot: (i.e. no shared global scope) 09:22:42 joe: register processor is a method on AWGS . hongchan: nothing stops developers from registering multiple processors in the worklet scope so anything declared here can be shared. 09:24:02 [iank joins] 09:26:03 joe: if you are calling register processor in global scope that exposes it. How do you avoid the fact that it can refer to other variables declared. 09:28:08 (can someone turn the camera on?) 09:29:13 Thanks! I saw it. 09:30:58 Here's my example: 09:31:01 main scope: import("foo.js"); ========== foo.js: var x = []; registerProcessor("foo", class { function bar() { x[0] = ...; // mutation is visible to other Processor instances } } 09:31:30 Yes. I understood and I believe we should support that. 09:36:42 https://webaudio.github.io/web-audio-api/#AudioWorklet 09:41:24 joe: if there are multiple AWGS then there will be once invocation of a register processor call per audiocontext. Inputs get run against every AWGS so if a new context is created imports have to be rerun. This would have to be a requirement. 09:41:44 padenot this is fine from an implementation standpoint. 09:43:06 joe so we would tie globalscope to audiocontext. When you run import the UA will ensure that the import will be run against all existing GS and all future GS. What does that mean for the promise that gets returned from import? 09:46:18 (+1 to what Paul said) 09:46:43 padenot: whenever a script is imported it can be stored as a resource. Current and future audiocontexts can access this resource. 09:46:55 yes, 09:49:19 joe: summary - one audio worklet GS per context. When a script is imported it is applied to all existing GS (promise resolves). Future audio contexts have access to the same imported scripts. Sound good? 09:49:24 yes 09:52:46 joe what would we change about the processing model for audio worklet node? 09:54:09 hongchan: currently from the implementation perspective chromium has 2 layers, audio node and audio handler (audio worklet processor). Now that the processor is exposed in worklet the spec might need to describe how node and processor are called. Does this make sense spec editors? 09:54:27 are we missing normative decription of how AW nodes operate? 09:54:57 rtoyg_m: worklet should work like an audio node so processing model should look the same. 09:55:05 hongchan fine with that 09:56:00 padenot need to try and determine if we need to do something. 09:56:22 ChrisL leave this in the spec - mark it as at risk, and can be dropped etc if required. 09:59:53 topic: postMessage 10:02:01 https://github.com/WebAudio/web-audio-api/issues/951 10:02:32 hongchan: we need a simple async messaging mechanism between AW node & AW processor. 10:07:11 ian's example: 10:07:22 registerThing('blah', class { 10:07:35 @expose method1() { .. } 10:07:47 }); 10:07:51 Oh, I am familiar with this. You can put down the camera, Matt! 10:07:52 Thanks! 10:08:06 in the document... 10:08:14 var obj = ...; 10:08:30 obj.method1(/*structured clonable stuff*/); 10:12:24 olivexu has joined #audio 10:24:28 iank_ regProcessor approach for communication into processor. padenot seems good. joe: there could be name conflicts but could be handled. Doesn't feel worse than parameter descriptors. 10:26:12 padenot does not see very complicated. iank_ only ting to nail down is timing. padenot thats fine we had that problem before. 10:26:34 https://gist.github.com/dherman/5401735/revisions 10:26:41 https://gist.github.com/dherman/5401735 sorry 10:26:51 hongchan has left #audio 10:26:58 hongchan has joined #audio 10:27:15 ian's example of how to expose properties neatly without window-scope wrappers on AudioWorkletNode: 10:27:25 registerProcessor('node', class { 10:27:38 static propertyDescriptors = ['propName']; 10:27:49 onPropertyChange(name, value) { ... } 10:27:51 }); 10:28:06 Got it. Thanks! 10:31:18 Thank you honghan for putting in the late night to join us! Catch you tomorrow! Sleep well. 10:31:33 My pleasure! Thanks for setting this up Matt! 10:32:12 hongchan has left #audio 10:33:40 Zakim has left #audio 10:52:04 ChrisL has joined #audio 10:55:00 micbuffa has joined #audio 11:01:24 rtoyg_m has joined #audio 11:03:45 https://github.com/WebAudio/web-audio-api/issues/942 11:03:59 Needs WG Review: https://github.com/WebAudio/web-audio-api/issues?q=is%3Aissue+is%3Aopen+label%3A%22Needs+WG+review%22 11:07:08 padenot has joined #audio 11:07:25 rtoy: diagram suggests general case of M/K/N but this is not really supported 11:07:36 rtoy: also copied stereo case is not fully supported apparently 11:12:53 rtoy: this is a breaking change in that we would remove the copied-to-stereo behavior 11:14:00 joe: but the spec never guaranteed that one would get that 11:17:56 joe: there's still a problem in using the impulse-response in stereo-input mono-impulse mode, where one would expect each input channel to be separately convolved 11:20:31 https://github.com/WebAudio/web-audio-api/issues/975 11:21:16 rtoy: (relative to #942) let me think about it overnight 11:24:44 rtoy: it would be much simpler to adopt an approach where input channels are either used or discarded to match the number of output channels 11:26:03 matt: we're adopting recommendation #3 from the issue 11:26:12 https://github.com/WebAudio/web-audio-api/issues/973 11:28:25 rtoy: we need to organize the order of node documentation 11:28:47 matt: simplest is best. most obvious thing is that if everything is in alpha order, you'll know where to find stuff 11:28:58 matt: suggestion is AudioContext first, then everything else in alpha order 11:30:03 https://github.com/WebAudio/web-audio-api/issues/919 11:31:12 rtoy: Paul's solution LGTM 11:31:44 https://github.com/WebAudio/web-audio-api/issues/908 11:38:31 matt: since we need new better-specified compressors, why don't we spec DynamicCompressor w/r/t the existing implementations rather than changing it up 11:44:21 chris: it seems like polishing something myseterious is not good for the spec 11:44:30 https://www.chromestatus.com/metrics/feature/timeline/popularity/638 11:44:40 s/chris/cwilso 11:45:59 joe: do we reverse engineer? 11:46:10 cwilso: we'd need to see how weird the implementation actually is 11:49:40 matt: I think we don't change the approach to channel layouts, but add or reference an issue about derermining the nature of the implementation 11:50:00 joe: is there only one implementation in the wild? 11:50:04 rtoy: yes 11:50:52 https://github.com/WebAudio/web-audio-api/issues/850 11:52:36 matt: we will allow a time constant of zero to effect instantaneous change as agreed by spec editors already 11:52:57 https://github.com/WebAudio/web-audio-api/issues/787 11:54:08 matt: I've had problems with this also 11:55:28 matt: we'll wait for Chris L to explain this to us 11:55:35 https://github.com/WebAudio/web-audio-api/issues/367 11:56:32 https://github.com/WebAudio/web-audio-api/pull/902 12:00:32 rtoy: questions are: 1) factory method? 2) name of AudioPAram, 3) default value == 1? 13:00:50 micbuffa has joined #audio 13:01:44 rtoyg_m has joined #audio 13:01:56 joe has joined #audio 13:02:42 kawai has joined #audio 13:03:00 https://github.com/WebAudio/web-audio-api/issues/344 13:03:01 ChrisL has joined #audio 13:04:07 Proposed algorithm: https://github.com/WebAudio/web-audio-api/issues/344#issuecomment-242499578 13:08:24 mikeassenti has joined #audio 13:13:09 joe: need to make the explanation of rewritten setValueCurve() more explicit 13:16:11 joe: let's get rid of "It is undefined if new events..." by legislating what state the automation curve gets left in 13:19:08 https://github.com/WebAudio/web-audio-api/issues/246 13:23:56 olivexu has joined #audio 13:28:16 cwilson: sidechain compression won't change algorithm of DynamicCompressor, just need a distinct input for the control signal that drives the gain reduction of the pass-through signal 13:29:08 matt: any breaking effects: 13:29:19 cwilson: no, with no sidechain input, node behaves the same 13:29:54 matt: I think we will add this and mark as Ready For Editing For Real 13:30:34 cwilson: I am volunteering to spec this 13:30:49 https://github.com/WebAudio/web-audio-api/issues/13 13:36:55 https://github.com/WebAudio/web-audio-api/issues?utf8=%E2%9C%93&q=%5BTAG%5D 13:37:56 https://github.com/WebAudio/web-audio-api/issues/950 13:42:28 padenot has joined #audio 13:51:04 joe: 13:51:24 query link was: https://github.com/WebAudio/web-audio-api/issues?utf8=%E2%9C%93&q=is%3Aissue%20%5Btag%5D 13:52:16 Topic: NoiseGate 13:52:19 https://github.com/WebAudio/web-audio-api/commit/77323cf07a408fb490efaad3d738b19ca3fe2ee3 13:59:41 cwilson: the thresholds are evaluated per-sample (a-rate) 14:00:04 rtoy: can all of these parameters be automated since they are AudioParams? 14:00:19 cwilson: typically we wouldn't automate them, they could be attributes 14:10:28 joe: need to determine whether rampng is linear or exponential 14:11:04 https://books.google.pt/books?id=pVIdAAAAQBAJ&pg=PA506&lpg=PA506&dq=noise+gate+gain+linear&source=bl&ots=9ALeQ48RV4&sig=Ocn3Ki7F-t_YaA8ylskmRWkxAK4&hl=en&sa=X&ved=0ahUKEwiq67-bk6PPAhWC7xQKHR_CCZgQ6AEINDAF#v=onepage&q=noise%20gate%20gain%20linear&f=false 14:11:07 shepazu has joined #audio 14:13:36 THAT design guide on noise gates http://www.thatcorp.com/datashts/dn100.pdf 14:15:24 matt: next up are V1 issues that are *not* marked as Ready for Editing 14:15:30 https://github.com/WebAudio/web-audio-api/issues/839 14:18:25 https://github.com/WebAudio/web-audio-api/issues/475 14:19:40 https://github.com/WebAudio/web-audio-api/issues/445 14:23:52 https://github.com/WebAudio/web-audio-api/issues/986 14:26:53 rtoy: we're going to document the constructors as being equivalent to factory methods followed by sequential calls to setters of the various attributes supplied in the options parameter 14:27:12 https://github.com/WebAudio/web-audio-api/issues/818 14:29:16 https://github.com/WebAudio/web-audio-api/issues/822 14:36:42 https://github.com/WebAudio/web-audio-api/issues/968 14:39:35 https://github.com/WebAudio/web-audio-api/issues/833 14:39:39 olivexu has joined #audio 15:24:55 kawai has joined #audio 15:26:46 joe has joined #audio 15:38:19 https://github.com/WebAudio/web-audio-api/issues/929 15:38:49 https://github.com/WebAudio/web-audio-api/issues/937 15:39:38 https://github.com/WebAudio/web-audio-api/issues/938 15:44:09 https://github.com/WebAudio/web-audio-api/issues/944 15:44:12 https://github.com/WebAudio/web-audio-api/issues/960 15:46:43 https://github.com/WebAudio/web-audio-api/issues/969 15:49:09 https://github.com/WebAudio/web-audio-api/issues/970 15:49:17 https://github.com/WebAudio/web-audio-api/issues/977 15:50:01 https://github.com/WebAudio/web-audio-api/issues/981 15:51:03 https://github.com/WebAudio/web-audio-api/issues/984 15:51:50 https://github.com/WebAudio/web-audio-api/issues/987 16:02:19 padenot has joined #audio 16:04:51 joe: moving on to look at new feature requests that are marked as Ready for Editing -- these should be carefully examined 16:04:53 https://github.com/WebAudio/web-audio-api/issues/264 16:09:36 fix in progress on #264 16:09:37 https://github.com/WebAudio/web-audio-api/issues/132 16:19:28 (adjourned) 16:19:34 rrsagent, make minutes 16:19:34 I have made the request to generate http://www.w3.org/2016/09/22-audio-minutes.html ChrisL 16:34:03 shepazu has joined #audio 17:12:42 shepazu has joined #audio 17:16:56 rtoyg_m has joined #audio 17:51:44 shepazu has joined #audio 21:04:43 shepazu has joined #audio 22:09:28 shepazu has joined #audio