[HN Gopher] BlackHole: macOS Audio Loopback Driver
___________________________________________________________________
BlackHole: macOS Audio Loopback Driver
Author : ckcheng
Score : 279 points
Date : 2024-05-06 01:16 UTC (21 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| RCitronsBroker wrote:
| you're awesome!! I'll test if i can ditch loopback by rogue
| amoeba for your piece of software :)
| ckcheng wrote:
| Not mine! Just sharing what I found. I was looking for an
| alternative to rogue amoeba's loopback too
| naikrovek wrote:
| Why would you want to ditch Loopback?
| deeblering4 wrote:
| Because of price gouging. $100 for basic audio routing is
| absurd, and they'll hit you up again eventually for upgrades.
| naikrovek wrote:
| That's fair. It isn't cheap, but they're the only ones I
| know of who can route things around and mix them together
| without a DAW or some other utility running.
|
| MacOS doesn't even have per application volume control,
| which is a crazy thing to say for the OS aimed at audio
| professionals (at least as far as I know.)
| crazygringo wrote:
| The lack of per-application volume is annoying I agree,
| as a consumer.
|
| But I don't think that's a feature requested by audio
| professionals. They're working within applications, not
| playing audio from multiple apps at the same time. And it
| would be _extremely_ annoying to discover that your DAW
| output volume had accidentally somehow been set to 90%
| and you hadn 't realized it. I mean, mixing is done with
| visual decibel meters, but a lot still depends on little
| details that are above or below the threshold of hearing,
| which an application-level volume control would mess
| with.
| naikrovek wrote:
| I'm pretty sure MacOS could easily have a built-in master
| audio mixer _and_ a setting on that mixer labeled
| "bypass", which gives the current MacOS behavior of "no
| master audio mixer."
|
| I can't believe that only a few people have ever asked
| for a way to mute an app entirely.
|
| I grow weary of excuses around the lack of a built-in
| feature for this. "Apple doesn't want to do it" is the
| only reason.
| barbariangrunge wrote:
| If you use it and need it, you'll get a lot more than $100
| worth of value from it. It's not price gouging, it's just a
| small company making enough money to stay in business. They
| arent sustaining themselves off advertising and your data
| like big tech
| cpuguy83 wrote:
| The whole thing is, it's not basic. Loopback does things
| that Blackhole cannot, granted it requires a kernel
| extension.
|
| But if Blackhole does what you need, that's awesome!
| infotainment wrote:
| I'm glad to see this! So many posts online still cheerfully
| suggest using SoundFlower for this purpose, which doesn't work
| with M1 Macs.
| wdb wrote:
| Is this a free alternative for Audio Hijack / Loopback?
| tomduncalf wrote:
| Yes, depending on what you need it for. It does require a bit
| more setup though.
| ravenstine wrote:
| For Loopback, partially. Not so much for Audio Hijack.
|
| I still use Loopback because I like the interface it gives you.
| If I remember correctly, BlackHole doesn't provide a GUI.
| deeblering4 wrote:
| Why not? You can create multi-output audio devices in macos,
| say blackhole and your speakers and use that multi-output
| device as the input in the recorder.
| cpuguy83 wrote:
| I don't recall exactly my issues, but definitely found some
| things that didn't work this way.
|
| It's also a pain to set things up this way (compared to
| loopback or hijack).
| ravenstine wrote:
| Not throwing shade on Blackhole. You can accomplish a lot
| with it. And yes, technically, it can do most if not all of
| what Loopback does. I just like the experience of using
| Loopback more than having to use the built-in MIDI setup in
| macOS, which I always find a bit confusing.
|
| Oh, actually, now I remember why I bought Loopback in the
| first place. I couldn't figure out how to map a single
| stereo input channel to both left and right channels with
| Blackhole, but Loopback makes that very easy. Maybe it's
| possible to do with Blackhole, but I'll happily pay to not
| feel like a confused old man when all I want to do is
| record audio the way I expect.
|
| In the case of Audio Hijack, one might as well save the
| money and go with Blackhole instead of Loopback.
|
| And in any case, as much as I normally embrace FOSS, Rogue
| Amoeba makes high quality software that's worth paying for,
| so I'm not champing at the bit to replace them.
| RulerOf wrote:
| > And in any case, as much as I normally embrace FOSS,
| Rogue Amoeba makes high quality software that's worth
| paying for, so I'm not champing at the bit to replace
| them.
|
| I tried really hard to get my desired audio setup to work
| with stock Mac OS features, but it was just... not good.
|
| I have two Apple Monitors flanking both sides of a larger
| display with terrible speakers. I wanted to split
| left/right between the two Apple monitors. With Audio
| Midi Setup, I got it to work, but then I couldn't adjust
| the volume with the soft keys.
|
| I installed Loopback and Soundsource. Everything just
| worked, and it was very easy to configure. The price was
| a little high, but I'm not really the target customer.
| Was worth it to not have to put bulky speakers on my
| desk.
| vmfunction wrote:
| Hmm on first look, it looks like Audio MIDI Setup App [1].
|
| Then again it looks like patch bay. Then isn't there already:
| QjackCtl, and that works with mac/win/linux?
|
| links:
|
| 1: https://www.macobserver.com/tmo/article/audio-midi-setup-
| you...
| danek_szy wrote:
| The screenshot you've looked at _is_ the Audio MIDI Setup
| App... It just shows that there 's Blackhole as an output ;)
| thedanbob wrote:
| Technically JACK runs on macOS but last time I checked (a year
| ago) it doesn't really work and other software doesn't support
| it anyway.
| p0w3n3d wrote:
| Offtopic: I love Audio MIDI Setup for the Multi-Output Device and
| the possibility of connecting two Bluetooth headphones to one
| laptop. Is there a similar thing for Windows or Linux?
| andrelaszlo wrote:
| Yeah, in Linux with Pulse
| https://unix.stackexchange.com/a/443064
|
| There might be other ways to do it depending on your
| distribution, for example https://askubuntu.com/q/78174
| jchw wrote:
| Many Linux distributions have moved to Pipewire as the default
| audio daemon in recent years. With Pipewire, you can use
| Qjackctl or Qpwgraph to edit how devices route to eachother
| using a visual graph. Pipewire has the distinct advantage that
| it works with tools for both the PulseAudio daemon and the JACK
| daemon simultaneously, so you can typically combine things you
| might do with either.
|
| Unfortunately, I don't think there's a good UI that exposes
| both a graph view _and_ a way to create virtual devices for
| more advanced routing, however there is very rich support for
| advanced routing:
|
| https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Vir...
|
| So there's probably no direct analogue, as at best you'll
| probably need to run some commands to get a device to combine
| streams for you, and _then_ you can hook it in using Qpwgraph.
|
| Pipewire also handles video devices and graphs too.
|
| If you ever want to try this with a proper audio interface,
| you'll also want to switch the audio interface into Pro Audio
| mode most likely. It's a profile that can be selected
| (typically in whatever handles your volume settings, e.g.
| pavucontrol)
| swah wrote:
| Do you look at the code / line count when you open a project like
| this?
|
| I have this "hard time" imagining what the X thousands lines of
| code do. Even more when the piece of software claims to be
| simple. I would have to devote months to really understand it, I
| guess, and "cure" this "superficialitis" (tendency to think
| everything is 50 lines of code)
|
| I guess compilers are the only "kind" of project I can imagine a
| few complex parts.
| ehutch79 wrote:
| I just looked at the code. It's mostly just handling events and
| conditions a driver would need to handle just to be a
| functional driver.
|
| I don't think you could write any driver in 50 lines of code?
| cqqxo4zV46cp wrote:
| This has "I could build Slack in a weekend" energy.
| swah wrote:
| Yes, this is what I mean, how to get better at this etc.
| exe34 wrote:
| The best way to cure this is to write something in 50 lines
| to show the world how it's done, and wager a large donation
| to e.g. the trump election campaign if you leave a public
| ticket unfixed for more than a week. As soon as you try to
| interface with other people's workflows and needs, the 50
| lines turn into thousands very quickly.
| naikrovek wrote:
| "The devil is in the details", as they say.
| Aurornis wrote:
| > I would have to devote months to really understand it, I
| guess, and "cure" this "superficialitis" (tendency to think
| everything is 50 lines of code)
|
| You wouldn't have to spend months understanding it, but you
| also wouldn't be able to glance at the code for 5 minutes and
| understand everything that needs to happen.
|
| Anything that handles driver or system level operations and
| deals with audio will get complex quickly. What happens when
| the input device gets unplugged? The output device disconnects?
| User changes from speakers to AirPods?
|
| How do you handle situations where the input and output sample
| rate are different? What about when something backs up and a
| buffer overflows? Or underflows? What mechanism do you use for
| handling user setting changes?
|
| The list of situations you have to handle goes on and on. The
| core concept is simple, but there are so many things to do that
| the code base will naturally become bigger than the 50 lines of
| code you're imagining.
| duped wrote:
| > I guess compilers are the only "kind" of project I can
| imagine a few complex parts.
|
| What's so hard about a compiler? You read some files, split
| into tokens, sort into a tree, and then walk the tree and write
| some instructions to disk at each node. Can be done in a couple
| hundred lines of code. (\s: the point is that all software gets
| complicated, and a few thousand lines is not a lot of code)
| 1123581321 wrote:
| Skimming or folding to only show the names of the functions
| might make it easier to grok. For example, there are about 75
| OSStatus messages this driver supports.
|
| There are a ton of case statements; each one represents a
| situation that must be supported.
|
| 3500 lines goes quickly when you divide it by a few hundred
| situations/statuses.
|
| As comments in another discussion tree have said, it's a shame
| that macOS doesn't provide some of this natively. If it did
| then this would probably be higher level code and shorter.
| Knowing where the boundary lies between the system and the
| application is part of having an understanding of why all this
| was written.
|
| I wouldn't feel bad about this; it's just a domain knowledge
| thing. Be excited by the opportunity to learn with a toy
| project or a deep code review!
| meindnoch wrote:
| A large amount of the code is the C boilerplate for
| implementing the object graph needed by audio system. You'll
| see that basically every function is a huge switch-case.
| kristiandupont wrote:
| I've been using this for years to route audio between DAW's. Once
| it's set up, it runs flawlessly.
| deeblering4 wrote:
| How is the latency for you? I know blackhole is advertised as
| 0ms itself, but I always found that crossing virtual devices
| incurred the input/output latency of the daw itself.
| kristiandupont wrote:
| Yeah, I always adjust for that. I don't remember how much
| exactly but definitely noticeable.
| jcelerier wrote:
| not if you use JACK (available on macOS) or PipeWire (not)
| vouaobrasil wrote:
| That is very nice. I've been looking for something like this.
| It's useful in the case where you want to do a tutorial with an
| application that produces sound, but you want to talk at the same
| time. The best solution before would be to plug a 3.5mm cable
| into an audio interface that accepts this sort of input, and then
| record at the same time. The problem is that then you cannot do
| small cuts in real-time as easily as if you are recording
| directly into a DAW with audacity, and plus it gives you the
| possibility of using real-time effects with your DAW.
|
| Good for streaming also, without needing to use OBS, which is hit
| and miss when it comes to some things.
| cpuguy83 wrote:
| Rogue Amoeba provides some really great software if BlackHole
| isn't enough for you. Loopback and Audio Hijack in particular.
| naikrovek wrote:
| I feel like Loopback would be enough for anyone. You can do
| everything I've ever needed to do, and I had some hare-
| brained ideas during the pandemic.
| dmix wrote:
| Audio Hijack is good if you want to add some VST plugin
| processing.
|
| A good usecase is having a nice mic for your Zoom calls or
| Youtube videos and doing basic noise filtering, compression
| and limiting on it w/o having to run a full DAW in the
| background.
|
| Otherwise Loopback does everything else like piping
| specific sound sources from one app to another, without the
| rest of system audio.
| quitit wrote:
| Some Audio Hijack features seem unusually well suited to
| stealing music from Spotify.
|
| For example one can have a free spotify account, then
| Audio Hijack is a few clicks from saving the music with
| automatic file splitting between tracks.
| computerdork wrote:
| I use Amoeba too, really nice piece of software:)
| quitit wrote:
| I'm pretty sure Rogue Amoeba are the reason why Apple doesn't
| ship with one by default.
| imvetri wrote:
| Idea: feed the meeting audio using this to a black mass. A
| singularity program that converts words into action.
| imvetri wrote:
| Idea: feed this to a recurrent neural network
| lucascacho wrote:
| I've personally been using a nifty piece of software called VB-
| Cable, which basically does the same thing. Creates a software
| audio output as well as an audio input, which you can then use
| across different applications.
|
| I personally use it to route my studio mic input through OBS,
| where I apply some filtering, to then be able to use it with
| different VoIP software.
|
| https://vb-audio.com/Cable/
| unshavedyak wrote:
| I always want this but for Midi, and cross platform. Working on
| multiple platforms with audio equipment is so annoying to a
| casual user hah.
| jonhohle wrote:
| Do you need additional software for this? Can't you use OBS as
| a webcam[0] and take its audio source? (I haven't tried, but
| that's how I'd approach it if I was going to).
|
| 0 - https://obsproject.com/kb/virtual-camera-guide
| grishka wrote:
| This is what I've been using since upgrading to M1 because
| SoundFlower I used on my previous Mac is a kernel extension and
| installing those on Apple Silicon is a mess.
| eigenvalue wrote:
| SoundFlower is a total nightmare to install and remove, causes
| huge problems and then requires hours of work to remove
| completely.
| grishka wrote:
| As is pretty much anything that comes in a .pkg, to be
| honest. It's kinda bonkers that you need third-party apps to
| (attempt to) cleanly uninstall things.
| AndrewStephens wrote:
| Does anything similar exist for video? There have been meetings
| I've wished I could route a loop of my face looking alert and
| interested to Zoom instead of a live camera feed Mission-
| Impossible-style.
| jonhohle wrote:
| The issue is there is no standard for video out from a single
| application (except that apps window buffer).
|
| That said, OBS has a "camera" mode where it will present itself
| as a camera. Anything you can do in OBS (including playing a
| video) can be sent to anything that takes camera input.
| corytheboyd wrote:
| +1 for OBS virtual camera, works like a charm. Haven't tried
| the fake meeting presence idea yet though :p
| evilduck wrote:
| What's your plan for getting called on by others to speak?
| dylan604 wrote:
| Just start speaking. The surrealism would be amazing. Just
| tell them there's clearly something wrong with Zoom. Everyone
| will buy it.
|
| Also, it's just yet another reason that I'm so happy my Zoom
| meetings do not require a camera feed. There's just something
| Orwellian to me about having to have a camera on me. Having a
| camera on _me_ is my absolute nightmare regardless of the
| purpose of the camera.
| ndiddy wrote:
| I think it's unacceptable that a third-party driver is necessary
| to record system audio on Mac. Both Windows and Linux have been
| able to natively record system audio for at least 20 years now. I
| consider it a basic required feature for something like
| screencasting.
| duped wrote:
| > I consider it a basic required feature for something like
| screencasting.
|
| That's why MacOS provides this in ScreenCaptureKit
| jahnu wrote:
| Can that record the system audio too? I mean not just the
| microphone like in Quicktime.
| duped wrote:
| Yes, microphone access is through CoreAudio.
| ScreenCaptureKit is for capturing system video and audio.
|
| I haven't used it personally but that's my understanding of
| why it exists. Otherwise there's no point to sending audio
| through it.
| plorkyeran wrote:
| It was vastly overdue, but macOS shipped a native solution for
| screen recording with audio in macOS 12 and you no longer need
| BlackHole for that. BH is still useful for more advanced uses,
| but they're mostly the sort of thing where it's not jarringly
| weird that they require some third-party software.
| salzig wrote:
| Last time I checked QuickTime was still not able to. Did I
| miss something?
| dmix wrote:
| I checked and seems to be just Microphone (or other audio)
| input w/ QuickTime when recording sceengrab videos or
| recording just audio.
| redundantly wrote:
| This is correct. And if you use a headset it won't pick
| up the general system sounds. Used it for an IEP call
| last week and found out afterwards the only audio it
| picked up was my own. Pretty frustrating.
| jxramos wrote:
| yah, I just recently made the purchase for BlackHole
| because I couldn't get the system sounds otherwise. Great
| little project!
| cududa wrote:
| I really could have sworn that around 2017 there was a way to
| do this built in, but it went away pretty quickly. Or I just
| imagined that
| KingOfCoders wrote:
| But then again Windows has no native web cam multiplexing. One
| app has the camera, and no one else can use it. That app
| crashes and you need to reboot Windows.
|
| One would think in the edge of remote work, an operating system
| would bring a virtual web cam driver.
|
| I used ManyCam but they cheated me out of a lifetime license.
| causi wrote:
| Is there any major company that's respected a "lifetime
| license" for more than five or ten years? Every one I've
| bought was eventually reneged on.
| meindnoch wrote:
| >I think it's unacceptable that a third-party driver is
| necessary to record system audio on Mac.
|
| Good news: it's not. At least not from macOS Ventura onwards.
| m463 wrote:
| Wonder if it's like taking a screenshot of video on mac.
|
| They don't want you to be able to do that.
|
| (you get a blank area where the video is)
| adamomada wrote:
| You sure it isn't DRMed video? It's the same on all platforms
|
| I'm not at my computer to check, but if this really is true,
| use VLC to get screen grabs from videos
| 12bits wrote:
| Something like this should be default in MacOS. I use blackhole
| daily in my audio production and sound design practices. If you
| use a modern audio interface you might have a loopback available
| there.
| directmusic wrote:
| macOS 14.2 implemented something like this in Core Audio, but
| it is not user facing (and also documented extremely poorly).
| You can create a "Tap" that can capture audio from a particular
| application, or subset of applications, or an output device.
| This can then be added to a private or public Aggregate Device
| (depending on the Tap being private or public).
|
| https://developer.apple.com/documentation/coreaudio/4160724-...
| spencersolberg wrote:
| I think the Windows equivalent of this software is Synchronous
| Audio Router: https://github.com/eiz/SynchronousAudioRouter
|
| I also find it interesting that all of the examples are for
| routing DAWs to video call apps. Don't these apps have screen
| sharing and wouldn't that be higher quality than using the
| microphone input?
| TylerE wrote:
| Usually the idea is to record DAW audio seperately, so when you
| go back and actually edit the video you're not limited to
| whatever horrible 64Kbps compression algo the video call uses.
|
| Plus you'll often want to be using some sort of mixer to mix in
| a vocal/talk mic also.
| roody15 wrote:
| This is an awesome program highly recommend. Used to be called
| Soundflower back in the day but BlackHole works better and works
| with new M series Mac's. Awesome!
| jahnu wrote:
| And you can pair this with Element [1] to do nice routings.
|
| For example, in my live sets I send 8 separate audio channels
| from Ableton Live via a miniDSP optical interface [2] to my music
| partner's audio interface who does fx and live mixing.
|
| When I'm working on the sets without him I don't have the midiDSP
| audio device plugged in and Ableton get's annoying. So I set up a
| routing in Element from BlackHole 8 track to mix down to stereo
| and my usual stereo output without having to remap my channels in
| Ableton. Just switch output devices.
|
| [1] https://kushview.net/element/
|
| [2] https://www.minidsp.com/products/usb-audio-interface
| dmix wrote:
| is Element like Apples MainStage?
| https://www.apple.com/mainstage/
| m_a_g wrote:
| Recently, I had to record a video call (both audio and my screen)
| while wearing headphones. Using OBS and BlackHole together was
| the only option I could find at the time.
| djtriptych wrote:
| Essential part of my home studio audio stack (Serato / Ableton /
| OBS / BlackHole / Aggregate/Multi-output devices in Audio MIDI
| setup).
|
| Agree with others in this post that it's WAY too hard to get a
| stable stack on OSX and that a tool like BlackHole should be
| standard in the OS.
| TylerE wrote:
| If you think the situation is bad on Mac, you e never had to
| fight with ASIO on Windows.
|
| On Mac stuff basically just works.
|
| On Windows ASIO works with only ASIO, and doesn't allow the OS
| to use the card for "regular" sound unless the device-specific
| driver allows for it.
|
| Edit: Or in most cases for two ASIO applications to use the
| same soundcard at the same time. So you end up needing to
| install a virtual loopback anyway, losing out on the
| (theoretical) latency benefits of ASIO.
| com2kid wrote:
| It is unfortunate, the old windows media stack had a nice
| drag and drop UI that let you connect different inputs and
| sinks together in all sorts of weird and cool ways. Back when
| I used Windows 2000 I was able plug a game console into a
| capture card and split the audio and video inputs so they
| both went out over streaming video and were visible/audible
| on my local machine.
|
| Not that anyone cared about watching live streamed video game
| footage back in 2001 or so.
| TylerE wrote:
| The problem with the old apis (and this includes
| directsound) is that they are incapable of stabling running
| at low latency, which is crucial for recording.
| duped wrote:
| > WAY too hard to get a stable stack on OSX
|
| compared to what?
| jxramos wrote:
| for me Windows is the king in backwards compatibility. I get
| the sense they expend significant resources doing testing in
| this space and scrutinizing ABIs and APIs and all that. They
| don't want to disturb the developer ecosystems with bedrock
| changes.
| philistine wrote:
| Well, I'm sorry to report we've had the first breach in
| that policy in ... well forever!
|
| https://www.theverge.com/24148033/satya-nadella-microsoft-
| se...
| jxramos wrote:
| ah what a conundrum, pitting legacy over security that's
| a big tradeoff decision. Those mostly seems like
| independent topics but I wonder if the deeper you go in
| maximizing legacy support the more vulnerable you make
| your systems in falling for security lapses of some kind.
| I wonder if these two things tangle in unforeseen ways
| deep beneath the surface.
| duped wrote:
| Not for audio. Do you use DirectSound, ASIO, WASAPI?
|
| On MacOS there is CoreAudio, and it's been there for two
| decades.
| atoav wrote:
| Yeah, but with each MacOS Update your expensive hardware
| might become as useful as a brick.
|
| I have a audiointerface from 2002 that I can plug into my
| windows machine and it runs. The same interface worked on
| Mac, once.
| djtriptych wrote:
| compared to how easy I think it should be =)
|
| - Seriously though trying to understand audio midi setup from
| docs was pretty awful. - I've had a bunch of (mostly DJ)
| equipment refuse to connect with newer macs as they keep
| changing their security model. - Managing/fighting latency
| took a lot of experimentation (for me anyway). - The
| soundflower / blackhole stuff can be a pain until you've
| stitched everything together once or twice.
| ErneX wrote:
| Nitpick: it's macOS since 2016 :)
| wakeleaver wrote:
| Using BlackHole also fixes any awful audio popping in
| Rosetta/legacy apps, since Apple can't seem to figure that out.
| xyst wrote:
| This is how I record all of my work meetings, especially when I
| need to CYA
___________________________________________________________________
(page generated 2024-05-06 23:01 UTC)