Я играл с динамической аудио библиотекой постоянная волна 3 . Практически первое, что можно заметить, это то, что если попробовать примеры кода в руководстве разработчика , а именно этот код:
// Create a chord of three simultaneous sine tones: A3, E4, A4.
var sequence:ListPerformance = new ListPerformance();
sequence.addSourceAt(0, new SineSource(new AudioDescriptor(), 0.1, 440));
sequence.addSourceAt(0, new SineSource(new AudioDescriptor(), 0.1, 660));
sequence.addSourceAt(0, new SineSource(new AudioDescriptor(), 0.2, 880));
// Play it back.
var source:IAudioSource = new AudioPerformer(sequence);
player.play(source);
тогда получается действительно неприятный звук и трассирующие сообщения с надписью «AUDIO CLIPPING». Разработчик объясняет в одном из отчетов о проблемах на github, что вам нужно уменьшить усиление семплов, когда вы смешиваете их вместе, чтобы избежать этого, и что нет простого способа динамически узнать, какое сокращение необходимо.
У меня вопрос: как получается, что stangingwave2, кажется, справился с этим автоматически? Например, приведенный выше код не обрезался в SW2. Аналогично рассмотрим пример демонстрации SW2 - если вы увеличите сустейн и удержание (ползунки S / H) и нажмете одну из кнопок последовательности, несколько тонов будут перекрываться без среза, даже если источник не показывает каких-либо видимых признаков изменения усиления или громкости тонов греха, они просто смешиваются вместе.
Что здесь происходит - был ли у SW2 какой-то способ автоматически с этим справиться, или есть какой-то надежный способ общего наложения произвольного числа звуков динамически, не вызывая отсечения? Спасибо!