[HN Gopher] Show HN: A macOS app to prevent sound quality degrad...
___________________________________________________________________
Show HN: A macOS app to prevent sound quality degradation on
AirPods
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.
Author : mrtksn
Score : 94 points
Date : 2024-09-30 11:03 UTC (11 hours ago)
(HTM) web link (apps.apple.com)
(TXT) w3m dump (apps.apple.com)
| flashu wrote:
| I have initially thought this piece of software is going to fix
| my AirPods Pro noise issue :)
| tuyiown wrote:
| 23EUR 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.
| amelius wrote:
| I guess the target audience is audiophiles that are willing to
| pay $100 for gold plated connectors.
| tjpnz wrote:
| I like your particular brand of snark.
| lxgr wrote:
| On the other hand, true audiophiles wouldn't be caught dead
| using Bluetooth headphones anyway. 256kbps AAC? Only 44.1
| kHz!? The horror!
| drdaeman wrote:
| 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.
| mrtksn wrote:
| 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.
| mrtksn wrote:
| 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.
| tuyiown wrote:
| 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.
| mrtksn wrote:
| 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.
| djxfade wrote:
| Couldn't I just make an aggregate audio device which uses the mic
| on my MacBook Pro, and speakers of the AirPods?
| mh- wrote:
| 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.
| 1727706962 wrote:
| 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.
| andiareso wrote:
| 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.
| tomduncalf wrote:
| 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.
| metafunctor wrote:
| 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.
| tomduncalf wrote:
| 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
| mrtksn wrote:
| 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.
| isoprophlex wrote:
| > 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?
| replwoacause wrote:
| 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.
| isoprophlex wrote:
| Fine, fair point. Then at least adopt the thing jetbrains for
| example does: buy this version now, get x months of updates.
| replwoacause wrote:
| :)
|
| 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.
| lcrz wrote:
| $20 per year subscription? That seems pretty steep for what the
| app does.
| DrillShopper wrote:
| Remember when you could just _buy_ a piece of software and not
| have to keep paying rent to use it?
| bosie wrote:
| 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?
| informalo wrote:
| 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.
| SyncOnGreen wrote:
| 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.
| SyncOnGreen wrote:
| 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
| DrammBA wrote:
| You could charge $10/year for this to compete with OP.
| mrtksn wrote:
| 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.
| jmarcher wrote:
| Yes, I have used a similar Hammerspoon script for nearly 10
| years.
| SyncOnGreen wrote:
| 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).
| mrtksn wrote:
| 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"
| IridescentMoon wrote:
| Is there any chance you could share the more complex
| version?
| nathancahill wrote:
| I love Hammerspoon so much and love seeing snippets like this
| come up.
| felideon wrote:
| 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?
| freehorse wrote:
| The mic quality from my macbook is usually better for me than
| from headphones, but maybe it depends on the macbook.
| lxgr wrote:
| 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.
| mrtksn wrote:
| 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!
| replwoacause wrote:
| 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.
| organsnyder wrote:
| 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.
| kllrnohj wrote:
| 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.
| diebeforei485 wrote:
| 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.
| mrtksn wrote:
| 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.
| peterldowns wrote:
| 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?
| cstrahan wrote:
| I believe it's because macOS uses a worse audio codec:
| https://gist.github.com/dvf/3771e58085568559c429d05ccc339219
| lxgr wrote:
| 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?
| kokada wrote:
| 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.
| lxgr wrote:
| 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).
| kokada wrote:
| 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
| mrtksn wrote:
| I believe this is the correct answer.
| wolrah wrote:
| > 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.
| shinycode wrote:
| 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 ?
| mrtksn wrote:
| 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.
| shinycode wrote:
| 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
| mrtksn wrote:
| 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.
| shinycode wrote:
| 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 8EUR for it. 20EUR ? I never would
| have tried the app
| mrtksn wrote:
| 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.
| shinycode wrote:
| 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 !
| md81544 wrote:
| Looks good but no way I'd pay a subscription for a utility.
| cdelsolar wrote:
| do you use the utility on a recurring basis
| BaculumMeumEst wrote:
| 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!
| solarkraft wrote:
| 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.
| kokada wrote:
| 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).
| lxgr wrote:
| > 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?
| DrammBA wrote:
| 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
| lxgr wrote:
| 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.
| happyopossum wrote:
| 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?
| talldayo wrote:
| Do people really pay a subscription fee for a podcast app or
| gif manager? Good god, what has become of monetized XML
| documents!
| happyopossum wrote:
| 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.
| golergka wrote:
| Second this. Would gladly pay a one-time $10, but $20 annually
| doesn't make any sense for an app like this.
| mikestew wrote:
| 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.
| 1oooqooq wrote:
| 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.
| WanderPanda wrote:
| You can just alt + click the audio options in the control center
| to select the input source
| ro_bit wrote:
| I guess you need a subscription for everything these days
| textadventure wrote:
| 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.
| stronglikedan wrote:
| And then you sign up and the "comment" was just some scammer
| who's account has since been deleted.
| SunlitCat wrote:
| 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!
| Osiris wrote:
| 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.
| viraptor wrote:
| 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.
| jshier wrote:
| 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.
| andrewoneone wrote:
| 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.
| chem83 wrote:
| Samsung phones paired with Samsung earbuds also, on paper,
| support high-quality audio for calls.
| refulgentis wrote:
| 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.
| simple10 wrote:
| This is great! I've been needing a solution to this problem.
| However...
|
| I would pay $20 one time for it. But a subscription is a deal
| breaker.
|
| My guess is you'll make a lot more revenue by doing one time fees
| tied to a specific AirPod version. So each time I upgrade my
| AirPods, I pay a new one time fee instead of the subscription.
| truncate wrote:
| +1. As much as I realize that the developer may think their app
| is important enough for consumers to subscribe, from consumer
| perspective there are 30 other things that I would love to use
| -- which ask for subscription as well -- and I will probably
| subscribe to top 5-10 of those. Particularly $25/year is quite
| high for what it does, and it would definitely not make it to
| that list.
|
| On the other hand perpetual license for $20 is something I
| would definitely consider. You can release V2 after 2-3 years
| and people can choose to upgrade if they find the value.
| simple10 wrote:
| Fair points. I just think you'll make more charging a one
| time fee as most people won't want to do a subscription.
| Either way, I'm guessing it will be hard to make a full time
| income off a single utility app. But if you have plans for
| other related apps, then lowering the price of one app to use
| for lead gen to upsell to other apps seems to work pretty
| well for app devs.
|
| Best of luck!
| mrtksn wrote:
| Thanks! Much appreciated.
|
| Unfortunately I don't see how 20$ one time fee will works for
| such a niche app. After commissions and taxes $20 becomes $10.
|
| Anywhere in the developed world the money required only to
| survive is at least 2000$, which means I will need to be
| selling 200 copies every month as long as the app exist only to
| get basic level of income and accumulating customers that I
| will have to support the years to come. What happens if the
| next year sales drop to 100 a month? It will become an
| abandonware and make me enemies or eat up all my time for
| nothing. Many years ago I purchased Halide and later it become
| a subscription app, I felt deceived and still hold grudge and I
| don't want to be that guy. It's subscriptions right away and
| have only the people who think that 2$ a month is a fair
| compensation for the service.
|
| One time payment is either paying for abandonware, charity or
| scam. With subscriptions, it's a service. It's the best for
| everyone. Some people associate it with greed but I don't agree
| that expecting getting paid for work is greedy.
| dijit wrote:
| Are you implying that developing this software and
| maintaining it is a full time job?
|
| I'm not saying it's not, I'm actually curious.
|
| If it is indeed a full time job I don't think it's worth the
| time investment required to be perfectly honest. :\
| mrtksn wrote:
| It is a full time job even when you have a single user, you
| can't just get the payment deliver the app forget about it.
| It doesn't work like that, bugs happen the environment
| changes etc. People don't simply shrug and go buy a new
| software, they expect the thing get fixed.
| dijit wrote:
| But do you have to work on the program for forty hours a
| week or four?
| mrtksn wrote:
| How much do you think is my fair price? I will leave it
| here because it's weird to higgle on it. If I'm going to
| be "on call" I expect to get paid and I don't think this
| is greedy or unreasonable.
| dijit wrote:
| the going rate for a freelancer is $100/hr in my part of
| the world, but you can check your going rate.
|
| You can calculate your expected baseline yearly sales
| from this, based on how many hours you expect to work
| bugfixing and improving things on average per year.
|
| You can timebox the work- having a half-dozen services
| like this is exactly how Panic Inc. came to mass
| prominence.
|
| Everything depends on the actual amount of time you have
| to spend on the app, nobody is asking for minimum wage
| work, that's totally not fair; but perhaps expecting this
| single project to support you full time is unlikely.
|
| The upshot is that if you're more successful than your
| baseline, that's "profit", and it's unbounded.
| mrtksn wrote:
| I think you should just release an app that does just
| that at your rates.
| dijit wrote:
| Who says I haven't?
| mrtksn wrote:
| Good for you then.
| dmitrygr wrote:
| https://github.com/milgra/airpodssoundqualityfixer
| mrtksn wrote:
| Someone should put it on the AppStore or compile and
| release it for immediate download instead of demanding I
| give away my work and time for free. Everyone wins.
| dijit wrote:
| Nobody is demanding this.
|
| I'd recommend stepping away for a while and coming back
| with fresh eyes. Imagine that we're all being honest and
| not trying to bring you down- because genuinely we're
| not.
|
| There have been a lot of comments about the pricing,
| specifically the subscription, so its best to see what
| you can take from that. But that cant happen if you're
| emotional about it because you will naturally be
| defensive and your mind wont let the constructive
| elements in.
| mrtksn wrote:
| Fair enough, maybe your are right and I get worked up on
| the backslash for subscriptions(though I totally expected
| that).
| dmitrygr wrote:
| I do not think anyone is demanding anything of you. They
| are offering feedback on your (IMHO) suboptimal pricing
| strategy. You have every right to disagree, ignore them,
| etc. But if you really feel that someone is demanding
| something, perhaps you should take a moment and cool off.
| I do not read any messages here as a demand on you at
| all.
| mrtksn wrote:
| Fair enough. But I won't be ever doing one time payment
| or freeware. If I abandone the app I will put open source
| it.
| crazygringo wrote:
| > _I will need to be selling 200 copies every month as long
| as the app exist only to get basic level of income_
|
| First of all, it's probably an unrealistic expectation that a
| small utility like this should be able to provide you with a
| basic level of income.
|
| Second, in terms of pricing, you seem to be trying to make
| moral arguments about greed and scams here. But you should
| simply be realistic about the demand curve, and try to
| maximize your profit. If there are a lot more people who
| would buy this as a one-time purchase than as a subscription,
| you'll be losing money going the subscription route.
| mrtksn wrote:
| I'm not really interested in maximizing my profit, I simply
| don't want a burden. If people like it, use it then they
| pay for it and I take care of the app and if not the
| project dies off without me having to support potentially
| thousands of customers for years to come.
| Flowsion wrote:
| I can understand this logic, but does every app generate
| enough revenue to sustain a developer full-time? I would
| think that some niche apps are able to bring in solid revenue
| for the amount of work put in.
|
| I'm unsure how much time would go into general upkeep and
| management. Could some of the others suggestions here work,
| asking users to pay for future updates?
|
| I'm in the same camp as most of these users. I have this
| problem while using Discord and a game on STEAM (Counter-
| Strike). The mic quality is degraded heavily and I would be
| more than happy to pay a one-time fee. But I do not like
| adding too many subscriptions, no matter the cost, especially
| for apps that I could see myself requiring no serious updates
| unless I upgraded my physical products.
| olliej wrote:
| I think the issue these days is that so many VC funded
| companies give away products for free to essentially
| capture the entire market so no non-VC funded can compete
| with that, or numerous "free" (ad supported) or in-app-
| purchases funded competition (the ad supported ones
| frequently being just direct clones of other peoples work)
| force the purchase price down below the actual development
| cost.
|
| People now believe apps should be free, or cheap enough
| that they don't cover the actual costs for people who are
| doing the actual development costs.
|
| I'm not sure what the real path forward for developers in
| this environment - if you charge the necessary amount
| you're undercut by separately funded products or ad
| supported apps, if you charge a "competitive" amount you
| can't live off it, if you have a subscription that supports
| ongoing dev people say "I only want to pay a single time".
|
| None of this helped when you then have asshole game devs
| that sell games for $100+, but then throw in constant in
| app purchases and DLC for basic functionality that used to
| be part of the game.
| mrtksn wrote:
| Oh I can't agree more.
|
| When the VC money was sponsoring everything, everything's
| price has become free and today they are recouping their
| investment and people begin talking about
| "enshittification". Free(as on free beer) software was
| simply a predatory practice to shape the market in
| certain way and prepare it for exploitation.
| mrtksn wrote:
| I don't expect it to generate full time job level income,
| all I expect it not be a burden.
|
| I used to make free apps, browser extensions and so on.
| Dropped everything because it becomes full time job and if
| its going to be a full time job I must be compensated
| accordingly.
|
| I'm no longer a teenager and my time is no longer paid by
| my parents. It's possible to have other business models
| where the software is "free" but on this particular case I
| don't see how it can be. Transcribe all the user audio and
| share it with advertisers? Please no.
| Flowsion wrote:
| I completely agree that you must be compensated. I don't
| think anyone is telling you to share this for free, in
| fact, a lot of people are stating how they would be happy
| to pay for it.
|
| It makes sense that a collection of apps, extensions, etc
| would become a full-time job that demanded full-time
| compensation. I think the disconnect people are having
| would be, how could a single app demand that?
|
| Either way, it's your prerogative to do as you'd like
| with your app. I wish you the best of luck as it's a
| really neat sounding app.
| mrtksn wrote:
| I think whoever think that the price is not right should
| just not use it. Unfortunately the VC money that was
| flowing in last 20 years degenerated the expectation of
| everyone and once the investors begin recouping people
| begin talking abut "enshittification" but can't come
| around and pay for the services they use or not pay and
| not use.
|
| This is not a VC funded project, this is something I made
| for myself and got the idea to put it on the AppStore.
| luuurker wrote:
| Let me start by saying that I wish you the best of luck and
| success with the app.
|
| With this said, I have many subscriptions that "costs less
| than a coffee per month", to use a popular excuse. The
| problem is that I pay $3 here, $5 there, $7 for this, $10 for
| that... and when I add it all up, it's a lot of coffee, if
| you know what I mean. And at this point I don't see why I
| should pay for a program that will work without your
| intervention while I'm running this macOS version (or even
| across multiple macOS versions). I'm not using any of your
| resources/time or costing you any money.
|
| I completely understand that you want to be paid for your
| time if something breaks and you have to fix it, but you
| don't need a subscription for that. Some apps give you x
| years or x macOS updates for X dollars. After that, if you
| want a new update, you pay for another x years/pay for the
| latest major update (or something like that).
|
| If this used any server side stuff or required regular
| updates, then I would understand the subscription. As it is,
| it's a bit like Adobe software... I don't need it enough to
| pay for the subscription.
| mrtksn wrote:
| > ome apps give you x years or x macOS updates for X
| dollars. After that, if you want a new update, you pay for
| another x years/pay for the latest major update (or
| something like that).
|
| I know, I actually like that model too. It's just that
| there's no straightforward way to implement it. If Apple
| offered such model, I would pick it at heartbeat.
|
| Currently, such a thing will add so much needless
| implementation complexity to such a simple app. It's just
| too much of an effort for a side project-turned-commercial-
| product.
| kllrnohj wrote:
| > One time payment is either paying for abandonware, charity
| or scam. With subscriptions, it's a service.
|
| This isn't a service, though. It either does what it says, in
| which case why do I need to keep paying for it? Or it
| doesn't, in which case it's just like a warranty claim or
| similar. There's no ongoing expectations here. It's a product
| that you're charging service fees for, that's just completely
| out of whack.
|
| Like this genuinely would be better as "abandonware" (read:
| product) with a single $5-10 charge.
| jccalhoun wrote:
| I don't have a mac or airpods so maybe I'm missing some context
| but paragraphs 2-4 seem to be a digression and actively confused
| me as to what this does. I would suggest removing or rewriting
| them for clarity.
| mrtksn wrote:
| Apologies for the bad writing, wrote everything at once and
| posted right away and looking back I see plenty of room for
| improvement.
|
| The app simply sets the system default sound input/output
| device in a specific way depending on what's connected. This
| fixes the sound quality degradation on Bluetooth headphones
| with mic. The issue arises when the computer tries to use the
| Bluetooth mic, in most cases it's better to use the built it
| microphone anyway.
| alibert wrote:
| Sorry to crash your launch but this is supposed to be fixed in
| the new version of MacOS Sequoia + AirPods 2
|
| https://www.headphonesty.com/2024/07/apple-solves-bad-airpod...
|
| I'm still on Sonoma for work reason so I didn't test it.
| chem83 wrote:
| IIUC, what Apple is doing is reducing the number of active
| channels, so they can keep audio streaming at 48kHz in mono. OP
| is claiming better audio out quality, which to your point will
| be unnecessary with the new update, but also better audio in
| quality by always forcing the external microphone to be the
| default source, since it's not constrained by the BT bandwidth
| and is of overall better quality than those of AirPods.
|
| I also think that by doing this, BT audio out can be in
| stereo/48, which is arguably "better" than mono/48, so their
| app is still useful.
|
| I personally wouldn't subscribe to it, though. The script OP
| mentioned on their post seems sufficient for my use case.
| mrtksn wrote:
| I would be happy if its fixed! I'm on Sequoia 15.1 and it's not
| fixed yet. This is not exactly my million dollars idea, just a
| side project I made for personal use decided to see what
| happens if I put it on the AppStore :)
|
| Fingers crossed it gets fixed.
| ctippett wrote:
| Do I need this if I already use something like SoundSource[1] to
| manually set the input source that's not the AirPods microphone?
|
| [1] https://rogueamoeba.com/soundsource/
| dawnerd wrote:
| No, and this just proves to the OP you can charge for an app
| and not have it be a subscription and it still be a viable
| business.
| Schnitz wrote:
| Love the app but you lost me at "subscription". I would totally
| pay for major upgrades when fixes are indeed needed, but not per
| month or year by default.
| olliej wrote:
| I really feel this isn't the devs fault, it's a product of the
| accursed App Store payment model.
|
| The issues I see:
|
| * Devs can't make paid upgrades: to make a paid upgrade the
| options are a new app, except the security model for the apple
| app stores ties a lot of things to the app id, so a new app
| disconnects the user data from the old app. To keep the
| information tied together the "solution" is subscription or in
| app purchases (which also means you essentially have to have
| your app contain multiple versions embedded and you base what
| actually loads based on user purchases).
|
| * Devs can't do free trials: again the option are subscription
| or in app purchases.
|
| The alternatives are subscription or in app purchases, but
| there's no way for a user to distinguish an app that has those
| as a mechanism to support upgrades from a bait-and-switch app:
| As a result if an app is listed having either I generally don't
| consider installing it (esp. if it requires an initial payment)
| which is unfair to the reasonable devs but there are so many
| bait and switch apps nowadays (App Store review technically has
| a lot of value, but that this kind of BS is allowed remains a
| plague and substantially undercuts the benefits).
| Vegenoid wrote:
| I do the same - if an app is "free" but has In-app purchases,
| I'll simply avoid it, even if I'd be willing to pay some
| price for it if it works. I don't have time to download every
| app, open it, and navigate to its pricing page to see how
| much it costs.
|
| You should be able to see the name, description, and price of
| all the in-app purchases from the App Store.
| ZekeSulastin wrote:
| I'm not sure about the Mac OS side, but at least on iOS
| there's a specific entry in the information section for in-
| app purchases that can be expanded into exactly that
| pricing list.
| cffntd wrote:
| But it's always listed as something like "Premium
| Features" or "Monthly Subscription." Those descriptions
| don't tell what I'm getting. So then it's usually
| download the app, try to figure out which are the premium
| features and which are baked into the app. It's a mess.
| And I get it, it's not really the dev's fault, but the
| system is completely broken.
| nullindividual wrote:
| Affinity managed this just fine. Release the first version.
| Then the second version is a new product on the App Store.
|
| Not complicated.
| mrtksn wrote:
| > I would totally pay for major upgrades when fixes are indeed
| needed, but not per month or year by default
|
| That's one model I like too and unlike one time payment for
| lifetime support, it's sensible. However, there's no
| straightforward way to implement it. How do you do it? Ship all
| the versions every time and show the user the latest version
| they have a license for? Ship a "shell" which will download the
| latest binary the user is licensed for? Disable new features
| for users who purchased the app some time linger than the
| introduction of the feature?
|
| I don't know, it adds a lot of complexity in the
| implementation, distribution, license management and working
| with Apple's rules.
|
| IMHO it's much more sensible to have a low monthly fee and use
| it as long as you like it.
| wahnfrieden wrote:
| The first one or per feature
| dawnerd wrote:
| Honestly what new features would realistically be added?
| These are those kinda utility apps that the end user should
| forget even exists. You do an update if a major OS version
| breaks it. Should be very low maintenance.
|
| 20 bucks a year for something that toggle a mic input is very
| expensive.
| mrtksn wrote:
| >Honestly what new features would realistically be added?
|
| The features currently on my todo list if people keep using
| the app:
|
| 1) Currently the profiles are for AirPods exclusively, add
| generic support for other Bluetooth headphones.
|
| 2) Add support for custom profiles. For example some people
| might have many microphones and prefer different setups.
|
| 3) Improve continuity support by detecting user leaving the
| computer. For example, the user might be on a call and get
| to the other room and in that case it would be appropriate
| to switch to AirPods mic.
| lucideer wrote:
| The best model I've seen for this is to simply charge for
| major version upgrades. It's totally at the developer's
| discretion what they put into any given major/minor/patch
| version so you can demarcate development in whatever way
| suits.
| diebeforei485 wrote:
| This has several downsides:
|
| (1) If you purchased something just before the new version
| comes out, it feels like you got screwed over.
|
| (2) It requires a lot of new features be released at once
| for the new major version. This is actually more difficult
| to develop for vs releasing one feature at a time.
|
| (3) It makes planning and budgeting much more difficult,
| for users and for developers. If there is a bug (especially
| a compatibility bug for the latest annual version of
| iOS/macOS, or a security bug) affecting version N, version
| N-1, and version N-2, all will require bugfixes. This
| raises the cost of bugfixes. Not to mention potential bugs
| related to future physical AirPods products.
|
| (4) It leads to bloat from gimmicky new features being
| added to attract new customers.
|
| I'd much rather pay, say, $0.99 per month or $9.99 per
| year, and get regular compatibility and security updates,
| and know that this developer will not go out of business,
| compared to paying $50 for a product I might not actually
| use very long if it won't work on a new computer.
|
| If you want good software that gets regular updates,
| bugfixes, and compatibility updates, it's best time to pay
| for it on a regular basis.
| milgra wrote:
| I solved this problem six years ago although I quit apple since
| and you have to update/compile it for yourself :
| https://github.com/milgra/airpodssoundqualityfixer
| urbandw311er wrote:
| Excellent! Great job.
| teruakohatu wrote:
| Thank you! Does the 2020 release binary not work?
| urda wrote:
| This really should be a one-time-payment, not more subscription /
| rent seeking.
| mplewis wrote:
| I appreciate the effort but I'm absolutely not subscribing.
| dmitrygr wrote:
| Subscription for an app that has no server component or ongoing
| costs? This is how you piss off someone to release a free
| version.
|
| EDIT: seems someone already did long ago:
| https://github.com/milgra/airpodssoundqualityfixer
| fkyoureadthedoc wrote:
| I'd use it if it was on SetApp, probably not something I'd pay a
| dedicated subscription for though.
| mrtksn wrote:
| If people like the app and use it regularly, I will try to get
| it into SetApp. It's something thats on my mind.
| filchermcurr wrote:
| I appreciate the effort (and unlike others, I like the lengthy
| explanation and supporting links), but you lost me at
| subscription. The model is untenable for the (average) consumer
| and I can't in good conscience support an all-rental future,
| however small this step may be.
| lucideer wrote:
| I think you may be underestimating the volume difference in
| paying users you're likely to get with a one-time vs subscription
| model. Looking at similar apps on the market, I suspect you would
| earn more revenue overall with a one-time payment (many more
| users paying slightly less each).
| keyle wrote:
| Please give a pay once option.
|
| This is a tool to fix a problem, I don't want another tiny
| marriage.
| jjcm wrote:
| Subscription discussions aside, if you're looking for more
| feature requests, one thing I'd love is the ability to completely
| disable audio input devices on OSX. It's something you can't do
| today. My monitor has an audio in, and shows up as a valid audio
| input, but there's no mic connected to it. Zoom loves
| prioritizing it as a device though every time I disconnect my
| microphone. Likewise other bluetooth headphone audio inputs.
| Would love the ability to completely remove those as an option in
| the sound settings.
| ThomasBb wrote:
| Pretty sure you can do that natively;
| https://support.apple.com/guide/audio-midi-setup/set-up-audi...
| DrammBA wrote:
| Free alternatives:
|
| - Intel (also works in rosetta):
| https://github.com/milgra/airpodssoundqualityfixer
|
| - Apple sillicon native:
| https://github.com/Gaulomatic/AirPodsSanity
| elashri wrote:
| From the README.md of the second tool.
|
| > What it doesn't do
|
| > This piece of software is not cloud-native, has no micro
| service architecture, did not follow DDD principals, contains
| an algorithm designed by a fool, can not scale (neither
| vertically nor horizontally) and abuses your sense of humor
| mrtksn wrote:
| Thank you, I should study those and see if I can "steal" ideas
| for my product! My customers deserve the best solution out
| there :)
|
| Does this issue have a common name? I had hard time finding a
| way to fix it, ended up building a solution myself. Maybe my
| Googling skills got soft.
| mproud wrote:
| Subscription? Is that necessary?
| aucisson_masque wrote:
| You're not forced to subscribe tho, i sure won't.
|
| Everyone is entitled to set their own price for their product,
| the issue is 'will people buy it?'.
| car wrote:
| This is an interesting topic for a hearing aid user like me. For
| FaceTime and other calls on my computer or iPad/iPhone, I always
| physically switch from my Bluetooth hearing aids to AirPods,
| since the hearing aid microphone isn't that good for calls (other
| party has problems hearing what I say). Now, this could be a
| bandwidth issue. Apple Audio MIDI Setup shows the hearing aid
| microphone as an 8kHz/16bit mono input device, while the output
| is 2 channel 32-bit Float 44.1 kHz.
|
| The switching is a bit of a hassle, since I have to remove and
| turn off my hearing aids (which I would only do in private
| anyway), before putting in the AirPods. And the reverse, after
| the call has ended.
|
| Therefore, it would be very convenient if I could just switch to
| better input microphones, like the MacBook's. I'll give this a
| try.
|
| If anyone knows if this is also possible on iOS, please leave a
| comment.
| mrtksn wrote:
| Great feedback, I should totally incorporate special needs
| features. Thanks for sharing.
| heraldgeezer wrote:
| OT but another reason why I got wired headphones for my desktop
| :)
___________________________________________________________________
(page generated 2024-09-30 23:00 UTC)