Chciałbym miksować dwa lub więcej kanałów audio PCM (np. Nagrane próbki) cyfrowo w akustycznie wierny sposób, najlepiej w czasie zbliżonym do rzeczywistego (co oznacza brak lub brak podglądu).
Fizycznie „poprawnym” sposobem na to jest zsumowanie próbek. Jednak po dodaniu dwóch dowolnych próbek wynikowa wartość może być nawet dwukrotnością wartości maksymalnej.
Na przykład, jeśli twoje próbki mają 16-bitowe wartości, wynik wyniesie do 65536 * 2. To powoduje obcinanie.
Naiwnym rozwiązaniem jest tutaj dzielenie przez N, gdzie N jest liczbą miksowanych kanałów. Jednak powoduje to, że każda próbka jest 1 / N jako tak głośna, co jest całkowicie nierealne. W prawdziwym świecie, gdy dwa instrumenty grają jednocześnie, każdy instrument nie staje się o połowę tak głośny.
Po przeczytaniu, powszechną metodą miksowania jest: wynik = A + B - AB, gdzie A i B to dwie znormalizowane próbki, które są miksowane, a AB to termin zapewniający, że głośniejsze dźwięki są coraz bardziej „miękko przycinane”.
Wprowadza to jednak zniekształcenie sygnału. Czy ten poziom zniekształceń jest akceptowalny w wysokiej jakości syntezie dźwięku?
Jakie są inne metody rozwiązania tego problemu? Interesują mnie wydajne algorytmy niskiej jakości, a także mniej wydajne algorytmy wysokiej jakości.
Zadaję pytanie w kontekście cyfrowej syntezy muzyki, w celu miksowania wielu ścieżek instrumentów razem. Ścieżki mogą być zsyntetyzowane audio, nagrane próbki lub wejście mikrofonu w czasie rzeczywistym.