Was going to mention this site. One nice thing it has that could be useful for this app is to have the ability to save a preset and load it in the future. I found it quite useful in mynoise.net
From my research to write the post, it looks like:
- the HFP standard was developed mainly for taking calls in a car. It seems like taking calls is still the main use case up to the latest version 1.9,
- macOS switches to HFP whenever the bluetooth headset is in use for both input and output. Interestingly, using the bluetooth mic and macbook speaker doesn't activate the HFP,
- bluetooth in general (not just HFP) seems to be designed to work under the constraint of tech from 20 years ago. Small bandwidths, small batteries, and small computational power,
- there are very nice codecs like Opus that are not used even though they've been working for over a decade.
From there I think the main problem is:
- macOS should not assume you're in a call just because you're using the mic. There are a few scenarios where that's not the case and you might not care about low latency,
- better existing codecs should be used, but aren't for some reason,
- bluetooth specs should update the constraint they have to work under.
I tried this as well and didn't work for me. Maybe it works for other people?
When I connect my headphones and switch to the microphone, the same crappy sound comes up. I had tried before with the checkbox in the bluetooth explorer to disable HFP, but also didn't work.
Ouch. I'm sorry about this. I've had users on Sonoma report this. It seems they made it harder to make Gatekeeper happy. I'll reach out to your email directly to figure out how to fix it.
This made me think about the mic on my $300+ headphones. It's probably even a good mic. However, because they will only be used via bluetooth, it will most definitely be used under a HFP mode, which means that a probably decent audio signal from a probably decent mic gets completely destroyed. Nice.
This is the exact use case I have, and the frustration of not being able to select what I want made me create the app. I'm really surprised this functionality doesn't come with the Mac, but I couldn't find a workaround that didn't involve a manual switch somewhere.
From what I've read in the last few days researching to write the post, it feels like Bluetooth was designed under some constraints 20 years ago, and it keeps using the same constraints today.
Also, the companies listed in the HFP specification don't make me think they're trying to optimize for the actual phone call scenario, not using a bluetooth headphone with your laptop.