C++ 将一些声音数据渲染为一个新的声音数据?

C++ 将一些声音数据渲染为一个新的声音数据?,c++,audio,rendering,C++,Audio,Rendering,我正在创建一个应用程序,当必须播放声音时,它将读取包含声音“bank”和偏移量的唯一格式 想象一下 声音库:(左侧为ID,右侧为文件名) 偏移量:(左侧以毫秒为单位的时间,右侧以声音ID为单位) 该应用程序将生成一个新的声音文件(即wav,用于以后转换为其他格式),该文件在第一秒播放踢腿,在第二秒播放打击,在第三秒播放长笛 我完全不知道从哪里开始 我通常使用音频播放,但以前从未做过类似的事情 我在MSVC++环境下使用C++和WxWIDGET,LGPL库也很好。 < P>如果我理解正确,你想通过

我正在创建一个应用程序,当必须播放声音时,它将读取包含声音“bank”和偏移量的唯一格式

想象一下

声音库:(左侧为ID,右侧为文件名)

偏移量:(左侧以毫秒为单位的时间,右侧以声音ID为单位)

该应用程序将生成一个新的声音文件(即wav,用于以后转换为其他格式),该文件在第一秒播放踢腿,在第二秒播放打击,在第三秒播放长笛

我完全不知道从哪里开始

我通常使用音频播放,但以前从未做过类似的事情


我在MSVC++环境下使用C++和WxWIDGET,LGPL库也很好。

< P>如果我理解正确,你想通过混合来自SoBooBar的波形来生成新的wave文件。为此,您可能根本不需要声音API,尤其是当您的所有输入WAV都是相同格式时

只需将每个wav文件加载到缓冲区中。对于
SampleRate*secondsUntilStartTime
samples,对于ActiveList中的每个缓冲区,将
buffer[bufferIdx++]
添加到输出缓冲区中。如果bufferIdx==bufferLen,则从ActiveList中删除此缓冲区。在开始时,将下一个缓冲区添加到ActiveList中,然后重复


若FMOD支持输出到文件而不是声音硬件,那个么您可以使用流式API执行同样的操作。只需在StreamCallback中跟踪经过的样本,并在达到它们的开始偏移量时开始在新文件中混合。

看起来你是在重新设计。一个明确的问题可能会有用。@genpfault:不完全是,我问题中的示例只是一个简单的说明@flownt:我真的不知道从哪里开始,我只是需要一些关于以这种方式渲染音频的启示(以前从未进行过音频渲染),所以我想不出更多的问题,除了如何?请注意,在混音时需要小心溢出。如果可能的话,在声波库中留出一些净空。
0 kick.wav
1 hit.wav
2 flute.wav
1000 0
2000 1
3000 2