Ich möchte zwei oder mehr PCM-Audiokanäle (z. B. aufgenommene Samples) akustisch originalgetreu digital mischen, vorzugsweise in Echtzeit (dh mit geringem oder keinem Peek-Ahead).
Der physikalisch "richtige" Weg, dies zu tun, besteht darin, die Abtastwerte zu summieren. Wenn Sie jedoch zwei beliebige Stichproben hinzufügen, kann der resultierende Wert das Doppelte des Maximalwerts betragen.
Wenn es sich bei Ihren Samples beispielsweise um 16-Bit-Werte handelt, beträgt das Ergebnis bis zu 65536 * 2. Dies führt zu Übersteuerungen.
Die naive Lösung besteht hier darin, durch N zu teilen, wobei N die Anzahl der zu mischenden Kanäle ist. Dies führt jedoch dazu, dass jedes Sample 1 / N-mal so laut ist, was völlig unrealistisch ist. In der realen Welt, wenn zwei Instrumente gleichzeitig spielen, wird jedes Instrument nicht halb so laut.
Eine gebräuchliche Methode zum Mischen ist: result = A + B - AB, wobei A und B die beiden zu mischenden normalisierten Samples sind und AB ein Begriff ist, um sicherzustellen, dass lauter werdende Sounds zunehmend "leiser" werden.
Dies führt jedoch zu einer Verzerrung des Signals. Ist dieses Maß an Verzerrung bei der hochwertigen Audiosynthese akzeptabel?
Welche anderen Methoden gibt es, um dieses Problem zu lösen? Ich interessiere mich für effiziente Algorithmen mit geringerer Qualität sowie für weniger effiziente Algorithmen mit hoher Qualität.
Ich stelle meine Frage im Kontext der digitalen Musiksynthese, um mehrere Instrumentenspuren zu mischen. Die Spuren könnten synthetisiertes Audio, aufgenommene Samples oder Echtzeit-Mikrofoneingang sein.
quelle
Antworten:
Es ist sehr schwierig, Sie auf relevante Techniken aufmerksam zu machen, ohne einen Kontext für Ihr Problem zu kennen.
Die naheliegende Antwort wäre, Sie aufzufordern, die Verstärkung jedes Samples so einzustellen, dass es selten zu Übersteuerungen kommt. Es ist nicht so unrealistisch anzunehmen, dass Musiker in einem Ensemble leiser spielen würden, als wenn sie aufgefordert würden, solo zu spielen.
Die durch A + B - AB verursachte Verzerrung ist einfach nicht akzeptabel. Es erzeugt Spiegelbilder von A auf jeder Seite der Harmonischen von B - entsprechend der Ringmodulation - was ziemlich schrecklich ist, wenn A und B ein reiches Spektrum mit Harmonischen haben, die nicht in ganzzahligen Verhältnissen vorliegen. Probieren Sie es beispielsweise auf zwei Rechteckwellen mit 220 und 400 Hz aus.
Eine "natürlichere" Clipping-Funktion, die Sample für Sample arbeitet, ist die Tanh-Funktion - sie entspricht tatsächlich dem Soft-Limiting-Verhalten einiger analoger Elemente. Darüber hinaus können Sie sich mit klassischen dynamischen Komprimierungstechniken befassen. Wenn Ihr System im Voraus Spitzenwerte erkennen kann, ist dies sogar noch besser.
quelle
Das ist nicht die "naive" Lösung, sondern die einzige . Das ist es, was jeder analoge und digitale Mischer tut, denn es ist das, was die Luft tut, und es ist das, was Ihr Gehirn tut.
Leider scheint dies ein weit verbreitetes Missverständnis zu sein, wie diese anderen inkorrekten nichtlinearen "Misch" -Algorithmen (Verzerrungsalgorithmen) zeigen:
Digitales Audio mischen(der falsche Weg)Eine schnelle und schmutzige Mischtechnik für Audio-Samples, um Übersteuerungen zu vermeiden(tun Sie dies nicht)Das "Teilen durch N" nennt man Kopffreiheit ; Der zusätzliche Raum für Peaks, der über dem RMS-Pegel der Wellenform liegt. Der für ein Signal erforderliche Headroom wird durch den Crest-Faktor des Signals bestimmt . (Das Missverständnis der digitalen Signalpegel und des Headrooms ist wahrscheinlich teilweise für den Loudness-Krieg und Elephunk verantwortlich .)
Bei analoger Hardware beträgt der Headroom möglicherweise 20 dB. In einem Hardware-DSP wird häufig ein Festpunkt mit festem Headroom verwendet. SigmaDSP von AD bietet beispielsweise 24 dB Headroom. In Computersoftware wird die Audioverarbeitung normalerweise in 32-Bit-Gleitkommazahlen ausgeführt, sodass der Headroom enorm ist.
Im Idealfall müssten Sie gar nicht durch N dividieren, sondern würden die Signale nur zusammenfassen, da Ihre Signale in erster Linie nicht mit 0 dBFS generiert würden.
Beachten Sie, dass die meisten Signale sowieso nicht miteinander korreliert sind. Daher ist es ungewöhnlich, dass alle Kanäle eines Mischpults gleichzeitig konstruktiv interferieren. Ja, das Mischen von 10 identischen gleichphasigen Sinuswellen würde den Spitzenpegel um das 10-fache (20 dB) erhöhen, aber das Mischen von 10 nicht kohärenten Rauschquellen erhöht den Spitzenpegel nur um das 3,2-fache (10 dB). Bei realen Signalen liegt der Wert zwischen diesen Extremen.
Um das gemischte Signal ohne Übersteuerung aus einem DAC herauszuholen, reduzieren Sie einfach die Verstärkung der Mischung. Wenn Sie den RMS-Pegel des Mixes hoch halten möchten, ohne hart zu übersteuern, müssen Sie eine Art Komprimierung anwenden , um die Spitzen der Wellenform zu begrenzen. Dies ist jedoch kein Teil des Mixens, sondern ein separater Schritt. Sie mischen zuerst mit viel Headroom und komprimieren den Dynamikbereich später, falls gewünscht.
quelle
die Formel
Vielleicht das:
UPDATE: Wie von hotpaw2 vorgeschlagen, können Sie das Eingangssignal verzögern, aber nicht die Gain-Unterdrückung. Dies wird als "Look-Ahead-Limiter" bezeichnet.
quelle
Dies kann zum Nicht-Echtzeit-Mischen unter Verwendung einer Vorausschau-AGC erfolgen, bei der die Verstärkung eines oder beider Kanäle mit einer kaum wahrnehmbaren Rate verringert wird, bevor die Summenamplitude die Begrenzungsgrenze überschreitet. Je weniger Vorausschau verfügbar ist, desto hörbarer wird entweder die AGC-Verstärkungsanpassung, oder die maximale Verstärkung für eine weichere Verstärkungsanpassungsrampe nähert sich an der Grenze immer mehr 0,5 pro Kanal. Bei Tonquellen mit einer gewissen Vorhersagbarkeit könnte man auch Statistiken zum Verhalten der Hüllkurve im Zeitverlauf verwenden, um adaptiv eine Verstärkungsgrenze zu erraten, jedoch mit einer gewissen Wahrscheinlichkeit eines Ausfalls (was eine abrupte Anpassung der AGC-Verstärkung bedeuten würde).
quelle
Ich hatte mit einem Mixer-Designer aus den späten 1990ern und den ersten 2000ern gesprochen, der auf der digitalen Welle lief (nachdem er auf Zehenspitzen gegangen war). Ich denke, der Typ war ein Designer für SPL, aber vielleicht nicht so groß, ich kann mich weder an den Namen noch an die Marke erinnern, ich erinnere mich nur daran, wie wirklich groß und teuer die Maschine war.
Wir sprachen lange und sprachen schließlich über die Techniken, um wirklich zu gewährleisten, dass ihre 64/128 @ 24-Bit-Kanäle gemischt einen 24-Bit-genauen gemischten Ausgangskanal ohne Übersteuerung darstellen.
Die Technik, die er erklärte, war ziemlich einfach. Die 64 Spuren (auf 24 Bits) wurden in einem 48-Bit-Kanal hinzugefügt, in dem das Abschneiden nicht auftreten kann. Gerade.
Ich kann nicht sagen, wie dieses Signal dann von 48 auf 24 Bit zurückgedithert wurde. Vielleicht werden hier die kniffligen Küchenrezepte angewendet.
Und vielleicht gibt es eine Menge Techniken, um das zu erreichen, vor allem verschiedene, ob in Echtzeit oder mit allen Signalen, die bereits mit einfach zu bestimmenden Hochspitzen aufgezeichnet wurden ... alle Arten von Normalisierungen, die ich mir vorstellen kann.
quelle
Verringern Sie die globale Lautstärke. Der Impulstracker gibt standardmäßig Kanäle mit einer Lautstärke von maximal ca. 33% aus.
Dies scheint sowohl laut genug für Musik mit wenigen Kanälen (4-Kanal-Amiga-Modi) als auch leise genug für Songs mit 50 Kanälen zu sein (da der Kanalinhalt in der Regel nicht korreliert, sodass sich die Lautstärke ab einem bestimmten Pegel nicht mehr so schnell summiert ... Außerdem werden einige Kanäle mit maximaler Lautstärke ausgegeben, wenn so viel los ist. Es bleibt auch genügend Headroom für Kanäle mit festem Links- oder Rechtsausschnitt (die 66% des Bereichs ausmachen).
Außerdem möchten Sie Ihre Kanäle nicht zu 16 Bit zusammenfassen, sondern zu 32 Bit zusammenfassen, das Ergebnis abschneiden und ganz am Ende auf 16 Bit reduzieren. Sie benötigen den höheren Bereich, damit er sich beim Rechnen nicht dreht. Eine andere Option ist die Verwendung von 32-Bit-Gleitkommazahlen (dies ist praktisch für Filter, Effekte usw.).
quelle
Ich denke, der Schlüssel ist, wenn Sie 16-Bit-Werte haben und Sie 2 Werte addieren, die möglicherweise mehr als der Maximalwert sein könnten, dann haben Sie 2 Optionen:
1) Wirken Sie beide auf 32-Bit-Addition und geben Sie den Maximalwert zurück, wenn die Addition diesen Wert überschreitet. Dann wandle es zurück auf 16 Bits. Wenn Ihre Werte beispielsweise 32768 und 34567 sind, überschreitet sie 65535, und der Schlüssel lautet, 65535 zurückzugeben. Sie würden dasselbe tun, wenn Sie am Ende des Mindestwerts vorzeichenbehaftete Werte verwenden.
2) Komprimieren Sie beide Werte und addieren Sie sie dann.
Das erste ist im Wesentlichen hartes Beschneiden, das zweite ist weiches Beschneiden. Analoge Systeme sind alle hart im Nehmen.
quelle
Sie sind nur doppelt so groß wie der Abstand, wenn die Frequenzen in beiden Spuren frequenzmäßig den gleichen Abstand einnehmen. Verwenden Sie Equalizer und Komprimierung, um dies zu umgehen, indem Sie Bereiche des Frequenzspektrums für jeden Sound ausarbeiten und die Übergänge und Stützen von Sounds so steuern, dass alles dort herausragt, wo es sollte. Vielleicht beantwortet das die Frage aber nicht. Sie können niederfrequente Signale um bis zu 2 ms verzögern. Die Phase wird nicht unterbrochen, da die Wellenlängen länger als die höheren Frequenzen sind, und es wird Platz hinzugefügt, da die Transienten nicht vollständig mit den leistungshungrigen Basssignalen übereinstimmen. Etwas lineares Hinzufügen einer größeren Verzögerung, je niedriger das Signal ist, wäre interessant zu testen.
quelle
Das heißt, wenn sowohl A als auch B ein Vorzeichen gemeinsam haben, wenden Sie einen begrenzenden Versatz an. Die Größe des Versatzes ist das Produkt von A und B. Die Richtung des Versatzes ist der von A und B entgegengesetzt.
Wenn A und B kein Vorzeichen gemeinsam haben, wird kein Limit angewendet, da kein Überlauf möglich ist.
quelle
Mein Vorschlag:
Möglicherweise möchte der Benutzer diesen gemischten Stream vor dem Dithering und der Konvertierung in das 16-Bit-Festkommaformat mit Komprimierung und / oder Begrenzung verarbeiten (vorausgesetzt, diese Konvertierung ... Die Abmischung zur Übergabe an die Master-Ingenieure hat normalerweise ein höher auflösendes Format).
quelle