Я хотів би змішати два або більше аудіоканалів PCM (наприклад, записані зразки) цифровим способом акустично вірно, бажано майже в реальному часі (маючи на увазі мало або взагалі не видно вперед).
Фізично «правильний» спосіб зробити це підсумовування зразків. Однак, коли ви додаєте два довільних вибірки, отримане значення може бути вдвічі перевищує максимальне значення.
Наприклад, якщо ваші вибірки мають 16-бітні значення, результат буде до 65536 * 2. Це призводить до відсікання.
Наївне рішення тут - ділити на N, де N - кількість каналів, що змішуються. Однак це призводить до того, що кожен зразок є 1 / Nth таким же гучним, що абсолютно нереально. У реальному світі, коли грають два інструменти одночасно, кожен інструмент не стає наполовину гучнішим.
Зчитавши, загальний метод змішування - це результат = A + B - AB, де A і B - це два змішаних нормалізованих зразка, а AB - термін, який забезпечує більш гучні звуки "м'які".
Однак це вводить спотворення сигналу. Чи прийнятний цей рівень спотворень у високоякісному синтезі звуку?
Які ще методи існують для вирішення цієї проблеми? Мене цікавлять ефективні алгоритми меншої якості, а також менш ефективні високоякісні алгоритми.
Я задаю своє запитання в контексті синтезу цифрової музики з метою змішування декількох інструментальних композицій разом. Доріжки можуть синтезувати звук, попередньо записані зразки або вхід мікрофона в режимі реального часу.