A simple macOS menu bar application that allows you to control the volume of your selected output device, including Aggregate Devices, right from your menu bar.
If you use an Aggregate Audio Device on macOS, you might have noticed that the standard volume keys don't always work. This utility provides a volume slider and media key support for any output device, including aggregate ones. It also allows you to quickly switch between your available output devices.
- Menu Bar Access: A convenient icon in your macOS menu bar.
- Device Discovery: Automatically detects all available audio output devices.
- Device Switching: Quickly change your default output device from the list.
- Volume Control: A slider to control the volume of the currently selected device.
- Media Key Support: Use your keyboard's volume up, down, and mute keys.
- Simple & Lightweight: Built with native AppKit and CoreAudio for minimal resource usage.
You can download the latest pre-built version from the Releases page. Simply download the .zip file, extract it, and move AggregateVolumeMenu.app to your /Applications folder.
If you prefer to build the application yourself, follow these steps.
- macOS
- Xcode
-
Clone the repository:
git clone https://github.com/gurhanpolat/AggregateVolumeMenu.git cd AggregateVolumeMenu -
Open the project in Xcode:
open AggregateVolumeMenu.xcodeproj
-
Run the application:
- Select the
AggregateVolumeMenuscheme and a target ofMy Mac. - Click the "Run" button (or press
Cmd+R). - The application icon will appear in your menu bar.
- Select the
The application is built using Swift and leverages two core macOS frameworks:
- AppKit: Used to create the menu bar icon (
NSStatusItem) and the dynamic menu with its sliders (NSSlider) and checkboxes (NSButton). - CoreAudio: This is the low-level framework used to interact with the system's audio hardware. The
AudioDeviceManager.swiftclass contains the logic to:- Query the system for all available audio output devices.
- Get and set the volume and mute state for a given device, including aggregate devices.
- Set the system's default output device.
The app also subclasses NSApplication to intercept media key presses (volume up, down, mute) and applies those changes to the currently selected default output device.
Contributions are welcome! Feel free to open an issue to report a bug or suggest a feature, or open a pull request with your improvements.
This project is open-source.