单击取消暂停 SDL2 音频的声音

click sound on unpause SDL2 audio

我第一次用 SDL_PauseAudio(0) 取消暂停 SDL 音频,在用 SDL_OpenAudio() 初始化后我总是得到一个点击。

我已经尝试在我的音频回调中处理这个问题,方法是确保声音的振幅从零开始上升(事实上,现在我只是使用正弦波,相位从 0 开始,所以波形自然地从零开始并逐渐上升)但这无济于事。

在调用 SDL_OpenAudio()SDL_PauseAudio(0) 之间我应该做些什么来防止这次点击?我很难在文档中找到任何内容。

我解决了这个问题 - 与 SDL 无关。问题出在我的回调代码中。

问题是我已经从使用无符号 16 位整数格式切换到使用有符号 16 位整数。在我的回调中,我将音频计算为 double 然后在输出时转换为 int 格式。 当转换为无符号时,涉及将 1.0 添加到我的(-1.0 到 1.0 范围)信号以使其全部为正而不是以 0 为中心。当我切换到有符号音频时,我只是忘记删除 +1.0 - 实际上我的信号有一个 DC偏移,导致 init/close.

上的不连续

如果没有我的发布回调和初始化代码,任何人都不可能猜到 - 我认为我的回调代码很好,这是一个库使用问题。