我正在研究开发一款软件,使键盘的功能类似于钢琴(例如,用户按下“W”键,扬声器会播放D音符)。我可能会使用OpenAL。我了解数字音频的基础知识,但是在响应按键时实时播放音频会带来一些问题,我很难解决。
这里是问题:假设我有10个音频缓冲区,每个缓冲区都保存一秒钟的音频数据。如果我必须在它们被播放之前填充缓冲区,那么我将在它们播放前一两秒钟填充缓冲区。这意味着无论用户何时尝试播放一个音符,在按下按键和播放音符之间都会有一到两秒的延迟。
如何解决这个问题?你只需尽可能地使缓冲区变小,并尽可能晚地填充它们吗?还是有什么技巧我没有掌握?
这里是问题:假设我有10个音频缓冲区,每个缓冲区都保存一秒钟的音频数据。如果我必须在它们被播放之前填充缓冲区,那么我将在它们播放前一两秒钟填充缓冲区。这意味着无论用户何时尝试播放一个音符,在按下按键和播放音符之间都会有一到两秒的延迟。
如何解决这个问题?你只需尽可能地使缓冲区变小,并尽可能晚地填充它们吗?还是有什么技巧我没有掌握?