问题标签 [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 回答
1559 浏览

c++ - 写入 wav [PCM] 的音频缓冲区整数会产生高噪音

我一直在努力将数据从音频缓冲区正确写入波形文件......我已经检查了生成正弦波到 wav 文件,它工作正常。但是,将音频缓冲区数据作为 Int16 写入 wav 文件会导致持续的高白噪声。即我几乎听不到我在乐器上演奏的内容(严重失真)。使用 steinberg 的 ASIO SDK 从 ASIO 输入缓冲区获取音频缓冲区。

这是在填充每个输入缓冲区时调用的函数。缓冲区大小为 176 个样本。我将缓冲区的值从它返回的地址复制到一个名为 sound 的指针中。(如果我在没有缓冲器的情况下在这里输入正弦波,这将无噪音)

波头如下。标头可以正常工作并在正弦波中正常播放。

由 ASIO SDK 中的 GetSampleType() 指定的样本类型为 16,即 Int 16 LSB。因此,我使用 Int16 作为样本的数据类型。当使用 printf 打印样本时,它会在每个样本中给出 +25 和 -25 之间的低值(它是低值,因为在 16 位 pcm wav 中值介于 +32767 和 -32767 之间)。我不明白高噪音是如何产生的。然而,当通过 Audacity 进行分析时,文件有很多峰值,正如噪声所预期的那样。我在哪里出错了,这是一个问题吗?

编辑(已解决):

好的,我发现了错误。正如我所说,输入和缓冲区完美无缺。写入数据时出错。我之前使用 fwrite 来写入导致垃圾字节添加到文件中的缓冲区。现在我使用 ofstream 来写入数据,它就像魔术一样工作。我认为 fwrite 方法有问题。

0 投票
1 回答
3037 浏览

python - 使用 Python 实现音频低延迟

使用pygame音频播放时,我注意到高延迟(>100 毫秒):

pygame延迟的原因吗?更一般地说,是否可以使用 Python 进行低延迟音频播放?

应用示例:当 MIDI 信息从 MIDI 键盘到达时播放一些 .wav 文件。(我想编写一个非常基本的音乐采样器)。当然,延迟很大程度上取决于音频接口(ASIO 还是非 ASIO 等),但我现在想分析 Python 是否可以实现低附加延迟,如果可以,哪些模块更适合此目的。

0 投票
1 回答
1342 浏览

audio - 如何在不安装 ASIO4ALL 的情况下使用“asio4all.dll”?

如何在不安装 ASIO4ALL 的情况下使用“asio4all.dll”的功能?为了使用低延迟的音频,是否可以或必须安装 ASIO4ALL?

我正在构建一个需要低延迟音频的应用程序,如果最终用户不需要安装 ASIO4ALL,那将会很有趣。

0 投票
1 回答
4403 浏览

c# - How to record and playback with NAudio using AsioOut

I'm trying to get the sound input and send output directly with less latency possible with C#.

I'm using the library NAudio that supports ASIO for better latency.

In particular, I use the AsioOut object for recording and another for playback initialized with a BufferedWaveProvider, which is filled in a Callback function: OnAudioAvailable, which allows me to use the ASIO buffers.

The problem is that I hear the sound with various glitches and with a bit of delay. I think the problem is in the function OnAudioAvailable where the buffer is filled with data taken as input from the sound card.

Declarations:

Play procedure:

OnAudioAvailable():

AsioAudioAvailableEventArgs definition:

Does anyone know how to fix it? Thank you all.

0 投票
1 回答
3653 浏览

c# - NAudio Asio 录制和播放

我正在尝试编写自己的 VST 主机,为此我需要录制和播放来自 Asio 驱动程序的音频(在我的情况下是音频接口)。这就是我尝试使用 NAudio 的 AsioOut 的原因。

出于测试目的,我目前只是尝试记录输入,复制并将其播放到输出。

我的代码如下所示:

...

这样我就听不到任何输出了。我也试过这样:

这样我可以听到输入音量中的声音,但它非常失真。

我在这里做错了什么?

PS:我知道如何录制和播放....存在,但我无法从这个线程中得到完整的答案,只是想用 Marshall.Copy 尝试一下......

0 投票
1 回答
210 浏览

c# - 带有声音缓冲区转换的 AccessViolationException

我正在使用Naaudio AsioOut对象将数据从输入缓冲区传递到我的delayProc()函数,然后再传递到输出缓冲区。

delayProc()需要float[]缓冲区类型,这可以使用e.GetAsInterleavedSamples(). 问题是我需要将它重新转换为 multidimensional IntPtr,为此我正在使用AsioSampleConvertorclass.

当我尝试应用效果时,它向我显示一个错误:类代码上的AccessViolationExceptionAsioSampleConvertor

所以我认为问题是由于转换float[]IntPtr[]..

我给你一些代码:

OnAudioAvailable()

延迟过程()

AsioSampleConvertor

ClampToInt()

如果您需要其他代码,请询问我。

0 投票
1 回答
176 浏览

windows - 当应用程序是 64 位并使用 MSVC2012 或 MSVC2013 编译时,ASIO 在 Windows 8 下崩溃

所以我遇到了一个有趣的大麻烦……我下载了最新的 ASIO SDK,编译了主机示例,如果满足所有这些条件,它就会与几个 ASIO 驱动程序一起崩溃(或胡说八道……):

有什么想法吗?

0 投票
2 回答
12133 浏览

c# - 如何使用 NAudio 实时计算 FFT(ASIO 输出)

我正在编程吉他(小提琴)英雄的克隆作为本学年的最后一个项目。

这个想法是从我的电小提琴中获取输入,通过 FFT 对其进行分析,进行一些逻辑和绘图并通过扬声器输出。也许并行线程中的一些步骤。

我已经实现了 Asio 低延迟输入输出,但我在实现实时 FFT 时遇到了很大的问题。

这是一个设置 asioOut 和 sampleAggregator 的代码。样本聚合器应存储每次调用 AudioAvailable() 时添加的样本,并在样本数超过 fftLength 时触发 FFT 计算。

SampleAggregator 是取自NAudio fft 结果的类,给出了所有频率 C# 的强度

Asio 以 Int32LSB 样本类型输出数据。在 buf 中有从 0 到 255 的值。

这是计算 fft 时应调用的函数(从 SampleAggregator 类触发)。

但是 FFT 总是输出 NaN 作为结果。

我认为转换为浮动存在问题。

有人能指出我正确的方向吗?

EDIT_1:我将 DataAvailable() 中的循环更改为

FFT 现在输出数据。但我认为它们是不正确的。错误一定是在asio 样本和浮点值之间的转换。但是我对字节操作不太满意。

e.GetAsInterleavedSamples 能以某种方式提供帮助吗?

FFT 的原始数据样本:X:-5,304741 Y:-0,7160959 X:6,270798 Y:-0,4169312 X:-8,851931 Y:-0,4485725

我注意到,来自 FFT 的原始数据中的前几个和最后几个值在某种程度上比其他数据大。计算量级很棘手。

0 投票
0 回答
404 浏览

webrtc - WEBRTC 和 ASIO(或 NAudio)

我想向 WEBRTC 添加 NAudio 或特别是 ASIO 设备支持。

1)这可以使用NAudio来完成吗?

2)这可以使用ASIO来完成吗?

关于如何做到这一点的任何建议?

此外,这是一项要求,因此提供此功能的合同是可用的。

请指教

此致

马克贾维斯

0 投票
0 回答
358 浏览

c++ - 通过 MM_WIM_DATA 从 ASIO 驱动程序获取音频数据

我有一个 Cc++ 程序,它使用 USB 声卡记录一些数据。它在 Windows XP 下完美运行。现在我必须将其移至 Windows7。Win7 没有从该卡获取任何数据,所以我安装了 ASIO 驱动程序来解决这个问题。所以我尝试使用 Cooledit Pro 获取一些数据并且它有效。但是在我的程序中,输入数据已损坏。我正在使用流功能来获取一些数据:

不幸的是((WAVEHDR *)message.LParam) -> lpData,包括类似ЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЂЃ. 我的错误在哪里?

添加附加代码:
1)找到我的USB设备

2) 初始化这个设备

3)准备WAVEHDR

4)我也有配置设备的功能

5)启动线程,我的函数获取数据“AudioIn :: onMessage”