Mixer and extras

Two outputs from one player: what you hear, and what OBS records, with a level of its own each. Plus an ad blocker and a sleep timer.

…

Virtual mixer

Takes the music through an audio graph with two independent outputs. The element's own volume keeps working, it sets the level going into the mixer, and each bus below has its own device, level and mute on top of it.

The mixer output, the music as its own source in OBS

The app publishes the stream bus on a port of its own. Two things follow from that: while the mixer is on, the music no longer plays on the system output at all, so OBS's Desktop Audio can no longer hear it, and OBS gets it only if you add this address as a source. Nothing else on the machine sees it, because nothing else is playing it.

0 source(s) connected 0 kbit/s 0 frames published off

Why publish instead of install a device? Windows only lets a signed kernel driver add an audio endpoint, that is what VB-Cable and VoiceMeeter install, and no application can do it for itself. Publishing does the same job without a driver, without administrator rights and without an install, and it behaves the way you asked: nothing else picks the music up, and OBS gets it only when somebody adds this address. If you do have a virtual cable installed, the mixer above can use it as a bus as well.

OBS audio tracks, and where the music should sit

OBS mixes every source into one live mix, track 1, and that is what chat hears. The other tracks (2–6) are not the stream: they are extra channels written into a recording. A source is put on them in Advanced Audio Properties, and a track you have not ticked in Settings → Output is simply not in the file.

That is what makes the music separable later. Put this output's source on track 2, and the recording has the music on a channel of its own: you can hand YouTube the file with the music intact and still mute just that track if a claim turns up, or upload a version with no music at all by dropping track 2, while chat, listening live, never noticed a thing.
The steps, once:
1. Switch the virtual mixer on (the music leaves the system output, so Desktop Audio stops hearing it) and switch this output on.
2. In OBS: Sources → + → Browser, paste the address above, size it as small as you like, it is audio, not video. (Media Source with the /mixer/audio address also works if a browser source gives you trouble.)
3. Right-click that source → Advanced Audio Properties → tick Track 2.
4. Settings → Output → Audio Track: tick the tracks your recording should write, and Settings → Advanced → Audio → Tracks to name them.
If you would rather keep the music on the Desktop Audio you already have, you need none of this: use the Monitor bus alone.

Ad blocker

Drops requests to ad and ad-tech hosts, and keeps YouTube's own ad break out of the stream: muted for the break, and its skip button clicked once. No client spoofing and no patching the player, which is what usually breaks playback.

0 requests blocked 0 ad breaks seen 0 muted 0 skipped no ad break

Off by default, and it will not defeat every ad: YouTube serves some of them through the same endpoints as the video itself. It also cannot help a free account's audio ads the way Premium does, muting is all that is left for those, and muting is what it does.

Sleep timer

Fades the music out and pauses it, whichever of the app’s two players is making the sound, so a stream ends the way a person would end it.

off

Wiring this into OBS

The stream bus is a real output device, so OBS records it however it records any other device, and nothing else on your machine has to move.

Easiest, with a GoXLR, Voicemeeter or any second output: set the stream bus to that device's Music channel, then add an Audio Output Capture (or the GoXLR's own OBS plugin/loopback) for that channel. The music is then its own source in the VOD, with its own fader, and the game and your mic are untouched.
Or the strictest isolation: set the stream bus to a virtual audio cable and add that cable's input as an Audio Input Capture, the music is then a track of its own that nothing else can bleed into.
Or no routing at all: leave the mixer off and use OBS's Application Audio Capture on this app's window. That needs no device, but it captures whatever the app plays, so the mixer's two levels are not available to it.

Whatever you choose, Test tone on a bus plays a short beep out of that bus's device, 440 Hz for the monitor, 880 Hz for the stream, so you can hear which fader it landed on without guessing.