我正在研究制作一些使键盘功能像钢琴一样的软件(例如,用户按下“W”键,扬声器播放 D 音符)。我可能会使用 OpenAL。我了解数字音频的基础知识,但是响应按键播放实时音频会带来一些我无法解决的问题。
问题是:假设我有 10 个音频缓冲区,每个缓冲区保存一秒钟的音频数据。如果我必须在通过扬声器播放缓冲区之前填充缓冲区,那么我将在播放缓冲区前一两秒填充缓冲区。这意味着每当用户尝试弹奏一个音符时,在按键和播放音符之间会有一到两秒的延迟。
你如何解决这个问题?您是否只是使缓冲区尽可能小,并尽可能晚地填充它们?有什么我错过的技巧吗?