It's technically feasible, apps that can do this have existed for years[1,2,3], but they're either non-free or kludgy and unintuitive as hell.
At this point, It's definitely a UX problem, not a "we don't have the tech to do this" problem.
Analog phones in the 80s sounded better than almost anything a typical consumer is likely to interact with these days[4]. Now, it's all crappy 16kHZ Bluetooth headsets, bad noise / echo cancellation everywhere, and all that encoded with some low-quality opus.
nobody seems to care about this very much. We now have devices that can go up to a few hundred mb/s over WiFi, yet Bluetooth hasn't changed much since 20 years ago, and the audio quality is basically what it was back then.
[1] https://bearware.dk [2] https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_arti... [3] https://cleanfeed.net/ [4] https://evan-doorbell.com/wp-content/uploads/Overview-rough....
And if I'm not able to lug that brick I can just plug the headset directly into my laptop.
I'm sure in practice you can't have a jam session more than 50ms or so away from your bandmates before the latency starts becoming very noticeable.
For my mic I have also an sm57 feeding into a dbx286 hardware mic preamp and dynamics. Then feeding that into my audio interface for calls that also gives me a knob to mix in my mic into my headphone signal. This all gives me zero latency monitoring off all the gates and compression. Then for the output signal I have a seperate audio interface I use with all the web calling applications that sends the audio of all other people in the call to o another compressor that levels out their volumes. Then that is sent through a tc electronic multiband compressor unit to fix the really dull mics some people have. This is then mixed with the stereo output of all other applications on my audio interface again.
This way I have consistent audio no matter what OS I'm booted into at that moment.
since it's convenient to use the headphone out on the uv1 for the headset, i do use a limiter plugin in Rogue Amoeba Soundsource to compress the output from the conferencing software we use, it's nice being able to do that per-application since i listen to music through the headset a lot and don't want to have to take the limiter in and out.
analog headsets are so much less annoying and flexible, huge fan
December 27, 2020
Toward the beginning of the pandemic, a friend asked me how she could use an external vocal mic and a guitar with a pickup on Zoom calls. Sounds easy, right?
But to have the amount of control a musician really wants, it turned out to be a bit more involved. Plus, when working from home for a microphone company, it’s pretty common to use a decent mic in meetings.
This post explains the setup I’ve been using for my calls.
(Don’t let the speakers fool you. Use headphones or it’ll feed back when echo cancellation is turned off!)
Ingredients:
The goals are:
The key ingredient here is BlackHole, a virtual audio driver that acts as a passthrough from each input to the corresponding output[1]. This actually needs two instances of BlackHole because Zoom can only send and receive from the first two channels of any audio interface. Fortunately, they offer direct downloads (email required) of each (and have nice instructions for building from source). I have one called BlackHole 16ch and one called BlackHole 2ch, which — surprise — have 16 channels and 2 channels, respectively.
The 16-channel BlackHole device will function as the Zoom speaker; the 2-channel BlackHole will be the Zoom “microphone”.
Reaper will handle all of the audio routing, but since it doesn’t support having different input and output devices, the first thing to do is create an aggregate device in Audio MIDI Setup. This allows the system to treat multiple devices as a single device with all of the channels from the individual devices. It doesn’t really matter what order you add them to the aggregate device, but it should include both BlackHole devices and the audio interface. I have the USB interface set to be the clock source, with the two BlackHole instances set for drift correction.

Once I got the audio devices set up, I had to route everything in Reaper. The general approach is:
But before doing that, make sure Reaper is set to use the aggregate device in the device preferences.

For every input I want to mix, I created a track. Selecting the input for that track feels almost like just using the regular USB audio interface, but with a whole bunch of other channels thanks to being aggregated with BlackHole.

By default, Reaper sends each track to the master out, but in order to hear live input, you have to arm the track and turn on record monitoring.
A fun bonus of routing through a DAW is that you can use plugins! I use a simple NR plugin to deal with HVAC noise, and some compression.
The master out needs to go two places:
So, from the master track’s routing window, add outputs to the USB interface and the two channels of the 2-channel BlackHole interface. The fader/mute button for the USB interface on the output routing of the master is how I adjust whether/how much of myself I want to monitor in my ears.

That’s it for everything I want to send to Zoom, but I still want to be able to hear the far end of the call. I could just tell Zoom to send out to the hardware interface, but I want it in the DAW, too. This is useful for recording a tape sync, and so you don’t have to mess up your monitoring volume to change the volume of the far end.
For that, I created a special track and set its input to the 16–channel BlackHole instance. When you set up Zoom to use a particular output device, it sends the audio to the first two channels, so I had to use channels 1 and 2. Here’s where the track becomes special: you have to make sure it doesn’t send to the master out (it’ll feed back if you do). Instead, send it directly to the USB interface’s out.

And that’s it for the DAW.

The basics of setting up Zoom are simple: it receives the master output of the DAW by setting its microphone to BlackHole 2ch, and setting the speaker to BlackHole 16ch sends the far end’s audio to the DAW on channels 1 and 2 of BlackHole 16ch. Since you can control the output level from the DAW, I maxed out Zoom’s output and input faders and turned off the automatic gain control.

That’s really all you need for the basics, but Zoom has a bunch of cool advanced audio settings. Under “Music and Professional Audio” you can tell Zoom to let you turn off all of its audio processing, sending “original sound”. This is great, because what’s the point of having a decent mic if Zoom is going to band-limit and compress it to death? You can also turn on stereo, but I only use that if I really need to, which is rare. (Keep in mind that in order to actually activate these settings, you have to press “Turn on original sound” in the upper left of a call.)

Zoom can share system sound, but when using a setup like this, I don’t recommend it. Turning it on activates some sort of additional virtual audio device on the system, which can mess with things. Remember that Zoom can only send audio out on the first two channels of a device. Thankfully, the system isn’t so limited. To share system sound, I went back to Audio MIDI Setup and under Configure Speakers told it that for stereo out, BlackHole 16ch uses channels 3 and 4.

Now I can set my system output device to BlackHole 16ch, make a new track in the DAW, set its input to BlackHole 16ch, and system sound comes in there. So the far side of a Zoom call comes in on channels 1 and 2, and system sound on 3 and 4.
And that’s it. Happy calling!