Чрезмерное встраивание функций может увеличить размер скомпилированного исполняемого файла, который может оказать негативное влияние на производительность кэша, но в наше время компилятор решает о функции, встраивающей самостоятельно (в зависимости от многих criterias), и игнорирует встроенное ключевое слово.
Я предполагаю, что ваша проблема в том, что для каждого добавляемого вами аудиоисточника вам нужно понизить уровни.
Если приложение передает управление пользователю, просто позвольте ему контролировать уровни напрямую. Жаркость - это их ответственность, а не ваша. Это «суммирование».
Если микширование автоматизировано, вы собираетесь отправиться в путешествие . Возможно, вам понадобится сжатие, если не ограничение. (Ограничение - это крайняя версия сжатия.)
Обратите внимание, что все, что вы делаете со звуком (включая сжатие и ограничение), является формой искажения, так что вы БУДЕТЕ иметь окраску звука. Ваш выбор алгоритмов сжатия и ограничения повлияет на звук.
Поскольку вы не генерируете звук в реальном времени, у вас есть возможность сделать ограничение «кирпичной стеной». Который' s, потому что вы заранее знаете уровни. Ограничение в реальном времени более ограничено, потому что вы не можете знать, что происходит - вы должны реагировать.
Это музыка, звуковые эффекты, голоса, что?
Программисты здесь занимаются этим все время.
Вы никогда не говорили, какой язык программирования и платформа, но пока я предполагаю, что Windows использует C #.
http://www.codeplex.com/naudio
Отличный открытый исходный код библиотека, которая действительно охватывает множество вещей, с которыми вы можете столкнуться во время большинства операций со звуком.
Сведение звуковых образцов означает их сложение, вот и все. Обычно вы добавляете их в больший тип данных, чтобы вы могли обнаружить переполнение и зафиксировать значения перед приведением обратно в целевой буфер. Если вы заранее знаете, что у вас будет переполнение, вы можете масштабировать их амплитуды перед сложением - просто умножьте их на значение с плавающей запятой между 0 и 1, опять же, учитывая проблему точности, возможно, сначала преобразовав в больший тип данных.
Если у вас есть конкретная проблема, которая не решена этим, вы можете обновить исходный вопрос.