как бы то ни было, вам повезет, если сигнал просто обрезается в программном обеспечении до того, как он попадет на ЦАП.Вы можете легко реализовать это самостоятельно.когда я говорю «обрезано», я имею в виду, что амплитуды, которые превышают максимум, устанавливаются на максимум, а не на переполнение, наложение или другие менее неприятные результаты.отсечение на этом этапе часто звучит ужасно, но упомянутые мною альтернативы звучат хуже.
на самом деле следует учитывать большое значение в этом отношении: вы рендерите в float или int?если int, какой у вас запас?с int вы можете обрезать или переполнить практически на любой стадии.с плавающей точкой, это произойдет только как серьезный недостаток дизайна.конечно, вам часто приходится в конечном итоге преобразовывать в int при взаимодействии с ЦАП / оборудованием.ЦАП ограничит выход, потому что он обрабатывает сигналы в очень определенных пределах.в худшем случае это будет эквивалент (сэмплированный) белого шума при 0 дБ полной шкалы (что может быть ужасным для пользователя).итак ... ЦАП служит ограничителем, хотя на этом этапе значительно снижается вероятность того, что сигнал вызовет слух или повреждение оборудования.
во всяком случае, вы можете легко избежать этого, и я рекомендую вамсделайте это сами, так как вы непосредственно контролируете количество звуков и их амплитуду.в худшем случае сэмплы с пиками 0 дБ полной шкалы будут сходиться на одном и том же сэмпле, и вам нужно будет умножить сигнал (сумму выстрелов) на величину, обратную сумме выстрелов:
output[i] = numShots > 1 ? allThoseShots[i]*(1.0/numShots) : allThoseShots[i];
это не идеально во многих случаях (потому что будет преувеличенный звук приглушения).поэтому вы должны ввести ограничитель в дополнение к общему уменьшению количества одновременных выстрелов.затем вы уменьшаете сигнал выстрелов с более низким коэффициентом, поскольку их пики вряд ли будут сходиться в один и тот же момент времени.простой ограничитель с ~ 10 мс предвкушения должен помешать вам сделать что-то ужасное.также было бы неплохо обнаружить сильные ограничения в режиме отладки, это улавливает проблемы проектирования в восходящем направлении.
в любом случае, вы обязательно должны рассмотреть вопрос о надлежащей компенсации усиления - вы никогда не захотите обрезать выходной ЦАП.на самом деле вы хотите оставить некоторый запас (см .: пики между образцами).