Несколько дней назад это был мой вопрос, и я нашел ответ. Может быть, это поможет кому-то еще.
A. Первая часть проблемы: можете ли вы усилить звук с помощью Flash? Документация AS3 для SoundTransform говорит об атрибуте громкости:
"Громкость: от 0 (тишина) до 1 (полная громкость).
По номинальной стоимости это означает, что вы можете делать звуки только тише. Фактически, если вы укажете значение больше единицы (1,0), звуки будут усиливаться. Вы рискуете насытить звук и получить плохое качество, но вы можете это сделать, а с голосом вам многое сойдет с рук. (Музыка менее прощающая, поэтому экспериментируйте. Этот метод не выполняет динамическое сжатие, которое лучше подходит для музыки.)
B. Вторая часть проблемы: порядок, в котором вы делаете вещи.
RIGHT:
soundTransform = new SoundTransform();
soundTransform.volume = volume * volumeAdjustment;
audioChannel.soundTransform = soundTransform;
НЕПРАВИЛЬНО:
soundTransform = new SoundTransform();
audioChannel.soundTransform = soundTransform;
soundTransform.volume = volume * volumeAdjustment;
Я провел несколько тестов в CS3 и CS4 и получил разные результаты. В CS3 я мог установить громкость на преобразовании ПОСЛЕ «audioChannel.soundTransform = soundTransform;» и все было хорошо. Но в CS4 это никак не отразилось. Я подозреваю, что CS3 использовал передачу по ссылке для установки soundTransform, а CS4 использует передачу по значению и копирует объект, переданный в него. Подход CS4 лучше разработан, но он сломал мой код, который отлично работал в CS3.
C. Последний вопрос заключается в том, как преобразовать значение в децибелах в коэффициент, который можно умножить на громкость, чтобы усилить (или уменьшить) звук на требуемую величину.
var multiplier:Number = Math.pow(10, decibels / 20); // Power vs. amplitude
Обратите внимание, что "децибелы" могут быть положительным числом (для усиления) или отрицательным числом (чтобы сделать тише). Если децибел равен нулю, никаких изменений не происходит.
Значение для децибел 3 будет (в близком приближении) удваивать амплитуду.
Значение 10 децибел увеличит громкость в десять раз (точно).