gitextract_t8bnn9v3/ ├── .editorconfig ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── other.md │ └── workflows/ │ └── build-test-release.yml ├── .gitignore ├── BGM.xcworkspace/ │ └── contents.xcworkspacedata ├── BGMApp/ │ ├── BGMApp/ │ │ ├── BGMApp-Debug.entitlements │ │ ├── BGMApp.entitlements │ │ ├── BGMAppDelegate.h │ │ ├── BGMAppDelegate.mm │ │ ├── BGMAppVolumes.h │ │ ├── BGMAppVolumes.m │ │ ├── BGMAppVolumesController.h │ │ ├── BGMAppVolumesController.mm │ │ ├── BGMAppWatcher.h │ │ ├── BGMAppWatcher.m │ │ ├── BGMAudioDevice.cpp │ │ ├── BGMAudioDevice.h │ │ ├── BGMAudioDeviceManager.h │ │ ├── BGMAudioDeviceManager.mm │ │ ├── BGMAutoPauseMenuItem.h │ │ ├── BGMAutoPauseMenuItem.m │ │ ├── BGMAutoPauseMusic.h │ │ ├── BGMAutoPauseMusic.mm │ │ ├── BGMBackgroundMusicDevice.cpp │ │ ├── BGMBackgroundMusicDevice.h │ │ ├── BGMDebugLoggingMenuItem.h │ │ ├── BGMDebugLoggingMenuItem.m │ │ ├── BGMDeviceControlSync.cpp │ │ ├── BGMDeviceControlSync.h │ │ ├── BGMDeviceControlsList.cpp │ │ ├── BGMDeviceControlsList.h │ │ ├── BGMOutputDeviceMenuSection.h │ │ ├── BGMOutputDeviceMenuSection.mm │ │ ├── BGMOutputVolumeMenuItem.h │ │ ├── BGMOutputVolumeMenuItem.mm │ │ ├── BGMPlayThrough.cpp │ │ ├── BGMPlayThrough.h │ │ ├── BGMPlayThroughRTLogger.cpp │ │ ├── BGMPlayThroughRTLogger.h │ │ ├── BGMPreferredOutputDevices.h │ │ ├── BGMPreferredOutputDevices.mm │ │ ├── BGMStatusBarItem.h │ │ ├── BGMStatusBarItem.mm │ │ ├── BGMSystemSoundsVolume.h │ │ ├── BGMSystemSoundsVolume.mm │ │ ├── BGMTermination.h │ │ ├── BGMTermination.mm │ │ ├── BGMUserDefaults.h │ │ ├── BGMUserDefaults.m │ │ ├── BGMVolumeChangeListener.cpp │ │ ├── BGMVolumeChangeListener.h │ │ ├── BGMXPCListener.h │ │ ├── BGMXPCListener.mm │ │ ├── Base.lproj/ │ │ │ └── MainMenu.xib │ │ ├── Images.xcassets/ │ │ │ ├── AirPlayIcon.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset/ │ │ │ │ └── Contents.json │ │ │ ├── Contents.json │ │ │ ├── FermataIcon.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── Volume0.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── Volume1.imageset/ │ │ │ │ └── Contents.json │ │ │ ├── Volume2.imageset/ │ │ │ │ └── Contents.json │ │ │ └── Volume3.imageset/ │ │ │ └── Contents.json │ │ ├── Info.plist │ │ ├── LICENSE │ │ ├── Music Players/ │ │ │ ├── BGMDecibel.h │ │ │ ├── BGMDecibel.m │ │ │ ├── BGMGooglePlayMusicDesktopPlayer.h │ │ │ ├── BGMGooglePlayMusicDesktopPlayer.m │ │ │ ├── BGMGooglePlayMusicDesktopPlayerConnection.h │ │ │ ├── BGMGooglePlayMusicDesktopPlayerConnection.m │ │ │ ├── BGMHermes.h │ │ │ ├── BGMHermes.m │ │ │ ├── BGMMusic.h │ │ │ ├── BGMMusic.m │ │ │ ├── BGMMusicPlayer.h │ │ │ ├── BGMMusicPlayer.m │ │ │ ├── BGMMusicPlayers.h │ │ │ ├── BGMMusicPlayers.mm │ │ │ ├── BGMScriptingBridge.h │ │ │ ├── BGMScriptingBridge.m │ │ │ ├── BGMSpotify.h │ │ │ ├── BGMSpotify.m │ │ │ ├── BGMSwinsian.h │ │ │ ├── BGMSwinsian.m │ │ │ ├── BGMVLC.h │ │ │ ├── BGMVLC.m │ │ │ ├── BGMVOX.h │ │ │ ├── BGMVOX.m │ │ │ ├── BGMiTunes.h │ │ │ ├── BGMiTunes.m │ │ │ ├── Decibel.h │ │ │ ├── GooglePlayMusicDesktopPlayer.js │ │ │ ├── Hermes.h │ │ │ ├── Music.h │ │ │ ├── Spotify.h │ │ │ ├── Swinsian.h │ │ │ ├── VLC.h │ │ │ ├── VOX.h │ │ │ └── iTunes.h │ │ ├── Preferences/ │ │ │ ├── BGMAboutPanel.h │ │ │ ├── BGMAboutPanel.m │ │ │ ├── BGMAutoPauseMusicPrefs.h │ │ │ ├── BGMAutoPauseMusicPrefs.mm │ │ │ ├── BGMPreferencesMenu.h │ │ │ └── BGMPreferencesMenu.mm │ │ ├── Scripting/ │ │ │ ├── BGMASApplication.h │ │ │ ├── BGMASApplication.m │ │ │ ├── BGMASOutputDevice.h │ │ │ ├── BGMASOutputDevice.mm │ │ │ ├── BGMApp.sdef │ │ │ ├── BGMAppDelegate+AppleScript.h │ │ │ └── BGMAppDelegate+AppleScript.mm │ │ ├── SystemPreferences.h │ │ ├── _uninstall-non-interactive.sh │ │ └── main.m │ ├── BGMApp.xcodeproj/ │ │ ├── project.pbxproj │ │ └── xcshareddata/ │ │ └── xcschemes/ │ │ ├── BGMXPCHelper.xcscheme │ │ └── Background Music.xcscheme │ ├── BGMAppTests/ │ │ ├── UITests/ │ │ │ ├── BGMApp.h │ │ │ ├── BGMAppUITests-Info.plist │ │ │ ├── BGMAppUITests.mm │ │ │ └── skip-ui-tests.py │ │ └── UnitTests/ │ │ ├── BGMAppUnitTests-Info.plist │ │ ├── BGMMusicPlayersUnitTests.mm │ │ ├── BGMPlayThroughRTLoggerTests.mm │ │ ├── BGMPlayThroughTests.mm │ │ └── Mocks/ │ │ ├── MockAudioDevice.cpp │ │ ├── MockAudioDevice.h │ │ ├── MockAudioObject.cpp │ │ ├── MockAudioObject.h │ │ ├── MockAudioObjects.cpp │ │ ├── MockAudioObjects.h │ │ ├── Mock_CAHALAudioDevice.cpp │ │ ├── Mock_CAHALAudioObject.cpp │ │ └── Mock_CAHALAudioSystemObject.cpp │ ├── BGMThreadSafetyAnalysis.h │ ├── BGMXPCHelper/ │ │ ├── BGMXPCHelperService.h │ │ ├── BGMXPCHelperService.mm │ │ ├── BGMXPCListenerDelegate.h │ │ ├── BGMXPCListenerDelegate.m │ │ ├── Info.plist │ │ ├── com.bearisdriving.BGM.XPCHelper.plist.template │ │ ├── main.m │ │ ├── post_install.sh │ │ └── safe_install_dir.sh │ ├── BGMXPCHelperTests/ │ │ ├── BGMXPCHelperTests-Info.plist │ │ └── BGMXPCHelperTests.m │ ├── OptimizationProfiles/ │ │ └── BGMApp.profdata │ └── PublicUtility/ │ ├── BGMDebugLogging.c │ ├── BGMDebugLogging.h │ ├── CAAtomic.h │ ├── CAAutoDisposer.h │ ├── CABitOperations.h │ ├── CACFArray.cpp │ ├── CACFArray.h │ ├── CACFDictionary.cpp │ ├── CACFDictionary.h │ ├── CACFNumber.cpp │ ├── CACFNumber.h │ ├── CACFString.cpp │ ├── CACFString.h │ ├── CADebugMacros.cpp │ ├── CADebugMacros.h │ ├── CADebugPrintf.cpp │ ├── CADebugPrintf.h │ ├── CADebugger.cpp │ ├── CADebugger.h │ ├── CAException.h │ ├── CAHALAudioDevice.cpp │ ├── CAHALAudioDevice.h │ ├── CAHALAudioObject.cpp │ ├── CAHALAudioObject.h │ ├── CAHALAudioStream.cpp │ ├── CAHALAudioStream.h │ ├── CAHALAudioSystemObject.cpp │ ├── CAHALAudioSystemObject.h │ ├── CAHostTimeBase.cpp │ ├── CAHostTimeBase.h │ ├── CAMutex.cpp │ ├── CAMutex.h │ ├── CAPThread.cpp │ ├── CAPThread.h │ ├── CAPropertyAddress.h │ ├── CARingBuffer.cpp │ └── CARingBuffer.h ├── BGMDriver/ │ ├── BGMDriver/ │ │ ├── BGM_AbstractDevice.cpp │ │ ├── BGM_AbstractDevice.h │ │ ├── BGM_AudibleState.cpp │ │ ├── BGM_AudibleState.h │ │ ├── BGM_Control.cpp │ │ ├── BGM_Control.h │ │ ├── BGM_Device.cpp │ │ ├── BGM_Device.h │ │ ├── BGM_MuteControl.cpp │ │ ├── BGM_MuteControl.h │ │ ├── BGM_NullDevice.cpp │ │ ├── BGM_NullDevice.h │ │ ├── BGM_Object.cpp │ │ ├── BGM_Object.h │ │ ├── BGM_PlugIn.cpp │ │ ├── BGM_PlugIn.h │ │ ├── BGM_PlugInInterface.cpp │ │ ├── BGM_Stream.cpp │ │ ├── BGM_Stream.h │ │ ├── BGM_TaskQueue.cpp │ │ ├── BGM_TaskQueue.h │ │ ├── BGM_VolumeControl.cpp │ │ ├── BGM_VolumeControl.h │ │ ├── BGM_WrappedAudioEngine.cpp │ │ ├── BGM_WrappedAudioEngine.h │ │ ├── BGM_XPCHelper.h │ │ ├── BGM_XPCHelper.m │ │ ├── DeviceClients/ │ │ │ ├── BGM_Client.cpp │ │ │ ├── BGM_Client.h │ │ │ ├── BGM_ClientMap.cpp │ │ │ ├── BGM_ClientMap.h │ │ │ ├── BGM_ClientTasks.h │ │ │ ├── BGM_Clients.cpp │ │ │ └── BGM_Clients.h │ │ ├── DeviceIcon.icns │ │ ├── Info.plist │ │ └── quick_install.sh │ ├── BGMDriver.xcodeproj/ │ │ ├── project.pbxproj │ │ └── xcshareddata/ │ │ └── xcschemes/ │ │ ├── Background Music Device.xcscheme │ │ └── PublicUtility.xcscheme │ ├── BGMDriverTests/ │ │ ├── BGM_ClientMapTests.mm │ │ ├── BGM_ClientsTests.mm │ │ ├── BGM_DeviceTests.mm │ │ └── Info.plist │ └── PublicUtility/ │ ├── CAAtomic.h │ ├── CAAtomicStack.h │ ├── CAAutoDisposer.h │ ├── CABitOperations.h │ ├── CACFArray.cpp │ ├── CACFArray.h │ ├── CACFDictionary.cpp │ ├── CACFDictionary.h │ ├── CACFNumber.cpp │ ├── CACFNumber.h │ ├── CACFString.cpp │ ├── CACFString.h │ ├── CADebugMacros.cpp │ ├── CADebugMacros.h │ ├── CADebugPrintf.cpp │ ├── CADebugPrintf.h │ ├── CADebugger.cpp │ ├── CADebugger.h │ ├── CADispatchQueue.cpp │ ├── CADispatchQueue.h │ ├── CAException.h │ ├── CAHostTimeBase.cpp │ ├── CAHostTimeBase.h │ ├── CAMutex.cpp │ ├── CAMutex.h │ ├── CAPThread.cpp │ ├── CAPThread.h │ ├── CAPropertyAddress.h │ ├── CARingBuffer.cpp │ ├── CARingBuffer.h │ ├── CAVolumeCurve.cpp │ └── CAVolumeCurve.h ├── CONTRIBUTING.md ├── DEVELOPING.md ├── Images/ │ ├── FermataIcon.tex │ ├── VolumeIcons.tex │ ├── generate_icon_pngs.sh │ └── iconizer.sh ├── LICENSE ├── LICENSE-Apple-Sample-Code ├── MANUAL-INSTALL.md ├── MANUAL-UNINSTALL.md ├── README.md ├── SharedSource/ │ ├── BGMXPCProtocols.h │ ├── BGM_TestUtils.h │ ├── BGM_Types.h │ ├── BGM_Utils.cpp │ ├── BGM_Utils.h │ └── Scripts/ │ └── set-version.sh ├── TODO.md ├── build_and_install.sh ├── package.sh ├── pkg/ │ ├── Distribution.xml.template │ ├── ListInputDevices.swift │ ├── README.md │ ├── pkgbuild.plist │ ├── postinstall │ └── preinstall └── uninstall.sh