eqMac icon indicating copy to clipboard operation
eqMac copied to clipboard

Bug: Switching output leads to spinning beachball

Open erikhuizinga opened this issue 3 years ago • 21 comments

Disclaimer:

  • [x] I have checked for a similar issue and sure it hasn't been reported before.

Steps to Reproduce

  1. Click on switch output device
  2. Scroll down to select either external headphones (jack plug) or MacBook Pro Speakers (built-in) while the other is the current output device in eqMac.
  3. Sound stops, eqMac shows spinning beachball.

Expected behaviour

Output switching works like it used to: it just switches output device, sound stays audible and eqMac remains responsive.

Setup information:

  • Audio device used for playback: external headphones (jack plug) or MBP speakers.
  • Audio transmission interface:
  • macOS Version: 11.6.3 Big Sur
  • eqMac Version 1.4.5, driver 2.0.4
  • eqMac UI Version 3.2.4

Screenshots or Console.app logs

Searching for 'eqmac' in the console app yielded no results.

Not sure if this helps, but after killing eqmac from the activity monitor, the console system log shows:

Feb  2 10:11:43 nvc3751 com.apple.xpc.launchd[1] (application.com.bitgapp.eqmac.227987202.227987209[7038]): Service exited due to SIGTERM | sent by Activity Monitor[51906]
Feb  2 10:11:47 nvc3751 com.apple.xpc.launchd[1]: Coalition Cache Hit: app<application.com.bitgapp.eqmac.227987202.227987209(502)> [933]
Feb  2 10:11:49 nvc3751 eqMac[51929]: getattrlist failed for /System/Library/Extensions/AppleIntelKBLGraphicsGLDriver.bundle/Contents/MacOS/AppleIntelKBLGraphicsGLDriver: #2: No such file or directory
Feb  2 10:11:49 nvc3751 eqMac[51929]: getattrlist failed for /Library/GPUBundles/AMDRadeonX4000GLDriver.bundle/Contents/MacOS/ATIRadeonX4000SCLib.dylib: #2: No such file or directory
Feb  2 10:11:49 nvc3751 eqMac[51929]: getattrlist failed for /System/Library/Extensions/AMDRadeonX4000GLDriver.bundle/Contents/MacOS/ATIRadeonX4000SCLib.dylib: #2: No such file or directory
Feb  2 10:11:49 nvc3751 eqMac[51929]: getattrlist failed for /System/Library/Frameworks/OpenGL.framework/Resources//GLRendererFloat.bundle/GLRendererFloat: #2: No such file or directory

Additional information

N/A

erikhuizinga avatar Feb 02 '22 09:02 erikhuizinga

Hey @erikhuizinga I've just released a small patch trying to mitigate this issue: https://github.com/bitgapp/eqMac/releases/download/v1.4.6/eqMac.pkg Does this still bug still happen to you in v1.4.6? Sorry for the inconvenience caused

nodeful avatar Feb 05 '22 23:02 nodeful

Ugh, even worse now. I updated to 1.4.6 and now I get that beachball on switching devices. I was able to switch before this. MacOS 12.2, MBP M1 Pro

This is on top of constant crashes I was experiencing for quite a few releases.

JeffGoldner avatar Feb 06 '22 19:02 JeffGoldner

@JeffGoldner I have an M1 Air running 12.2 and everything works flawlessly for me with all devices. Also the crash analytics suggest that the crash rate has went down significantly between last updates on average across all users. Currently 98% of all sessions are crash free, so something about your setup is very specific and causes crashes. Please upload the crash reports here or send to [email protected] together with as much information as possible as to after which actions do the crashes/freezes happen and what audio devices are you using.

nodeful avatar Feb 06 '22 21:02 nodeful

For me the bug seems fixed in v1.4.6. Not closing this, as it seems that others have similar issues.

erikhuizinga avatar Feb 07 '22 09:02 erikhuizinga

+1 to this bug as well. Just tried with 1.4.6 and still can reproduce.

Audio devices:

  • Sony BT headphones
  • Scarlett Solo USB DAC
  • Built-in speakers

Steps to reproduce:

  • Launch eqMac
  • Click to switch default output device (whichever combination)
  • Click on the window (anywhere)

As there is no crash, I'm attaching a log from launch until the beachball: https://gist.github.com/sway/31d99042b5a4bbdc76a56b8fe10f77f9

sway avatar Feb 07 '22 10:02 sway

@nodeful I rebooted again, it seems to be doing better, no crash on my MBP 14 M1 Pro that I saw yesterday but didn't use it a lot. I'll keep an eye open today. My Mac Mini M1 seems much more stable - I think it's running an old version though.

These are the devices that eqMac sees - when I reboot, it selects the second BenQ (DP) which doesn't have speakers attached. I assume "Speaker" is my SPDIF connection via dock.

Screen Shot 2022-02-07 at 8 38 09 AM

JeffGoldner avatar Feb 07 '22 16:02 JeffGoldner

Same issue here on MacOS 12.2 and 1.4.6 on 2019 MacAir...eqmac unusable

jdenglish avatar Feb 11 '22 10:02 jdenglish

I've been running into this a lot as my M1 wakes from sleep (which of course annoyingly switches from any device to the monitor's audio device).

Please let me know I can help investigate this.

At the moment I have a script that sends SIGKILL the app and restarts it.

[EDIT]

If this helps, here's the output of running the application directly via terminal. After the last line, the spinner happens.

Steps to Repo

Pre setup

  1. eqMac, pick Audio of Dell U2417H
  2. Close eqMac

Actual Problem

  1. Pick MacOS menu Audio i.e. Dell U2417H
  2. Launch eqMac
  3. Wait 1-2 seconds
  4. Pick MacOS menu Audio i.e. Justin’s AirPods Pro
  5. Try to use eqMac, but has spinner

Based on the output, it looks like it switches audio properly but actually get the EQ to run?

===========

$ /Applications/eqMac.app/Contents/MacOS/eqMac ; exit;
2022-02-15 10:47:45.090 eqMac[92810:2676014] Reachability Flag Status: XR ------- networkStatusForFlags
2022-02-15 10:47:45.5660 eqMac (Source/Application.swift:152) Setting up Audio Engine
2022-02-15 10:47:45.5690 eqMac (Source/Application.swift:451) Setting up UI
2022-02-15 10:47:45.590 eqMac[92810:2676014] Reachability Flag Status: XR ------- networkStatusForFlags
2022-02-15 10:47:45.590 eqMac[92810:2676014] Reachability Flag Status: XR ------- networkStatusForFlags
2022-02-15 10:47:45.591 eqMac[92810:2676014] Reachability Flag Status: XR ------- networkStatusForFlags
2022-02-15 10:47:45.6080 eqMac (Source/Application.swift:459) Setting up Data Bus
2022-02-15 10:47:45.654 eqMac[92810:2676014] Reachability Flag Status: XR ------- networkStatusForFlags
2022-02-15 10:47:45.6590 eqMac (Source/UI/UI.swift:405) Loading Remote UI
2022-02-15 10:47:46.0720 eqMac (Source/Application.swift:382) Last known device: 45 - MacBook Pro Speakers
2022-02-15 10:47:46.0830 eqMac (Source/Application.swift:325) Driver new Latency: 70
2022-02-15 10:47:46.0840 eqMac (Source/Application.swift:326) Driver new Sample Rate: Optional(48000.0)
2022-02-15 10:47:46.0840 eqMac (Source/Application.swift:327) Driver new name: MacBook Pro Speakers (eqMac)
2022-02-15 10:47:46.088 eqMac[92810:2676014] Reachability Flag Status: XR ------- networkStatusForFlags
2022-02-15 10:47:47.1270 eqMac (Source/Audio/Engine.swift:36) Creating Engine
2022-02-15 10:47:47.3120 eqMac (Source/Audio/Sources/Sources.swift:46) Creating Sources
2022-02-15 10:47:47.3270 eqMac (Source/Audio/Effects/Reverbs/Reverbs.swift:47) Creating Reverbs
2022-02-15 10:47:47.3270 eqMac (Source/Audio/Effects/Equalizers/Equalizers.swift:69) Creating Equalizers
2022-02-15 10:47:47.3280 eqMac (Source/Audio/Effects/Equalizers/Basic/BasicEqualizer.swift:179) Creating Basic Equalizer
2022-02-15 10:47:47.3280 eqMac (Source/Audio/Effects/Equalizers/Advanced/AdvancedEqualizer.swift:129) Creating Advanced Equalizer
2022-02-15 10:47:47.3290 eqMac (Source/Audio/Effects/Equalizers/Expert/ExpertEqualizer.swift:137) Creating Expert Equalizer
2022-02-15 10:47:47.3320 eqMac (Source/Audio/Volume/Volume.swift:176) Creating Volume
2022-02-15 10:47:47.4200 eqMac (Source/Audio/Engine.swift:62) 
________ GraphDescription ________
AVAudioEngineGraph 0x600001966700: initialized = 1, running = 1, number of nodes = 9

	 ******** output chain ********

	 node 0x600000b6e400 {'auou' 'ahal' 'appl'}, 'I'
		 inputs = 1
			 (bus0, en1) <- (bus0) 0x600000b09900, {'aumx' 'mcmx' 'appl'}, [ 2 ch,  48000 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]

	 node 0x600000b09900 {'aumx' 'mcmx' 'appl'}, 'I'
		 inputs = 1
			 (bus0, en1) <- (bus0) 0x600000b33a00, {'aumx' 'mcmx' 'appl'}, [ 2 ch,  48000 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]
		 outputs = 1
			 (bus0, en1) -> (bus0) 0x600000b6e400, {'auou' 'ahal' 'appl'}, [ 2 ch,  48000 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]

	 node 0x600000b33a00 {'aumx' 'mcmx' 'appl'}, 'I'
		 inputs = 1
			 (bus0, en1) <- (bus0) 0x600000b62680, {'aufx' 'nbeq' 'appl'}, [ 2 ch,  48000 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]
		 outputs = 1
			 (bus0, en1) -> (bus0) 0x600000b09900, {'aumx' 'mcmx' 'appl'}, [ 2 ch,  48000 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]

	 node 0x600000b62680 {'aufx' 'nbeq' 'appl'}, 'I'
		 inputs = 1
			 (bus0, en1) <- (bus0) 0x600000b4ba80, {'aufx' 'nbeq' 'appl'}, [ 2 ch,  48000 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]
		 outputs = 1
			 (bus0, en1) -> (bus0) 0x600000b33a00, {'aumx' 'mcmx' 'appl'}, [ 2 ch,  48000 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]

	 node 0x600000b4ba80 {'aufx' 'nbeq' 'appl'}, 'I'
		 inputs = 1
			 (bus0, en1) <- (bus0) 0x600000b50600, {'aufx' 'nbeq' 'appl'}, [ 2 ch,  48000 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]
		 outputs = 1
			 (bus0, en1) -> (bus0) 0x600000b62680, {'aufx' 'nbeq' 'appl'}, [ 2 ch,  48000 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]

	 node 0x600000b50600 {'aufx' 'nbeq' 'appl'}, 'I'
		 inputs = 1
			 (bus0, en1) <- (bus0) 0x600000b52280, {'aufx' 'mrev' 'appl'}, [ 2 ch,  48000 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]
		 outputs = 1
			 (bus0, en1) -> (bus0) 0x600000b4ba80, {'aufx' 'nbeq' 'appl'}, [ 2 ch,  48000 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]

	 node 0x600000b52280 {'aufx' 'mrev' 'appl'}, 'I'
		 inputs = 1
			 (bus0, en1) <- (bus0) 0x600000b4fc80, {'aufc' 'vari' 'appl'}, [ 2 ch,  48000 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]
		 outputs = 1
			 (bus0, en1) -> (bus0) 0x600000b50600, {'aufx' 'nbeq' 'appl'}, [ 2 ch,  48000 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]

	 node 0x600000b4fc80 {'aufc' 'vari' 'appl'}, 'I'
		 inputs = 1
			 (bus0, en1) <- (bus0) 0x600000b6fe00, {'augn' 'ttsp' 'appl'}, [ 2 ch,  48000 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]
		 outputs = 1
			 (bus0, en1) -> (bus0) 0x600000b52280, {'aufx' 'mrev' 'appl'}, [ 2 ch,  48000 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]

	 node 0x600000b6fe00 {'augn' 'ttsp' 'appl'}, 'I'
		 outputs = 1
			 (bus0, en1) -> (bus0) 0x600000b4fc80, {'aufc' 'vari' 'appl'}, [ 2 ch,  48000 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved]
______________________________________


2022-02-15 10:47:47.4320 eqMac (Source/Audio/Sources/System/SystemSource.swift:141) Safety Offset:  2196
2022-02-15 10:47:47.4320 eqMac (Source/Audio/Sources/System/SystemSource.swift:142) Sample Offset:  2316400
2022-02-15 10:47:52.0380 eqMac (Source/Application.swift:186) outputChanged:  Justin’s AirPods Pro (72)  starting PlayThrough
2022-02-15 10:47:52.0690 eqMac (Source/Application.swift:325) Driver new Latency: 7680
2022-02-15 10:47:52.0690 eqMac (Source/Application.swift:326) Driver new Sample Rate: Optional(48000.0)
2022-02-15 10:47:52.0700 eqMac (Source/Application.swift:327) Driver new name: Justin’s AirPods Pro (eqMac)
2022-02-15 10:47:52.9470 eqMac (Source/Audio/Sources/System/Driver.swift:313) Driver.outputIsRunning: false
2022-02-15 10:47:52.9920 eqMac (Source/Audio/Sources/System/Driver.swift:326) Driver.outputBuffer changed

nitsujri avatar Feb 15 '22 01:02 nitsujri

Experiencing this bug on a MacBook Pro (15-inch, 2019) everytime mac automatically changes audio input.

josueaanyosa avatar Mar 13 '22 22:03 josueaanyosa

Same on MacBook-Pro 13" 2021

klaidliadon avatar Mar 14 '22 11:03 klaidliadon

Seems to be getting worse now, Eqmac often hangs on restart from hanging...having to restart 2 or 3 times before working and then don't touch it just in case

jdenglish avatar Mar 22 '22 11:03 jdenglish

Ran into same issue on an intel based macbook.

Steps to reproduce the behaviour

  1. Have a device set as main playback device in macOS/eqMac (Could be an audio interface, airpods, etc)
  2. Disconnect said device from machine
  3. eqMac freezes every time

Expected behaviour eqMac switches to next default device instead of freezing.

Setup information

  • Audio device used for playback: Behringer UMC204HD/AirPods Pro
  • Audio transmission interface: USB/Bluetooth
  • macOS Version: 12.3I
  • Intel MacBook Pro 2017
  • eqMac Version: 1.4.6
  • eqMac UI Version: 3.2.4

TBZer0 avatar Mar 22 '22 14:03 TBZer0

same issue on Macbook pro 16' Intel based

ucabqll avatar Mar 22 '22 19:03 ucabqll

I'd like to attach to this bug report. Using eqMac:

  • App v1.4.6
  • Driver v2.0.5
  • UI v3.2.4

Using a MacBook Air M1

  • MacOS 12.3.1
  • 16 GB RAM
  • M1 Processor

Almost always when resuming power safe, eqMac seems disconnected and shows the spinning beach ball (worst case). The effect is, that without me actively changing any audio device it has lost connection to the audio device that eqMac "sits on".

In my case I have a set of active speakers connected via SPDIF (Device: Aureon XFIRE 8.0 HD). This device does NOT natively allow volume control. (Volume slider is greyed out) Using eqMac DOES allow me volume control. (Volume can be controlled via volume slider). And that is the main reason why I love eqMac so much :)

Therefore I always immediately notice the change when the speakers turn really loud suddenly. Then eqMac has died and volume is by 100% again. :)

Another effect that has been there in any version of eqMac I have used to far - am I the only one here? Changing audio devices via the system audio control in the menu bar does not highlight the blue icon for the selected audio device. Sometimes it needs several clicks on the device to really show the selection.

image

In the screenshot above the "SPDIF Output" is currently selected - but why is the icon still grey? This only happens while eqMac is active. If it's not running, the system behaves correctly.

image

The screenshot above just shows what encountered minutes ago coming back to the desktop after lunch break and resuming the Mac. This time eqMac is up and running, but has lost connection to the audio device. And: "Reset playback" button does not help - can be clicked, but does not change anything.

What helps is toggle the button for the bypass from right to left and to the right again:

image

Then eqMac works again, and the system audio control indicator for the active device is lost again:

image

Anymore details I can provide?

mamboone avatar Apr 20 '22 10:04 mamboone

Additional info. I'm using MS Teams for video conferencing a lot over the day. I could reproduce that once I performed a video call, the connection between eqMac and the audio device has dropped. No active audio device change on my side, but MS Teams is using the attached headsets - so there might happen some device change "under the hood" which confuses (or even kills) eqMac? Can this explain the issues above?

mamboone avatar Apr 20 '22 14:04 mamboone

Having the same problem. Mac Mini M1 running 12.3.1

pidds avatar Apr 28 '22 13:04 pidds

Having the same problem. Anytime the OS switches between AirPods and HDMI audio eqMac hangs. Takes force quitting eqMac, switching inputs, then relaunching to restore functionality. Have to repeat this process every time I take or make a call.

2017 Intel MBP 15" 16GB macOS 12.3.1

bernesto avatar May 03 '22 22:05 bernesto

Hey everyone, I'm super sorry for the lack of communication from my end, the last 5 months have been pretty rough for me but I pulled through. I have been working on an update for a while that addresses the issue you're all experiencing. I had to completely rewrite the Core of the app to use a more older version of Audio API's that Apple has. The newer AVAudioEngine API that Apple has been pushing down developers throats ended up being a massive problem for eqMac and my productivity. Hopefully this is all behind us now and I'll be able to release updates more often and better as I have more control over the Audio Pipeline! Please check out a Pre-Release of v1.5.0 that you can download here: https://github.com/bitgapp/eqMac/releases/tag/v1.5.0 Or just Enable "Beta Program" in eqMacs Settings! Please let me know how it goes!

Kind Regards, Roman - Founder of eqMac

nodeful avatar Jul 20 '22 00:07 nodeful

Hi Roman,

great news on this!! And: I just did a quick check on my Mac: I could not encounter restart or resume issues within a quick test - where the former version failed reliably. The only thing I still notice: once eqMac is running I cannot see the selected audio device with a blue colored button (still the screenshot above applies - no indicator for the currently selected device in the system audio menu). Is this a system limitation or are you still working on this issue?

Another thing that still applies: when switching audio devices: for the first about 0,5 seconds there seems to be the raw audio device in place then sound finally switched to the modified audio stream be eqMac. Is this a system limitation as well? As soon as eqMac is sending the audio stream also the blue colored sound menu button grays out as well...

Above all: I will work with this version from now on and send any findings here.

Thanks a lot, Roman. Great, great work, really!

Cheers

mamboone avatar Jul 20 '22 07:07 mamboone

Hi Roman,

great news on this!! And: I just did a quick check on my Mac: I could not encounter restart or resume issues within a quick test - where the former version failed reliably. The only thing I still notice: once eqMac is running I cannot see the selected audio device with a blue colored button (still the screenshot above applies - no indicator for the currently selected device in the system audio menu). Is this a system limitation or are you still working on this issue?

Another thing that still applies: when switching audio devices: for the first about 0,5 seconds there seems to be the raw audio device in place then sound finally switched to the modified audio stream be eqMac. Is this a system limitation as well? As soon as eqMac is sending the audio stream also the blue colored sound menu button grays out as well...

Above all: I will work with this version from now on and send any findings here.

Thanks a lot, Roman. Great, great work, really!

Cheers

@mamboone Thanks for your message :) Regarding the Audio Device seemingly not being selected is a limitation of macOS and the API's Apple provides to developers. With the current driver for capturing System Audio I have to switch the whole system to it to capture. The Driver device is hidden hence why you don't see anything selected, but if you open AudioMIDISetup.app you will see that the driver is currently the main Output device. It's hidden for many reasons, mainly aesthetics but also for some Bluetooth devices media controls to function properly. The alternative is to show the Driver device when it doesn't have to be hidden for functionality reasons, but I decided it's better to have a consistent behaviour to avoid confusion.

There is another approach to capture system audio while the preferred Output Device keeps being selected, but it requires a System Extension which is a massive pain to develop and a horrible user experience during installation, the user would have to Restart their Mac twice and on Apple Silicon systems also boot into Recovery Mode and allow the System Extension to load and generally Apple recommends using a Virtual Driver like eqMac for better experience (but a bit more limited functionality). Hopefully that clears things up.

The 0.5s delay that you're experiencing could be improved, it's there to make sure that the Audio Engine has been completely cleaned up before starting a new one. This is the most stable approach I found so far, but over time I will keep experimenting and improving the experience.

nodeful avatar Jul 20 '22 12:07 nodeful

It’s good to have you and eqMac back!

-- Jonathan English Chief of Stuff [A picture containing drawing Description automatically generated]https://prodd.co.uk/ E: @.@.> M: +44 7484 866990 Li: www.linkedin.com/in/jonathandenglishhttp://www.linkedin.com/in/jonathanenglish2 W: www.prodd.co.ukhttp://www.prodd.co.uk

From: Roman Kisil @.> Date: Wednesday, 20 July 2022 at 01:21 To: bitgapp/eqMac @.> Cc: Jonathan English @.>, Comment @.> Subject: Re: [bitgapp/eqMac] Bug: Switching output leads to spinning beachball (Issue #636)

Hey everyone, I'm super sorry for the lack of communication from my end, the last 5 months have been pretty rough for me but I pulled through. I have been working on an update for a while that addresses the issue you're all experiencing. I had to completely rewrite the Core of the app to use a more older version of Audio API's that Apple has. The newer AVAudioEngine API that Apple has been pushing down developers throats ended up being a massive problem for eqMac and my productivity. Hopefully this is all behind us now and I'll be able to release updates more often and better as I have more control over the Audio Pipeline! Please check out a Pre-Release of v1.5.0 that you can download here: https://github.com/bitgapp/eqMac/releases/tag/v1.5.0 Or just Enable "Beta Program" in eqMacs Settings! Please let me know how it goes!

Kind Regards, Roman - Founder of eqMac

— Reply to this email directly, view it on GitHubhttps://github.com/bitgapp/eqMac/issues/636#issuecomment-1189671274, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AS6WJCH6477GEYFLZA5ODP3VU5BAHANCNFSM5NLPKXHA. You are receiving this because you commented.Message ID: @.***>

jdenglish avatar Jul 20 '22 14:07 jdenglish

Hi Roman,

feedback to the latest version: great, simply great. Very stable (had not crashes anymore) and fulfills all the requests mentioned above when switching audio devices. This is a great job you did, really.

mamboone avatar Sep 28 '22 06:09 mamboone

As this issue is resolved, I would go ahead and close this now.

superjeng1 avatar Jun 22 '23 13:06 superjeng1