Giter Club home page Giter Club logo

proxy-audio-device's People

Contributors

briankendall avatar colindean avatar kasimok avatar prosenb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

proxy-audio-device's Issues

Compatible with Mac OS BigSur on Apple Silicon M1?

Is the PAD driver compatible with the setup above? It seems to compile pretty well and also the settings app work, but there isn't any audio when I switch to the PAD channel in the audio settings.
BTW: Is there a specific path necessary where the settings app have to be run from?

Best regards, Andreas

Audio fades up after silence

Whenever starting to play audio, or even after just a short silence (2+ seconds), the audio starts out low and slowly fades up to the actual set volume. This results in quite a bit of pumping and inaudible sections when listening to audio, watching videos, etc.

I've adjusted the different settings, such as changing the "Buffer size" (currently 512) and "Proxy device is active" (currently Always) options.

Any assistance in getting the audio volume to remain constant between periods of silence would be greatly appreciated.

Thanks.

Details

  • Device: Mac Mini M1
  • MacOS: 12.6.1
  • Proxy Audio Device: 1.0.6
    • Updated from 1.0.5 today in the hopes that this issue was not present, but the behavior is the same.

routing to multiple outputs on audio interface...

Hi,

First of all thanks so much for sharing this! Just discovered it and it's solved a long standing problem for me with minimal effort.

I just thought I'd raise this as I find it curious:

Current setup is Mac mini and a Motu828x audio interface.

Proxy Audio Device seems to ignore the settings in the Motu Audio Setup regarding default outputs etc. whereas going system audio directly will follow these settings. Not a problem so long as I use the main outputs 1&2.

Curiously tho, proxy will output audio to 3 pairs of outputs simultaneously(1&2, 3&4, 11&12)

In audio/midi setup the audio interface shows as having 3 streams: Main Out, Analog, and SPDIF. I'm guessing it is passing audio to the first output pair of each stream?

This is both a benefit and a detriment - I couldn't get system audio to pass to more than one output at a time when I tried.
By changing some physical routing on the Motu interface I can have system audio on speakers and headphones simultaneously - great.
But I'm also losing a pair of analog outputs where it is undesirable to have proxy output...

Any thoughts on a possible fix for that or does it go beyond the scope of the project?

Thanks again!

Unplugging hdmi leaves the proxy audio device present

I assumed that if the proxied device wasn't present anymore that also the proxy audio device would be removed.

At least that is how I interpreted the setting "Proxy Device is active: When proxied device is active".

For me the proxy device is there event though the plugged in HDMI device is removed and its device is disappears.

Crash after several hours

This is a really great workaround for the lack of volume support for HDMI audio. But unfortunately it seems like it is a bit buggy for me. After several hours it crashes and seems to take down lots of the audio system with it. Usually it starts crackling and then when I switch to the non-proxied HDMI audio it crashes and all of the audio devices except the Macbook built in speaker disappear or are greyed out.

Very difficult to fix I would imagine. I'm really just wondering if anyone else has the same issue?

Something is missing in the PAD Setting App, is it?

Bildschirm­foto 2023-03-16 um 11 58 39

I want to run PAD on my M1 Max MacBook Pro with installed macOS Ventura 13.2.1 (22D68). The driver is correctly installed and PAD shows up as a virtual output device.

However, the app looks odd to me. There is no "Save" or "Apply" button, nor does the app do anything to the driver. Is this normal, or a bug? How to apply the settings?

Play through unsupported in AudioServerPlugin?

Building play through into the audio server plugin is incredibly convenient... but isn't HAL access from the plugin unsupported?

From AudioServerPlugin.h:

An AudioServerPlugIn operates in a limited environment. First and foremost, an AudioServerPlugIn
may not make any calls to the client HAL API in the CoreAudio.framework. This will result in
undefined (but generally bad) behavior.

This document says "HAL" includes anything in AudioHardware.h, e.g. AudioDeviceStart: https://developer.apple.com/library/archive/documentation/MusicAudio/Conceptual/CoreAudioOverview/WhatsinCoreAudio/WhatsinCoreAudio.html
So technically proxy-audio-device should expect this "generally bad, undefined" behaviour. Yet it in practice it seems to work fine. Is the only danger the occasional deadlock?

request: help me with my patch 🙏

For my personal use, I want to make a CLI version of this app.

I hacked a quick prototype together, but ran into a bug that's blocked me from proceeding. I am calling AudioDevice::setObjectName the same way as the GUI is, but the playback device is not changing. I detail the exact problem in 0ac8271

I would appreciate if you could take a look at it and lmk what I'm doing wrong!

Thanks ❤️

Proxy Audio Device not found

I just installed using macports in hope to solve my issue, because it also happened on manual install:

I cannot interact with the proxy audio device settings and it also does not show up in MIDI control.

Using macos Sonoma.

Bildschirmfoto 2023-10-04 um 18 41 29

[Feature] Homebrew support

This tool is quite useful, and it would be awesome if there were a homebrew cask to install the tool with:

brew install --cask proxy-audio-device

The command should do the following:

  • Install the latest version of Proxy Audio Device Settings to /Applications/
  • Move the ProxyAudioDevice.driver to /Library/Audio/Plug-Ins/HAL/

Homebrew does not support moving drivers to /Library/Audio/Plug-Ins/HAL/ but it should be doable through a custom pkg.

Ring buffer desync assistance

First off, a big thank you @briankendall for this awesome piece of hackery. I've had this issue since about 2018 and it's surprising to me that digital volume control is still not supported natively by Apple. I've been using your code since I found out about it (was previously using another solution that stopped working sometime around Catalina iirc), mostly successfully.

Regarding #14 and #19, I've recently stumbled upon a setup that goes out of sync after <5 minutes instead of hours. Not sure what's causing it, but I'll refrain from making any system changes for at least a week or so to give you some time to answer. I can confirm this behavior with both latest version and an older one (1.0.5)

I cloned and built both driver and config app locally and I sort of know what I'm doing but I haven't worked all that much (read: at all) with HAL or other Mac specific driver code so I'd most likely need some support here.

I'm fairly flexible about how to go about this: we can set up a live session (including, if you want, granting you supervised access to my machine) or we can go back and forth via text here. I'm primarily interested in domain knowledge, such as how to quickly deploy builds from xcode into the running kernel, where to collect logs from, etc.

Let me know when you have some availability. If need be, we can exchange credentials here using a DH exchange (disclaimer: I wrote the above)

Automatic Switch

adding the ability to switch back to original audio if the proxied device is disconnected would be awesome.

self compiled version looks OK but unable to proxy device audio

Hi @briankendall Nice Audio Driver. I download your release build, works like a charm. It can smoothly proxy my built-in speaker's sound.

However when I did "sign to run locally" in Xcode. The app client was able to set its proxy parameters to the driver. But the sound proxy is not working(there is no sound at all).

Screen Shot 2022-08-23 at 9 30 04 PM

Screen Shot 2022-08-23 at 9 44 37 PM

Note I'm testing on an M1 MBP 2020, with SIP disabled as apple suggested when developing an Audio Server Plugin. Also, I can see the device listed in the MIDI app. So I guess it's not the signing issue.

I checked the log of my Proxy Audio Device:

1418	default	21:23:24.892941+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: ProxyAudio_Initialize
1418	default	21:23:24.893182+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: copyDeviceNameFromStorage
1418	error	21:23:24.893445+0800	com.apple.audio.Core-Audio-Driver-Service.helper	All kCFPreferencesCurrentUser domains in this process will be volatile, because homeDirPath starts with /var/empty
1418	default	21:23:24.895004+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: copyDeviceNameFromStorage finished, device name: Proxy Audio Device
1418	default	21:23:24.895140+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: copyOutputDeviceUIDFromStorage
1418	default	21:23:24.895335+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: copyOutputDeviceUIDFromStorage no output device UID in storage
1418	default	21:23:24.895371+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: retrieveOutputDeviceBufferFrameSizeFromStorage
1418	default	21:23:24.895550+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: retrieveOutputDeviceBufferFrameSizeFromStorage finished returning default buffer frame size
1418	default	21:23:24.895658+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: retrieveOutputDeviceActiveConditionFromStorage
1418	default	21:23:24.895778+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: retrieveOutputDeviceActiveConditionFromStorage finished returning default active condition
1418	default	21:23:25.140834+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: PerformDeviceConfigurationChange
1418	default	21:23:25.140933+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: Setting sample rate to: 88200
1418	default	21:23:25.140958+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: finished PerformDeviceConfigurationChange, will match sample rate
1418	default	21:23:25.140990+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: matchOutputDeviceSampleRate
1418	default	21:23:25.141047+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: matchOutputDeviceSampleRateNoLock
1418	default	21:23:25.141079+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: matchOutputDeviceSampleRateNoLock ... no valid output device
1418	default	21:23:25.506416+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: StartIO
1418	default	21:23:25.506453+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: resetInputData
1418	default	21:23:25.506516+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: StartIO finished
1418	default	21:23:25.913230+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: initializeOutputDevice running in separate thread
1418	default	21:23:25.913268+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: copyDefaultProxyOutputDeviceUID
1418	default	21:23:25.914391+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALPlugInManagement::RegisterPlugIns: skipping in-process plug-ins
1418	error	21:23:25.914408+0800	com.apple.audio.Core-Audio-Driver-Service.helper	AddInstanceForFactory: No factory registered for id <CFUUID 0x12070b5f0> F8BB1C28-BAE8-11D6-9C31-00039315CD46
1418	default	21:23:25.946978+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: copyDefaultProxyOutputDeviceUID returning first viable output device in list
1418	default	21:23:25.947015+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setupTargetOutputDevice
1418	default	21:23:25.947038+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: findTargetOutputAudioDevice
1418	default	21:23:25.947062+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: findTargetOutputAudioDevice target UID: BlackHole2ch_UID
1418	default	21:23:25.947083+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: findTargetOutputAudioDevice finished, found output device
1418	default	21:23:25.947256+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setupTargetOutputDevice newOutputDevice: 61
1418	default	21:23:25.947287+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setupTargetOutputDevice deinitializing old device
1418	default	21:23:25.947304+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: deinitializeOutputDeviceNoLock
1418	default	21:23:25.947323+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: deinitializeOutputDeviceNoLock output device is already invalidated
1418	default	21:23:25.947344+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setupTargetOutputDevice setting up new device
1418	default	21:23:25.947360+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: resetInputData
1418	default	21:23:25.947743+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setupTargetOutputDevice will match sample rate
1418	default	21:23:25.947766+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: matchOutputDeviceSampleRateNoLock
1418	default	21:23:25.947879+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: matchOutputDeviceSampleRateNoLock changing sample rate to match: 44100.000000
1418	default	21:23:25.947901+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: resetInputData
1418	default	21:23:25.948087+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: matchOutputDeviceSampleRateNoLock about to request device configuration change
1418	default	21:23:25.948117+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setupAudioDevicesListener
1418	default	21:23:25.948141+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setupAudioDevicesListener finished
1418	default	21:23:25.948453+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: StopIO
1418	default	21:23:25.948477+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: StopIO finished
1418	default	21:23:25.950263+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_IOContext_PauseIO(335)
1418	default	21:23:25.950285+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: -> 0 0 id:335 called from HALC_IOContext_PauseIO
1418	default	21:23:25.950297+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: <- 0 1 id:335
1418	default	21:23:25.952265+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: PerformDeviceConfigurationChange
1418	default	21:23:25.952343+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: Setting sample rate to: 44100
1418	default	21:23:25.952369+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: finished PerformDeviceConfigurationChange, will match sample rate
1418	default	21:23:25.952388+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: matchOutputDeviceSampleRate
1418	default	21:23:25.952406+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: matchOutputDeviceSampleRateNoLock
1418	default	21:23:25.952733+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: detected user is now active
1418	default	21:23:25.952760+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: starting outputDevice
1418	default	21:23:25.969703+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: current input sample rate: [44100.000000] already equals output device's sample rate.
1418	default	21:23:25.977905+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_IOContext_ResumeIO(335)
1418	default	21:23:25.977926+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: -> 0 1 id:335 called from HALC_IOContext_ResumeIO
1418	default	21:23:25.977952+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: <- 0 0 id:335
1418	default	21:23:25.978404+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: -> 0 0 id:335 called from HALC_ShellDevice::RebuildIOContext
1418	default	21:23:25.978415+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: <- 0 1 id:335
1418	default	21:23:25.978529+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_IOContext_PauseIO(335)
1418	default	21:23:25.978549+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: -> 0 1 id:335 called from HALC_IOContext_PauseIO
1418	default	21:23:25.978588+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: <- 0 2 id:335
1418	default	21:23:25.979244+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_IOContext_ResumeIO(335)
1418	default	21:23:25.979304+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: -> 0 2 id:335 called from HALC_ShellDevice::RebuildIOContext
1418	default	21:23:25.979752+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: <- 0 1 id:335
1418	default	21:23:25.980643+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: StartIO
1418	default	21:23:25.980860+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: resetInputData
1418	default	21:23:25.981102+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: StartIO finished
1418	default	21:23:25.983442+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: StopIO
1418	default	21:23:25.983536+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: StopIO finished
1418	default	21:23:25.979957+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: -> 0 1 id:335 called from HALC_IOContext_ResumeIO
1418	default	21:23:25.985796+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: <- 0 0 id:335
1418	default	21:23:25.987680+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: StartIO
1418	default	21:23:25.987808+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: resetInputData
1418	default	21:23:25.987847+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: StartIO finished
1418	default	21:23:26.004590+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: outputDeviceIOProc recalculating inputOutputSampleDelta
1418	default	21:23:38.080193+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: StopIO
1418	default	21:23:38.080349+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: StopIO finished
1418	default	21:23:40.152194+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::IOWorkLoop: skipping cycle due to overload
1418	default	21:23:45.334280+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::IOWorkLoop: skipping cycle due to overload
1418	default	21:24:32.902388+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: detected user is now idle
1418	default	21:24:32.902625+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: stopping outputDevice
1418	default	21:24:32.918596+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: resetInputData
1418	default	21:24:53.444716+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: detected user is now active
1418	default	21:24:53.444901+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: starting outputDevice
1418	error	21:24:53.445055+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 11523          HALC_ProxyIOContext.cpp:796   HALC_ProxyIOContext::StartIO: Client running as an adaptive unboosted daemon
1418	error	21:24:53.445173+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALPlugIn::StartIOProc: got an error from the plug-in routine, Error: 1852797029 (nope)
1418	default	21:24:53.445337+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: error: failed to start device 61
1418	default	21:24:53.946805+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: starting outputDevice
1418	default	21:24:57.468656+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: received signal, configurator pid is: 1434
1418	default	21:24:57.469263+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: received signal, will return data on next call to box name: 3
1418	default	21:24:57.469475+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: returning config data type 3 instead of box name
1418	default	21:24:57.473546+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: received signal, will return data on next call to box name: 1
1418	default	21:24:57.473732+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: returning config data type 1 instead of box name
1418	default	21:24:57.481031+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: received signal, will return data on next call to box name: 2
1418	default	21:24:57.481237+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: returning config data type 2 instead of box name
1418	default	21:24:57.481969+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: received signal, will return data on next call to box name: 4
1418	default	21:24:57.482157+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: returning config data type 4 instead of box name
1418	default	21:25:00.756886+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setting box name from configurator process, performing configuration action instead!
1418	default	21:25:03.998663+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setting box name from configurator process, performing configuration action instead!
1418	default	21:25:04.999995+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setupTargetOutputDevice
1418	default	21:25:04.000066+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: findTargetOutputAudioDevice
1418	default	21:25:04.000132+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: findTargetOutputAudioDevice target UID: BuiltInSpeakerDevice
1418	default	21:25:04.000195+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: findTargetOutputAudioDevice finished, found output device
1418	default	21:25:04.000643+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setupTargetOutputDevice newOutputDevice: 111
1418	default	21:25:04.000710+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setupTargetOutputDevice deinitializing old device
1418	default	21:25:04.000758+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: deinitializeOutputDeviceNoLock
1418	default	21:25:04.000802+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: deinitializeOutputDeviceNoLock stopping device
1418	default	21:25:04.000844+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: deinitializeOutputDeviceNoLock removing IO proc
1418	default	21:25:04.001029+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: deinitializeOutputDeviceNoLock invalidating
1418	default	21:25:04.001074+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setupTargetOutputDevice setting up new device
1418	default	21:25:04.001115+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: resetInputData
1418	default	21:25:04.001626+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setupTargetOutputDevice will match sample rate
1418	default	21:25:04.001681+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: matchOutputDeviceSampleRateNoLock
1418	default	21:25:04.001831+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: matchOutputDeviceSampleRateNoLock changing sample rate to match: 88200.000000
1418	default	21:25:04.001876+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: resetInputData
1418	default	21:25:04.002185+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: matchOutputDeviceSampleRateNoLock about to request device configuration change
1418	default	21:25:04.003161+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_IOContext_PauseIO(335)
1418	default	21:25:04.003213+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: -> 0 0 id:335 called from HALC_IOContext_PauseIO
1418	default	21:25:04.003268+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: <- 0 1 id:335
1418	default	21:25:04.005124+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: PerformDeviceConfigurationChange
1418	default	21:25:04.005183+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: Setting sample rate to: 88200
1418	default	21:25:04.005223+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: finished PerformDeviceConfigurationChange, will match sample rate
1418	default	21:25:04.005326+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: matchOutputDeviceSampleRate
1418	default	21:25:04.005368+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: matchOutputDeviceSampleRateNoLock
1418	default	21:25:04.005860+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: starting outputDevice
1418	default	21:25:04.008860+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: current input sample rate: [88200.000000] already equals output device's sample rate.
1418	default	21:25:04.019409+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_IOContext_ResumeIO(335)
1418	default	21:25:04.019437+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: -> 0 1 id:335 called from HALC_IOContext_ResumeIO
1418	default	21:25:04.019485+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: <- 0 0 id:335
1418	default	21:25:04.021439+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: -> 0 0 id:335 called from HALC_ShellDevice::RebuildIOContext
1418	default	21:25:04.021456+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: <- 0 1 id:335
1418	default	21:25:04.021615+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_IOContext_PauseIO(335)
1418	default	21:25:04.021641+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: -> 0 1 id:335 called from HALC_IOContext_PauseIO
1418	default	21:25:04.021753+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: <- 0 2 id:335
1418	default	21:25:04.022320+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_IOContext_ResumeIO(335)
1418	default	21:25:04.022475+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: -> 0 2 id:335 called from HALC_ShellDevice::RebuildIOContext
1418	default	21:25:04.022931+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: <- 0 1 id:335
1418	default	21:25:04.023147+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: -> 0 1 id:335 called from HALC_IOContext_ResumeIO
1418	default	21:25:04.023329+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: <- 0 0 id:335
1418	default	21:25:05.944973+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setting box name from configurator process, performing configuration action instead!
1418	default	21:25:07.351157+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::IOWorkLoop: skipping cycle due to overload
1418	default	21:25:07.372230+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::IOWorkLoop: skipping cycle due to overload
1418	default	21:25:08.116537+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::IOWorkLoop: skipping cycle due to overload
1418	default	21:25:08.300554+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::IOWorkLoop: skipping cycle due to overload
1418	default	21:25:10.900701+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: StartIO
1418	default	21:25:10.900748+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: resetInputData
1418	default	21:25:10.900795+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: StartIO finished
1418	default	21:25:10.913305+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: outputDeviceIOProc recalculating inputOutputSampleDelta
1418	default	21:28:23.814924+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALB_MachPort::SendMessage: mach_msg() returned error 0x10000003: '(ipc/send) invalid destination port'
1418	error	21:28:23.814959+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::IOWorkLoop: failed to send the final message to the server, Error: 0x10000003
1418	default	21:28:23.817116+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: outputDeviceAliveListener
1418	default	21:28:23.817248+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: outputDeviceAliveListener
1418	default	21:28:23.817293+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: outputDeviceAliveListener output device no longer alive
1418	default	21:28:23.817336+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: deinitializeOutputDevice
1418	default	21:28:23.817380+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: deinitializeOutputDeviceNoLock
1418	default	21:28:23.817843+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: deinitializeOutputDeviceNoLock stopping device
1418	error	21:28:23.817893+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HAL_HardwarePlugIn_DeviceStart: no device
1418	error	21:28:23.817919+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALPlugIn::StopIOProc: got an error from the plug-in routine, Error: 560947818 (!obj)
1418	default	21:28:23.817980+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: error: failed to stop device 111
1418	default	21:28:23.818022+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: deinitializeOutputDeviceNoLock removing IO proc
1418	error	21:28:23.821000+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HAL_HardwarePlugIn_DeviceDestroyIOProcID: no device
1418	error	21:28:23.821046+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALPlugIn::DeviceCreateIOProcID: got an error from the plug-in routine, Error: 560947818 (!obj)
1418	default	21:28:23.821125+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: deinitializeOutputDeviceNoLock invalidating
1418	default	21:28:23.821496+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: devicesListenerProc current devices changed
1418	default	21:28:23.821624+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setupTargetOutputDevice
1418	default	21:28:23.821748+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: findTargetOutputAudioDevice
1418	default	21:28:23.821835+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: findTargetOutputAudioDevice target UID: BuiltInSpeakerDevice
1418	default	21:28:23.821939+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: findTargetOutputAudioDevice finished, not not find output device
1418	default	21:28:23.821986+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setupTargetOutputDevice newOutputDevice: 0
1418	default	21:28:23.822027+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setupTargetOutputDevice deinitializing old device
1418	default	21:28:23.822069+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: deinitializeOutputDeviceNoLock
1418	default	21:28:23.822108+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: deinitializeOutputDeviceNoLock output device is already invalidated
1418	default	21:28:23.822148+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setupTargetOutputDevice could not find output device
1418	error	21:28:24.207065+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 AudioObjectGetPropertyData: no object with given ID 93
1418	error	21:28:24.207091+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 AudioObjectRemovePropertyListener: no object with given ID 93
1418	default	21:28:24.360069+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: devicesListenerProc current devices changed
1418	default	21:28:24.360105+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setupTargetOutputDevice
1418	default	21:28:24.360124+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: findTargetOutputAudioDevice
1418	default	21:28:24.360146+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: findTargetOutputAudioDevice target UID: BuiltInSpeakerDevice
1418	default	21:28:24.360167+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: findTargetOutputAudioDevice finished, found output device
1418	default	21:28:24.360310+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setupTargetOutputDevice newOutputDevice: 202
1418	default	21:28:24.360335+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setupTargetOutputDevice deinitializing old device
1418	default	21:28:24.360352+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: deinitializeOutputDeviceNoLock
1418	default	21:28:24.374959+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_IOContext_PauseIO(247)
1418	default	21:28:24.374994+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: -> 0 0 id:247 called from HALC_IOContext_PauseIO
1418	default	21:28:24.375006+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: <- 0 1 id:247
1418	default	21:28:24.377463+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_IOContext_PauseIO(234)
1418	default	21:28:24.377480+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: -> 0 0 id:234 called from HALC_IOContext_PauseIO
1418	default	21:28:24.377490+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: <- 0 1 id:234
1418	default	21:28:24.379734+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: deinitializeOutputDeviceNoLock output device is already invalidated
1418	default	21:28:24.382051+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_IOContext_ResumeIO(247)
1418	default	21:28:24.382270+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: -> 0 1 id:247 called from HALC_IOContext_ResumeIO
1418	default	21:28:24.382344+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: <- 0 0 id:247
1418	default	21:28:24.383076+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: -> 0 0 id:247 called from HALC_ShellDevice::RebuildIOContext
1418	default	21:28:24.383153+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: <- 0 1 id:247
1418	default	21:28:24.383409+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_IOContext_PauseIO(247)
1418	default	21:28:24.383533+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: -> 0 1 id:247 called from HALC_ShellDevice::RebuildIOContext
1418	default	21:28:24.383543+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_IOContext_ResumeIO(247)
1418	default	21:28:24.383790+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: <- 0 0 id:247
1418	default	21:28:24.384022+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: -> 0 0 id:247 called from HALC_IOContext_PauseIO
1418	default	21:28:24.384130+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: <- 0 1 id:247
1418	default	21:28:24.384360+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: -> 0 1 id:247 called from HALC_IOContext_ResumeIO
1418	default	21:28:24.384624+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: <- 0 0 id:247
1418	default	21:28:24.385879+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setupTargetOutputDevice setting up new device
1418	default	21:28:24.386059+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: resetInputData
1418	default	21:28:24.386511+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: setupTargetOutputDevice will match sample rate
1418	default	21:28:24.386593+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: matchOutputDeviceSampleRateNoLock
1418	default	21:28:24.386780+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: starting outputDevice
1418	error	21:28:24.386847+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 88583          HALC_ProxyIOContext.cpp:796   HALC_ProxyIOContext::StartIO: Client running as an adaptive unboosted daemon
1418	error	21:28:24.386940+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALPlugIn::StartIOProc: got an error from the plug-in routine, Error: 1852797029 (nope)
1418	default	21:28:24.387001+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: error: failed to start device 202
1418	default	21:28:24.387065+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: current input sample rate: [88200.000000] already equals output device's sample rate.
1418	default	21:28:24.393738+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: -> 0 1 id:234 called from HALC_ShellDevice::RebuildIOContext
1418	default	21:28:24.393757+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: <- 0 2 id:234
1418	default	21:28:24.393831+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_IOContext_PauseIO(234)
1418	default	21:28:24.393848+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: -> 0 2 id:234 called from HALC_IOContext_PauseIO
1418	default	21:28:24.393857+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::PauseIO: <- 0 3 id:234
1418	default	21:28:24.394444+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_IOContext_ResumeIO(234)
1418	default	21:28:24.394469+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: -> 0 3 id:234 called from HALC_IOContext_ResumeIO
1418	default	21:28:24.394483+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: <- 0 2 id:234
1418	default	21:28:24.394603+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_IOContext_ResumeIO(234)
1418	default	21:28:24.394620+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: -> 0 2 id:234 called from HALC_IOContext_ResumeIO
1418	default	21:28:24.394638+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: <- 0 1 id:234
1418	default	21:28:24.394681+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: -> 0 1 id:234 called from HALC_ShellDevice::RebuildIOContext
1418	default	21:28:24.394762+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 HALC_ProxyIOContext::ResumeIO: <- 0 0 id:234
1418	error	21:28:24.400958+0800	com.apple.audio.Core-Audio-Driver-Service.helper	 AudioObjectGetPropertyData: no object with given ID 0
1418	default	21:28:24.402124+0800	com.apple.audio.Core-Audio-Driver-Service.helper	ProxyAudio: starting outputDevice

One more strange thing I witnessed is that when I switched back to the normal built-in speaker the sound became abnormal, it had small chokes.

Do you have any suggestions?

No sound on Samsung external monitor for Apple M2 Pro chip macbook

I have followed the installation steps. I can see the proxy monitor showing up in the settings, and i can change its volume setting.

However the sound still comes out of the macbook speakers.

The display is connected to a docking station using a Display Port, and the macbook is connected to the docking station using a thunderbolt. I am not sure what the problem could be.

Help Me Understand Quality Implications & Buffer Size

Hi @briankendall , thanks for merging the fix in 1.0.7. It works now! Question about audio quality based on a Reddit comment I saw when this project was first released. Could you comment, for those of us who are audio laymen, on what effect this tool would have on audio quality and in what circumstances?

To my ears I can't tell a difference but I'm not sure I'm at the conditions where it would matter.

Same question for buffer size - how do we know what the best option is?

Change audio format

Hi @briankendall ,

First of all, congratulations on the project. It's very good and it will be very helpful to me.

One suggestion that I have is to make the audio format configurable as well. Currently I saw that it is set as Float 32bit and it cannot be changed:

Screen Shot 2020-07-24 at 12 05 13 AM

Could you help me on the process to change it to be Int 16bit instead?

If you think this could be a good addition to the project, I could submit a PR with the changes to add support for it if you give me some guidelines on the necessary changes.

Thanks,

[Enhancement] Possibility to proxy multiple devices

Hey ! First of all, thanks for this amazing project that is really helpful to me :0

I'm the developper of GoXlr-on-macos, a project written in swift & objc that aims to provide macos compatibility for the GoXlr (a usb mixer). In order to make this device fully compatible, I need to code an audio driver, that splits the channels of the goxlr !

And that's why I found your project, as it's almost exactly what I need in order to make this driver !

I opened this "issue" (as it's more a request...), to know if it's hard for you to bring the possibility to add multiple proxied devices in your driver !
For example, having a virtual device owned by the driver who proxy a audio device, and an other virtual audio device that proxies an other device !

I don't really know if it's clear, and if it's actually possible, but this would be incredible if you can do that !

Sorry (and thanks !) for the time you may take, or the time you took in this request (feel free to close it without context if it bother you xDD),
Wish you a great day,
Adélaïde Sky

Automatically switch to builtin speakers

Please make it possible to output audio to the DisplayPort when the external monitor is connected, then reroute to Builtin Speakers when disconnected and reconnect to DisplayPort again when it's reconnected.

4-channel device support

Great and super helpful project, thank you! Any possibility of adding support for isolating channels from multi-channel streams?

For context: the device I'm proxying is an aggregate device created through Audio MIDI Setup comprised of my MacBook (1 stream, 2 channels) and my monitor (1 stream, 2 channels), which I've configured to output as stereo to only the outer speakers on either device (i.e., L on monitor and R on Mac). However, when implementing the proxy to gain volume control, the audio plays through all 4 speakers.

I have no technical knowledge to know how feasible the implementation would be or what it would look like, but it would be awesome if the proxy device were able replicate the configuration of the aggregate device!

Keep having to kill coreaudio

Device: MBP 2016 TB 13,3

First, thank you for this awesome program.

Conditions:

  • Sound output device (speaker) receives signal from monitor's 3.5mm jack.
  • Monitor receive video/audio signal from MBP via HDMI (HDMI to USB-C cable)

Recreation:

  • Not playing sounds for random amount of time
  • For example, sometimes proxy-audio stops outputting when I pause a yt video for several seconds and resume.

Workaround:

  • sudo killall coreaudio each time it happens. Not 100% and sometimes need to kill it a few times for it to work again.

I'm not sure if this is unique to my setup and thought maybe I've missed something. Thanks again!

Low level built-in Microphone

Input level is very low using my built-in microphone (the slider is turned all the way up).

When I use my iPhone (type is Continuity Camera) as Input device the input level is normal.

When I uninstall PAD the issue is gone.

It doesn't work

Hello,

I tried to install with homebrew. Installation was successful.
When trying to start the program "Proxy audio device settings"
there is this :
image
All fields are disabled and no audio device is detected.
I tried to reboot the mac and also kill coreaudio, but it didn't work. I still have the same issue (as in the image above)

What did go wrong ?
I'm on Sonoma 14.1.1

Any good documentation

Thank you for the repo. New to driver development. Any good reference documentation links would be helpful.
Cheers!

Proxy Audio Device Not Found

Where is the settings app supposed to go? I tried placing it in Applications and in HAL but it shows no proxy audio device found.

Screenshot 2023-11-15 at 4 19 47 PM

Mutliple Devices

Hy Brian,

I love your software. Thank you so much!! It really helps a lot.
One question, is there any way to have multiple Proxy Devices simultaneously?
For example one for an external monitor, and one for an Audio Interface?

Cheers

PAD Settings app crashes on every first run (runs normally on second) - Mojave 10.14.6

Thank you so very much for this. This solves a very old annoyance in macOS that Apple refuses to address: the inability to use the built-in volume controls with external devices connected through HDMI and DisplayPort.

In my tests, I noticed a persistent bug in the PAD Settings app: it crashes on every first attempt of running it (after turning on, or rebooting, the computer). The system then displays a window containing a warning about the crash and the following crash log:


Exception Name: NSInvalidArgumentException
Description: *** -[__NSArrayM insertObject:atIndex:]: object cannot be nil
User Info: (null)

0 CoreFoundation 0x00007fff419602fd __exceptionPreprocess + 256
1 libobjc.A.dylib 0x00007fff6c02da17 objc_exception_throw + 48
2 CoreFoundation 0x00007fff4199f2f4 -[CFPrefsConfigurationFileSource initWithConfigurationPropertyList:containingPreferences:] + 0
3 CoreFoundation 0x00007fff4189b93c -[__NSArrayM insertObject:atIndex:] + 1216
4 AppKit 0x00007fff3f424e58 -[NSComboBoxCell insertItemWithObjectValue:atIndex:] + 105
5 Proxy Audio Device Settings 0x00000001073aa1ae Proxy Audio Device Settings + 8622
6 Proxy Audio Device Settings 0x00000001073a9bfc Proxy Audio Device Settings + 7164
7 CoreFoundation 0x00007fff41910a87 -[NSSet makeObjectsPerformSelector:] + 236
8 AppKit 0x00007fff3ee97c20 -[NSIBObjectData nibInstantiateWithOwner:options:topLevelObjects:] + 1597
9 AppKit 0x00007fff3ee95a80 loadNib + 401
10 AppKit 0x00007fff3ee94f60 +[NSBundle(NSNibLoading) _loadNibFile:nameTable:options:withZone:ownerBundle:] + 696
11 AppKit 0x00007fff3ee94ba5 -[NSBundle(NSNibLoading) loadNibNamed:owner:topLevelObjects:] + 204
12 AppKit 0x00007fff3ee94967 +[NSBundle(NSNibLoading) loadNibNamed:owner:] + 446
13 AppKit 0x00007fff3ee889d5 NSApplicationMain + 502
14 libdyld.dylib 0x00007fff6d7fb3d5 start + 1

After that first failed attempt, the app runs normally on the second one.

Please look into this bug, and please don't abandon this project. This is so useful for so many users. Unlike other solutions that may suffer with instability or high cpu consumption, this works really well.

Thank you again for the time invested into this.

Proxy microphone

Hi Brian,
How can I modify the code to proxy built-in microphone ?
I mean capture microphone data and the other application can read the data from the device of this driver.

Best Regards,
Yilin

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.