2010-10-11 2 views
4

Может ли кто-нибудь сказать мне, почему громкость становится ниже, когда я делаю шаг выше в openal? Чем выше шаг, тем ниже объем .....openal pitch shift

alSourcef (источник, AL_PITCH, 1.2f); alSourcef (источник, AL_GAIN, 1.0f);

с этой настройкой громкость по-прежнему очень низкая. есть ли способ обмануть его, чтобы получить выигрыш выше 1? Может быть, это как-то связано с расстоянием?

FYI, источник - это голос, записанный из AVRorder, поэтому я не могу установить громкость источника выше.

+0

Предполагаю, вы говорите о воспринимаемой громкости по сравнению с наблюдаемым изменением амплитуды ...? Какой образец вы играете? Вы можете понижать частоты или превышать возможности вашего оборудования, чтобы их визуализировать (или ваши уши воспринимали их ...) – Shog9

+0

alSourcef (источник, AL_PITCH, 1.2f); alSourcef (источник, AL_GAIN, 1.0f); – Xiu

+0

просто небольшое изменение в высоте .... – Xiu

ответ

3

Afaik не является нормальным, что амплитуда изменится в зависимости от изменения высоты тона. Когда шаг установлен выше оригинала, openal ускоряет выборку множителем (afaik), используя некоторую интерполяцию, когда множитель не является целым.

Там могут быть некоторые редкие случаи, когда изменения амплитуды, но, вероятно, не для длинных образцов с большим количеством контента частоты (как и большинство натуральных звуков имеют тенденцию быть)

Как громко мы понимаем, что амплитуда зависит от шага, см. equal loudness contour
Возможно, этот эффект объясняет ваш вопрос?

В качестве обходного пути вы можете снизить коэффициент усиления для обычных звуков и использовать более высокий коэффициент усиления для более высоких звуков.
Или умножьте исходные данные на множитель перед прикреплением/передачей в буфер.

+0

ах, мне нравится идея мультипликатора для исходных данных. Я посмотрю на это. Спасибо Emile :) – Xiu

+0

Спасибо всем за помощь, я обнаружил, что настройка коэффициента усиления выше 1, например 5 или 100, решила проблему с низким объемом. :) – Xiu