Vier 80-Tap-FIR-Filter mit 44,1 kHz Samplerate simulieren aus einem normalen Stereosignal ein Kunstkopfsignal. Eine Beschreibung dazu und drei Quelltexte für das kurze Hauptprogramm, die Koeffiziententabelle und die Initialisierung des AD/DA-Wandlers, für das DSP56002 Evaluationsboard. Die Filter sollten sich aber auch auf andere DSPs oder vielleicht ARM7 umschreiben lassen. Diese Applikation von 1995 habe ich damals aus der Telefonmailbox von Motorola geholt. Anscheinend hat sie noch niemand ins Internet herübergerettet. Ein Grund könnte das seltsame Textformat sein, damals wohl eine Alternative zu PDF, "No Hands Software", später "Common Grounds Software" -mini-viewer. Der Dateibetrachter war mit dem Text in einer EXE-Datei verpackt - leider sind die Bilder etwas stark komprimiert und die Beschriftung kaum lesbar. Ich habe alles in ein PDF gedruckt, die Sourcecodes mit dem Crimson-Editor, zu dem hier http://www.unidsp56.de/ ein Syntax-File für DPS56k existiert.
Hier noch die Koeffizienten umgerechnet auf eine Skala von -1...+1.
und als Tabelle, mit diesen Werten könnte man mit Matlab/Scilab/Octave den Frequenzgang berechnen lassen
Ich glaube, da ist ein Schreibfehler im Quelltext: vorne wird "ir_length EQU 60" definiert, die Tabellen haben aber je 80 Koeffizienten. Die Verzögerung von 0,4 Millisekunden ist anscheinend schon im Filter eingebaut, sie ist im Quelltext nirgends explizit erwähnt. Das folgere ich aus der Ähnlichkeit von Impulsantworten und Koeffizientendiagramm, beide haben diesen Versatz zwischen beiden Kurven. Zufällig hat OpenOfficeCalc dieselben Farben für die Kurven gewählt. Die Umrechnung Hex-Zweierkomplement in vorzeichenbehaftete Dezimalzahl habe ich wenig elegant in drei Schritten mit: =DEZIMAL(A1;16) (Umrechnung Hex in positive Dezimalzahl) =((2^24)-B1)*(B1>(2^23))*(-1)+B1*(B1<(2^23)) (Zweierkomplement umrechnen) =D1/(2^23) (Dezimalbruch innerhalb -1...1) ausgeführt das geht sicher eleganter - womöglich liegt es noch um 1 daneben ?
Moin Christoph, das ließt sich interessant (wenn auch teilweise nicht in Prosa ;^) ). Hast du das schonmal ausprobiert, wie sind die Resultate?
Nein, noch nicht probiert, aber das EVM habe ich seit Jahren rumliegen, ein Flash-ROM steckt auch drin. Nach einem anderen Thread hier : Beitrag "Suche RS232-Karte für PCIe" scheint für die Motorola-Software ein alter PC nötig zu sein, bei dem die serielle Schnittstelle noch nicht virtuell ist. Auf der Platine sitzt allerdings ein 68HC irgendwas, der sollte eine normgerechte Schnittstelle anbieten. Es gibt auch noch den OnChipEmulator OnCE, der muß an eine zweite serielle Schnittstelle angeschlossen werden, vielleicht ist der gemeint.
Christoph Kessler wrote: > ...scheint für die Motorola-Software ein alter PC nötig zu sein, bei dem > die serielle Schnittstelle noch nicht virtuell ist. Das lohnt den Aufwand wahrscheinlich nicht. Die Sache ist ja nicht so dick, das mal schnell in C zum probieren auf einen aktuellen DSP/ARM runterfrickeln sollte schneller gehen.
Christoph Kessler wrote: > und als Tabelle, mit diesen Werten könnte man mit Matlab/Scilab/Octave > den Frequenzgang berechnen lassen Das Format ist sehr unglücklich. Stelle doch bitte die einzelnen Spalten (untereinander) als .txt hier rein. Ich wollte das gerade mal antesten...
Anscheinend waren 80 Koeffizienten zuviel, der DSP läuft mit 40 MHz, also stehen für 44,1 kHz Samplerate etwa 1000 Takte zur Verfügung. 4*80 MACs haben also je drei Takte Zeit, inclusive der AD/DA-Wandlung, dem Schleifenzähler usw. Deshalb die Beschränkung auf die ersten 60.
Hab mal gegoogled wegen des Frequenzgang-Plots. Die Funktion in Matlab heißt "freqz" http://www.mathworks.com/access/helpdesk/help/toolbox/signal/index.html?/access/helpdesk/help/toolbox/signal/freqz.html denselben Befehl gibt es in Octave https://staff.hti.bfh.ch/sha1/Octave/index/f/freqz.html http://ccrma.stanford.edu/~jos/filters/Example_LPF_Frequency_Response.html und in Scilab ist es "frmag", magnitude of FIR and IIR filters: http://www.scilab.org/product/man/index.php?module=signal&page=frmag.htm
Hier gibt es noch mehr Impulsantworten für solche Filter: http://recherche.ircam.fr/equipes/salles/listen/index.html ciao, TommyZ
Tach Gemeinde, es sollte eigentlich noch irgendwo eine komplette Entwicklungsumgebung zum 56k fuer Linux geben (a56 von Quinn Jensen)..zumindest gammelt auf irgend einer CD in meinem Archiv sowas rum, allerdings angepasst fuer ne Turtle Beach DSP-Soundkarte (ISA Bus, lang ist's her...) Ich erinnere mich allerdings nicht mehr, wie man den Code auf den DSP bekam.. und wie das mit dem EVM ging, ist mir komplett entfallen. Finde es aber prima, dass jemand noch ein bisschen Retro-DSP macht :-) Gruss, - Strubi
Ich wollte nicht unbedingt "Retro-DSP" damit machen, sondern eher dasselbe auf heutigen Prozessoren versuchen, ein ARM7 um die 5 Euro hat soweit ich weiß ebenfalls 32 Bit MAC-Befehle, http://www.mikrocontroller.net/articles/LPC2000 mit 60 oder 70 MHz Takt sollte der auch dieses Filter rechnen können. Wenn man das Prinzip stark vereinfacht, die Verzögerung von 0,4 ms nicht in das Filter packt und IIR verwendet, könnte ein 8 Bit AVR vielleicht auch noch einen ähnlichen Effekt rechnen.
Dummerweise finde ich erst jetzt diesen thread. Sehr interessant. Ich habe da noch eine 56003 Plattform mit 120Hz rumliegen. Dafür gibt es eine komplette GNU toolchain.
Was genau war denn der Zweck der Applikation? Ein Kunstkopf produziert doch ein recht komplexes Klangverhalten inklusive der Erzeugung von Echos zur Frontallokalisation. Wie bringt das der Filter?
Das alte Thema wird immer wieder mal aufgegriffen, wie verwandelt man normale Stereo-Aufnahmen in eine Art Kunstkopf-Signal. Stichworte sind z.B. "binaural" "dsp headphone stereo enhancer" “out of head localization” "3D Holographic Sound for Headphones" "Surround Virtualization & Enhancement" die Kopfhörer-Hersteller bieten für ihre Spitzenmodelle solche Zusatzkästchen an, zu gesalzenen Preisen. https://de.wikipedia.org/wiki/Binaurale_Tonaufnahme Das hier genannte Hörspiel "Demolition" von 1973 habe ich noch irgendwo auf Tonband. Eine Science-Fiction um Gedankenleser. Ich erinnere mich noch an die Beschwerde eines Kunden im Laden, wieso man noch keinen Gedankenleser eingestellt habe, um die Kundenwünsche direkt zu erfahren. Und einen Kriminellen, der sich einen "Ohrwurm" beschafft, der seine kriminellen Gedanken übertönt. Lang her. kurz gesucht: Basiert auf einem Roman von 1952 „The Demolished Man“: https://de.wikipedia.org/wiki/Alfred_Bester
:
Bearbeitet durch User
Nun ja, die Überführung von Stereomischungen in eine Kunstkopfaufnahme funktioniert nur sehr theoretisch! Bei typischen akustischen Aufnahmen in Multimikrofonie, also mit Hauptmikro und Stützen gibt es eine derart komplizierte Phantomschallquellensituation, dass es praktisch garnicht funktioniert und selbst bei Aufnahmen mit einem einzigen Stereomikrofonpaar ist das nicht richtig machbar. Die Mikrofone, die für KK verwendet werden, haben für sich schon komplett andere Richtungs-Charakteristiken und in Verbindung mit der Beugung der Frequenzen am Kunstkopf, den künstlichen Ohren etc, ist das aus einer Stereosumme allein mit Equalizern und Delays nicht nachzubilden. Die Lautsprecherabstrahlcharakteristik, tut ihr übriges. Hinzu kommt auch noch, dass der reale Abhörraum immer Reflektionen generiert, die beim Abmischen i.d.R. indirekt berücksichtigt wurden, die hier ebenfalls fehlen. Allenfalls kann man das für theoretische, ideale Signalquellen auf einer virtuellen Stereobasis in einem reflexionfreien Raum in etwa annähern, um eine eine für den Kopfhörer erträgliche(re) Mischung hinzubekommen. Dies ist dann der Fall, wenn die Mischung an sich zu trocken ist oder eine zu deutliche Monosumme hat, die dann mitten im Kopf stünde. Effekte, wie eine virutuelle off-Position und die gesamte Räumlichkeit sind damit aber zerstört, weil Stereohören über Lautsprecher immer ein 3D-Hören ist: Schallanteile wirken aus allen Raumdimensionen, also auch von hinten und von oben und dringen durch den Schädel ein. Das alles trägt zu dem Klangbild der echten Stereobasis bei. Die beiden Signaldatenströme sind also grundsätzlich unterschiedlich und nicht konsistent ineinander überführbar. Zu dem Thema gibt es eine umfangreiche Beitragssammlung im Tonmeisterforum (Surround-Sound-Forum).
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.