BlackHole

BlackHole是一款强大的MacOS虚拟音频驱动,允许应用程序间零延迟传递音频。文章详细介绍了安装、卸载方法,用户如何在各种音乐制作软件中使用,以及开发者的构建和定制指南,解答了常见问题和请求功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BlackHole



一、关于 BlackHole

BlackHole is a modern macOS virtual audio loopback driver that allows applications to pass audio to other applications with zero additional latency.


功能描述

  • Builds 2, 16, 64, 128, and 256 audio channels versions
  • Customizable channel count, latency, hidden devices
  • Customizable mirror device to allow for a hidden input or output
  • Supports 8kHz, 16kHz, 44.1kHz, 48kHz, 88.2kHz, 96kHz, 176.4kHz, 192kHz, 352.8kHz, 384kHz, 705.6kHz and 768kHz sample rates
  • Zero additional driver latency
  • Compatible with macOS 10.10 Yosemite and newer
  • Builds for Intel and Apple Silicon
  • No kernel extensions or modifications to system security necessary

Audio MIDI Setup


二、安装、卸载

安装

方式一:下载安装器
  1. Download the latest installer
  2. Close all running audio applications
  3. Open and install package

方式二:使用 Homebrew 安装
  • 2ch: brew install blackhole-2ch
  • 16ch: brew install blackhole-16ch
  • 64ch: brew install blackhole-64ch

卸载

方式一:使用卸载器

方式二:手动卸载

1、在终端输入以下命令,删除 BlackHole 驱动

rm -R /Library/Audio/Plug-Ins/HAL/BlackHoleXch.driver

注意:将 X 替换为你的频道: 2, 16, 或 64

文件夹的根路径是: /Library 而不是 /Users/user/Library


2、使用下面命令,在终端重启 CoreAudio

sudo launchctl kickstart -kp system/com.apple.audio.coreaudiod

更多细节可以参考:https://github.com/ExistentialAudio/BlackHole/wiki/Uninstallation

三、用户使用指南

1、Logic Pro X


2、GarageBand


3、Reaper


4、录制系统声音

  1. 设置多输出设备:https://github.com/ExistentialAudio/BlackHole/wiki/Multi-Output-Device
  2. Audio MIDI SetupAudio Devices 右键点击最新创建的 多输出设备,然后选择 使用这个设备作为音频输出。
  3. 打开 电子音频站 (DAW) ,比如 GarageBand,设置输入设备为 BlackHole
  4. 设置轨道来从 channel 1-2 输入
  5. 从其他app播放音频,在你的 DAW 中模拟或者录制

5、Route Audio Between Applications

  1. 将声卡输出设置为 BlackHole
  2. 输出音频到任意频道
  3. 打开接收的应用,设置输入设备到 BlackHole
  4. 从相应的输出频道 输入音频

四、开发指南

1、所有 non-GPLv3 项目需要许可证

请支持我们的辛勤工作和持续发展。要申请许可证 联系Existical Audio。(devinroth@existential.audio )

2、构建、安装

build 之后,安装 BlackHole

  1. 复制或移动build之后的 BlackHoleXch.driver 包到 /Library/Audio/Plug-Ins/HAL
  2. 使用 sudo launchctl kickstart -kp system/com.apple.audio.coreaudiod 重启 CoreAudio。

3、自定义 BlackHole

以下 预编译常量 可用于轻松自定义 BlackHole 的构建。

kDriver_Name
kPlugIn_BundleID
kPlugIn_Icon

kDevice_Name
kDevice_IsHidden
kDevice_HasInput
kDevice_HasOutput

kDevice2_Name
kDevice2_IsHidden
kDevice2_HasInput
kDevice2_HasOutput

kLatency_Frame_Size
kNumber_Of_Channels
kSampleRates

它们可以使用 GCC_PREPROCESSOR_DEFINITIONS 在生成 xcodebuild时指定。

示例:

xcodebuild \
  -project BlackHole.xcodeproj \
  GCC_PREPROCESSOR_DEFINITIONS='$GCC_PREPROCESSOR_DEFINITIONS kSomeConstant=value'

使用字符串时,请确保转义任何引号。


4、重命名 BlackHole

自定义 BlackHole 需要修改以下常量:

  • kDriver_Name
  • kPlugIn_BundleID (这必须符合指定的 bundleID)
  • kPlugIn_Icon

这些可以使用 xcodebuild,指定为预编译器常量,

driverName="BlackHole"
bundleID="audio.existential.BlackHole"
icon="BlackHole.icns"

xcodebuild \
  -project BlackHole.xcodeproj \
  -configuration Release \
  PRODUCT_BUNDLE_IDENTIFIER=$bundleID \
  GCC_PREPROCESSOR_DEFINITIONS='$GCC_PREPROCESSOR_DEFINITIONS
  kDriver_Name=\"'$driverName'\"
  kPlugIn_BundleID=\"'$bundleID'\"
  kPlugIn_Icon=\"'$icon'\"'

5、自定义频道, 延迟, 和 采样率

  • kNumber_Of_Channels 用于设置通道的数量。
    指定高通道数时要小心。
    尽管 BlackHole 被设计成在更高的通道数下非常高效,但你的计算机可能无法跟上。
    采样率也发挥了作用。不要对大量通道使用高采样率。
    有些应用程序不知道如何处理 高通道数。小心操作。
  • kLatency_Frame_Size 是驱动程序处理传入和传出音频的时间(以帧为单位)。
    它可用于 将黑洞内部的音频延迟至最大 65536 帧。
    如果使用具有高通道数的黑洞,这可能会有所帮助。
  • kSampleRates 设置音频设备的一个或多个采样率。
    如果使用多个采样率,则每个采样率用逗号(,)分隔。
    例如:kSampleRates='44100,48000'.。

6、镜像设备

默认情况下,BlackHole 有一个隐藏的镜像音频设备。这个设备可以使用以下常量来自定义:

// Original Device
kDevice_IsHidden
kDevice_HasInput
kDevice_HasOutput

// Mirrored Device
kDevice2_IsHidden
kDevice2_HasInput
kDevice2_HasOutput

当所有设置为真时,第二个 BlackHole 将出现,其工作原理完全相同。
输入和输出是镜像的,因此来自两个设备的输出 都流向输入的两个设备。
如果您需要一个单独的输入和输出设备,这将非常有用。

示例:

// Original Device
kDevice_IsHidden=false
kDevice_HasInput=true
kDevice_HasOutput=false

// Mirrored Device
kDevice2_IsHidden=false
kDevice2_HasInput=false
kDevice2_HasOutput=true

在这种情况下,我们有两个 BlackHole 设备。
一个将仅具有输入,另一个将只具有输出。
在项目中使用此功能的一种方法是,隐藏镜像设备并在幕后使用它。
这样,当将音频路由到他们身后的输出,用户将看到一个只输入的设备。
可以使用 kAudioHardwarePropertyTranslateUIDToDevice 访问隐藏的音频设备。


7、持续集成/持续部署

BlackHole 可以集成到您的CI/CD中。
看看 create_installer.sh 脚本来查看安装程序是如何构建、签名和公证的。

https://github.com/ExistentialAudio/BlackHole/blob/master/Installer/create_installer.sh


五、Feature Requests

如果您对以下任何功能感兴趣,请在链接的issue中留言。

若要申请未列出的功能,请创建一个新 issue。


六、FAQ

1、为什么 BlackHole 在app文件夹不显示?

BlackHole 是一个虚拟音频环回驱动器,它只在 Audio MIDI Setup, Sound Preferences 中 或其他应用中显示


2、如何在听音频的同时使用 BlackHole?

参见 Setup a Multi-Output Device.

https://github.com/ExistentialAudio/BlackHole/wiki/Multi-Output-Device


3、BlackHole 使用多少位深,我可以改变它吗?

BlackHole使用32位浮点深度,因为macOS Core Audio在系统级原生使用32位。
这提供了最广泛的兼容性和最大的音频余量。

此格式对于最多24位整数是无损的。
所有应用程序都应该能够播放和录制音频,并且不需要在 BlackHole 驱动程序级别调整比特深度。


4、如何更改多输出设备的音量?

很遗憾,macOS不支持更改多输出设备的音量,但您可以在 音频MIDI设置中 设置单个设备的音量。


5、为什么什么都没输入 BlackHole?


6、为什么使用多输出或聚合后 X分钟后会出现音频故障?

您需要为除时钟源(也称为主设备或主设备)之外的所有设备,启用漂移校正。


7、为什么安装程序失败?

某些版本的macOS存在一个已知问题,即当安装包位于某些文件夹中时,安装包可能无法安装。
如果您将 .pkg 文件下载到了下载文件夹中,请尝试将其移动到桌面并再次打开.pkg(反之亦然)。


8、哪些应用程序不适用于多输出?

不幸的是,多输出可能会有问题,有些应用程序根本无法使用它们。下面一个已知的列表。
如果发现其他不兼容的应用程序,请打开issue 进行报告: https://github.com/ExistentialAudio/BlackHole/issues

  • Apple Podcasts
  • Apple Messages
  • HDHomeRun

9、具有聚合/多输出的AirPods不工作。

AirPods的麦克风以较低的采样率运行,这意味着它不应用作聚合或多输出设备中的主要/时钟设备。
解决方案是使用内置扬声器(只需将其静音)或BlackHole 2ch作为主要/时钟设备。
BlackHole 16ch将不能作为初级,因为初级需要2ch。

更多详情可见:https://github.com/ExistentialAudio/BlackHole/issues/146


10、我可以将 BlackHole 集成到我的应用程序中吗?

BlackHole 根据GPL-3.0获得许可。只要您的应用程序也获得GPL-3.0许可,您就可以使用BlackHole。

对于其他应用,请联系: Existential Audio directly


伊织 译 2024-03-08(节日快乐!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程乐园

请我喝杯伯爵奶茶~!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值