问题标签 [asio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
722 浏览

delphi - Delphi 多声道声卡 (ASIO)

我根本找不到任何关于 Delphi 的信息以及使用多通道外部声卡的任何示例,最好是通过 ASIO 协议。

我确实找到了一些 ASIO 信息,但它们没有任何帮助,因为所有信息都是为​​不同的用途提供的。

我需要实现的是:

- 让我的应用程序通过已安装的设备驱动程序识别外部 USB/FW 声卡;-列出可用的输出通道(目的不需要输入通道,尽管有关于这些的信息不会受到伤害......) -使用所需的输出通道,以便我可以将一些数据/音频发送到每个单独控制的通道

主要目标是向每个输出通道发送不同级别的音频,可以是噪音、嗡嗡声、固定频率调制波或任何东西……。这样做的需要是,因为我需要在声卡的音频 VU 表上显示通过 UDP 接收到应用程序本身的数据;我没有接收到实际的音频信号,而只是每个通道的音频电平数据。该级别需要转换为实际的音频级别,然后发送到声卡;

任何帮助,将不胜感激!

最好的,

M。


编辑:

直接问题:

如何通过安装的设备驱动程序访问外部多声道声卡,并向每个可用声道发送不同的音频流?

有没有在 Delphi 应用程序中使用 ASIO 和多通道外部声卡的有用示例?

0 投票
1 回答
9660 浏览

python - 支持 ASIO 的多通道 PyAudio

我正在尝试在 Win7 上使用 PyAudio 连接 PreSonus AudioBox 1818VSL,但是一次录制超过 2 个通道(立体声)时遇到了一些问题。PreSonus 驱动程序创建了许多立体声输入音频设备(例如立体声通道 1&2、3&4 等)和一个 18 输入通道 ASIO 设备。我可以毫无问题地从任何立体声设备录制。为了最大限度地减少超过 2 个通道的延迟和记录,我正在尝试使用 ASIO 设备。

我一直在使用来自http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio的 PyAudio 版本,它编译了对 ASIO、DS、WMME、WASAPI、WDMKS 的支持。

调用pyaudio_handle.is_format_supported()显示 ASIO 设备支持 44.1、48 和 96 kHz 的 8 到 32 位数据。

下面是返回的字典pa.get_device_info_by_index(32)

下面是我用来创建 PyAudio 输入流的代码。回调函数只是将数据推送到一个列表中并返回pyaudio.paContinue,直到我得到我想要的样本数量,然后它才返回pyaudio.paComplete

尝试以高于 44.1 kHz 的速率初始化 ASIO 驱动程序会导致 PyAudio 挂起而不返回。以 44.1 kHz 初始化会产生以下错误:IOError: [Errno Unanticipated host error] -9999.

您可以提供解决此错误的任何帮助都会有所帮助。在 Win7 上运行时,我什至会证明 ASIO 可以在 PyAudio 中使用 > 2 个通道。谢谢。

0 投票
3 回答
5593 浏览

c++ - C++ ASIO,访问缓冲区

我没有音频编程经验,而且 C++ 是相当低级的语言,所以我对它有一点问题。我使用从http://www.steinberg.net/en/company/developers.html下载的 ASIO SDK 2.3 。

我正在根据 SDK 中的示例编写自己的主机。

现在我已经设法完成了整个样本,看起来它正在工作。我有外部声卡连接到我的电脑。我已经成功地为这个设备加载了驱动程序,配置了它,处理了回调,将数据从模拟转换为数字等常见的东西。

我现在卡住的部分:当我通过我的设备播放一些曲目时,我可以看到混音器(设备的软件)中的条形移动。所以设备以正确的方式连接。在我的代码中,我选择了带有在混音器中移动的条形名称的输入和输出。我还使用 ASIOCreateBuffers() 为每个输入/输出创建缓冲区。

  1. 如果我错了,现在纠正我:当调用 ASIOStart() 并且驱动程序处于运行状态时,当我将声音信号输入到外部设备时,我相信缓冲区已充满数据,对吗?

  2. 我正在阅读文档,但我有点迷茫 - 如何访问设备发送到应用程序、存储在 INPUT 缓冲区中的数据?还是信号?我需要它来进行信号分析或将来记录。

编辑:如果我让它变得复杂,那么简而言之,我的问题是:如何从代码访问输入流数据?我在文档中看不到任何让我这样做的对象/回调。

0 投票
1 回答
291 浏览

c# - NAudio:重用现有的 AsioOut 实例来播放文件队列是否安全?

在查看 NAudio AsioOut 类时,似乎很明显,每次通过输出播放新文件时,实例都会被销毁和重新创建。如果实例已经有源流,则 Init 方法会专门抛出 InvalidOperationException。通常,在正常情况下处理和重新创建 Asio 输出不是问题,但是,在一种情况下,我想避免这样做,因为我将输出发送到设置为 Asio 驱动程序的卷积器。每次初始化驱动程序时,它都必须重新加载一个大型卷积滤波器,因此在播放无间隙曲目时,延迟很烦人。

为了避免延迟,我有一个想法,如果 AsioOut 实例已经存在就不要处理它,并且队列中下一个文件的位深度和采样率与上一个文件相同。问题是我必须在 AsioOut 类上调用 Init 以将下一个要播放的文件传递给它,这将引发上述异常。如果我确保文件之间的位深度、采样率和输出通道数没有改变,那么更改 Init 方法以避免抛出异常是否安全?

谢谢,艾伦

0 投票
2 回答
1548 浏览

audio - 如何使用 PortAudio 将交错缓冲区解析为不同的多通道缓冲区

希望你能帮我 :)

我正在尝试使用 PortAudio 库从多通道 ASIO 设备获取音频数据。一切正常:我设法将默认主机 API 设置为 ASIO,并且我还设法选择了 4 个特定通道作为输入。然后,我得到一个听起来正确的交错音频流,但我想分别获取每个通道数据。

PortAudio 允许进行非交错录制,但我不知道如何编写或修改我的 RecordCallBack 和多缓冲区指针(每个通道一个缓冲区)。当然我试过了...... :(

如果有人知道如何处理这个问题,那将对我有很大帮助。

原始 RecordCallBack 函数取自一个众所周知的立体声示例(稍作修改以管理 4 个通道而不是 2 个),但它管理单个交错缓冲区:

*inputbuffer 指针声明为:

调用 Open_Stream 函数:

0 投票
1 回答
506 浏览

audio - ASIO SDK如何处理音频缓冲区

所以我正在开发一些音频处理软件,我对一些 ASIO 音频处理有点困惑。从我正在阅读的内容来看,似乎在进行缓冲区切换回调时,我需要将“输入”处理为“输出”。但是如果我有不同数量的输入和输出通道呢?而且我猜如果我的输入和输出格式不匹配,我需要进行格式转换吗?

0 投票
1 回答
1061 浏览

c# - 如何使用 NAudio 和 ASIO 直接读取输入缓冲区和播放?

我对以下使用 ASIO 和 NAudio 库的 C# 代码有一点问题。

我尝试从吉他中获取声音并直接在扬声器中播放它的声音。到目前为止它有效,但声音非常失真。我在这里读到了一种解决问题的方法是:

但是,如果我这样做,缓冲区的大小会大 4 倍,因此代码将无法编译。

我已经用 asio4all 和 MAUDIO 卡试过了;这对他们俩来说都是同样的问题。

0 投票
1 回答
1101 浏览

c# - 如何使用 ASIO 和 Naudio 将音频捕获保存在 wav 文件中?

到目前为止,我写道:

这部分用于使用 ASIO 捕捉和播放吉他的声音。到目前为止没有问题。

问题出现在方法addInputToStream中,声音很好地放在了.wav文件中,但文件中有很多“音频寄生虫”。很烦人。i我在调用该方法时尝试将变量更改为未使用Convert.ToSingle但结果相同。

我怀疑 of 有问题WaveFormatwaveWriter但我不知道我错过了什么。你们中的任何人都有线索吗?

0 投票
1 回答
342 浏览

qt - 在 Qt 中编译 ASIO SDK

我正在尝试使用 Portaudio 库和 Steinberg 的 ASIO SDK 编译 Qt 项目。我设法在没有 ASIO 的情况下编译了 Portaudio,但是在使用这两个库时,我得到了 7 个这样的错误(具有不同的功能):

我仔细遵循了这些说明:http: //portaudio.com/docs/v19-doxydocs/compile_windows_asio_msvc.html,我正在使用 Qt 和 MSVS 编译器。

这是我的 .pro 文件

有人有线索吗?似乎 ASIOSDK 没有正确链接,但我不知道如何修复它。非常感谢!

0 投票
2 回答
629 浏览

c# - naudio Can't dispose of Asio when using MultiplexingWaveProvider

If I create an AsioOut and use the MultiplexingWaveProvider it works fine (plays / disposes etc..) only if I call AsioOut.Stop() before MultiplexingWaveProvider has run out of data.

If I wait until the MultiplexingWaveProvider has run out of data (and AsioOut has triggered a PlaybackStopped event) I can't Dispose of AsioOut it just hangs and never returns (no error). Note: there is no Dispose() on the MultiplexingWaveProvider, but I've tried calling dispose on the all WaveFileReaders that are used for the MultiplexingWaveProvider.