Show HN: A macOS app to prevent sound quality degradation on AirPods (apps.apple.com)

223 points by mrtksn ↗ HN
Right, here's the thing: If you are using AirPods(or any Bluetooth headphones with a mic in fact) on Mac and something activates the mic(i.e. you Shazam a song), the sound will be interrupted momentarily and will return in very low quality. This is happening because Bluetooth can't handle both way high quality streaming and the bandwidth is decreased to make it work.

It's a known issue and here's what Apple recommends to fix it: https://support.apple.com/en-hk/102217

Most of the time(unless you are on a Mac Mini/Studio/Pro), you have much higher quality microphones built in, so in most use cases, you want to hear from your AirPods but be heard from your internal microphone, which means if every time you connect your AirPods and go into the settings and set the default input device as the internal mic, you won't have sound quality degradation on mic activation, and if you use your mic to talk to people or record something, you will have better sound quality too.

Based on this observation, first I tried to create a script or some automation that can do it for me but found out that it can be clunky or needlessly complex.

Here's someone who used this approach to fix this issue: https://www.dermitch.de/post/macos-force-microphone-when-usi...

Anyway, I decided to take the "build your app for that" route and created this app and called it CrystalClear Audio which doesn't involve any technical setup to use. Making it was also not as easy I hoped, I was expecting this to be a half an hour project but ended up filing bug reports with Apple because some API wasn't behaving as expected or mysterious things were happening when using it(like phantom device changes).

After spending that much time with all this, I decided to publish it on Mac AppStore and after too many rejections(all my mistakes) I got it published: https://apps.apple.com/us/app/crystalclear-sound/id669572374...

The app is not free but comes with a free trial. I decided to go with a very cheap subscription model because I suspect further development might be needed as bugs emerge or API behavior changes. I know its a hated business model but IMHO it's better than ads or tracking of any sort to justify the work done. It's not free because supporting a free app is just as hard as supporting a paid one and it's not one time payment because I don't know what would the right price be for supporting an app for years to come and still have people willing to pay for it.

I hope other people find this useful and if you do, you can support by upvoting on Producthunt so even more people can find it sueful: https://www.producthunt.com/posts/crystalclear-sound

PS: the app is also useful for quickly switching between giving the sound out of the laptop speakers and the headphones, I ended up using that quite often.

354 comments

[ 2.6 ms ] story [ 289 ms ] thread
I have initially thought this piece of software is going to fix my AirPods Pro noise issue :)
23€ per year for an automatic source switcher ? I understand it might be more tricky that it looks, but it's more than I am willing to pay, event for a lifetime license.
I guess the target audience is audiophiles that are willing to pay $100 for gold plated connectors.
I like your particular brand of snark.
On the other hand, true audiophiles wouldn't be caught dead using Bluetooth headphones anyway. 256kbps AAC? Only 44.1 kHz!? The horror!
Ah, those audiophiles? If anything, that's the perfect opportunity to sell them some [orders of magnitude overpriced] essential oils diffuser with proprietary pouches with... uh... gold nano particles to improve lossless signal transmission over the air.
The target audience is people who don’t want to deal with this stuff and have their sound working as expected and don’t bother to pay $2 a month for it. It’s not free because freeware also requires to provide support.
It't the second lowest monthly price point for subscriptions and I thought that dropping 2 months off on yearly pricing is nice: https://a.dropoverapp.com/cloud/download/df0874fb-2800-4d2e-...

It's an extremely niche product, if I end up getting 1000 paying users, I will be making about 1000 USD/month from this after Apple's commission and sales tax.

I don't expect to have that many users, honestly. So if it happens that I get a few hundred paying users I can pay a freelancer to improve on the app occasionally or rationalize spending time on this fixing bugs and adding features.

Also, it's completely optional app that is for convenience only. As I explained, the same effect can be achieved by manually changing the input source from the settings or write and setup a script to automate things.

I didn't meant to undervalue your work, you are entitled to your pricing. I shared my perceived value, and for wrong reasons, I'm just frustrated because I've been looking for this exact usage for a long time, and I just can't find rationale spending that much only for convenience.

Note, for your marketing, I can't recommend your app at that price, but at low enough price I would recommend your app to all my coworkers at each bluetooth hiccups, because just as you state, mac microphones are much better, and I hate suffering bad microphones.

Fair enough, if it turns out that tens thousands of people are interested in the app and not much support requests are incoming I can re-consider a lower price point.

It's possible that another price point or model yields better results. Thank you for your feedback, I will look into it.

(comment deleted)
Couldn't I just make an aggregate audio device which uses the mic on my MacBook Pro, and speakers of the AirPods?
That's a clever idea. I'm not in a position to try it right now, but would love to know if this works. I always use my AirPods + an external mic.

Also I haven't upgraded macOS to >= 13 yet on my personal laptop, so I can't use any of these apps.

That's exactly what I do - An aggregate device (called 'Forced Onboard Mic') with only 'MacBook Pro Microphone' selected.

This is configured from 'Audio MIDI Setup.app'

Apps configured to use that as their input device then don't reconfigure themselves whenever a Bluetooth input device shows up.

I dont add output devices as I'm happy for that to flip between speakers/headphones - whatever is available.

If you option click on the speaker icon in the menu bar, you can select which input to use. Takes a second and works instead of needing an aggregate device set up.
You don’t even need it to be as complex as that, I just have an aggregate device which only has the MacBook microphone input enabled and no outputs, then you set this as your _input_ device in Sound preferences, but leave the output device as is.

It’s easy to create the aggregate input device, go to the Audio MIDI Setup app, in the audio window click the plus in the bottom right and choose “new aggregate device”, then tick MacBook Microphone on the right. Then to System Preferences > Sound > Input and assign this new “virtual” device as your input device. (You can rename it if you want)

Now your Mac will automatically switch audio output source as usual, but the input remains locked to the microphone so you don’t get this annoying problem.

I was excited to try this, since I'm a bit tired of selecting the input manually multiple times per day. Unfortunately, connecting AirPods automatically switches the input to them, regardless of the previously selected input device, whether it's an aggregate device or not.
Hm let me double check on this tomorrow! It works with my Sony headphones (which also cause MacOS to go into bad audio mode when you eg launch Shazam) but not sure I have tried the same with AirPods. Unless I did something else to lock it to that device and I’ve forgotten… anyway I’ll check on my work machine tomorrow
It works with your Sony headphones, cause MacOS only forces the headphone mic for apple headphones. Sucks, but is the annoying truth.
What exactly is the logic osx is using here that causes non-aggregate input to always be switched when plugging in external source, but aggregate sources remain sticky?
Option + Sound menubar icon = choose individual input output devices. Solution I use for the occasion the OP's app was built for.
That’s a good idea, I will consider it. Should check it how it works with AirPlay and continuity though. AirPods are not simple Bluetooth devices, strange things happen when connecting/disconnecting.
> it's not one time payment because I don't know what would the right price be for supporting an app for years to come and still have people willing to pay for it

I dislike this very, very, very much. You do realize that with this attitude, we'll soon be bickering with our toilets to please let the seat down without making a small 4$/month in-loo purchase first?

But since when has a toilet ever required ongoing maintenance by the manufacturer to remain functional in the environment around it? In this case the dev will have to provide updates and bug fixes, committing him to a level of work in perpetuity, whereas the toilet maker builds the shitter and never has to work on it again.
Fine, fair point. Then at least adopt the thing jetbrains for example does: buy this version now, get x months of updates.
:)

Yeah that’s a model that most people seem to like, and I would agree it helps soften the blow by providing some ongoing value for a set period of time.

If Apple sold their own toilet, you can damn well be certain you'd pay a per-shit fee as their customer. This is exactly what you get supporting a platform that relies on monetizing it's users.
Weird comment. I have three or four Apple devices at the moment and I don’t pay Apple a subscription fee for anything, let alone pay-per-use fees.
It would be less weird if there was any feasible strategy for releasing an app that Apple doesn't take a cut from. Unless you pay for 0 apps, you are supporting Apple with recurring service revenue.
(comment deleted)
$20 per year subscription? That seems pretty steep for what the app does.
Remember when you could just buy a piece of software and not have to keep paying rent to use it?
How much of that is being „forced“ by competition and the free market?

More apps doing roughly the same but none doing anything well or exceptional well? Yet resources become more spread and hence sparser?

(comment deleted)
I often manually switch to the built-in mic of my MBP [edit: while using Airpods for audio output]. To switch more quickly, I found that when you alt-click on "Sound" while in the Control Center, you can select audio devices for input and output independently of each other.
(comment deleted)
Same can be achieved in a few lines of Lua using Hammerspoon and hs.audiodevice API.

    local builtinMicName = "MacBook Pro Microphone"
    hs.audiodevice.watcher.setCallback(function(e) 
        defaultMic = hs.audiodevice.defaultInputDevice():name()
        if (e == "dIn " and defaultMic ~= builtinMic) then
          local builtinMic = hs.audiodevice.findInputByName(builtinMicName)
          builtinMic:setDefaultInputDevice()
        end
    end)
    hs.audiodevice.watcher.start()
It doesn't seem fair to pay $20 per year for this. I'd be fine with one time payment.
The script can be extended with additional features like:

- fixing macOS balance bug (outputDevice:setBalance(0.5) on output device change)

- muting built-in speakers on headphones disconnect event

- pausing Spotify when external headphones are disconnected

You could charge $10/year for this to compete with OP.
(comment deleted)
Cool solution! But have you actually tried it?

Once you try it you may find out that for some reason sometimes it will revert back to AirPods mic. I filed a bug report for that, check it out: https://developer.apple.com/forums/thread/763583

Therefore you will have to iron out the edge cases. Are the AirPods considered connected when you switch to your iPhone when using your Mac? Yes the continuity stuff.

Also, you will have to actually maintain that script. That is, you will need to find a place for it where it lives and it’s not lost when upgrading the system etc.

My app is for all the people who don’t want to deal with this and rather pay $2 a month to have it maintained and have someone they can report the issues they have and get them fixed.

Anyway, I made the app for myself and decided to put it on the market to see what happens, so it’s alright to have a competition:) if it happens that this is the better solution I may just drop mine and use it.

Yes, I have used a similar Hammerspoon script for nearly 10 years.
Sorry if you felt attacked, it wasn't my point.

Congratulations on developing and shipping a fully-fledged product, I hope I'll help people in need of a "it just works" solution for this particular problem. Paying for it is of course justified, as you poured your time and knowledge to provide a fully working fix.

Since this is Hackernews, I shared how I approached this problem on my devices - I use Hammerspoon to script little parts of the system I don't like in macOS and audio device handling is one of them.

I use a more complex version that handles additional pain points, but the default input source changing has worked just fine for me for the last few years (with AirPods, Bose QC35 and regular wired headphones).

Oh you don’t have to be sorry, I genuinely liked your solution. I haven’t tried lua, looks much simpler than what I got with Automator for example!

I was expecting a backslash for not giving away for free, kind of enjoying it. Like the good old days when I was making free apps for the likes but this time I’m on the “dark side”

Is there any chance you could share the more complex version?
I love Hammerspoon so much and love seeing snippets like this come up.
Congrats on building and launching the app. Building a little tool to solve a problem you have is great.

My only issue is that I'm mostly using the AirPods mic for meetings. I don't want to use my laptop mic because my impression is that it picks up too much background noise. AirPods do too, but I think less so?

The mic quality from my macbook is usually better for me than from headphones, but maybe it depends on the macbook.
Also on whether you use it in clamshell mode (I believe the microphone openings are under the speaker grills), and on your habits during meetings – I like to walk around while talking.
~all modern Macs have an electrical disconnect for mics when the lid is closed.
Thanks for the feedback, I guess it depends on which AirPods and which Mac. AirPods Pro 2 are notorious and even my MacBook Air M1 has an order of magnitude better microphone and background noise wasn’t an issue for me. Whatever works best for you!
Nice job. Price seems fair to me. You’ve found a problem and fixed it. This crowd always bemoans paid (and closed source) things so I’ve come to largely tune that out because it’s just a given.
This seems like a $5/year app—not a $20/year one. Or, make it a one-time $10 charge; if future MacOS versions require significant work to keep it up to date, charge an upgrade fee.
This seems like a $5 app full stop, not per-year. There's ~zero ongoing costs involved, and bugfixes that justify renewed purchases would be keeping up with any OS breakages which realistically should be exceptionally rare, but definitely aren't yearly regardless.
Annual macOS releases regularly make changes to the bluetooth stack and the sound stack.

Additionally, there are always new Mac products as well as new AirPods products being released, and getting them working on new hardware has costs (including but not limited to acquiring that hardware).

I find it extremely frustrating when apps stop getting updated and become abandonware because they relied on new customers to pay recurring bills (rent, groceries...) instead of relying on recurring payments from existing payments who derive value from their product.

Everyone wants the price to be lower, which is fine, but saying that you don't want to pay on an ongoing basis but still want to receive ongoing updates is not fair.

Thanks a lot for the kind words. I totally expected the backlash, let's see if I can get some customers and I can make them stay.
(comment deleted)
(comment deleted)
Can anyone explain why something like this is necessary on a Macbook, but when I use my airpods with my iPhone I seem to get high quality audio and microphone usage at the same time?
I believe it’s because macOS uses a worse audio codec: https://gist.github.com/dvf/3771e58085568559c429d05ccc339219
I don't think the AirPods support anything better than mSBC for bidirectional audio on iOS either. (AAC and aptX are only unidirectional, and macOS already supports AAC and uses it for the AirPods.)

But maybe iOS just uses the built-in microphone more often to avoid having to switch away from (high quality) unidirectional audio on Bluetooth?

Considering it is Apple they could also be using a proprietary profile that side-steps this issue, especially since they created their own Bluetooth chip (Apple Hx). But again, I don't know if this is true or not since I don't have an iPhone to test.
The second-generation Airpods Pro even do feature a custom low-latency audio codec, but it's apparently only used for the Vision Pro (which is a real shame, as it would be extremely useful for latency-critical things like playing rhythm games on iOS and macOS as well).

On the standards side, there's Bluetooth LE audio, which also offers very low latency, but that might actually require hardware changes (I believe there's reliance on some hardware layer changes).

Not really, the main issue is the Bluetooth profile[1] here. HFP is the profile used for bidirectional (i.e.: when you're using both the headset and microfone) while A2DP is the profile for unidirectional audio (i.e.: when you're only listening). The main issue is that HFP uses a much worse codec than A2DP, that is optimised for voice and not music. Newer versions of HFP supports mSBC that is a simplified version of SBC (the main codec used in A2DP) that is better but still significantly worse than SBC (and SBC is not considered a good codec anyway).

However I can't really answer OP question. I am not sure how iPhone get a better sound quality if what OP is saying is true (I don't have an iPhone). What I know is that in Linux you can activate mSBC and this improves the quality a lot when using HFP profile, but it is still significantly worse than anything A2DP has to offer. I also think Android uses mSBC if available, but I am not completely sure.

[1]: https://en.wikipedia.org/wiki/List_of_Bluetooth_profiles

> Can anyone explain why something like this is necessary on a Macbook, but when I use my airpods with my iPhone I seem to get high quality audio and microphone usage at the same time?

Are you sure? How often does your phone have the microphone active while simultaneously continuing to play audio? When the mic is active on a phone it almost always pauses music or video or whatever you're listening to. At that point it can switch modes and then switch back when you're done and go back to music.

On a PC (meaning the overall category of personal computers including Macs, not just a Wintel machine) there isn't that sort of integration. If you start a VoIP call with music going the music just keeps going, so the mode switch is obvious.

If I press the option key of the Mac and clic on the speaker icon of the menu bar, I can select the source of the speaker and mic as well. Am I missing something here ?
It's a convenience app, doesn't do anything you can't do by yourself. That's how I used to do it, got sick and tired of doing it every time I connect my AirPods and made an app to make it happen automatically and put it on the AppStore to see if others can find it useful too.
Okay I get that but for a « click away », a subscription of that amount is really too much compared to other amazing apps that I use every day. For example, I can make screenshots with MacOS a clic away. I bought Shottr because it’s a convenience app and I use it hundreds of times per day and I save a tremendous amount of time and clics to edit screenshots. But it’s $8 once and does a LOT with many great features
I don’t believe in single payment apps, developers miscalculate and ask for a single payment and they collect some money once and they have to support it for years to come. They later abandon the app or fix it but fixing is’n nice, I’m still bitter with the Halide developer because I purchased the app only for it to become a subscription app. Now I don’t get the new features and tell people to watch out for their new Kino app. I feel deceived.

I don’t see how I can be “booked” for years unless I make at least a few 100K’s from this. I don’t actually expect to have more than a few 100 paying users, this is a niche app.

I probably should have been charging at least 9.99$/month to make any financial sense based on my low expectations but since this is a subscription app at least I can discontinue the app without screwing up people if I have to abandon it.

I completely agree, I gave Shottr as an example. I also have a lot of subscriptions I’m not at all against it. But you gave the example of Kino, I imagine that the skills to develop such an app is quite high and even if they would be 15$ per year or more it would be worth it. But if a « click away » app kind of skills, my personnal preference is more like a sub 10$ a year. Like, I have smoothScroll, I pay a subscription every year and I don’t mind paying 8€ for it. 20€ ? I never would have tried the app
Pricing isn’t really about $/hardship. If you actually deep dive into it, you’ll find that the correlation is very weak.

If this was some kind of app that millions would use, I guess I could have given it for free for exposure or make it very very cheap like 1$/year but I don’t think that this would happen. Now my bet is that if I can get 1000 paying users I will keep the app around and develop it further by spending time on it.

I have some more ideas. I’m currently marketing it as an app for solving this specific issue but it’s also a nice input/output switching app. Maybe it can be the app that solves all the sound issues by always setting the correct input/output? You know how there’s always someone having trouble with their sound when on call. Let’s see.

It’s right, pricing is really subjective and I said « personally » because it’s my perception of the matter. I really hope people will pay what you charge and you will get traction. Too much people are used to get software for « free » like it has no value and I don’t agree with it. I hope the best for you !
(comment deleted)
Looks good but no way I'd pay a subscription for a utility.
(comment deleted)
do you use the utility on a recurring basis
If this is as effective as you claim it to be, then I look forward to Apple including it in the operating system for free in the future. You should consider applying there and making it happen!
(comment deleted)
This has been one of my fixations. That it‘s still an issue 20 years after Bluetooth audio has become a thing and 10 since telephony has become good quality is crazy to me.

It has been a few years since LE Audio has standardized and a lot of digging has led me to the conclusion that it should support decent audio with multiple channels (as it‘s not artificially limited like the Hands Free Profile). I‘d have expected Apple to jump on this to finally solve this stupid issue once and for all, but … nope.

I just want to listen to music while on a phone call. It’s not that crazy.

Yes, LE Audio is supposed to improve the situation in multiple ways (e.g.: lower latency, lower battery usage, multiple channels, etc) but sadly there is still no headset that supports LE Audio without hacks (e.g.: my wf-1000xm5 supports it but you need to flip a flag inside the app and it only works in specific devices and it also disables lots of features).
Crazy, eh? I‘d make good quality phone calls a selling point. After some conversations about this I’d wager that a non-trivial number of people at least knows this problem.
[flagged]
(comment deleted)
> CrystalClear Sound requires a paid subscription(a rather cheap one), which supports the development of the app.

Sorry, but I'll pass.

I'd spend a few dollars on a convenience app like this as a one-off purchase (it would save me from option-clicking the volume icon every once in a while), but what ongoing development or infrastructure am I paying for with a subscription here?

(comment deleted)
There's no ongoing development, he wants the recurring revenue to build a cash reserve so he has the option to hire a freelancer to fix bugs or implement new features if they are needed, if not then he just keeps the cash.

edit: I'm not condoning nor condemning OP's monetization strategy, I'm just summarizing what he has explained on the original post and subsequent comments.

Direct quotes:

> I suspect further development might be needed as bugs emerge or API behavior changes

> It’s not free because freeware also requires to provide support.

> if it happens that I get a few hundred paying users I can pay a freelancer to improve on the app occasionally or rationalize spending time on this fixing bugs and adding features

Why would that not be possible using a one-off purchase?

I really have a much higher understanding for things that run server infrastructure or require frequent work to keep up with things like changing third-party APIs or scraped websites.

But this is literally an Apple-hosted app using a stable API.

I'm not going to compare this to a cup of coffee, as that analogy has been beaten to death. What I will say is that $20/yr is far higher than many apps, that are much more complicated, do a a lot more, and are self sustaining businesses.

Why would anyone want to pay 2x for this compared to what a really good podcast app costs? Or 7x what a good gif manager costs?

(comment deleted)
Do people really pay a subscription fee for a podcast app or gif manager? Good god, what has become of monetized XML documents!
I'm not going to compare this to a cup of coffee, as that analogy has been beaten to death. What I will say is that $20/yr is far higher than many apps, that are much more complicated, do a a lot more, and are self sustaining businesses.

Why would anyone want to pay 2x for this compared to what a really good podcast app costs? Or 7x what a good gif manager costs?

This app doesn't even do anything that native macOS tools can do for you with 2 minutes of work (aggregate audio devices, or a bit of scripting), and literally saves you from one extra keypress and 2 clicks.

Second this. Would gladly pay a one-time $10, but $20 annually doesn't make any sense for an app like this.
Add me to the list. I question some of the app subscriptions I do pay for, and those offer a ton more functionality for the same $20-ish dollars. This app doesn't even have a cloud server backing it, no way I'm paying a subscription at all for a utility app with no recurring infrastructure costs.

But to be more positive: I'd love to support an app like this, which I probably wouldn't even use that much these days; I just won't pay the current pricing.

(comment deleted)
Third this.

I know ~everybody hates Adobe, but I pay about $120 / year for Lightroom + Photoshop, which are way, way, way, way, way (I ran outta "ways") more complex to build and valuable to me as a user than this.

it's funny how lonux just show you the codec in a drop-down next to the volume control. kde users living in the future as always.
Linux fanboys can't wait to talk about the one use case it's better than MacOS for
I've had to use the Mx-pro MacBooks at work for the last few years, and I'm curious what features you actually prefer on MacOS?

I've had no end of unstable wireless stacks, ungrounded computers causing a physical buzzing as you touch the case, the GPU crashing when viewing Google Sheets, LCD panels failing from the arduous task of letting the laptop sit on the desk for a weekend, automatic updates wiping manual setting changes, switching to any available WiFi network if the one I want has a blip in service and never switching back, needing to reboot into recovery mode for something as simple as enabling dtrace, ....

They just feel shoddy, and combined with a non-discoverable UI and default behaviors I don't like, about the only thing I've really cared for is the battery life. Even if they were free I don't know that I'd use one at home instead of some flavor of Linux.

Switching to headset mode has always worked for me, but switching back to headphones mode often ends up as a no-op. The button is there, but it sometimes just doesn't work. Perhaps that's why other operating systems lack this feature, they know their underlying stack and the hardware side don't make it as easy as it would otherwise seem.
You can just alt + click the audio options in the control center to select the input source
I guess you need a subscription for everything these days
Hey, your comment just got a reply, if you want to read it please subscribe to Hacker News Plus for just 1.99 an hour. If you spend less than an hour a day procrastinating here, then it's free. But we all know that's not the case.
And then you sign up and the "comment" was just some scammer who's account has since been deleted.
But don't forget, if you signup for the premium+ you will get one free boost each month, so your post will be on the front for up to 30 minutes and it will be seen by more people!
(comment deleted)
This is really a Bluetooth issue. The same happens with any headphones that have a mic on any OS.

When Bluetooth mode is switched from Headphones to Headset (with mic), only much lower quality audio codes are used.

Does anyone know if Bluetooth 6 adds support for higher quality codes for Headset?

It's a big issue, in my opinion.

It was a Bluetooth issue years ago. Now it's only an Apple issue where it can't use a more decent codec. On Linux you can choose the mSBC codec and get decent two-way quality on a modern headset.
Regardless of codecs, don't all Bluetooth headsets switch to mono I/O when the microphone connects? I find that to be a much bigger quality hit than the encoding.
Not on Windows to my knowledge.

Using the same headset on both Windows and Linux leads to a very different experience. Windows works fine. Linux has the issue macOS has mentioned here.

It’s sometimes still an issue on windows but besides advertising the headset audio device most good headsets will create one or more additional audio devices that support high quality input and output.
idk man airpods do switch to an AAC variant called AAC-ELD for bidirectional audio but thats still compressed to hell. better than SBC but not as good as unidirectional AAC.

I had high hopes for BLE Audio but that seems to be stalled

> Now it's only an Apple issue where it can't use a more decent codec.

Isn't this a Mac-specific issue? I have some recollection in my head that Mac OS uses a terrible codec for bidirectional bluetooth audio, but iOS uses a good one.

> It was a Bluetooth issue years ago

It still is, mSBC is really not that good, plus all things considered reasons go beyond just the codec, see my nearby comment: https://news.ycombinator.com/item?id=41705258

Switching to "2x half-duplex" on both ends is really the best thing. I hate it that you can't separately select audio input and output in iOS.

mSBC has garbage audio quality.
mSBC is still crappy quality compared to what I get on my smartphone. But still Linux allows me to easily use AAC or APTX codec and a separate mic if I want.

I don't understand why all desktop OS can't have something better while when I pair my Bose headset on my smartphone it seems to be using a better quality codec profile.

>Bluetooth issue

Its a licensing issue. The borderlands between the headset and headphone profiles are rife with licensing land-mines - developers have flipped the table and rage-quit the issue, and this technical debt has been shipped.

(Disclaimer: I make headset/headphone firmware for a major competitor and deal with this issue every single week...)

I just encountered the term "The Ultimate Sadness" reading https://www.computerenhance.com/p/the-case-of-the-missing-in... immediately before this post and I feel like you've found an even worse sadness to deal with on a regular basis.

My sympathies, and I appreciate your willingness to wade through neck deep licensing excrement to produce something that still works.

This honestly sounds like a problem I would expect to be solved by white-labelled AliExpress junk products, whose manufacturers can just ignore the licensing issues entirely, because they’re able to hide their IP violations behind reselling through endless shell companies.

But I guess it isn’t solved by that. Why isn’t it?

You can't hide from the fact that you have to get your chips from somewhere, and those chips have to run some software, and if you are going to just copy others' software, you inherit their technical debt too - unless you invest in fixing their bugs - and what white-label AliExpress junk product provider has the time for that?
Yet another Apple gotcha. I stoped paying the Apple tax long ago. The “ it just works” mantra is long gone
No, I've had this happen multiple times using various bluetooth headphones with my Google Pixel 8. So it's definitely happening on Android as well.
It happens on Windows too. In fact it's probably worst there, because the Windows Bluetooth stack is so awful.
Samsung phones paired with Samsung earbuds also, on paper, support high-quality audio for calls.
Sounds more like a shitty-software issue. The Shazam function should turn the Bluetooth mics off after the song is identified. Why does it just leave them on?

Isn't that obvious, or is there some aspect to this I'm not aware of (I care about sound quality, so I don't use AirPods)?

It's not just Shazam but any app that uses the mic over Bluetooth. Like if you wanted to have background music playing during a Zoom call, or wanted to wear Bluetooth headphones while gaming and voice chat kicks in when you group up, etc.

It's a very annoying problem because the Airpods actually sound fantastic, but as soon as the mic kicks in, it sounds like crap. Same thing happens with my Sony XM3s or any other Bluetooth headset. The protocol drops to a shitty bitrate to support full duplex.

Understandable, but in that case what's the value of the utility posted here?
It just automates the manual workaround: It tells your system to use another mic, not the bluetooth one, so that the bluetooth headphones go back to listen-only mode and doesn't have to operate in its inferior full-duplex mode. So you'd use the headphones only for hearing, and your computer's internal mic (or another external mic, like a webcam's or a standalone USB one) does the recording input.

I do that for all my calls and games already, but I just have to manually set it in the OS (and sometimes on a per-app basis). It only takes a second and usually remembers.

If the app were a one-time purchase I'd probably buy it just to avoid the hassle, but definitely not paying a subscription for something that's so easy to do on my own. As a compromise, I'd also be OK with a OS-version tied upgrade pricing, like you pay $x for the macOS 15 version, but when the next breaking OS update comes that requires an update, you can pay $y after the upgrade discount to get the newest version that works with the new OS.

Thanks for the info. And I fully agree about the pricing; that's just dumb.
The default behaviour is designed intentionally to 'degrade to the least-costly codec license' .. since the codecs available to the end user are one of the only ways that different headset/headphone manufacturers can differentiate, doing whats necessary to degrade to the least common denominator allows developers to route around the issues imposed on them by management: namely, don't promote the features of other headset manufacturers, needlessly.
what you are describing is a universal Bluetooth issue. Windows suffers the same; some Android devices support proprietary codecs to slightly improve the situation but it's still sad we are still here.
Why is Bluetooth so bad? This, plus the literal second of latency to my car's speakers.

All these problems are solved by headphones with proprietary wireless dongles and they work great, so why can't Bluetooth incorporate those improvements so we can get them on other devices than desktop PCs?

Also, wireless subwoofers (that come on many consumer TV speaker systems these days) don't have this latency problem either. You just plug them in and they sync to the system and work transparently. They can't have any noticeable latency, or else the bass would be out-of-sync with either the rest of the audio, or if they slowed down the audio to account for latency, then all the sound would be out-of-sync with the video you're probably watching with it.
There are more ways than using bluetooth to transfer digital audio wireless. Probably they are using a custom protocol.
Yes, that's what I mean: they're basically doing the same thing as Bluetooth, but their proprietary implementation isn't saddled with the huge latency problems that Bluetooth has. So Bluetooth seems to be a poorly designed protocol.
Those generally uses a custom 2.4GHz RF protocol, like gaming headsets and mice with dongles.
The bass can be sent with a lower bitrate since the output signal is low frequency anyways.
We currently have Bluetooth headphones in the market that are not even using the current spec/API properly. For some of them, the hardware is perfectly fine, if they did use the API correctly, the experience could be almost as good as AirPods are on OSX.
The irony is that even among the same brand they differ vastly:

Beyerdynamic MMX 200 does it wrong: pair up to, uh, I don't know (undocumented!), n>2 devices (I have 4), connects to the last one on power up, but if you want to switch devices, you have to disconnect on the device it has just connected and hope it doesn't connect to yet another you have paired and happens to be in range but is not the one you want to pair with, or you have to disconnect from there too. Confused yet? Yup, it's that bad.

Worse, upon that second disconnect the headset itself initiates a reconnect by going through the MRU list again, so if you disconnect from the second (incorrect) one it might try the first (incorrect) one again since it's now the next in the MRU list, so you actually have to DISABLE BLUETOOTH on each device except the one you want to connect to.

Too bad if one of these devices is in the next room, even more annoying if it's your iPad borrowed by your SO who is now annoyed at losing sound from their movie.

At that point, it's easier to forget the headset in the device you have in hand and re-pair, which is absolutely ridiculous.

Beyerdynamic Free BYRD does it correctly: pair up to 5 devices, connects to the last one on power up, any device in the pair history can force-connect to the headset, yanking out the virtual cord from the undesired device. No interaction required on any other device.

Even better, when pulled out of the charging case they actually wait a bit (a few seconds? or detecting when they're put in ear?) so you can actually invoke some quick setting pane and connect without the connection ever going to an unsuspected device.

Dishonourable mention for Bose QC-35 II, who operates like the MMX 200, only it has two BT radios as an attempt to work around that it's doing it wrong. So, it connects to the last two devices. Unfortunately if I'm walking around the house listening to music and the second-to-last device goes out of range the headset goes "<device name> disconnected" then a few moments later "<device name> connected", which is horrible when <device name> is made out of a serial number (work laptop) and it goes on to spell it out "C. O. M. P. H. 4. 7. X. 3. 9. 9. 7. P. K. Q. L. disconnected".

The only way to prevent that is to go through the Bose app and remove devices from the history, essentially pairing it with one-device-at-a-time only. Oh, it's also great for jump scares when your SO is aping the iPad again and it turns out the headset is connected to it. All of which could be avoided if it behaved like the Free BYRD.

> Why is Bluetooth so bad?

From what I read online, Bluetooth standart is bloated with outdated profiles and not free for manufacturers to implement. Because of that, manufacturers strap own proprietary extensions on it that only their devices support (e.g. AirPods audio qulity with mic is only good on Apple devices)[1].

Others mention that bluetooth was initially designed for less capble devices, thus suffering from low bitrate and signal strength.

Adjacent discussion here: https://news.ycombinator.com/item?id=40180133

[1]: https://medium.marco.zone/apple-implemented-the-biggest-impr...

Given how much Apple and other manufacturers depend on Bluetooth for their wireless earphones I wonder why no alternative to Bluetooth ever seems to show up.
I think because all the hard work put into open-source bt ecosystem (bluez, pulse, pipewire) makes it "good enough" for average users.
One would think that if some company could credibly exorcise the demons of crappy Bluetooth connectivity, that would be a huge selling point though. I don’t think anyone hasn’t experienced the finnickiness of Bluetooth.
It's not just codecs that are different between HFP and A2DP (although that is a big part of the issue). HFP uses an older way (SCO) of transferring the audio which gives much less bandwidth.

What we need is a new profile that uses A2DP in once direction and in the other for the microphone. I suspect the reason it has never happened is that there's a good chance of causing issues with existing devices that do at least work with HFP.

I've always thought that my 3.5mm corded earbuds, with a mic pill that hangs near my throat, have great mic quality and even better ambient rejection compared to the distant mic buried in the speaker grille of my laptop. Importantly, it's not incredibly disruptive to type notes or use the laptop while in the meeting.

Is this specifically a Bluetooth headphone thing, or an "any headphones with a mic on any OS" thing?

MacOS excels at noise cancellation. Typing on my Windows PC sounds like an earthquake, but you could actually hammer nails during a video call on a Mac and it wouldn't be picked up (it also blocks your voice from coming through, but that’s temporary)
Bluetooth 5.2 was supposed to fix this issue. Indeed, my S22 phone with Jabra Elite 8s sounds great in calls.

MacBooks newer than 2023 SHOULD have better call quality. They have Bluetooth 5.3¹. Can anybody confirm this? I have been meaning to try pairing my earbuds with a floor model at a store and testing audio quality but's only to satisfy a curiosity for me.

---

1. https://support.apple.com/en-us/111838

> This is really a Bluetooth issue.

Yes and no. Part of it is also how the OS is used.

Sure if you want to use the mic on your headset you are forced to use a lower quality codec, but on my Fedora I select which profile I want to use on my bluetooth headset[1]. If I set it to AAC or APTX it will not activate the microphone.

And I can easily select which device is the primary device for inputs, outputs or individual apps.

[1] Typically using pulseaudio volume control which is compatible with pipewire (or rather the opposite).

This sounds like a great idea.

It's not a company unto itself -- you can't do subscription, do $3.99. There has to be some sheen of continued value generation on the producer side beyond maintenance and bug fixes to justify a subscription. Here, you're going for an impulse buy.

I highly recommend cutting down the word count for the description.

You want it to be a 10 second no-brainer, open link, read description, realize its well-founded and my $4000 MacBook Pro has a fundamental problem with my $200 headphones that I can solve immediately for ~nothing.

FWIW you lost my attention around here, though there is excess fluff throughout: "Since recently Shazam is built in into macOS and you can access it from the menubar to find songs, even with your AirPods on. It's fantastic, you should use it all the time."

In general, gotta be ruthless and cut everything out that isn't necessary. I don't care A) when Shazam was introduced B) I can use it even with Airpods on C) what you think of it D) what you think of how often I should use it. All you need is "You can hear the bug: with your AirPods on, play a YouTube video, then click Shazam in the macOS menu bar, then stop Shazam and unpause the YouTube video. How does it sound?"

You're not cutting it out because I don't care, you're cutting it out because you have about 10 seconds of attention if you're lucky, and if it runs out, you're done.

Note: I struggle with this 100% of the time :) key to understanding it more was realizing "I don't care" wasn't voiced in an aggressive way, like it would be in conversation. It meant "this was a sentence where I lost attention", and is a license to believe your message is 100% clear, in fact > 100 + x% clear and all you have to do is cut x% and you're optimal. Good position to be in.