Algorithmen für digitale Signalprozessoren

So,

ich hätte gerne ... ein nettes Buch, in dem unabhängig vom jeweiligen DSP einigermaßen brauchbare Algorithmen für Audiozwecke beschreiben werden. Audio heißt hier jetzt nicht Telefonie oder Sonar oder so, sondern Hifidudeldei. Beispiel: Will ich eine Röhre anähernd simulieren, müßte ich die zweite Harmonische aus dem Ursprungssignal bilden und angemessen zum Originalsignal addieren. Das alles soll so wenig Rechenzeit wie möglich kosten, weil DSP ja in Echtzeit zugange sind.

Kennt jemand ein paar passende Literaturstellen?

Viele Grüße, Holger

--

Alzheimer ist ganz toll. Man lernt ständig neue Leute kennen.
Reply to
Holger
Loading thread data ...

wie audiospezifisch soll es denn werden? Ich meine Algorithmen für die gängigen Filtertypen sind doch invariant bezüglich des Verwendungszweckes.

Das hat mit Algorithmen nichts zu tun. Das ist Filter-Design.

Um beim Beispiel zu Bleiben: Eine Interpolationstabelle mit der nichtlinearen Kennlinie würde wohl reichen. (Und den Rauschgenerator nicht vergessen.) Im übrigen ist es bei Verstärkern wie beim Wodka: ein guter hat keine eigene Note. Das gilt letztlich auch für Röhren. Aber das ist ein anderes Thema.

Das wiederum ist tatsächlich eine Algorithmenfrage. Nun sind aber die gängigen Aufgabenstellungen hinreichend performant gelöst. Wenn man aber bedenkt, dass eine 500MHz-CPU bereits ein FIR-Filter der Ordnung 30000 guten Gewissens in Echtzeit schafft, würde ich diesen Punkt eher nachrangig sehen. Interessanter ist eher die Frage nach der Latenz. Aber damit sind wir wieder beim Design, nicht bei den Algorithmen.

Marcel

Reply to
Marcel Müller

Marcel Müller schrieb:

Ich wollte hier jetzt nicht nach Algorithmen fragen, weil das den Rahmen sprengt, sondern nach Literaturstellen. Welche Bücher sind interessant? Sowas wie - ich erfinde mal einen Arbeitsbegriff - DSP für Audiophile? Ein Beispiel habe ich ja genannt. Aber ich habe das dunkle Gefühl, ich muß mal wieder alles selbst erfinden. Bücher, die allgemein auf das Thema eingehen, wie Oppenheim/Schafer kenne ich natürlich. Aber nachdem es - eine andere Welt - Bücher gibt, die in den 80ern erschienen und sich mit der Programmierung von Taschenrechnern befaßten, und dabei konkrete Implementationen einfacher Algorithmen besprachen (Newtons Interpolation kann ich sowohl mathematisch als auch konkret für den TI57-Taschenrechner formulieren, wobei dem Rechnerbesitzer dann die Umsetzung eines mathematischen Systems in konkrete Rechenschritte schon mal abgenommen worden ist), dachte ich mir, sowas wie "Programmieren von DSP mit dem GNU-C-Compiler oder sowas müßte es doch geben?

Grüße, Holger

--

Alzheimer ist ganz toll. Man lernt ständig neue Leute kennen.
Reply to
Holger

On 13 Dez., 06:40, Holger wrote: ...

Gab es mal, ist aber schon seeeeehr lange her - und war damals spezifisch f=FCr die jeweilige Prozessorarchitektur der jeweiligen Hersteller, sprich wurde eher im Rahmen eines prozessorspezifischen Kurses behandelt. In der Zwischenzeit sind die richtigen DSPs so komplex geworden, da=DF es wenig Sinn macht, denen mehr als nur ganz grob die Richtung vorzugeben. Schreib' die Software in C oder C++ so, da=DF _Du_ sie gut verstehst und warten kannst, den Rest erledigen der Compiler und Linker. Auch schon vor zehn Jahren war der Unterschied zwischen handoptimiertem Assembler und lesbarem C-Code f=FCr die typischen Problemstellungen unter 10%. Lustig wird es erst dann, wenn Du Dein Board Support Package selbst schreiben willst, sprich den DSP auf Deiner eigenen Platine zum Laufen bringen willst.

Gru=DF Markus

Reply to
Markus Imhof

Stichworte sind wohl: "Digitale Signalverarbeitung", "Z-Transformation", "FFT", "DFT"

eventuell auch "Echo Entzerrer", "digitale Filter"

Konkrete Literaturstellen kann ich dir leider nicht nennen, dass ich mich damit im Studium beschäftigt habe, ist > 20 Jahre her.

Gruß

Stefan DF9BI

Reply to
Stefan Brröring

Das programmieren ist wahrscheinlich der geringste Aufwand, da wie bereits von anderen geschrieben, die Compiler heutzutage so leistungsfähig sind, daß man das einfach so runterschreiben kann, sodaß man es selber gut lesen kann (wenn man nicht gerade sehr alte DSPs verwendet und das letzte daraus herausholen will).

Um Geräte, Räume usw. gut nachbilden zu können, ist vielleicht das hier interessant:

formatting link

Mit diesem Verfahren könntest du dann einen konkreten Röhrenverstärker ausmessen und relativ einfach nachbilden. Ich könnte mir vorstellen, wenn du z.B. nur Stereo hast, würde wohl auch ein besserer ARM Microcontroller reichen, für den der GNU C Compiler gut optimierten Code generiert.

Falls du eine DSP einsetzen willst: Je nach DSP braucht man meist etwas teurere kommerzielle Compiler, um gute Ergebnisse zu bekommen. Die kostenlose Symphonie IDE für einige Freescale DSPs z.B. erzeugt keinen besonders guten Code, aber gibt auch einen kaufbaren, dessen Name mir gerade nicht einfällt, und der besser sein soll.

--
Frank Buss, http://www.frank-buss.de
piano and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss

Am 13.12.2010 09:52, schrieb Markus Imhof:

Das stimmt so nicht. Zuerst sollte man natürlich versuchen die Implementierung zu optimieren, da hier potentiell am meisten rauszuholen ist. Mit Assembler ist aber zT mehr als 100% drin...

Reply to
Mario

"Programmieren ist wahrscheinlich der geringste Aufwand". Vorher muß man verstehen, was man überhaupt treibt. Impulsantworten sind eine Beschreibung linearer verschiebungsinvarianter Systeme, und das, was Röhrenverstärker in irgendeiner Weise heutzutage noch interessant macht, sind ihre subtilen Nichtlinearitäten.

Sprich, Dein Vorschlag ist reiner Aktionismus, bei dem man sich mit Hilfe großen Aufwandes einbildet, ein einfaches Problem mit so viel Aufwand bekämpft zu haben, daß es bestimmt damit erschlagen sein muß.

Eine schlichte Lookuptable für Werte ohne jeglichen Firlefanz käme da wohl noch viel näher dran. Eine gute Modellierung würde vermutlich um diese Nichtlinearität noch ein einfaches lineares Ein- und Ausgangsfilter setzen müssen.

Aber ohne eine Nichtlinearität wird man nicht das einfangen, wovon Musiker glänzende Augen kriegen, berechtigt oder nicht.

--
David Kastrup
Reply to
David Kastrup

Zumindest hätte man damit ein einfaches Verfahren, um schonmal den Frequenzgang zu bestimmen und zu reproduzieren.

Allzu Nichtlinear scheint mir aber die Kennlinie nicht zu sein, z.B. hier zu sehen:

formatting link

Und per einfacher Lookup-Table könntest du nur die reine Verstärkungskennlinie nachbilden, ohne Frequenzabhängigkeit und ohne andere nichtlineare Eigenschaften. Müsste man aber mal ausprobieren, vielleicht reicht es als erster Ansatz tatsächlich.

Da gibt es doch bestimmt umfassende Untersuchungen drüber, wie sich ein Röhrenverstärker verhält und wie man es simuliert?

--
Frank Buss, http://www.frank-buss.de
piano and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss

Du kannst nichts "reproduzieren", was nicht da ist. Der Witz an Nichtlinearitäten ist ja gerade, daß Du nicht sagen kannst "Sinus von x Hz kommt am Ausgang um einen Faktor y(x) verstärkt an", weil hinten ja gar kein Sinus mehr rauskommt.

Was an "subtilen Nichtlinearitäten" hast Du jetzt nicht verstanden?

Frequenzabhängigkeit ist per se keine "nichtlineare Eigenschaft". Wenn man sinnvoll von einem Frequenzgang sprechen kann, hat man ein lineares System, egal wie krumm und schief der Frequenzgang ausfällt.

Welcher Röhrenverstärker denn jetzt?

--
David Kastrup
Reply to
David Kastrup

Am 12.12.2010 23:15, schrieb Holger:

Hmm,

hier ein bischen zum Kalmanfilter, falls das hilft. Erst seit gestern suche ich nach Info darüber.

formatting link

formatting link
formatting link

formatting link

formatting link

formatting link

Peter

Reply to
Peter Thoms

Da haben wir dann aneinander vobeigeredet. Mit nichtlinear meinte ich in diesem Zusammenhang z.B. f(x)=x^2, oder ein anderes Polynom, was die Verstärkungskennlinie eines Röhrenverstärkers vielleicht besser beschreibt. Ist keine lineare Funktion und daher nichtlinear. Das könnte man sehr gut per Lookup-Tabelle nachbilden.

Ich könnte mir gut vorstellen, daß es noch andere Nichtlinearitäten gibt, habe aber tatsächlich keine Ahnung davon :-)

Der OP hatte als Beispiel die Simulation einer Röhre angesprochen, die er vielleicht simulieren möchte. Keine Ahnung, was es da so gibt.

--
Frank Buss, http://www.frank-buss.de
piano and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss

Am 13.12.2010 15:04, schrieb Peter Thoms: [...]

formatting link

formatting link

[...]
Reply to
Peter Thoms

Nochmal als weitere Anhaltspunkt, der SH7262 mit dem ich hier ja rumspiele laeuft mit 144Mhz. Der Microcontroller ist in der Lage ein MP3-File von SD-Karte zu lesen, es per Software (libmad) zu dekodieren und per I2S auf einem DA-Wandler auszugeben. Dabei schafft die CPU

128kbit und 192kbit ohne Probleme, mit 256kbit ist sie voll ausgelastet. Soll heissen ich sehe das mein Buffer ab und an, an den anspruchvollen Stellen der Musik etwas leer laeuft und sich an anderen Stellen wieder fuellt. 320kbit schafft der Controller nicht mehr.

Das ganze mit libmad 0.15.1b und bis jetzt noch ohne spezielle Optimierungen sondern einfach in der Defaulteinstellung. Und auch ohne Verwendung der Fliesskommabefehle.

Also eigentlich braucht man doch fuer Audio dann keinen DSP mehr. :-)

BTW: Audioprogrammierung macht richtig Spass. Da kann man seine Programmierfehler immer gleich hoeren...

Olaf

Reply to
Olaf Kaluza

Es gab mal einiges in der Elrad zu diesem Thema. Die hatten ja auch mal einen Audio-DSP gebastelt und dazu gab es auch mal eine Artikelreihe mit diversen Grundlagen.

=============================================================================== Titel : DSP-System: Kurzer Prozeß, Teil 4 Seite : 70 Ausgabe : 6 Zeitschrift : 89 Schlagwörter: Projekt, digitale Filter-Berechnung, Dämpfung, Tiefpaß, Addierer, Multiplizierer, Verzögerer, Durchlaßbereich, Sperrbereich, Butterworth-Filter, Filter-Koeffizienten, Bandpaß, Fouriertransformation, IIR-, FIR-Filter, Terminalprogramm, Adressierung

=============================================================================== Titel : DSP-Versuche am Bildschirm Seite : 72 Ausgabe : 6 Zeitschrift : 89 Schlagwörter: Buchbesprechung, digitale Signalverarbeitung, PC-Software, Experimente zur DSP-Simulation, z-Transformation, Systemfunktionen, Pole, Nullstellen, Impulsantworten, IIR-, FIR- Filter, Amplitudenmodulation, Fouriertransformation =============================================================================== Titel : Klangsynthese-DSP SAM8905, Teil 1 Untertitel : Erster digitaler Signalprozessor speziell für Musikelektronik Seite : 42 Ausgabe : 4 Zeitschrift : 90 Schlagwörter: Entwicklung, Bühne/Studio, Audio, Grundlagen, Software, elektronische Klangerzeugung, Klangsynthese, Abtastfrequenz, TMS32010, 80C32-1, MIDI-Schnittstelle

=============================================================================== Titel : Schaltungstechnik: Klangsynthese mit SAM 8905, Teil 2 Seite : 91 Ausgabe : 5 Zeitschrift : 90 Schlagwörter: Prozessortechnik, Klangsynthese, DSP, Musik, Musikelektronik, SAM 8902 =============================================================================== Titel : DSP-System: Signal-Doppeldecker, Teil 1 Seite : 42 Ausgabe : 12 Zeitschrift : 90 Schlagwörter: Prozessortechnik, DSP-System, Regeltechnik, Spacherkennung, Sampling, Musikelektronik, Echtzeitfähig, DSP 32 =============================================================================== Titel : Wellenreiter Untertitel : 56001-DSP-System für Entwicklung und Ausbildung (Teil 1) Seite : 20 Ausgabe : 2 Zeitschrift : 93 Schlagwörter: Projekt, DSP-Kern, 33-MHz-56001, X-, Y- und P-Memory je

64-k- Worte a 24 Bit

=============================================================================== Titel : Wellenreiter (2) Untertitel : 56001-DSP-System für Entwicklung und Ausbildung Seite : 89 Ausgabe : 3 Zeitschrift : 93 Schlagwörter: Projekt, Schnittstellen des Wellenreiters: Analog/Digital (Crystal CS 5126), Digital/Analog (Analog Devices AD 1866), AES- EBU In (Crystal CS 8412), AES-EBU Out (Crystal CS 8402A),

=============================================================================== Titel : Wellenreiter Untertitel : 56001-DSP-System für Entwicklung und Ausbildung (4) Seite : 85 Ausgabe : 5 Zeitschrift : 93 Schlagwörter: Projekt, Analog-Filter, Bestückungspläne =============================================================================== Titel : Spürnase Untertitel : Adaptive Filter in der Signalverarbeitung, T.1: Funktionsprinzip der Adaption Seite : 28 Ausgabe : 8 Zeitschrift : 94 Querverweise: Teil 2, ELRAD 8/94; Teil 3, ELRAD 9/94 Schlagwörter: Filter, DSP (Digitaler Signalprozessor), Signalverarbeitung, digitale Filter

=============================================================================== Titel : Signal Processing Untertitel : Digitale Signalverarbeitung, Teil 7: FIR-Filter Seite : 88 Ausgabe : 6 Zeitschrift : 96 Schlagwörter: Grundlagen, DSP, 56002, EVM, Mittelungsfilter, FIR-Filter, komplexe Zahlen, parallelverarbeitung, Modulo-Buffer =============================================================================== Titel : Signal Processing Untertitel : Digitale Signalverarbeitung, Teil 8: FIR-Filter und Filtersynthese Seite : 82 Ausgabe : 7 Zeitschrift : 96 Schlagwörter: Grundlagen, DSP, 56002, EVM, Linearphasige Filter, Filtersynthese, Gruppenlaufzeit, Gibbsches Phänomen, Fensterung, Parks-McClellan =============================================================================== Titel : Signal Processing Untertitel : Digitale Signalverarbeitung, Teil 10 Seite : 104 Ausgabe : 9 Zeitschrift : 96 Schlagwörter: Grundlagen, Nachhall, DSP, Raumakustik, Geometrische Akustik, Energiedichte, Allpaß, Hallzeit

Falls du sie nicht bereits hast koennte sich also die Anschaffung der Elrad-DVD lohnen.

Meine Erfahrung mit dem SH2 (also SH7262) ist leider das der gcc da relativ lahm ist. Genauer gesagt laeuft die MP3-Decodierung Faktor 2-3 langsamer als wenn ich den Originalcompiler von Renesas nehme. Ich habe meinen Code mit beiden Compilern uebersetzt und ausprobiert.

Und man sieht auch sofort warum das so ist wenn man mal den Code des gcc mit dem Compiler von Renesas vergleicht. Der gcc ist an sich schonmal nicht so effizient und besonders hat er wohl Probleme was die Anordnung der Assemblerbefehle angeht fuer CPUs die mehrere Befehle auf gleichzeitig verarbeiten. Vielleicht aber ist der Codegenerator fuer dein DSP besser? Olaf

Reply to
Olaf Kaluza

Auch bei DSPs? Ich hab hier letztens beim Debuggen einiges an Zeit damit verbracht zu lesen was die Compiler erzeugen. Wenn ich mich ganz stark anstrenge koennte ich vielleicht aehnlich effizient sein wie der Compiler von Renesas fuer meinen Controller. Ob ich das auf Dauer durchhalte wage ich mal zu bezweifeln. Einfach deshalb weil der Compiler den erzeugten Assemblercode wuest umsortiert um die gleichzeitige Ausfuehrung mehrere Befehle zu erreichen. Daher wuerde es mich nicht wundern wenn ein guter Compiler heute schon besser ist als man es selber von Hand kann. Ausnahmen sind natuerlich spezielle Optimierungen wo man Dinge ausnutzen kann die der Compiler einfach nicht weiss. (z.b die skalierte Multiplikation in der libmad)

Krass ist es wenn man dann den Debugger nutzt. Auf Sourcecodelevel sieht es so aus als wenn der Prozessor wild in seinen Funktionen rumspringt, im Assemblercode sieht man dann sogar welche Befehle gerade gleichzeitig ausgefuehrt werden.

Olaf

Reply to
Olaf Kaluza

Am Sun, 12 Dec 2010 23:15:20 +0100 schrieb Holger:

Stell doch die Frage auf englisch in comp.dsp. Da hat es hilfreiche Leute (na ja, die meisten).

HTH Martin

Reply to
mblume

Olaf Kaluza schrieb:

Hallo Olaf,

die ELRAD-DVD könnte ich noch gut gebrauchen. Ich bastele hier mit einem nicht mehr so brandneuen DSP herum, dem XC96002 von Freescale, einst Motorola. Audio, Musikelektronik, digitaler Synthesizer, das sind so im Groben die Stichworte für den Einsatz. Meine DSP-Programme schreibe ich in Assembler. Welche Befehle der DSP gleichzeitig ausführen kann, weiß ich noch nicht. Müßte ich nochmals das Handbuch genauer filzen. Ich sehe aber jede Menge an Befehlen, die Multiplikation und Addition von Operanden in sich vereinigen.

Die ganz neuen DSP sind für mich nicht so spannend, weil die alle im BGA-Gehäuse vorliegen, das ich privat nicht verarbeiten kann.

Grüße, Holger

--

Alzheimer ist ganz toll. Man lernt ständig neue Leute kennen.
Reply to
Holger

neben allgemeinen DSV Büchern wäre z.B. "DAFX - Digital Audio Effects" von Udo Zölzer (ed)

formatting link

ein Einstieg, wenn es speziell um Audioeffekte geht. Grundlagen der Signalverarbeitung ("was ist ein Filter", "was ist ein lineares System", ...) setzt es wohl voraus.

Unter

formatting link
finden sich Links zu den jährlichen DAFX Konferenzen, in den Papers gibt es mit Sicherheit mehr als genug Anregungen zum eigenen Experimentieren. Vielleicht erst mal am Rechner (in Matlab/Simulink /Octave/Scilab oder mit was auch immer verfügbar ist) ausprobieren, bevor du es auf dem DSP implementierst.

Servus Wolfgang

Reply to
Wolfgang Sörgel

Wolfgang Sörgel schrieb:

Das von dir vorgeschlagene Buch kostet um die 100 Euro, nun ja. Aber vielen Dank für deine Mühe.

Viele Grüße, Holger

--

Alzheimer ist ganz toll. Man lernt ständig neue Leute kennen.
Reply to
Holger

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.