audio devices
6 TopicsAudio Issue with Teams running in WVD
Hi All, Has anyone encountered audio issue while running Teams meeting in WVD? We have some users complaining about loss of audio in Teams and the problem seems to be intermittent. I'm wondering if this issue is related to Skype for Business as we are using both Teams and Skype in our organsiation. Cheers, Tommy3.3KViews0likes2CommentsTeams - Actively hiding some audio devices?
Hi, Apologies in advance, but this one may be long... Somewhere around September 2019, the Teams's webapp's built-in chat audio device behaviour changed (I believe it was around the same time it finally became possible to adjust (some) audio settings before joining a call/meeting). At this time, Teams appeared to stop respecting my system 'default microphone' setting, and the list of microphone drop-downs only shows a subset of the available audio devices on my machine (crucially not the ones I am interested in!). To be extra clear, I am only interested in the WebApp (not any of the electron-ified desktop apps), and have always been running it in Chrom(ium) on Linux (currently ver 87.0.4280.88) with audio provided via ALSA, but the exact version of Chrom(ium) seems to be irrelevant, as I will show later. Notably, Teams is the only web-based tool that fails to offer all my audio devices, other webapps (e.g. mictests.com, webex, zoom, etc.) which also use the standard WebAudio APIs provide a full device list and therefore 'just work'. It took a few months, but I finally took the time to start actively hunting through the Teams (de-minified) JS looking for clues, guessing that somewhere at the bottom of the stack it would be using the WebRTC and WebAudio standard libraries. Delving in to the skype-calling-pluginless.bundle-X.js filex (oh look, Teams is really just another wrapper on top of skype (or is it SfB?)), there were are a few areas which seemed to confirm my suspicions that Teams must have some kind of custom handling on top of the browser-provided API which is causing it to be misled. In this first snippet, we see custom handling whereby Teams attempts to ignore the user-set default microphone if it decides it is too "synthetic": }, t.prototype.updateActiveDevices = function(e) { if (e.microphone && e.microphone.isMarkedDefault) { var t = this.lists.get(s.default.MEDIA_DEVICE.microphone), n = t.findIndex(function(e) { return e.isSystemDefault }); - 1 !== n && t[n] !== e.microphone.device ? (this.logger.safe.info("Removing synthetic default microphone"), this.lists.set(s.default.MEDIA_DEVICE.microphone, t.splice(n, 1))) : e.microphone.device.isSystemDefault = !0 } It also turns out Teams has a hard-coded whitelist and blacklist of 'approved' names of audio devices, which appears to be why many of mine are removed from the list of devices offered in the UI: devices: { blacklist: { microphone: "stereo mix \\(", camera: "ir camera", speaker: "" }, compositeAudioDevices: !0, compositeLabelMatchingThreshold: .5, piiSafeWords: ["virtual", "usb", "test", "default", "remote audio", "built-in", "s/pdif", "digital", "dock", "thunderbolt\\d*", "line( in| out)?", "analog", "high definition", "smartaudio", "macbook", "airpod", "stereo", "hands-free", "display", "dp", "displayport", "hdmi", "cable", "nvidia", "amd", "citrix hdx", "vmware", "integrated", "panoramic", "facetime", "front", "rear", "desktop", "capture", "cam", "snap camera", "obs-camera", "vb-audio", "vaio", "manycam"] }, Here's the section handling the blacklisting and also looking for anything flagged as 'communications' instead: t.compilePrimitiveDeviceList = function(e, t, n, o, d) { var u, p; void 0 === d && (d = { str: "" }), d.str += "|input(" + t.length + ")"; var f = [], h = [o.config.devices.blacklist[e], o.defaultConfig.devices.blacklist[e]]; try { for (var g = r(h), m = g.next(); !m.done && "break" !== function(e) { try { var n = new RegExp(e, "i"); return f = t.filter(function(t) { return e && t.label.match(n) ? (d.str += "|-blacklisted(" + t.label + ")", !1) : t.deviceId !== c.default.MEDIA_DEVICE.communicationsId || (d.str += "|-communications", !1) }), "break" } catch (n) { d.str += "|filterError('" + e + "', " + s.stringifyObject(n) + ")", f = t } }(m.value); m = g.next()); } catch (e) { u = { error: e } } finally { try { m && !m.done && (p = g.return) && p.call(g) } finally { if (u) throw u.error } } if (f.length) { var S = i(n, f, d); if (S && (S.isSystemDefault = !0, d.str += "|default(" + a.scrubMriOrOmit(S.guid) + ")", f.splice(f.indexOf(S), 1), f.unshift(S)), f.length > 1 && (f = f.filter(function(e) { return e.deviceId !== c.default.MEDIA_DEVICE.defaultId || (d.str += "|-defaultId", !1) })), e === c.default.MEDIA_DEVICE.camera || S || (d.str += "|+syntheticDefault", f.unshift(l.createDefaultDevice(e))), n.forEach(function(e) { var t = f.find(function(t) { return t.guid === e.guid }); t && !t.label && e.label && (d.str += "|migrateLabel(" + a.scrubMriOrOmit(t.guid) + ")", t.label = e.label) }), e === c.default.MEDIA_DEVICE.speaker) { var E = f.filter(function(e) { return "" === e.label }); E.length > 1 && E.length === f.length && (f = S ? [S] : [f[0]], d.str += "|-filteredEmptyLabels(" + E.length + ")") } } return f } }, function(e, t, n) { Does anyone know why Teams appears to have decided to know better than the end-user about which audio devices to use (and hence gets it completely wrong on any machines that don't happen to meet the hard-coded values because they use a rarer type of 'sound card')? Where do I go to request all of this code is removed from Teams and it instead simply uses the WebAudio API response to https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices as intended by W3, leaving interfacing with hardware up to the user agent (browser)? Thanks3.1KViews1like0CommentsTeams meeting placed on hold if using mic with Soft Phone
Teams meeting placed on hold if using mic with Soft Phone One of our users is hosting a meeting for Training, sharing her screen at the time. She then uses our Ring Central soft phone system to make a call. the Teams Meeting is placed "on hold" while the headset is used by the Ring Central phone. This is only happening for 1 user, whereby another user can allow the Meeting to hear the Phone call for training purposes.1.8KViews0likes1Commentmicrophone at -12db keeps peaking and distorting in meetings
I'm using a Shure SM7B going in to an audient evo4 audio interface, and also have an inline booster to add more gain to the microphone. The setup is not specifically for teams meetings, but I have it setup at my desk and prefer if I could use it for this as well. If I monitor my audio on my pc and on the evo4, my audio is around -12db and nowhere near peaking, but in teams its peaking and distorting. When I watch back some meeting recordings, my audio constantly peaks and gets distorted. I have a similar issue in zoom but not to the extent of Teams. I've tested with the call back feature a lot but the quality of the playback on that is so low its sometimes hard to tell if my audio is distorting. It sounds like there's a gain boost happening server side, somewhere between 6-12dB. Is there any information on this?1.6KViews1like2CommentsSkype for Business does not automatically reconnect to audio devices when docking
Hello! Several users are having this issue, me included. When a laptop is (re)docked (using a Dell TB16 over Thunderbolt 3) Skype keeps the laptop's built-in microphone and speaker as its selected audio devices instead of switching to the headset connected to the dock, even if the headset was set as the default last time the laptop was connected. Windows automatically sets the headset as the default audio device, but if SfB is set to use the Windows default audio device, it jumps to use the internal mic and speaker when docked. Got any tips? All drivers and firmware is up to date.1.1KViews0likes0CommentsUSB Audio 2.0 Mixer Unit control
Hi, I am developing a USB audio 2.0 (UAC2) device. This device has a USB mixer unit (as defined by the usb audio 2.0 standard) and I was wondering how I can control/set it with the default usbaudio2.sys driver? According to the official docs: https://docs.microsoft.com/en-us/windows-hardware/drivers/audio/usb-2-0-audio-drivers I should be able to send a SET request to a mixer unit with the default drivers. I extracted some logs from the usbaudio2.sys driver and can see that it recognizes the Mixer unit: USBAudio2] MixerUnit ID=0x50 'MY MIXER' [2]0004.29B0::04/11/2022-15:46:32.392 [USBAudio2] Controls=0x0001 [2]0004.29B0::04/11/2022-15:46:32.392 [USBAudio2] NumInputPins=1 [2]0004.29B0::04/11/2022-15:46:32.392 [USBAudio2] [0] --> SourceID=0x20 'USB AUDIO DEMO' InputChannelCount=2 [2]0004.29B0::04/11/2022-15:46:32.392 [USBAudio2] OutputChannelCount=2 [2]0004.29B0::04/11/2022-15:46:32.392 [USBAudio2] AudioChannelCluster: NrChannels=2 ChanConfig=0x00000003 FirstStringIndex=0 NumStrings=0 [2]0004.29B0::04/11/2022-15:46:32.392 [USBAudio2] NumInputPins=1 TotalNumInputChannels=2 NumOutputChannels=2 [2]0004.29B0::04/11/2022-15:46:32.392 [USBAudio2] Mixer Controls: [2]0004.29B0::04/11/2022-15:46:32.392 [USBAudio2] MCN 0 PROGRAMMABLE min=-18176 (0xb900) max=0 (0x0000) res=256 (0x0100) [2]0004.29B0::04/11/2022-15:46:32.392 [USBAudio2] MCN 1 PROGRAMMABLE min=-18176 (0xb900) max=0 (0x0000) res=256 (0x0100) [2]0004.29B0::04/11/2022-15:46:32.392 [USBAudio2] MCN 2 PROGRAMMABLE min=-18176 (0xb900) max=0 (0x0000) res=256 (0x0100) [2]0004.29B0::04/11/2022-15:46:32.392 [USBAudio2] MCN 3 PROGRAMMABLE min=-18176 (0xb900) max=0 (0x0000) res=256 (0x0100) I can also see GET requests for this mixer unit in the logs on my device so the windows usb audio2 driver does seem to recognize it and the min/max/res above are indeed the ones I programmed. I can confirm that I can control the mixer unit from a Linux machine through alsamixer but would like to be able to do this from a Windows PC as well (preferably with the default driver since it has support for it). I don't see anything in the default sound control panel window or anything to actually control a mixer unit? Thanks for any info!102Views0likes0Comments