Live data from Hacker News

BlackHole Audio Driver

github.com

21–30 of 68 posts

Re: BlackHole Audio Driver

#21

>BlackHole is a modern MacOS virtual audio driver that allows applications to pass audio to other applications with zero additional latency. I don't think this is quite true. Each time the signal path crosses into the BlackHole Audio Server Plugin, it suffers an additional `AudioServerPlugInIOCycleInfo::mNominalIOBufferFrameSize` amount of latency.

That's not true of JACK, and it would be both a shame and little bit silly if Blackhole hasn't learnt from JACK's design. JACK doesn't use a pattern of server->client->server->client->server, each client wakes up the next one, so the pattern is server->client->client->client->server, with zero additional latency.

Indeed, but what you describe isn’t possible with Audio Server Plugins on macOS. Something similar is possible with CoreAudio Audio Units, but that’s a separate thing.

Re: BlackHole Audio Driver

#22

I hope this works for my usecase, as everything I have attempted so far either results in silence or completely mangled audio. All I want on my M1 is to be able to screen record my Zoom calls(full desktop recording) outside of the Zoom application itself. This is because I want to, as a general review tool for myself, be able to refer back to meetings. My memory has gone to hell in recent years. I want to be able to…

Just start QuickTime Player and choose New Screen Recording, surely?

That won’t capture the system audio.

Re: BlackHole Audio Driver

#23

I hope this works for my usecase, as everything I have attempted so far either results in silence or completely mangled audio. All I want on my M1 is to be able to screen record my Zoom calls(full desktop recording) outside of the Zoom application itself. This is because I want to, as a general review tool for myself, be able to refer back to meetings. My memory has gone to hell in recent years. I want to be able to…

Just start QuickTime Player and choose New Screen Recording, surely?

Will that capture audio though?

Re: BlackHole Audio Driver

#24
This is cool. Will have to compare it with the rogue amoeba software. If you are looking for a commercial alternative they have audio hijack and loopback which are excellent and latency free.

Re: BlackHole Audio Driver

#25

>BlackHole is a modern MacOS virtual audio driver that allows applications to pass audio to other applications with zero additional latency. I don't think this is quite true. Each time the signal path crosses into the BlackHole Audio Server Plugin, it suffers an additional `AudioServerPlugInIOCycleInfo::mNominalIOBufferFrameSize` amount of latency.

That's not true of JACK, and it would be both a shame and little bit silly if Blackhole hasn't learnt from JACK's design. JACK doesn't use a pattern of server->client->server->client->server, each client wakes up the next one, so the pattern is server->client->client->client->server, with zero additional latency.

How does JACK handle audio devices linked in a cycle?

Re: BlackHole Audio Driver

#27

Earlier quoted context omitted.

That's not true of JACK, and it would be both a shame and little bit silly if Blackhole hasn't learnt from JACK's design. JACK doesn't use a pattern of server->client->server->client->server, each client wakes up the next one, so the pattern is server->client->client->client->server, with zero additional latency.

How does JACK handle audio devices linked in a cycle?

https://github.com/jackaudio/jack1/blob/master/jackd/engine....

Re: BlackHole Audio Driver

#28
post #24

This is cool. Will have to compare it with the rogue amoeba software. If you are looking for a commercial alternative they have audio hijack and loopback which are excellent and latency free.

They also issue frequent and timely updates. Their tools rely on a low level audio tool called ACE which also gets updated regularly.

Re: BlackHole Audio Driver

#29
post #26

Based on a quick scan through the code, there are a lot of mutexes there, e.g. for reference counts, that could be replaced with atomics.

Also based on a a quick scan: the mutex appears to be used for other state in the plugin.

For better performance and stability they should consider changing the mutex to an os_unfair_lock and maybe find a way to avoid dispatch_async to a global queue. And I’m not convinced the locking is correct around/within the dispatch_async blocks. But it might be fine.

Re: BlackHole Audio Driver

#30

Earlier quoted context omitted.

How does JACK handle audio devices linked in a cycle?

https://github.com/jackaudio/jack1/blob/master/jackd/engine....

Ironically, that code is the biggest bug in JACK1 (and is replicated, I think, in JACK2).
Post reply on HN