我的问题并不完全与编程相关,但我认为SO是正确的提问地点。
在我的程序中,我生成一些音频数据并将轨道保存到 WAV 文件中。使用一个声音发生器一切都可以正常工作。但现在我想添加更多生成器并将生成的音频数据混合到一个文件中。不幸的是,它比乍一看更复杂。 此外,我没有找到关于如何混合一组音频样本的太多有用信息。
有谁可以给我建议吗?
编辑:
我正在使用 C++ 进行编程。但这并不重要,因为我对混合两个音轨背后的理论感兴趣。我遇到的问题是我不能简单地总结样本,因为这通常会产生失真的声音。
最佳答案
我认为您的问题是,对于您添加的每个音频源,您都必须降低级别。
如果应用程序将控制权交给用户,只需让他们直接控制级别即可。热是他们的责任,而不是你的。这就是“求和”。
如果混合是自动的,you're about to go on a journey 。如果没有限制的话,您可能需要压缩。 (限制是压缩的极端版本。)
请注意,您对音频所做的任何操作(包括压缩和限制)都是一种失真形式,因此您将导致音频着色。您选择的压缩和限制算法将影响声音。
由于您不是实时生成音频,因此您有可能进行“砖墙”限制。那是因为你对级别有预知。实时限制更加有限,因为您无法知道即将发生什么 - 您必须使用react。
这是音乐、音效、声音还是什么?
程序员here一直处理这个问题。
关于audio - 如何混合音频样本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1784396/