【发布时间】:2018-12-07 17:12:32
【问题描述】:
我开始为 Android 实现 Oboe c++ 库。 (根据Build a Musical Game using Oboe 我只是缩放样本以增加音量,它可以工作,但会发出噼啪声。 我可以增加振幅而不会发出噼啪声吗? 我试图用一点增益来保存我的样本声音,但听起来很糟糕。 谢谢。
顺便说一句,在不增加音量的情况下,它听起来很清晰,但与其他音乐应用相比,音量非常低。
for (int i = 0; i < mNextFreeTrackIndex; ++i) {
mTracks[i]->renderAudio(mixingBuffer, numFrames);
for (int j = 0; j < numFrames * kChannelCount; ++j) {
audioData[j] += (mixingBuffer[j] * ((float)volume));
}
已编辑:
int16_t Mixer::hardLimiter(int16_t sample) {
int16_t audioData = sample * volume;
if(audioData >= INT16_MAX){
return INT16_MAX;
}else if(audioData <= INT16_MIN){
return INT16_MIN;
}
return audioData;
};
【问题讨论】:
-
听起来好像调高音量会导致削波。对此的补救措施是不要调高音量,或者调低音量。
-
解决办法是不要调高音量?所以呢?
-
剪辑就是您所描述的。当任何数字系统的音量开得太高时,就会发生这种情况。发生这种情况是因为您没有足够的位来表示波形。
-
我明白,但我怎样才能“保护”并避免这些噪音?在我的应用中,音量必须由用户设置,有时我播放的音频文件音量也很小。
-
不要把音量开得太高。