sound channel mixing - Formel ?

Design Patterns, Erklärungen zu Algorithmen, Optimierung, Softwarearchitektur
Forumsregeln
Wenn das Problem mit einer Programmiersprache direkt zusammenhängt, bitte HIER posten.
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

sound channel mixing - Formel ?

Beitrag von RedGuy »

Hi !


für mein Projekt eigener Computer https://zfx.info/viewtopic.php?f=10&t=4123 bin ich gerade an einem eigenen Sound-Chip dran ;) .

Jetzt stellt sich für mich eine triviale Frage:

Wenn man verschiedenen Kanäle für sound hat (zum Beispiel mehrere Geräuschquellen).
Wie berechnet man die resultierende Schallamplitude ?


Ich bin von einfacher Superposition (Wellenüberlagerung) also eine einfache Addition der Kanalamplituden ausgegangen.
So dürfte das nämlich in der Natur sein.

Wenn man sich das aber konkret mal zu Gemüte führt:
Da kommt man doch bei gerade mal 2 Geräuschquellen schnell an die Peak-Amplitude oder gar Übersteuerung.

Wenn man dann z.B. 50 Geräuschquellen hätte- alle mit einer normalen Lautstärke. Dann hat man definitiv Übersteuerung.


Kurzum: Gibt es da eine Formel für channel-mixing ?


Da könnte ich mir eine Funktion vorstellen, die sich bei hohen Amplituden weniger schnell steigert (weil der Schall immer mehr Widerstand bietet)...


Den Rest des sound-chips (also buffering und sampling) habe ich allerdings schon implementiert ;) .

Gruss
RedGuy
DerAlbi
Establishment
Beiträge: 269
Registriert: 20.05.2011, 05:37

Re: sound channel mixing - Formel ?

Beitrag von DerAlbi »

Wieso genau sind die Lösungen, die man per Google findet, keine Option für dich?
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: sound channel mixing - Formel ?

Beitrag von RedGuy »

Hi !

also ich hab keine Formel gefunden- das ist das Problem :( .

Gruss
DerAlbi
Establishment
Beiträge: 269
Registriert: 20.05.2011, 05:37

Re: sound channel mixing - Formel ?

Beitrag von DerAlbi »

Da gibt es auch keine Formeln neben A+B... man kann noch mit einem Faktor multiplizieren.. z.B: 1/sqrt(2) weil sich unkorrelierte Signale nicht direkt addieren reicht die korrektur um 3dB und nicht um 6dB.
Das Problem ist, dass es dennoch zu clipping kommen kann - das ist unvermeidbar. Es geht vielmehr um Algorithmen, wie man das Clippen minimiert.. das läuft auf dynamische Kompression hinaus.
Die simpelste Variante, die wohl wirklich eine Formel anstatt eines Algorithmus ist, währe wohl tanh. Alternativ gibt es "A+B - AB".. was du sicher schon gefunden hast.. aber das hat aufgrund des Mischprodukts hässliche spektrale Effekte.
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: sound channel mixing - Formel ?

Beitrag von RedGuy »

Hallo !

Danke an DerAlbi !


Also das mit dem Faktor multiplizieren ist eine gute Idee.
Man könnte ja den Durchschnitt berechnen.

Allerdings frage ich mich was eigentlich real ist.

Normalerweiße müsste man nun wirklich physikalisch hergehen und
das schwingende System Luftmolekül betrachten:

die Masse des Luftmoleküls, den Luftdruck als rücktreibende Kraft und ggf. zusätzliche Trägheit des Systems
und letztenendes den Schalldruck der Geräuschquelle als einwirkende Kraft auf das System.

Damit kann man die sich einstellende Auslenkung nach superpositionierten Kräften berechnen.

Hat jemand soetwas schoneinmal durchdacht, oder gar Akkustik im Studium gehabt oder Ähnliches ?!

Gruss
Red
DerAlbi
Establishment
Beiträge: 269
Registriert: 20.05.2011, 05:37

Re: sound channel mixing - Formel ?

Beitrag von DerAlbi »

Naja sowas gehört zu jedem Elektrotechnikstudium. Du bist vollkommen auf dem Holzweg. Die physikalischen Effekte, die du emulieren willst geschehen automatisch an der Membran des Lautsprechers, wenn du sie mit dem Summensignal ansteuerst. Und wie ich schon sagte, ist der Druchschnitt technisch verkehrt, da sich nichtkohärente Signal amplitudentechnisch nicht 1:1 addieren, sondern 1A + 1B = sqrt(2)(A+B). (wobei die Zahlen jetzt für den Leistungsgehalt des Signals stehen) Daher nur 3dB anstatt 6dB korrektur, wie ich sagte. Die 6dB-Korrektur [also 0.5*(A+B)] führt zwar zu numerischer Korrektheit aber insgesamt ist es leiser als es statistisch sein muss. Du musst auch überlegen, was passiert, wenn bei A+B das B sehr leise ist. Dann 0.5*(A+B) zu rechnen ist vollkommen sinnlos. Daher solltest du dynamisch komprimieren. Das geht aber eher per Algorithmus, als per Formel.
Etwas anderes ist es, wenn du korrelierte Signale aufaddieren willst, dann ist 0.5*(A+B) korrekt. Sowas passiert z.B . Wenn du von Stereo auf Mono zurück willst.
Angesichts deines Hintergrundwissens und deiner gedanklichen Fehlkonzeption was Audio angeht und deines Rechercheerfolgs, würde ich dir aber einfach dazu raten einfach A+B mit saturierender Arithmetik zu berechnen und es dabei bleiben zu lassen. Das wird viel viel akzeptabler sein, als du denkst. Ähnliche Probleme hast übrigens du auch, wenn du über digitale Filter nachdenkst - wie z.B. einem Low-Shelving Filter, der dir Bässe anhebt: aufgrund der begrenzten Dynamik ist das Design des Filters das trivialste am Gesamtproblem. Gedankengut auf Basis von Luftmolekülen hilft auch da nicht wirklich weiter.
Du müsstest auch mal etwas mehr recherche betreiben, was die Signale angeht, die du überhaupt addieren willst. Du würdest feststellen, wie schlimm heutzutage handelsübliche Musik übersteuert ist.
Die Variante mit dem A+B-AB ist, wie ich auch schon sagte leider nicht wirklich so schlau, wie es dir vorkommt, da A*B etwas ist, was sich nicht gut anhört. Du hast dann aber die Überlagerung von A, B und halt diesem AB und naja..
Benutzeravatar
Schrompf
Moderator
Beiträge: 4838
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: sound channel mixing - Formel ?

Beitrag von Schrompf »

Albi hat das schon gut zusammengefasst. Rein physikalisch passiert genau das, womit Du angefangen hast: A plus B. Die Energien der verschiedenen Schallquellen addieren sich an Deinem Ohr. Das Audio-System am Rechner, über das Du dann abspielen willst, hat aber nur einen begrenzten Dynamik-Umfang. Daraus ergibt sich für Dich die Pflicht, die Audiosignale zu bearbeiten, so dass Du trotzdem im Rahmen des Computer-Audios bleibst. Und dafür gibt's jetzt diverse etablierte Lösungen, die Albi auch schon beschrieben hat, aber Du kannst auch was eigenes schreiben.

Nebenthema: die menschlichen Sinne funktionieren ja logarithmisch. Also beim Auge weiß ich es sicher, und ich vermute, dass das beim Ohr auch so ist. Und ob es wie bei Grafikkarten/Monitoren eine eingebaute Korrekturkurve auf der Amplitude gibt, die man korrigieren müsste.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: sound channel mixing - Formel ?

Beitrag von RedGuy »

Hallo !

Also, wenn man unter Anderem davon ausgeht, dass

-die Schallauslenkung vom Schalldruck bzw. direkt von einer Kraft abhängt,
-die Zeit (oder delta Zeit) innerhalb eines Samples konstant/gleich ist,
-sich die Kräfte superpositionieren und nicht die Auslenkung

,dann komme ich auf folgende Formel:

Code: Alles auswählen

Auslenkung_gesamt = Fges / m_Luftmoleküle * 1/Quadratwurzel(2)
wobei

Code: Alles auswählen

Fges = Summe aller n Kräfte Fx
und

Code: Alles auswählen

Fx = Auslenkung_x * m_Luftmolekül * Quadratwurzel(2)
und

Code: Alles auswählen

m_Luftmoleküle=n*m_Luftmolekül

Signifikant ist hierbei, dass sobald man nur noch eine Schallquelle/Kanal hat, alle Terme außer der Kanalauslenkung herausfallen, man also auch nur noch diesen Kanal hat.

Der Durchschnitt kann aus gewissen Gründen nicht stimmen.

Wenn man die Auslenkung über die obige Formel nicht mehr mikroskopisch haben möchte, skaliert man einfach den Wert.
Im Moment bezieht sich die Formel ja noch auf die Luftmolekülauslenkung und die Luftmolekülmasse. Das lässt sich wie gesagt leicht ändern.

Wie gesagt man braucht keine Korrektur (weil das ja in der Natur auch nicht der Fall ist) und es ist nicht A+B DER AUSLENKUNG (weil das in der Natur auch nicht der Fall ist;
sondern A+B DER KRAFT BZW. DES SCHALLDRUCKS ;) ).

Gruss
RedGuy
Benutzeravatar
Schrompf
Moderator
Beiträge: 4838
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: sound channel mixing - Formel ?

Beitrag von Schrompf »

Wat? Das war ein wahrhaft unverständlicher Braindump.

Aber, mach, was Du denkst. Immerhin steht ja schon oben: die Arbeit ergibt sich aus den Limitierungen des digitalen Systems, also ist erlaubt, was funktioniert.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Spiele Programmierer
Establishment
Beiträge: 426
Registriert: 23.01.2013, 15:55

Re: sound channel mixing - Formel ?

Beitrag von Spiele Programmierer »

Ich bin mir nicht sicher, dass ich eure Rechnungen wirklich verstehe.

Die Sache ist doch ganz klar Gesamt = A + B. Das folgert schließlich direkt aus dem Superpositionsprinzip.
Ein Mischen nach dem Prinzip Gesamt = (A + B) * Faktor wobei der Faktor != 1 (Beim Durchschnitt Faktor = 0.5) ist, ergibt auch offensichtlich keinen Sinn:
Wenn eine der beiden Soundquellen gerade absolut stumm ist (Sagen wir mal A=0), dann wird die andere in der Lautstärke verändert (Gesamt = B * f). Das die Anwesenheit einer potentiellen weiteren Soundquellem andere Sounds in der Lautstärke reduziert, ist offensichtlich nicht richtig. Ich denke auch nicht, dass das in der Praxis wünschenswert ist, allerdings kenne ich deinen exakten Verwendungszweck nicht.

Mir scheint, das es richtig, dass die Lautstärke (Amplitude) beim Mischen von zwei Signalen im Durchschnitt nur um sqrt(2) zunimmt. Allerdings heißt dass nicht, dass gelegentlich auch mal zwei maximale Samplewerte (nicht die Amplituden) aufeinandertreffen können und in dem Fall kommt es natürlich wieder zu gelegentlicher Übersteuerung.

Zur ursprünglichen Problemstellung: Mich würde interessieren, wie das Mixing in gäniger Software realisiert ist (z.B. Windows).
Ich vermute ehrlich gesagt, dass die Sounds einfach aufsummiert werden. Die maximal Lautstärke ist jedenfalls limitiert. Falls häufig eine Übersteuerung auftritt, könnte man eine Art dynamischer Kompression einsetzen (d.h. die Lautstärke automatisch ein wenig senken, so das keine Übersteuerung mehr auftritt). Das scheint mir relativ leicht umsetzbar, allerdings stellt sich die Frage, ob es einen Vorteil in der Praxis bringt.
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: sound channel mixing - Formel ?

Beitrag von RedGuy »

Hi Spiele Programmierer !
Wenn eine der beiden Soundquellen gerade absolut stumm ist (Sagen wir mal A=0), dann wird die andere in der Lautstärke verändert (Gesamt = B * f).
Das meinte ich mit:
Signifikant ist hierbei, dass sobald man nur noch eine Schallquelle/Kanal hat, alle Terme außer der Kanalauslenkung herausfallen, man also auch nur noch diesen Kanal hat.
Das spricht für meine Formel.



Ein Aufsummieren à la A+B kann, denke ich, NICHT stimmen, da es bei einer normalen Lautstärke der Quelle 1 mit einer zusätzlichen Quelle 2 ebenfalls mit normaler Lautstärke
zur Übersteuerung kommt. Mit zwei Tonquellen Übersteuerung kann einfach nicht stimmen. Dynamische Kompression wird da denke ich nicht eingesetzt.


Gruss
Red
Benutzeravatar
Schrompf
Moderator
Beiträge: 4838
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: sound channel mixing - Formel ?

Beitrag von Schrompf »

Tja, als Mitarbeiter einer Audio-Gruppe eines großen Fahrzeug-Entertainment- und Navigationssystems kann ich dazu beitragen: scheiße, ist das kompliziert. Unser Audiopfad besteht aktuell aus >600 einzelnen Filtern. Wir addieren Signale einfach, wenn wir müssen, aber da stecken davor und dahinter noch soviele Kompressoren, Limiter, Delays und Gains, dass ich keine Ahnung habe, was da noch alles passiert. Wir arbeiten aber mit 24bit-Samples und haben darin einen kundendefinierten Headroom von 12db freigehalten. Und um den zu halten, werden jetzt schon alle möglichen Faktoren (Lauter bei höherem Fahrtempo vs. Bassverstärkung vs. Echo Cancellation beim Telefonieren vs. wasweißichnochalles) gegeneinander balanciert, um die Limiter nicht allzu heftig zu strapazieren. Denn auch Limiter oder Kompressoren sind nur "weiche" Versionen eines Clippings, nur halt mit viel besserem Frequenzverhalten. Du willst eigentlich nicht in die Bereiche kommen.

Wie das ein Soundsystem in einem Computerspiel macht, würde mich aber trotzdem interessieren. Immerhin gibt's da sowohl einen großen Dynamikbereich als auch eine größere Zahl überlagernder Sound-Quellen, die Du am Ende auf Stereo/5.1/Wasweißich runtermixen musst.

[edit]@RedGuy:

Das ist weiterhin Bullshit. Es ist A + B, zumindest in der Natur. Und wenn Du das in nem Computer mit begrenztem Wertebereich machst, schlägst Du schnell oben oder unten an. Also brauchst Du zusätzliche Maßnahmen, um Clipping zu verhindern, weil das sonst Scheiße klingt. Ich weiß, ich wiederhole mich, aber man muss es deutlich sagen: was genau Du dann tust, um dem künstlich beschränkten Wertebereich eines Computers gerecht zu werden, ist Deine Wahl. (A + B)*f ist ein völlig valider Ansatz, ein Kompresser oder Limiter auch, wir machen beides und noch viel viel mehr.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Spiele Programmierer
Establishment
Beiträge: 426
Registriert: 23.01.2013, 15:55

Re: sound channel mixing - Formel ?

Beitrag von Spiele Programmierer »

Wie kommst du zu dem Schluss, dass "es nicht stimmen" kann?
Ich bin mir ziemlich ziemlich sicher, dass es schon stimmt.

Das ist doch eigentlich auch völlig natürlich und Alltagserfahrung. Wenn man zwei Soundquellen hat, ist es natürlich lauter als nur eine einzige. (Ok nicht zwingend, sie könnten sich z.B. auslöschen, aber das ist eher unwahrscheinlich.)
Wenn ein Samplewert für eine Lautstärke steht, gibt es natürlich auch einen maximalen Samplewert. Wenn man nun zwei solche Sounds abspielt, gilt das was ich oben gesagt habe. Es wird lauter! Und da bereits vorher maximale Samplewert erreicht war, gibt es jetzt auch Übersteuerung.

Vielleicht kannst du aber nochmal deine Gegentheorie darstellen, wie du vorschlägst zwei Sounds zu mischen.
Ich habe nämlich nicht ganz verstanden, was du mit deiner Rechnung aussagen möchtest.

EDIT:
Clipping mit theoretischen Signalen lässt sich recht leicht in der Praxis vermeiden in dem man Floating Points verwendet. Mein Eindruck ist, dass das auch zunehmend gemacht wird.
Nur wenn man es halt auf einen realen Lautsprecher abspielen will, gibt es immer eine Maximallautstärke (Sogar in der Natur, weil der Druck nach unten durch Vakuum begrenzt ist.) und dann muss man halt versuchen eine Lösung des geringesten Übels zu finden. Am Besten immer unter der Maximallautstärke bleiben. Sonst halt Verzerrungen hinnehmen, z.B. durch Übersteuerung oder dynamische Kompression.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4838
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: sound channel mixing - Formel ?

Beitrag von Schrompf »

Grmpf. Ok, nochmal in Ultrakurzform, ein letzter Versuch.

a) Echt Welt. Da draußen, das Ding mit Wind und so. Geräusch A und gleichzeitig Geräusch B ergeben eine Amplitude von A + B.

Also so, wie Du schreibst. Bringt Dir nur nix, denn:

b) Computer. Das Ding vor Deiner Nase. Quer durch alle Sound-Komponenten des Rechners, vom Mikrofon über die vielen Bearbeitungsschritte in Software bis hintenraus zum Digital/Analog-Wandler und auf den Boxen hast Du Limitierungen. Du kannst nicht A + B machen und hoffen, dass das schon irgendwie gut geht, weil es ja in der echten Welt so funktioniert. Das wird Scheiße klingen.

War das jetzt deutlich?

Und jetzt, da Du und RedGuy hoffentlich verstanden haben, warum man nicht einfach A+B implementieren kann und dann fertig ist, kommen die ganzen Formeln und Maßnahmen, die DerAlbi und ich beschrieben haben. Die da wären:
a) ein festes Gain, also ne schlichte Multiplikation der Amplitude. (A+B)*f
b) Ein Kompressor, also eine Amplituden-Abbildungsformel, die hohe Amplituden sozusagen ausbremst. Die knallharte Lösung, die zuverlässig 0..unendlich auf 0..1 bremst, wäre der von DerAlbi anfangs genannte tanh()
c) Ein Limiter, also ein zustandsbehafteter Gain, der die Amplitude jedes Samples gegen einen Maximalwert prüft und bei Überschreiten den Gain runterschraubt und erst langsam über Zeit wieder hochkommen lässt. Also (A+B) * f(Zeit)
d) Alles beliebige, was Dir einfällt und was gut klingt.

[edit] Ich sehe gerade Dein Edit und glaube, Du bist doch schon weiter in Gedanken, als Du bisher geschrieben hast.
Zuletzt geändert von Schrompf am 10.07.2017, 14:03, insgesamt 1-mal geändert.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: sound channel mixing - Formel ?

Beitrag von RedGuy »

Hi zusammen !

@Spiele programmierer und Schrompf:

Also ich meine, aber jetzt nicht ausrasten (bitte das Folgende lesen) :) , dass A+B nicht stimmt aus folgendem physikalischem Grund:

Je weiter ein Luftmolekül nach außen gedrückt wird, desto mehr Gegenkraft erfährt dieses - auf Grund von Unterdruck und Gegendruck vom nächsten Molekül.
Dies bedeutet, dass wenn B sich versucht auf A aufzumodulieren, dann erfährt es eine immer stärker werdende Gegenkraft, sodass B sich niemals Ganz addiert.

Kapiert ?

Ich behaupte das Superpositionsprinzip gilt NUR für den Schalldruck!!

Gruss
Red
Benutzeravatar
Schrompf
Moderator
Beiträge: 4838
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: sound channel mixing - Formel ?

Beitrag von Schrompf »

Und der Schalldruck ist die Druckverteilung im Medium.

Du hast Recht, sowas gibt es. Das sind nichtlineare Verzerrungen im Schall, die bei >100db auftreten. Das kann man gelegentlich bei großen Konzerten erleben, obwohl die Lautstärkenvorschrift für öffentliche Veranstaltungen in Deutschland der Sache seit einigen Jahren ein Ende bereitet hat. Bis zu diesen ~100db aber ist der Schalldruck ziemlich linear, ein simples A+B beschreibt das Verhalten nahezu perfekt.

Und wie gesagt: das alles kann Dir eigentlich wurscht sein, weil Du den Schall in digitalisierter Form beschreibst und am Ende über Boxen ausgibst, die nicht Deiner Kontrolle unterliegen. Du musst damit klarkommen, dass Du nur Amplituden von -1..+1 haben kannst. Und für diese Situation gelten all die oben xmal wiederholten Formeln.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: sound channel mixing - Formel ?

Beitrag von Krishty »

Bild
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
DerAlbi
Establishment
Beiträge: 269
Registriert: 20.05.2011, 05:37

Re: sound channel mixing - Formel ?

Beitrag von DerAlbi »

Ahahahaha Krishty :-D Wie sich hier alle Mühe geben und du haust dennoch wieder mal den inhaltlich passendsten Beitrag raus :-D
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: sound channel mixing - Formel ?

Beitrag von RedGuy »

Hi zusammen!

Also wenn man meine obige Formel vereinfacht, ist mir aufgefallen, kommt man auf den Durchschnitt ;) !

Also
Auslenkung_gesamt = (Summe Auslenkungen) / (Anzahl Auslenkungen)
Schallkonstanten fallen heraus.

Also ich komme letztenendes auf (A+B)/2 !!!

Wäre das auch erledigt 8-) .


Gruss
RedGuy
joeydee
Establishment
Beiträge: 1039
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: sound channel mixing - Formel ?

Beitrag von joeydee »

Durchschnitt heiß bei dir dann im Weiteren (A+B+C)/3 ?
DerAlbi
Establishment
Beiträge: 269
Registriert: 20.05.2011, 05:37

Re: sound channel mixing - Formel ?

Beitrag von DerAlbi »

Jo, damit wird alles immer leiser je mehr quellen man hat. Sind die Quellen still....
und wie ich sagte: nutze nicht den faktor 2, sondern sqrt(2). Statistisch reicht das. Man muss ja nicht mehr Signal verlieren als nötig.
joeydee
Establishment
Beiträge: 1039
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: sound channel mixing - Formel ?

Beitrag von joeydee »

Darauf wollte ich mit meiner Frage raus. Lass ihn das selbst entdecken.
DerAlbi
Establishment
Beiträge: 269
Registriert: 20.05.2011, 05:37

Re: sound channel mixing - Formel ?

Beitrag von DerAlbi »

Ist ja nicht so, dass das nicht schon erwähnt gewesen wäre....
RedGuy
Establishment
Beiträge: 111
Registriert: 17.09.2002, 17:27
Echter Name: Manuel Hofmann
Wohnort: Rottweil
Kontaktdaten:

Re: sound channel mixing - Formel ?

Beitrag von RedGuy »

Hallo !

Ja ich meine (A+B+C)/3

Die Quellen sollten nicht still werden, denn der Zähler erhöht sich ja ebenfalls.

Also das Ganze sollte wirklich stimmen, denn es ist physikalisch hergeleitet...

Gruss
Red

[EDIT]
PS: bald habe ich meinen 100. Beitrag 8-) :D ;)
Benutzeravatar
Schrompf
Moderator
Beiträge: 4838
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: sound channel mixing - Formel ?

Beitrag von Schrompf »

RedGuy hat geschrieben:Also das Ganze sollte wirklich stimmen, denn es ist physikalisch hergeleitet...
Oh Gott. Ich hatte echt gedacht, es wäre irgendwas von dem angekommen, was ich hier getippt habe. Und dann sehe ich ganz oben auf Mount Stupid jemanden winken.
PS: bald habe ich meinen 100. Beitrag 8-) :D ;)
Ein enormer Meilenstein, bei der Qualität der Texte, die Du vorlegst.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
joeydee
Establishment
Beiträge: 1039
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: sound channel mixing - Formel ?

Beitrag von joeydee »

Deine Durchschnittsrechnerei bedeutet grob:
Egal wieviele Explosionen gleichzeitig stattfinden, es wird nie lauter.
Und wenn zu einer Explosion eine Grille zirpt, wird die Explosion plötzlich leiser.

Meinst du doch nicht ernst, oder?
DerAlbi
Establishment
Beiträge: 269
Registriert: 20.05.2011, 05:37

Re: sound channel mixing - Formel ?

Beitrag von DerAlbi »

Master RedGuy, einfach nur, weil ich Spaß dran habe es nochmal zu schreiben:
mach eine Wurzel um deinen Faktor.
(A+B)/sqrt(2)
(A+B+C)/sqrt(3)

Physikalisch korrekt herleiten kannst du nur A+B. Der Faktor hat nichts mit Physik zu tun, sondern was mit dem limitierten Dynamikumfang deines digitalen Systems.
Wenn überhaupt kann man den Faktor 2 nur numerisch begründen (um Überlauf zu vermeiden). Überläufe sind aber nicht so schlimm, solange sie nicht überhand nehmen. Daher reicht statistisch sqrt(2). Das hat noch andere Begründungen, aber.. wozu..
Benutzeravatar
Zudomon
Establishment
Beiträge: 2253
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: sound channel mixing - Formel ?

Beitrag von Zudomon »

In den letzten Tagen habe ich auch mal darüber nachgedacht, mal genau diese Frage zu stellen. Krass, wie sich diese dann ohne mein Wissen hier im Forum manifestiert :D

Erstmal denke ich, das einfache Addieren ist richtig. Letztendlich ist es ja das gleiche, wie Wellen auf Wasser. Das skalieren mit der inversen Anzahl der Quellen ist auch korrekt, um die Übersteuerung komplett zu vermeiden. Allerdings ist hier Vorsicht geboten. Sagen wir, wir haben 4 Soundquellen... also A + B + C + D, das Ganze / 4, wenn 1 die Maximalamplitude jeder Quelle ist. Dieses / 4 würde nun aber auch bleiben, wenn eine Soundquelle verschwindet oder selbst leise wird. Dieser Faktor muss auch gar nicht / 4 sein. Denn wir wollen Übersteuerung vermeiden, jede Sound Quelle würde aber garantiert auch nicht in voller Intensität zu Buche schlagen. Wenn wir hier von Geräuschen im Spiel ausgehen, dann nehmen die ja wie Lichtquellen mit Abstand² ab, wenn keine Wände den Schall reflektieren. Überhaupt kann man sich gut mit Raytracing, Lichtquellen usw. ein gutes Äquivalent schaffen.
Schrompf hat ja auch schon auf das HDR aufmerksam gemacht, dass man eventuell auch eine Art Tonemapping anwenden könnte. Da kenne ich mich aber nicht aus. Aber bei Lichtquellen hat man genau das gleiche Problem. Wenn man das HDR Bild dann per Tonemap runterskaliert, wird das Bild auch nicht übersteuert und ergibt immer noch einen plausiblen Eindruck. Mich würde interessieren, ob das bei Schall auch so ist.
Eine Überlegung ist noch, dass damals zu DOS Spiele Zeiten ja auch nur eine Begrenzte Anzahl an Sounds gemischt wurden. Wenn also das obige 4 Sound Beispiel einfach so genommen würde, und man die stärksten 4 Soundquellen benutzt, dann sollte es ja immer noch einen guten Eindruck machen. Wobei "strärkste" bedeutet ja schon, dass zusätzliche Sounds dann immer weiter abnehmen und weniger beitragen.

Also mein Fazit nach den ganzen Überlegungen ist, wenn man nicht mit Tonemapping rumprobieren möchte, einfach einen Gesamtskalierungsfaktor einbauen. Vielleicht noch dynamisch tatsächlich Sounds runter skalieren, wenn z.B. temporär A und C extrem laut sind, beide etwas runterschrauben, damit es insgesamt wieder passt. Aber das wäre eigentlich schon eine Notlösung, denn ich glaube, letztendlich heißt es ausprobieren und schauen, ob sich das Ergebnis scheiße anhört oder gut genug ist. Und wenn irgendwo 3 Samples übersteuern ist das sicher auch nicht so tragisch. Denn wir haben hier ja gar nicht eine permanente Übersteuerung, sondern die kann ja nur auftreten, wenn die Wellenberge auch wirklich zusammen fallen.
Schrompf hat geschrieben:
RedGuy hat geschrieben:
PS: bald habe ich meinen 100. Beitrag 8-) :D ;)
Ein enormer Meilenstein, bei der Qualität der Texte, die Du vorlegst.
:lol:
Zuletzt geändert von Zudomon am 11.07.2017, 15:12, insgesamt 2-mal geändert.
Benutzeravatar
Krishty
Establishment
Beiträge: 8229
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: sound channel mixing - Formel ?

Beitrag von Krishty »

Bild
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
joeydee
Establishment
Beiträge: 1039
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: sound channel mixing - Formel ?

Beitrag von joeydee »

Zudomon hat geschrieben:Also mein Fazit nach den ganzen Überlegungen ist
Schrompf hat geschrieben: a) ein festes Gain, also ne schlichte Multiplikation der Amplitude. (A+B)*f
b) Ein Kompressor, also eine Amplituden-Abbildungsformel, die hohe Amplituden sozusagen ausbremst. Die knallharte Lösung, die zuverlässig 0..unendlich auf 0..1 bremst, wäre der von DerAlbi anfangs genannte tanh()
c) Ein Limiter, also ein zustandsbehafteter Gain, der die Amplitude jedes Samples gegen einen Maximalwert prüft und bei Überschreiten den Gain runterschraubt und erst langsam über Zeit wieder hochkommen lässt. Also (A+B) * f(Zeit)
:D

Krishty, herrlich :D
Antworten