mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Pseudo Kunstkopf Stereo mit DSP56002, alte Motorola Applikation


Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch die Koeffizienten umgerechnet auf eine Skala von -1...+1.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
und als Tabelle, mit diesen Werten könnte man mit Matlab/Scilab/Octave 
den Frequenzgang berechnen lassen

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ?

Autor: T. H. (pumpkin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Christoph,

das ließt sich interessant (wenn auch teilweise nicht in Prosa ;^) ). 
Hast du das schonmal ausprobiert, wie sind die Resultate?

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: T. H. (pumpkin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: T. H. (pumpkin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab mal gegoogled wegen des Frequenzgang-Plots. Die Funktion in Matlab 
heißt "freqz"
http://www.mathworks.com/access/helpdesk/help/tool...

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...

und in Scilab ist es "frmag", magnitude of FIR and IIR filters:
http://www.scilab.org/product/man/index.php?module...

Autor: TommyZ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier gibt es noch mehr Impulsantworten für solche Filter:

http://recherche.ircam.fr/equipes/salles/listen/index.html


ciao, TommyZ

Autor: Strubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: E-techniker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Audiomann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
Autor: Jürgen Schuhmacher (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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).

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.