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.
źródło
Odpowiedzi:
Bardzo trudno jest wskazać odpowiednie techniki, nie znając kontekstu problemu.
Oczywistą odpowiedzią byłoby, abyś powiedział, aby wyregulować wzmocnienie każdej próbki, tak aby rzadko występowało obcinanie. Zakładanie, że muzycy zagraliby łagodniej w zespole, nie jest wcale nierealistyczne, niż kiedy proszeni są o solo.
Zniekształcenie wprowadzone przez A + B - AB jest po prostu niedopuszczalne. Tworzy lustrzane odbicie A po każdej stronie harmonicznych B - równoważne modulacji pierścieniowej - co jest dość okropne, jeśli A i B mają bogate spektrum z harmonicznymi, które nie są w stosunkach całkowitych. Wypróbuj na przykład na dwóch falach kwadratowych przy 220 i 400 Hz.
Bardziej „naturalną” funkcją przycinania, która działa na zasadzie próbka na próbkę, jest funkcja tanh - w rzeczywistości odpowiada ona ograniczeniu miękkiego działania niektórych elementów analogowych. Poza tym możesz przyjrzeć się klasycznym technikom dynamicznej kompresji - jeśli Twój system może patrzeć w przyszłość i widzieć nadchodzące szczyty, jest to jeszcze lepsze.
źródło
To nie jest „naiwne” rozwiązanie, to jedyne rozwiązanie. Tak właśnie działa każdy mikser analogowy i cyfrowy, ponieważ robi to powietrze i to robi mózg.
Niestety wydaje się, że jest to powszechne nieporozumienie, na co wskazują inne nieprawidłowe nieliniowe algorytmy „mieszania” (zniekształcenia):
Miksowanie cyfrowego dźwięku(niewłaściwy sposób)Szybka i brudna technika miksowania próbek audio, aby uniknąć obcinania(nie rób tego)„Dzielenie przez N” nazywa się rezerwą ; dodatkowe miejsce dla pików, które jest przydzielone powyżej poziomu RMS kształtu fali. Ilość nadmiaru wymagana dla sygnału zależy od współczynnika szczytu sygnału . (Niezrozumienie cyfrowych poziomów sygnału i rezerwy jest prawdopodobnie częściowo odpowiedzialne za wojnę w Loudness i Elephunk ).
W sprzęcie analogowym headroom może wynosić 20 dB. W sprzętowym procesorze DSP często stosowany jest punkt stały z ustalonym zapasem; Na przykład SigmaDSP AD ma 24 dB wolnej przestrzeni. W oprogramowaniu komputerowym przetwarzanie dźwięku odbywa się zwykle w 32-bitowym zmiennoprzecinkowym, więc nadmiar jest ogromny.
Idealnie, nie musiałbyś wcale dzielić przez N, po prostu sumowałbyś sygnały razem, ponieważ twoje sygnały nie byłyby generowane przy 0 dBFS.
Zauważ, że większość sygnałów i tak nie jest ze sobą skorelowana, więc rzadko zdarza się, aby wszystkie kanały miksera konstruktywnie zakłócały w tym samym momencie. Tak, mieszanie 10 identycznych fal sinusoidalnych w fazie zwiększy poziom szczytowy 10 razy (20 dB), ale mieszanie 10 niespójnych źródeł hałasu zwiększy poziom szczytowy tylko 3,2 razy (10 dB). W przypadku sygnałów rzeczywistych wartość będzie znajdować się między tymi skrajnościami.
Aby uzyskać zmiksowany sygnał z przetwornika cyfrowo-analogowego bez obcinania, wystarczy zmniejszyć wzmocnienie miksu. Jeśli chcesz utrzymać wysoki poziom RMS miksu bez twardego przycinania, musisz zastosować pewien rodzaj kompresji, aby ograniczyć piki fali, ale to nie jest część miksowania, to osobny krok. Najpierw miksujesz z dużą ilością miejsca, a następnie poddajesz go kompresji zakresu dynamicznego później, jeśli to konieczne.
źródło
Formuła
nie ma sensu, nawet jeśli masz na myśli coś innego niż . Jedną z rzeczy, o których należy pomyśleć, jest to, że dźwięk zmienia się powyżej i poniżej zera. Lepszy sposób myślenia o tym jest następujący:AB=A∗B
gdzie .g≤1
Najprostszym podejściem jest powiedzenie , które jest zachowawcze, liniowe i zawsze działa, ale może nie być tak „głośne”, jak chcesz. Mniej konserwatywne podejście, które „zwykle działa” i jest „głośniejsze”, to . Dzięki temu podejściu rozszerzenia do większej liczby kanałów działają lepiej.g=0.5 g=1/2–√
Alternatywnie, może zmieniać się w czasie, w którym to przypadku jest zwykle wynikiem algorytmu kompresora / ogranicznika. Zatem naprawdę masz równanie różnicy:g
Być może to:
AKTUALIZACJA: Jak sugeruje hotpaw2, możesz opóźnić sygnał wejściowy, ale nie tłumić wzmocnienia. Nazywa się to „ogranicznikiem wybiegającym w przyszłość”.
źródło
Można to zrobić w przypadku miksowania w czasie rzeczywistym, aby użyć wyprzedzającego AGC, w którym wzmocnienie jednego lub obu kanałów jest obniżane z trudną do zauważenia szybkością, zanim amplituda sumy przekroczy granicę przesterowania. Im mniej wybiegamy w przyszłość, albo regulacja wzmocnienia AGC stanie się bardziej słyszalna, albo maksymalne wzmocnienie dla bardziej miękkiej rampy regulacji wzmocnienia będzie coraz bliżej 0,5 na kanał na granicy. W przypadku źródeł dźwięku z pewną przewidywalnością można również użyć statystyk dotyczących zachowania obwiedni w czasie, aby adaptacyjnie odgadnąć limit wzmocnienia, ale z pewnym prawdopodobieństwem awarii (co byłoby nagłą regulacją wzmocnienia AGC).
źródło
Rozmawiałem z projektantem mikserów z końca lat 90. i pierwszych 2000., który pojawiał się na fali cyfrowej (po tym, jak przeszedł na palcach). Myślę, że ten facet był projektantem SPL, ale może nie tak duży, absolutnie nie pamiętam ani nazwy, ani marki, po prostu pamiętam, jak naprawdę naprawdę duża i droga była maszyna.
Rozmawialiśmy długo i wreszcie rozmawialiśmy o technikach naprawdę gwarantujących, że ich zmiksowane razem kanały 64/128 @ 24 bity pozostały dokładnie 24-bitowym kanałem miksowanym bez przycinania.
Technika, którą wyjaśnił, była raczej prosta. 64 ścieżki (na 24 bitach) zostały dodane w 48-bitowym kanale, w którym obcinanie nie może wystąpić. Proste.
Nie mogę powiedzieć, w jaki sposób ten sygnał został następnie cofnięty z 48 do 24 bitów. Może właśnie tam stosuje się trudne przepisy kulinarne.
Być może istnieje wiele technik, aby to osiągnąć, przede wszystkim różne, niezależnie od tego, czy wykonano je w czasie rzeczywistym, czy przy użyciu całego sygnału już zarejestrowanego z wysokimi pikami, które można łatwo ustalić ... wszelkiego rodzaju normalizacje, które można sobie wyobrazić.
źródło
Zmniejsz globalny wolumen. Moduł śledzenia impulsów klasycznie domyślnie wysyła kanały przy około 33% głośności.
Wydaje się to być zarówno wystarczająco głośne dla muzyki z kilkoma kanałami (4-kanałowe MODY Amigi), jak i wystarczająco miękkie dla utworów z 50 kanałami (ponieważ zawartość kanału zwykle nie jest skorelowana, więc głośność nie sumuje się tak szybko po pewnym poziomie ... plus kilka kanałów będzie nadawało z maksymalną głośnością przy tak dużej ilości rzeczy). Pozostawia również wystarczającą ilość miejsca dla kanałów z lewej strony lub z prawej strony (które wykorzystują 66% zakresu).
Ponadto nie chcesz dodawać swoich kanałów razem w 16 bitach, chcesz dodać je razem w 32 bitach, a następnie przyciąć wynik i zredukować do 16 bitów na samym końcu. Będziesz potrzebował wyższego zasięgu, aby nie zawinął się podczas matematyki. Inną opcją jest użycie 32-bitowej liczby zmiennoprzecinkowej (co jest wygodne do robienia filtrów, efektów itp.).
źródło
Myślę, że kluczem jest to, że jeśli masz 16-bitowe wartości i dodając 2 wartości razem, które mogą potencjalnie być większe niż wartość maksymalna, masz 2 opcje:
1) rzutuj oba na 32-bitowe dodawanie, a następnie zwróć maksymalną wartość, jeśli suma przekroczy tę wartość. Następnie wróć do 16 bitów. Na przykład, jeśli twoje wartości to 32768 i 34567, przekracza 65535, a kluczem jest zwrócenie 65535. Zrobiłbyś to samo, jeśli użyjesz wartości ze znakiem na końcu wartości minimalnej.
2) skompresuj obie wartości, a następnie dodaj je razem.
Pierwszy to zasadniczo wycinanie twarde, drugi to wycinanie miękkie. Wszystkie systemy analogowe są mocno przesterowane.
źródło
Będą dwa razy więcej miejsca, jeśli częstotliwości obu ścieżek zajmą tę samą częstotliwość przestrzenną. Użyj eq i kompresji, aby obejść ten problem, wycinając obszary spektrum częstotliwości dla każdego dźwięku i kontrolując transjenty i podtrzymania dźwięków, aby wszystko wystrzeliło tam, gdzie powinno. Może to jednak nie odpowiada na pytanie. Możesz opóźnić sygnały o niższej częstotliwości nawet o 2 ms. Nie anuluje się w fazie, ponieważ długości fal są dłuższe niż wyższe częstotliwości, i doda przestrzeni, ponieważ transjenty nie są w pełni zgodne z energochłonnymi sygnałami basowymi. Coś liniowo zwiększającego opóźnienie, tym niższy sygnał byłby interesujący do przetestowania.
źródło
To znaczy, jeśli zarówno A, jak i B mają wspólny znak, zastosuj przesunięcie graniczne. Wielkość przesunięcia jest iloczynem A i B. Kierunek przesunięcia jest przeciwny do kierunku A i B.
Jeśli A i B nie mają wspólnego znaku, nie ma zastosowania żaden limit, ponieważ nie ma możliwości przepełnienia.
źródło
Moja sugestia:
Użytkownik może chcieć przetworzyć ten mieszany strumień z kompresją i / lub ograniczeniem przed ditheringiem i konwersją do 16-bitowego formatu stałego punktu (przy założeniu, że ta konwersja ... miksowanie w celu przekazania inżynierom masteringowym jest zwykle pozostawione w formacie wyższej rozdzielczości)
źródło