Submix notes

Why macOS has no volume mixer, and the four real ways to get per app volume

macOS has no per-app volume mixer because Core Audio's hardware layer has no concept of a single process's output stream. Here is the Core Audio reason, what changed in macOS 14.2, and the four real ways to get per app volume today.

On this page

macOS gives you one output device and one volume slider, and that is the entire story. System Settings, then Sound, controls the machine, not the app. Windows has shipped a per app slider since Windows 7. macOS never has, and the absence is not an oversight. Core Audio's hardware layer has no concept of a single process's output stream the way Windows does, so nothing beneath Sound settings can turn one app down on its own. Apple opened a narrow door in macOS 14.2, a process tap, and every app that now offers per app volume, mine included, is built on it.

Taperlark makes Submix. This post names other apps, including free ones. Prices and version numbers were checked on the date shown and link to each developer's own page. If we got something wrong about your app, email support@taperlark.com and we will fix it and say what changed.

I build Submix. Nothing here is a benchmark: this post contains no measurements, and where a number appears it comes from the app's own code, from a vendor's published page, or from Apple's documentation, and it says which. Product behaviour describes Submix as it builds today. Facts about other apps were checked on 23 July 2026. More on the app itself lives on the Submix blog.

What Windows gives you that macOS never has

A volume mixer, for readers who have never opened one

Windows has had a per app volume mixer since Windows 7, built into the OS and one click off the speaker icon in the taskbar. Every app currently making sound gets its own slider there: Spotify at 40 percent, a browser muted, a game at full volume, each independent of the others and of the master level.

Sound settings on a Mac stops at the whole machine

Open System Settings, then Sound, and you get an output picker, an input picker, and one slider. That slider moves everything at once: music, a call, a game, a system alert, all together. No per app row hides behind an Advanced toggle, and no secret Option click reveals one. What Sound settings shows you is exactly what macOS tracks about audio at the process level. Nothing.

There is no seat for this in Core Audio

Windows gives each app its own volume; the Mac hardware layer does not

Windows treats a running program's output as its own audio session, with a volume that belongs to the session rather than the shared mix. Core Audio's hardware abstraction layer has never had an equivalent object. What lives there is devices, streams and mix stages, not a handle tied to one process's output. A slider needs something to grab onto, and Core Audio gave outside developers nothing at the process level to grab.

Audio MIDI Setup builds a bigger pipe, not a mixer

Tucked inside Applications then Utilities, it lets you combine physical outputs into one logical device. A Multi-Output Device duplicates one signal across every device in the set. An Aggregate Device merges several devices' channels into one. Neither looks inside a single app's stream, because both sit one level below any given program, the wrong level for a control meant to follow one process around.

The change macOS 14.2 actually made

Sonoma 14.2 put a hook into the layer that had none. The entry point is a process tap, created by calling AudioHardwareCreateProcessTap against a CATapDescription that names one process by its Core Audio object id. Wrap that tap in a private aggregate device and you get something new: a device whose only job is carrying one app's audio, isolated from anything else the machine is playing. Submix targets macOS 14.2 as its floor for this reason, building for arm64-apple-macosx14.2 with no fallback path. On Sonoma 14.1 or older, Submix does not work, and neither does any other mixer built the same tap based way, because the API underneath it simply is not there yet. That is not true of the whole list below, though. An app's own built in volume control has never depended on any Core Audio API at all, and Background Music's driver based approach predates the process tap by years: its README states plainly, "Requires macOS 10.13+" (Background Music project README, checked 23 July 2026).

Four ways to get there, and what each one costs you

One. Turn it down inside the app itself

The free option that needs no download: plenty of apps ship a volume control of their own, sitting in Settings or Preferences. If the loud app happens to be one of them, you are already finished. This only works when the app bothered to build the control. Most never do, which is why a whole category of Mac utilities exists.

Two. Install a virtual device and make it the default

Background Music takes the oldest route here. Kyle Neideck's project installs its own virtual audio driver, BGMDriver, and asks you to set it as your default output, so every app's sound lands there before Background Music mixes it and hands the result to your real hardware. It is free and open source under GPLv2 or, at your option, any later version (project README and GitHub license metadata, checked 23 July 2026). Its README calls itself "still in alpha," and under its own known issues heading states that volume above 50 percent on one app can cause clipping, and that only two channel stereo output is supported (checked 23 July 2026). It also requests microphone permission for a reason unrelated to listening to you: the README says it gets your system audio from its own virtual input device, which macOS classifies as a microphone regardless of what is recorded (checked 23 July 2026).

Three. Trade an admin password for a plug in

SoundSource goes through a plug in instead. On macOS 14 and later, Rogue Amoeba's own ARK plug in performs the audio capture and routing, and the company states plainly that ARK has to be installed for SoundSource to work at all (Rogue Amoeba support documentation, checked 23 July 2026). Rogue Amoeba's documentation also states that installing or updating it needs the Mac's administrator password, and that the app separately needs two permission grants, System Audio Access and Microphone Access for ARK (Rogue Amoeba support documentation, checked 23 July 2026). Rogue Amoeba lists a mature feature set behind that: per app volume, per app output redirection, and a 10 band equalizer with Audio Unit support (rogueamoeba.com, checked 23 July 2026). That costs $49 USD one time, with a $25 USD upgrade for existing SoundSource 5 or 4 owners (rogueamoeba.com, checked 23 July 2026). One correction worth making plainly: this is not a 14 day trial. Rogue Amoeba documents that after 20 minutes, noise is overlaid on any audio being adjusted, and relaunching resets it (Rogue Amoeba support documentation, checked 23 July 2026). The 14 days belongs to the refund policy instead, case by case (Rogue Amoeba refund policy, checked 23 July 2026).

Four. Tap the process instead of rerouting the machine

The fourth route is what macOS 14.2 made possible: reach into the one process you care about instead of rerouting everything. FineTune, a free and open source mixer by Ronit Singh, is built on Apple's Core Audio process tap APIs together with aggregate devices, and its repository contains no audio server plug in, kernel extension or system extension. That is my own finding from reading its source, not a claim the project makes about itself (source inspection, checked 23 July 2026). Submix works the same way, and it is the approach I chose to build. Each controlled app gets its own tap, created with a CATapDescription scoped to that process and marked private, wrapped in a private aggregate device whose main sub device is your real output. An IOProc on that aggregate reads a gain value, multiplies every sample by it, and tracks the peak in the same loop so the meter costs nothing extra. Nothing in that chain installs a driver, kernel extension, or system extension. If you also need one app sent to a specific output device rather than just turned down, Submix does that too, covered separately in a piece on sending one app to a different output.

Every option on this list shares three costs

A purple dot you cannot turn off

macOS shows a purple recording indicator in the menu bar whenever an app captures audio through the system, and everything here that reaches into another app's stream trips it in some form. Rogue Amoeba documents that the indicator is entirely controlled by Apple, and that hiding it is not currently possible (Rogue Amoeba support documentation, checked 23 July 2026). Background Music is a partial exception: its own release notes for version 0.5.0 state that it now stops processing audio when nothing is playing, specifically so its microphone indicator will not show at those moments, and that it still shows while audio is actually playing (Background Music v0.5.0 release notes, checked 23 July 2026). Submix needs the same permission, macOS Audio Recording, and because there is no public way to check for it in advance, it resolves a private symbol inside TCC.framework with dlopen and dlsym, falling back to a short, unmuted capture probe if that symbol cannot be found. The permission check and the fallback probe behind it are covered in full elsewhere. The permission text is set at build time and reads, word for word: "Submix reads app audio so you can set each app's volume independently. Nothing is recorded, saved, or sent." I did not soften that copy for this post.

Some audio no tap can reach at all

There is a category of playback a tap was never going to see. A tap works by observing what another process is already rendering to a device, and content built to protect itself from other processes is not going to hand over its decoded samples just because a tap asked politely. I have not found an Apple page that states this in language I can quote, so I am not attributing a sentence to Apple here. What I can give you is the shape of the constraint, which follows from what a tap actually is, not from any test I ran.

One more pass before your audio reaches the speaker

Submix builds one tap per controlled app inside a private aggregate device whose main sub device is your real output, and that adds a callback the signal was not taking before. The cost is not zero. I have not published a number for it, because I have not measured one, and a figure invented to sound thorough would be worth less to you than this sentence. It runs once per sample, for every app you are actively adjusting rather than leaving alone.

Two things Submix does not do, said plainly

Submix keeps per app volume, mute, live meters, per app output routing and boost genuinely working, and I would rather list what does not survive a restart than let you find out the hard way. Per app volumes and mute states live in an in memory dictionary the source comments as session only, with no disk persistence, so quitting Submix or logging out clears every adjustment you made. Set Chrome to 40 percent today, and tomorrow it starts back at 100. Boost is a straight linear multiply capped at 2.0x, with no limiter, soft knee, or clipping protection in the path, so a channel already near full scale will clip, because the only guard in that chain sits on the gain value, not on the samples it produces. Neither is a bug I have not gotten to yet. Both are the shape of the feature as it ships.

Which one is actually right for you

If the loud app already has its own volume control, use it and skip the rest of this post. Want simultaneous output to two speakers without controlling apps independently? That is a Multi-Output Device, not a mixer, and it costs nothing. If a free driver based mixer works for you, stereo limit and alpha label included, Background Music is real. Need the deepest feature set and do not mind an admin password and a purple dot? SoundSource is a mature, paid product from a company that has built Mac audio tools for years. The tap based approach without paying is FineTune, free and built the same way Submix is. I built Submix for that approach, with the restore behaviour and the interface I wanted myself, and I sell it because getting that right took real work, not because the other three are wrong for everyone who is not me.

Questions people ask

Does macOS have a volume mixer like Windows?

No. System Settings, then Sound, controls the whole machine through one slider and a device picker. There is no per app equivalent anywhere in it, and there never has been.

Can Audio MIDI Setup give me per app volume?

No, Audio MIDI Setup cannot do this. It builds Multi-Output and Aggregate Devices, which combine or duplicate whole devices, and neither one looks inside a single app's audio stream, so neither can give you a slider for one app.

Why do I need to give an audio app microphone permission?

Because macOS classifies system audio capture under the same permission category it uses for the microphone, kTCCServiceAudioCapture. An app reading another app's output through a tap, or through a virtual input device the way Background Music does, needs that grant even though your actual microphone is never involved.

Is there a free way to do this?

Yes, in some cases. A loud app with its own slider is free and instant. Background Music is a free driver based mixer, with the stereo limit and the alpha status noted above. FineTune is a free tap based mixer, built the newer way.

Will Apple ever add this natively?

I do not know, and I will not guess a roadmap I have no visibility into. The process tap, the API third party developers now build on, has only existed since macOS 14.2, which suggests Apple has been building toward something here rather than ignoring it.

Does per app volume add latency?

Every approach here adds a render pass somewhere between the app and your speaker, whether that pass lives in a virtual driver, a plug in, or a tap's IOProc. None of the vendors named in this post publish a latency figure, and I have not published one for Submix either, because I have not measured one and will not invent one to fill the question.

If option four is the one you are after, here is what Submix actually gives you.

Changelog: 23 July 2026, first publish.

  • SoundSource 6 is a trademark of Rogue Amoeba Software, LLC.
  • FineTune is a trademark of Ronit Singh.
  • Background Music is a trademark of Kyle Neideck.

Taperlark is not affiliated with, endorsed by, or sponsored by any of these companies.

Back to Submix