Преобразование децибел в объем с помощью Accelerate Framework
Я создаю какой-то эффект аудио фейдера.
Я использую vDSP_vdbcon, чтобы превратить буфер томов в децибелы, применяя некоторые модификации в db-space, и хотел бы преобразовать буфер децибел в том, используя ускоренную структуру.
Спасибо!
1 ответ
Решение
Вот что я использую для каждого элемента для значений в децибелах от -40 до 0. Это дает довольно хорошие результаты.
float decibelsToMag(float decibels){
return pow (10, (0.05 * decibels));
}
Я не знаю Ускоренный векторный эквивалент для функции Pow. Но вот наполовину векторизованная версия.
void decibelsToMags(float *decibels, float *mag, int count){
float mul = 0.05;
vDSP_vsmul(decibels, 1, &mul, mag, 1, count);
for (int i = 0; i < count; i++) {
mag[i] = pow(10,mag[i]);
}
}
Отправьте ответ, если вы можете выяснить версию цикла vDSP.