我有两个原始声音流,我需要加在一起.出于这个问题的目的,我们可以假设它们具有相同的比特率和比特深度(例如16比特样本,44.1khz采样率).
显然,如果我只是将它们加在一起,我将溢出并下溢我的16位空间.如果我将它们加在一起并除以2,那么每个的体积减半,这是不正确的声音 - 如果两个人在一个房间里说话,他们的声音不会变得安静一半,麦克风可以选择它们两者都没有击中限制器.
-亚当
我一直试图在同一时间发出一些声音; 目前我正在使用SoundPool的共享实例.我想在完全相同的时间播放1,2或3个声音而没有延迟.
当连续多次调用SoundPool.play(...)X时,声音按照人们可能想到的顺序播放.什么是正确的实现这一点,我可以准备所有的声音同时播放,然后作为一个播放?
Sudo代码:
SoundPool _soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
_soundPool.load(_context, soundId1, 1);
_soundPool.load(_context, soundId2, 1);
_soundPool.load(_context, soundId3, 1);
_soundPool.play(soundId1, vol, vol, 1, 0, 1f);
_soundPool.play(soundId2, vol, vol, 1, 0, 1f);
_soundPool.play(soundId3, vol, vol, 1, 0, 1f);
Run Code Online (Sandbox Code Playgroud)