(评论)
(comments)

原始链接: https://news.ycombinator.com/item?id=40270219

该用户经常使用 Blackhole 进行音频制作任务,特别是声音设计。 虽然现代音频接口可能提供环回,但包括 DirectSound 在内的旧 API 缺乏录制所需的低延迟稳定性。 由于对 API 和 ABI 进行了广泛的测试和审查,用户发现 Windows 在向后兼容性方面具有优越性。 然而,优先考虑遗留支持可能会增加潜在安全威胁的脆弱性。 该用户在升级后过渡到 Apple Silicon,分享了他们的延迟体验和涉及 Traktor、Ableton Live 和 RME Babyface 的设置。 他们的延迟测量显示整个过程大约有 33.8 毫秒。 此前,物理环回在 Traktor 和 Ableton 之间提供了稳定的连接,显示出稍高的延迟。 用户发现了利用内置扬声器作为时钟源的技巧,消除了当前设置中偶尔遇到的噼啪声问题。 尽管用户在虚拟活动期间使用了 StreamDeck 或 elgato 等工具来实现视频循环和硬件控制选项,但视频路由不存在同等功能。 此外,用户还使用 BlackHole 和 OBS 在戴着耳机进行视频通话期间录制音频和屏幕。 BlackHole 的重要性在于其能够将音频输出从一个应用程序传输到另一个应用程序,从而为各种应用程序(包括实时媒体流)提供增强的控制和灵活性。 尽管最近的进步包括通过较新版本的 macOS 中的屏幕录制来本地捕获系统音频,但 MacOS 中缺乏本机系统音频录制功能促使了对 BlackHole 的需求。 总之,BlackHole 是多媒体制作流程的一个有价值的补充,特别是在处理需要在不同程序之间无缝音频传输的复杂设置时。

相关文章

原文


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.


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.



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.



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.



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.


Ditch the Aggregate devices for a start ( yes it’s expensive running a lot of inputs or outputs on a proper system, and you don’t take advantage of all the interfaces built into gear). Uninstall Blackhole and spend the money on Rogue Amoeba stuff.

Buy audio interfaces with good drivers (e.g. RME, Lynx, Metric Halo or even MOTU AVB stuff and stay away from Antelope - they have problems), install, plugin and away you go.



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.



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.


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.


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.



On Linux it's
    pacmd load-module module-loopback
Last Halloween we hired a fortune teller and I used this with some ladspa plugins and my tts to rig up a self signups from cellphone thing. When the fortune teller pressed the button the next in line was announced in a scary voice over the whole home audio system. After the music decreased in volume of course!


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.



It's worth noting you do have to downgrade security permissions for Loopback, but not for BlackHole: https://rogueamoeba.com/support/knowledgebase/?showArticle=A...

I use Loopback and BlackHole both, although for different reasons/setups. I guess it's more an artifact of the surrounding macOS environment at the conception of each project. BlackHole's first commit was September 2019, while Loopback was released in 2016 (but also shares its capture engine with Audio Hijack, and its 1.0 release was 2002!)



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.



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.



>There's nothing specific to Spotify.

Well suited doesn't meant designed for, and that's not the implication.

The thread of this conversation is why someone might use Audio Hijack instead of a no-cost alternative (of which there are many.)

I'm suggesting that Audio Hijack makes it very easy to rip music from free music services such as Spotify. Thus providing a reason why someone might choose to pay for Audio Hijack rather than the no-cost option.

It's much tidier to have a set of pre-sorted (and if one is clever, pre-named and tagged) output files rather than having one long audio output that would require time to sit and divide up manually.



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.


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.


I haven't experimented with lowering these numbers in maybe two years, but I use BlackHole to route 8 channels from Traktor to Ableton Live (all four decks in stereo as external outputs). I have one big aggregate device with my internal speakers for clock, the BlackHole bridge, and an original RME Babyface for the physical output.

Looks like I have Traktor set to 192 samples @ 44khz. It's showing "4.4 ms processing + 17.6ms output = 22.0 ms" in its UI.

Ableton is set to 128 samples, and showing "Input Latency 4.72 ms, Output Latency 6.05 ms, Overall Latency 10.8 ms".

So maybe 33.8 ms in the whole pipeline? Although I throw audio signal across the room via the Babyface's optical out to a cheap optical -> RCA box, so that's probably adding a little more to my physical environment.

I've had this same Traktor/Live setup going for a long, long time. At one point I even used a physical loopback with the Babyface's optical out/in carrying 8 channels between Traktor and Ableton. That was sadly better than any software available before BlackHole. It was solid, although a bit higher latency, and it's nice to be able to use the optical out for its intended purpose!

I used to get very occasional crackle this BlackHole setup, until I tried a random tip of using the built-in speakers as the clock source on an aggregate device. It's been rock solid since. I could probably lower sample buffers even further these days (M3 Max)...



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/



Unfortunately, no, OBS handles video only, no audio comes through the camera. It's really frustrating, I have wanted to do some more complicated audio setups on a Windows PC (specifically bridging two calls on different platforms together, I know the latency would be bad), but you have to use the VB CABLE proprietary driver, of which you can only have one for free, or try playing with Voicemeeter (same company with old, proprietary software). I have tried Synchronous Audio Router, but I couldn't get it to work after hours of pressing buttons.

On Mac, I can just buy Rogue Amoeba software, and on Linux, I can just run some commands or download a GUI to route audio around however I want.



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.



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.


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.



You make sure you are wearing the same clothing as the recorded video loop. Use something like a stReamdeck to have hardware buttons that let you toggle to a live webcam. Elgato even has a foot pedal version that works great.


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.



It's probably just me, but the video in these video calls is mostly a waste of bandwidth, I am never paying attention to the bobbing heads in the screen. My point being, I, for one, would not notice very quickly if the person speaking was just a loop of someone looking interested, I sort of want to do this myself, OBS is probably the key, when called to speak you could switch scenes to the live feed.

I did some research into using ffmpeg as a sort of live network based video router and compositor, My conclusion was that it would work. however my heart was set on actual transparent rgba video and support for that was finicky.



> It's probably just me, but the video in these video calls is mostly a waste of bandwidth, I am never paying attention to the bobbing heads in the screen

"People and culture" departments would argue that it creates a sense of belonging and cohesion to the team.



Over the pandemic, I used this and OBS with a USB HDMI capture dongle attached to my Nintendo Switch to host Jackbox Party Pack nights with friends over Zoom. Such a great tool!


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



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!


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?


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)



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.



> 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.



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?



> 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)



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!



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.


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.


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.



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.



> 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.



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.


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


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.)



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.



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.



It lets you use the audio output of one program as the audio input of another program in arbitrary ways. A handy tool for live media like streaming- maybe I want my game and music to be streamed, but not my notifications or my A/V tech's voice in my ear. For audio production you can also wire the output of one music creation tool into the input of another.


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.


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.


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.


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.



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.



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



yes, but fair use should let you do it.

maybe the same thing happens with audio, but there's no drm knowledge/support so they didn't implement any of it.

联系我们 contact @ memedata.com