BlackHole

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

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

卸载

方式一:使用卸载器
  • 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、录制系统声音

  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_IconkDevice_Name
kDevice_IsHidden
kDevice_HasInput
kDevice_HasOutputkDevice2_Name
kDevice2_IsHidden
kDevice2_HasInput
kDevice2_HasOutputkLatency_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_DEFINITIONSkDriver_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 PreferencesSecurity & PrivacyPrivacyMicrophone 来确定你的 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(节日快乐!)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/522791.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Material UI 5 学习02-其它按钮组件

Material UI 5 学习02-其它按钮组件 一、IconButton按钮二、 ButtonGroup按钮组1、最基本的实例2、垂直按钮组 一、IconButton按钮 图标按钮通常适用于切换按钮&#xff0c;允许选择或选择单个选项 取消选择&#xff0c;例如在项目中添加或删除星号。 <IconButton aria-lab…

牛客小白月赛88

E.多重映射 解题思路 对集合进行整体操作&#xff0c;集合大小只增不减&#xff0c;问最后集合标号维护集合&#xff0c;考虑并查集但直接用并差集维护会有以下问题&#xff1a;当前集合变标号&#xff0c;可能会和之前标号相同&#xff0c;则进行并查集操作时&#xff0c;会接…

Windows下Node.js安装保姆级教程

一、Node.js 下载 访问Node.js官网&#xff0c;点击下载Node.js 下载完成后即可在下载文件中查看安装包 二、安装 一&#xff09;点击安装包开始安装&#xff0c;进入Weclcome界面点击Next 二&#xff09;勾选同意协议&#xff0c;点击Next 三&#xff09;根据需要选择安装路…

事务失效问题

1&#xff0c;事务方法非public修饰 由于Spring的事务是基于AOP的方式结合动态代理来实现的。因此事务方法一定要是public的&#xff0c;这样才能便于被Spring做事务的代理和增强。 2&#xff0c;非事务方法调用事务方法 Service public class OrderService {public void creat…

0201安装报错-hbase-大数据学习

1 基础环境简介 linux系统&#xff1a;centos&#xff0c;前置安装&#xff1a;jdk、hadoop、zookeeper&#xff0c;版本如下 软件版本描述centos7linux系统发行版jdk1.8java开发工具集hadoop2.10.0大数据生态基础组件zookeeper3.5.7分布式应用程序协调服务hbase2.4.11分布式…

SpringBoot整合Redis实现分布式锁

SpringBoot整合Redis实现分布式锁 分布式系统为什么要使用分布式锁&#xff1f; 首先&#xff0c;分布式系统是由多个独立节点组成的&#xff0c;这些节点可能运行在不同的物理或虚拟机器上&#xff0c;它们通过网络进行通信和协作。在这样的环境中&#xff0c;多个节点可能同…

JavaWeb笔记 --- 一JDBC

一、JDBC JDBC就是Java操作关系型数据库的一种API DriverManager 注册驱动可以不写 Class.forName("com.mysql.jdbc.Driver"); Connection Statement ResultSet PrepareStatement 密码输入一个SQL脚本&#xff0c;直接登录 预编译开启在url中 数据库连接池

git搜索历史上曾经的文本内容

文章目录 问题在命令行搜索历史内容参考 问题 我们知道&#xff0c;github有文本搜索功能&#xff1a; 比如想搜哪些文件内容包括 aaa &#xff0c;在搜索框中输入 aaa &#xff1a; 但是&#xff0c;如果是历史上曾经有过的文本&#xff0c;这个办法貌似不行。 比如文件 tes…

蓝桥杯集训·每日一题2024 (二分,双指针)

前言&#xff1a; 开学了&#xff0c;平时学习的压力也逐渐大起来了&#xff0c;不过还算可以接受&#xff0c;等到后面阶段考的时候就不一样了&#xff0c;我目前为了转专业退选了很多课&#xff0c;这些课我都需要花时间来刷绩点&#xff0c;不然保研就没有竞争力了。我自己会…

idea配置汇总【2023】最新外观配置和常规操作配置

界面 如果是IDEA请移步去其他人之前的文章看已经烂大街了&#xff0c;这是最新版的一些新功能的配置研究&#xff0c;毕竟天天看它不好看点怎么能行 ①tool windows 在新版&#xff08;不一定是当前年份的最新版&#xff09;idea中针对界面tool window有了新的优化&#xff0c…

Unity用Shader将一张图片变成描边图片素描风格。

环境&#xff1a; unity2021.3.x 效果&#xff1a; 实现核心思路(shader)&#xff1a; fixed4 frag (v2f i) : SV_Target {fixed4 col tex2D(_MainTex, i.uv);// 调整相似度bool isRedMatch abs(col.r - _TargetColor.r) < 0.15;bool isGreenMatch abs(col.g - _Target…

读《文明之光》第1册总结

人类几千年的文明史和地球的历史相比&#xff0c;实在是太短暂了&#xff0c;大约相当于几分钟和一年的关系。人类已经走过的路&#xff0c;相比今后要走的漫漫长路&#xff0c;只能算是刚刚起步。如果跳出一个个具体事件&#xff0c;站在历史的高度去看&#xff0c;我们会发现…