iPhone - много шума в аудиофайле
-
06-07-2019 - |
Вопрос
Я записываю необработанные аудиобайты из двух файлов в новый 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;
Спасибо.
Решение
сколько раз они возвращаются истинными?
if (leftStereoSample2 > 32767)
leftStereoSample2 = 32767;
else if (leftStereoSample2 < -32768
leftStereoSample2 = -32768;
просто потому, что вы не отсекаете (потому что вы заставляете этого не делать), не означает, что вы не получите артефактов (искажений) и т.д., Когда вы таким образом усекаете волны.я бы посмотрел, как часто это происходило.
core audio имеет микшеры.умные люди уже написали код для работы с подобными вещами, так что нам не нужно :) Многоканальный микшер - это тот, который выполняет стереомикширование.зацени это.
Другие советы
Ваши тесты для 65535 и -65536 неверны (потребуется 17 бит).Попробуйте 32767 и -32768.
Я не уверен, что строка кода для "предотвращения отсечения" действительно выполняет свою работу;разве вам не нужно было бы эффективно отказаться и то, и другое потоки, прежде чем присоединиться к ним?
Попробуйте объединить два гораздо более тихих файла.И вместо 0.7071 для обоих файлов попробуйте 0.5.Или просто используйте MultiChannelMixer, как предложил Аран.