Как смешать аудиосэмплы?

Чрезмерное встраивание функций может увеличить размер скомпилированного исполняемого файла, который может оказать негативное влияние на производительность кэша, но в наше время компилятор решает о функции, встраивающей самостоятельно (в зависимости от многих criterias), и игнорирует встроенное ключевое слово.

7
задан JasonMArcher 23 July 2015 в 17:28
поделиться

3 ответа

Я предполагаю, что ваша проблема в том, что для каждого добавляемого вами аудиоисточника вам нужно понизить уровни.

Если приложение передает управление пользователю, просто позвольте ему контролировать уровни напрямую. Жаркость - это их ответственность, а не ваша. Это «суммирование».

Если микширование автоматизировано, вы собираетесь отправиться в путешествие . Возможно, вам понадобится сжатие, если не ограничение. (Ограничение - это крайняя версия сжатия.)

Обратите внимание, что все, что вы делаете со звуком (включая сжатие и ограничение), является формой искажения, так что вы БУДЕТЕ иметь окраску звука. Ваш выбор алгоритмов сжатия и ограничения повлияет на звук.

Поскольку вы не генерируете звук в реальном времени, у вас есть возможность сделать ограничение «кирпичной стеной». Который' s, потому что вы заранее знаете уровни. Ограничение в реальном времени более ограничено, потому что вы не можете знать, что происходит - вы должны реагировать.

Это музыка, звуковые эффекты, голоса, что?

Программисты здесь занимаются этим все время.

6
ответ дан 6 December 2019 в 19:37
поделиться

Вы никогда не говорили, какой язык программирования и платформа, но пока я предполагаю, что Windows использует C #.

http://www.codeplex.com/naudio

Отличный открытый исходный код библиотека, которая действительно охватывает множество вещей, с которыми вы можете столкнуться во время большинства операций со звуком.

0
ответ дан 6 December 2019 в 19:37
поделиться

Сведение звуковых образцов означает их сложение, вот и все. Обычно вы добавляете их в больший тип данных, чтобы вы могли обнаружить переполнение и зафиксировать значения перед приведением обратно в целевой буфер. Если вы заранее знаете, что у вас будет переполнение, вы можете масштабировать их амплитуды перед сложением - просто умножьте их на значение с плавающей запятой между 0 и 1, опять же, учитывая проблему точности, возможно, сначала преобразовав в больший тип данных.

Если у вас есть конкретная проблема, которая не решена этим, вы можете обновить исходный вопрос.

5
ответ дан 6 December 2019 в 19:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: