iPhone - много шума в аудиофайле - PullRequest
0 голосов
/ 25 октября 2009

Я записываю необработанные аудио байты из двух файлов в новый файл WAV, чтобы объединить эти два файла. Созданный результирующий файл содержит содержимое обоих аудиоклипов, но в нем также много шума.

Может кто-нибудь указать мне хороший пример, который показывает, как записать необработанные аудио байты в файл? Вот основная логика, которой я следую

SInt32 leftSample1 = ReadSampleFromFile1(music_iter1);
leftSample1 = (SInt32)((float) leftSample1 * 0.7071); //to avoid clipping

SInt32 leftStereoSample2 = ReadLeftSample(music_iter2);
leftStereoSample2 += leftSample1;
if (leftStereoSample2 > 32767)
leftStereoSample2 = 32767;
else if (leftStereoSample2 < -32768
leftStereoSample2 = -32768;
// write leftStereoSample2 to the file
//do the same as left sample to right sample also

++music_iter2;
++music_iter1;

Спасибо.

Ответы [ 3 ]

1 голос
/ 21 ноября 2009

сколько раз они возвращают истину?

if (leftStereoSample2 > 32767)
leftStereoSample2 = 32767;
else if (leftStereoSample2 < -32768
leftStereoSample2 = -32768;

только потому, что вы не ограничиваете (потому что вы заставляете это не делать), не означает, что вы не получите артефактов (искажений) и т. Д., Когда усекаете такие волны. я бы посмотрел, как часто это происходит.

Core Audio имеет микшеры. умные люди уже написали код, чтобы иметь дело с такого рода вещами, поэтому нам не нужно :) MultiChannelMixer - это тот, который выполняет стереофоническое микширование. проверить это.

0 голосов
/ 21 ноября 2009

Я не уверен, что строка кода для «предотвращения отсечения» на самом деле делает свою работу; не нужно ли вам эффективно отключить оба потока перед тем, как присоединиться к ним?

Попробуйте объединить два гораздо более тихих файла. И вместо 0,7071 в обоих файлах попробуйте 0,5. Или просто используйте MultiChannelMixer, как предложено Араном.

0 голосов
/ 25 октября 2009

Ваши тесты для 65535 и -65536 неверны (потребуется 17 бит). Попробуйте 32767 и -32768.

...