Громкость исчезает в конце аудио файла - PullRequest
2 голосов
/ 11 ноября 2010

HI,

Я делаю приложение для iPhone, которое работает с аудио файлами.Приложение также содержит аудио конвертер, поэтому я могу иметь файл любого аудио формата в моей папке / Documents.

Я хочу реализовать плавный аудио-файл, заканчивающийся снижением уровня громкости наконец и затемнение в начале файла.

Как я могу это сделать?(просто укажите направление. фреймворк, функция, метод)

Я могу использовать все аудио каркасы Apple, как на высоком, так и на низком уровне.Я даже могу получить доступ к аудиобуферам во время преобразования файла.

Заранее спасибо.

ПРИМЕЧАНИЕ. При воспроизведении мне не нужна функция постепенного исчезновения звука.Мне нужна эта функция, уже написанная в аудиофайле.

1 Ответ

0 голосов
/ 11 ноября 2010

Поскольку вы имеете дело с различными форматами, лучше всего при применении преобразования применять затухание на уровне образца.

Если вы выполняете преобразование в автономном режиме, то вы уже знаетеколичество семплов в файле, поэтому вы можете обработать X - B семплов в обычном режиме (где X - общее количество семплов, а B - длительность замирания):

int i = 0;
for(i = 0; i < X - B; i++) {
  sampleToBeConverted[i] = inputSample[i]
}

Затем дляпоследние B сэмплов, вы бы сделали что-то вроде этого:

for(int j = 0; j < B; j++, i++) {
  sampleToBeConverted[i] = inputSample[i] * (1.0 - (j / B));
}

Это было бы для линейного спада наклона, так что, если вы хотите что-то более изумительное, ну, тогда идите стучитесебя вне.;) По сути, формула для линейного замирания равна y = m * x + b (помните класс алгебры?), Где ваш наклон в этом случае равен 1 / B, а смещение по y равно 1,0, что является максимальным усилением громкости, которое вы хотите применить(т. е. без усиления).

Если вы выполняете преобразование в реальном времени, то вам нужно будет хранить B выборок в кольцевом буфере, а затем применить вышеописанный алгоритм, когда вы достигнете конца обработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...