我嘗試使用SpeakHere示例應用程序作爲起點來實現iPhone聲音處理應用程序。該應用程序涉及在播放過程中操縱緩衝的音頻樣本。當我將樣本乘以一個分數(例如0.9)時,我會得到噪音。最奇怪的是,當將樣本乘以整數(例如1.0,2.0)或者加上或減去樣本時,回放聽起來像預期的那樣。操作AudioQueueBuffer音頻數據導致噪音
我做它AudioPlayer.m與下面的代碼片段的playbackCallback功能:
//------------------
//If buffer samples are multiplied by 0.9 we get noise. If we multiply it by 1.0 or add to it everything's fine.
short *buffer = (short *)calloc(1, numPackets * 2);
memmove(buffer, bufferReference->mAudioData, numPackets * 2);
for (int i = 0; i < numPackets; i++)
{
buffer[i] *= 0.9;
//buffer[i] *= 1.0;
//buffer[i] += 10.0;
}
memmove(bufferReference->mAudioData, buffer, numPackets * 2);
free(buffer);
buffer = NULL;
//-------------------
整個項目可以在這裏下載:http://depositfiles.com/files/lmnkq68n8
任何人都可以點我什麼是我做錯了?我已經掙扎了好幾天了,我完全失去了。
謝謝!
我已經重新上傳到另一個文件存儲:http://www.filefactory.com/file/a2c9c30/n/Speak_Here.zip。 這個問題似乎並不是關於將浮標變成短褲。對於音頻採樣的-32768至32767的幅度範圍,小數點後的值無關緊要。乘以0.9應該讓聲音更安靜,但我得到的是白色噪音。 – Thorny 2010-01-18 06:55:49
感謝您重新上傳項目。我更新了我的答案。 – 2010-01-18 11:26:56
謝謝,我將在覈心音頻郵件列表上發佈此問題。 – Thorny 2010-01-19 08:43:33