Преобразуйте децибелы в громкость с помощью Accelerate Framework

Я создаю какой-то эффект аудиофейдера.

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

Спасибо!


person Florian Doyon    schedule 05.11.2015    source источник


Ответы (1)


Вот что я использую для каждого элемента для значений в децибелах от -40 до 0. Это дает довольно хорошие результаты.

float decibelsToMag(float decibels){
    return pow (10, (0.05 * decibels));
}

Я не знаю векторного эквивалента Accelerate для функции 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.

person dave234    schedule 05.11.2015