Eqmac: Inadequate bit depth settings causing clock frequency/bit drift (ie: crackling or cracking)

Created on 24 Oct 2019  路  12Comments  路  Source: bitgapp/eqMac

152

164

36

Cracking issues are (in many cases) a non issue IMHO. They are a user settings / user guide / documentation issue!

However, there is a real issue in that the format selection for eqMac2 (within the Audio MIDI Setup utility) only has frequency (ie: 44,100 / 48,000 Hz) selection. This is fine if your output device (like the macbook pro speakers) matches the bit depth (ie: 32-bit) and type (ie: Integer).

If you use an external audio device that doesn't match the frequency and depth, viola ... cracking. My output device only has 16 or 24 bit (not 32) so this is a problem. Maybe there's a way to add bit-depths like 16 and 24 for compatibilities sake. Also not sure if type (Integer/Float) would make a difference, but worth checking out.

image (11)

image (12)

image (13)

I'm not an audio/driver developer, but I am a full-stack developer (professionally) and producer/audio engineer (in my spare time) so this is an interesting intersection of domains for me. If anyone gets any ideas or leads on this please tag me or reach out.

Most helpful comment

Hey everyone. Excuse me for the lack of updates. I have been really busy on the new version of eqMac. I am happy to announce an open beta release.
You can download it here: https://eqmac.app
There are a lot of known bugs that I could not fix just yet:

  • Driver not installing from the first try. Sometimes need to restart eqMac a couple times.
  • Complex Device switching logic is not perfect (for example when switching off the device that's currently playing, plugging in new device etc.)
  • UI takes long to load (a lot can be done to improve that)
  • UI dimensions are not synching properly
  • There's a noticeable audio delay in the playback, so not suitable for video yet (I know where the problem lies just haven't had the time to fix yet)
  • Sometimes the playback doesn't start, in that case please try to switch the output to the device you want and eqMac should try and build the audio pipeline again.

So as you can see there's still some work to be done but at least it's a completely modern tech stack that I am fully willing to work on: 100% Swift, User Space driver and a Web UI, instead of C++, Kernel Drivers. As I said, should work on Catalina and should not have any pesky ear drum blasting volume bugs (at least I didn't come across any).
I'm open to feedback and issue reports here: https://github.com/bitgapp/eqmac
That repo will become the main repo for eqMac and this repo will be archived eventually.
And yes it's called just eqMac, not eqMac3 :) And it will stay that way forever.

All 12 comments

GHubers who might be interested in exploring or know others that might have domain knowledge please point them this way.

@ChristianLapinig
@andhieka
@stpoa
@warpkanal
@nnchang
@patczynski
@jdvirelli
@jasondardnerlv
@rhyek
@pateallen
@davidmarble
@jaybocc2
@pavelz
@mexitalian
@Griffinstein
@MrMotlo
@qazlint
@alfons
@Wist9063
@kurevin
@eun-ice
@Kieleth
@esxquillon
@AustinGomez
@peterharding
@akaleMulder
@dastamatis
@dissovldgrl
@artuj
@dastamatis
@Ethan-Newthink
@cjmaria
@eatinsnacks
@dastamatis
@tweichart
@Psynbiotik
@m652i
@clridd
@chrisgross
@ggalindezb
@TheKuyPeD
@chad-cros
@UnbearableBear
@MariuzM
@Joachim-42he

If you're not interested, then just ignore. Sorry for the ping.

This is not really true, though. All of my settings match (and have the whole time this has been an issue) and I still get crackling audio after some time. I think these settings being the issue has been debunked for a while now.

This is not really true, though. All of my settings match (and have the whole time this has been an issue) and I still get crackling audio after some time. I think these settings being the issue has been debunked for a while now.

Searched and didn't find it. Can you provide a ref?

Also, are you sure your matching settings match exactly? Can you verify 32-bit/48,000Hz/AND Integer ... if so then the issue might actually be an Apple HW / Kext issue after all. Unless there's something funky going on in the MIDI/Clock drivers, an exact match in settings should sort it out.

I debunked it many, many months ago when I changed the frequency of my devices to match and it kept happening. What I am really arguing is that your statement that "Cracking issues are (in many cases) a non issue IMHO. They are a user settings / user guide / documentation issue!" is false. None of my devices, including my MacBook Pro speakers, allow you to change anything but the frequency. The bit depth and type cannot be changed. So even if this could be the issue, there's nothing users can do about it.

I've got Rogue Amoeba's AudioHijack on my personal machine for years now and had no such issues. I wonder what they are doing differently.

Also, I just noticed my work mac (2018 pro) output is natively 32-bit, while my nearly identical personal mac (late 2017 pro) is 24-bit output natively. I wonder if the driver in eqMac2 is going off of the internal mac bit-depth/frequency/type settings which don't match my external device and causing the issue.

Wonder if my personal wouldn't have any issues in that case. Hmmm. May consider installing to check out out. Although I'm hesitant since everything works how I need it to on my personal and I don't want to mess it up.

I debunked it many, many months ago when I changed the frequency of my devices to match and it kept happening. What I am really arguing is that your statement that "Cracking issues are (in many cases) a non issue IMHO. They are a user settings / user guide / documentation issue!" is false. None of my devices, including my MacBook Pro speakers, allow you to change anything but the frequency. The bit depth and type cannot be changed. So even if this could be the issue, there's nothing users can do about it.

I'm simply making observations (hence the "in many cases" and "IMHO") and offering ideas. I understand the aggravation, but my statement is not necessarily patently false as you assert.

What I'm saying is that it is not possible to get the settings to match exactly in some (if not many) cases. And, as an aside, I'm wondering if the difference in Integer / Float could be a source of problems and has some code solution.

If you are saying that the bit depth within eqMac2 cannot be changed for some low-level technical reason that I'm ignorant of, then that may be so. Like I said, maybe it's forced to be tied to the native mac bit-depth/type. But if you are saying that you can't change it because the eqMac2 settings don't allow it, I'm not so certain that it is unsolvable. If my external interface allows me to change the bit-depth, then (as I displayed previously) then (perhaps) maybe there's a way to enable such an option in the code for eqMac2.

Again, I'm not super well versed in low-level driver programming, but I am a developer and problem solver, so I offer my humble thoughts because I'm interested.

So you are saying that you are getting the cracking issues while using your mac's internal speakers.

Again, end users have no control over these settings, either in eqMac or the OS. So it's not a "user settings / user guide / documentation issue". When I say the user can't change it, I mean there is nowhere, either in the OS MIDI settings or eqMac, where this can be done. Nor should they have to, as this should be handled by the software, and not require the users to go play trial and error with obscure settings until it starts working. I will say that I vaguely recall being able to change the bit depth and data type in the MIDI settings at some point in the past, but it's a bit fuzzy to me. If I was able to do that, it didn't work.

If this is the issue, then the eqMac devs would have to find a way to automatically sync the settings up with that of whichever output device is currently being used, and it would have to do so dynamically in case the user switches devices. Now, perhaps I missed it, but at this point, I have not even seen the devs themselves acknowledge that this is actually the issue. In fact, I haven't seem them even acknowledge that the issue even exists. No participation in the most recently submitted issue other than pointing to separate issue describing a new version they are supposedly working on. It doesn't exactly inspire confidence.

If you are right about the underlying causes, which I am still skeptical of, I don't think we will ever know for sure. Seeing one of them speak up here would be nice, as they have firsthand knowledge of the code, but in the meantime, all users can do is speculate, as we have been doing for a very long time.

@chrisgross I get it man. We all want software to just solve our problems. Heck! I just want Spotify, or Apple to just give us a damn EQ we can use. While I get your user-centric focus, my interest is both user and dev focused. The problem interests me, and I'd like to dig into the code. And yes if a dev with some insight would speak up to my thought/questions, that would be great. But OSS doesn't pay the bills (most of the time) so I get their limited time investment. I'll just continue my quest with some grace and curiosity. Good luck.

@chrisgross Just to confirm, ... were you getting the issues coming out of your laptop's speakers as well?

Hey everyone. Excuse me for the lack of updates. I have been really busy on the new version of eqMac. I am happy to announce an open beta release.
You can download it here: https://eqmac.app
There are a lot of known bugs that I could not fix just yet:

  • Driver not installing from the first try. Sometimes need to restart eqMac a couple times.
  • Complex Device switching logic is not perfect (for example when switching off the device that's currently playing, plugging in new device etc.)
  • UI takes long to load (a lot can be done to improve that)
  • UI dimensions are not synching properly
  • There's a noticeable audio delay in the playback, so not suitable for video yet (I know where the problem lies just haven't had the time to fix yet)
  • Sometimes the playback doesn't start, in that case please try to switch the output to the device you want and eqMac should try and build the audio pipeline again.

So as you can see there's still some work to be done but at least it's a completely modern tech stack that I am fully willing to work on: 100% Swift, User Space driver and a Web UI, instead of C++, Kernel Drivers. As I said, should work on Catalina and should not have any pesky ear drum blasting volume bugs (at least I didn't come across any).
I'm open to feedback and issue reports here: https://github.com/bitgapp/eqmac
That repo will become the main repo for eqMac and this repo will be archived eventually.
And yes it's called just eqMac, not eqMac3 :) And it will stay that way forever.

Hey everyone 馃憢
I will be open sourcing the new version of eqMac, therefore, I am closing this issue and repository as I will be transfering nodeful/eqMac2 repo to bitgapp/eqMac
Please bear with me for the next couple of days as I setup that new repo. The eqMac2 code will be living in the old-eqMac2 branch if anyone is interested in referencing it for whatever reason.
Please try out the new version and report bugs to the new repo.
Thanks for using eqMac.

Moving discussion and tracking of this issue to #224

Was this page helpful?
0 / 5 - 0 ratings