问题标签 [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.
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 方法有问题。
python - 使用 Python 实现音频低延迟
使用pygame
音频播放时,我注意到高延迟(>100 毫秒):
是pygame
延迟的原因吗?更一般地说,是否可以使用 Python 进行低延迟音频播放?
应用示例:当 MIDI 信息从 MIDI 键盘到达时播放一些 .wav 文件。(我想编写一个非常基本的音乐采样器)。当然,延迟很大程度上取决于音频接口(ASIO 还是非 ASIO 等),但我现在想分析 Python 是否可以实现低附加延迟,如果可以,哪些模块更适合此目的。
audio - 如何在不安装 ASIO4ALL 的情况下使用“asio4all.dll”?
如何在不安装 ASIO4ALL 的情况下使用“asio4all.dll”的功能?为了使用低延迟的音频,是否可以或必须安装 ASIO4ALL?
我正在构建一个需要低延迟音频的应用程序,如果最终用户不需要安装 ASIO4ALL,那将会很有趣。
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.
c# - NAudio Asio 录制和播放
我正在尝试编写自己的 VST 主机,为此我需要录制和播放来自 Asio 驱动程序的音频(在我的情况下是音频接口)。这就是我尝试使用 NAudio 的 AsioOut 的原因。
出于测试目的,我目前只是尝试记录输入,复制并将其播放到输出。
我的代码如下所示:
...
这样我就听不到任何输出了。我也试过这样:
这样我可以听到输入音量中的声音,但它非常失真。
我在这里做错了什么?
PS:我知道如何录制和播放....存在,但我无法从这个线程中得到完整的答案,只是想用 Marshall.Copy 尝试一下......
c# - 带有声音缓冲区转换的 AccessViolationException
我正在使用Naaudio AsioOut对象将数据从输入缓冲区传递到我的delayProc()
函数,然后再传递到输出缓冲区。
delayProc()
需要float[]
缓冲区类型,这可以使用e.GetAsInterleavedSamples()
. 问题是我需要将它重新转换为 multidimensional IntPtr
,为此我正在使用AsioSampleConvertor
class.
当我尝试应用效果时,它向我显示一个错误:类代码上的AccessViolationExceptionAsioSampleConvertor
。
所以我认为问题是由于转换float[]
为IntPtr[]
..
我给你一些代码:
OnAudioAvailable()
延迟过程()
AsioSampleConvertor
ClampToInt()
如果您需要其他代码,请询问我。
windows - 当应用程序是 64 位并使用 MSVC2012 或 MSVC2013 编译时,ASIO 在 Windows 8 下崩溃
所以我遇到了一个有趣的大麻烦……我下载了最新的 ASIO SDK,编译了主机示例,如果满足所有这些条件,它就会与几个 ASIO 驱动程序一起崩溃(或胡说八道……):
有什么想法吗?
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 的原始数据中的前几个和最后几个值在某种程度上比其他数据大。计算量级很棘手。
webrtc - WEBRTC 和 ASIO(或 NAudio)
我想向 WEBRTC 添加 NAudio 或特别是 ASIO 设备支持。
1)这可以使用NAudio来完成吗?
2)这可以使用ASIO来完成吗?
关于如何做到这一点的任何建议?
此外,这是一项要求,因此提供此功能的合同是可用的。
请指教
此致
马克贾维斯
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”