标签: steinberg-asio

PortAudio 回调和 ASIO sdk 的输入延迟

我正在尝试使用 portaudio 库和 ASIO sdk 从我的吉他获取输入以通过我的计算机播放。

我一直在关注官方网站上的一些教程来设置基础知识。目前我让它工作,所以 portaudio 正在监听正确的输入和输出设备,我有回调设置来只输出输入并且不做任何事情,如下所示:

static int paTestCallback(const void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo* timeInfo, PaStreamCallbackFlags statusFlags, void *userData)
{
    float *out = (float*)outputBuffer;
    float* in = (float*)inputBuffer;

    for (int i = 0; i<framesPerBuffer; i++)
    {
        *out++ = *in++;  /* left */
        *out++ = *in++;  /* right */
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这个回调是通过调用这个来设置的:

PaError error = Pa_OpenDefaultStream(&stream, 2, 2, paFloat32, 44100, paFramesPerBufferUnspecified, paTestCallback, &data);
Pa_StartStream(stream);
Run Code Online (Sandbox Code Playgroud)

现在,这确实有效,但是当我敲击吉他的弦以及通过监听音箱听到它时,我有很多延迟(大约 0.5 秒)。

有没有办法解决这个延迟?我需要重写回调方法吗?

编辑:

所以,我使用这段代码而不是基本的代码得到了更好的延迟 Pa_OpenDefaultStream()

int …
Run Code Online (Sandbox Code Playgroud)

c++ portaudio asio steinberg-asio

4
推荐指数
1
解决办法
1642
查看次数

标签 统计

asio ×1

c++ ×1

portaudio ×1

steinberg-asio ×1