BlackHole
文章目录
- BlackHole
- 一、关于 BlackHole
- 功能描述
- 二、安装、卸载
- 安装
- 方式一:下载安装器
- 方式二:使用 Homebrew 安装
- 卸载
- 方式一:使用卸载器
- 方式二:手动卸载
- 三、用户使用指南
- 1、Logic Pro X
- 2、GarageBand
- 3、Reaper
- 4、录制系统声音
- 5、Route Audio Between Applications
- 四、开发指南
- 1、所有 non-GPLv3 项目需要许可证
- 2、构建、安装
- 3、自定义 BlackHole
- 4、重命名 BlackHole
- 5、自定义频道, 延迟, 和 采样率
- 6、镜像设备
- 7、持续集成/持续部署
- 五、Feature Requests
- 六、FAQ
- 1、为什么 BlackHole 在app文件夹不显示?
- 2、如何在听音频的同时使用 BlackHole?
- 3、BlackHole 使用多少位深,我可以改变它吗?
- 4、如何更改多输出设备的音量?
- 5、为什么什么都没输入 BlackHole?
- 6、为什么使用多输出或聚合后 X分钟后会出现音频故障?
- 7、为什么安装程序失败?
- 8、哪些应用程序不适用于多输出?
- 9、具有聚合/多输出的AirPods不工作。
- 10、我可以将 BlackHole 集成到我的应用程序中吗?
一、关于 BlackHole
BlackHole is a modern macOS virtual audio loopback driver that allows applications to pass audio to other applications with zero additional latency.
- github : https://github.com/ExistentialAudio/BlackHole
- 下载安装器:https://existential.audio/blackhole/?pk_campaign=github&pk_kwd=readme
- Dicord : https://discord.gg/y8BWfnWRn
- 捐助:https://github.com/sponsors/ExistentialAudio
功能描述
- 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
二、安装、卸载
安装
方式一:下载安装器
- Download the latest installer
- Close all running audio applications
- Open and install package
方式二:使用 Homebrew 安装
- 2ch:
brew install blackhole-2ch
- 16ch:
brew install blackhole-16ch
- 64ch:
brew install blackhole-64ch
卸载
方式一:使用卸载器
- Download BlackHole 2ch Uninstaller
- Download BlackHole 16ch Uninstaller
- Download BlackHole 64ch Uninstaller
方式二:手动卸载
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
- Logic Pro X to FaceTime
- Logic Pro X to Google Meet
- Logic Pro X to Skype
- Logic Pro X to Zoom
2、GarageBand
- GarageBand to FaceTime
- GarageBand to Google Meet
- GarageBand to Skype
- GarageBand to Zoom
3、Reaper
- Reaper to Zoom by Noah Liebman
4、录制系统声音
- 设置多输出设备:https://github.com/ExistentialAudio/BlackHole/wiki/Multi-Output-Device
- 在
Audio MIDI Setup
→Audio Devices
右键点击最新创建的 多输出设备,然后选择 使用这个设备作为音频输出。 - 打开 电子音频站 (DAW) ,比如 GarageBand,设置输入设备为
BlackHole
- 设置轨道来从 channel 1-2 输入
- 从其他app播放音频,在你的 DAW 中模拟或者录制
5、Route Audio Between Applications
- 将声卡输出设置为
BlackHole
- 输出音频到任意频道
- 打开接收的应用,设置输入设备到
BlackHole
- 从相应的输出频道 输入音频
四、开发指南
1、所有 non-GPLv3 项目需要许可证
请支持我们的辛勤工作和持续发展。要申请许可证 联系Existical Audio。(devinroth@existential.audio )
2、构建、安装
build 之后,安装 BlackHole
- 复制或移动build之后的
BlackHoleXch.driver
包到/Library/Audio/Plug-Ins/HAL
- 使用
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。
- Sync Clock with other Audio Devices in development see v0.3.0
- Output Blackhole to other Audio Device
- Add Support for AU Plug-ins
- Inter-channel routing
- Record Directly to File
- Configuration Options Menu
- Support for Additional Bit Depths
六、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?
- 检查
System Preferences
→Security & Privacy
→Privacy
→Microphone
来确定你的 DAW 应用有麦克风访问。 - 检查
Audio MIDI Setup
中 BlackHole 输入和输出的音量是否一直在上升。 - 如果您使用的是多输出设备,由于macOS的问题,必须启用内置输出,并将其列为多输出中的顶级设备。更多详情可见:https://github.com/ExistentialAudio/BlackHole/wiki/Multi-Output-Device#4-select-output-devices
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(节日快乐!)