Guten Abend, ich hab früher recht gerne Lautsprecher gebaut (also Chassis vermessen, Gehäuse mit Frequenzweiche simuliert, Holz zuschneiden, fräsen und kleben) und hab da bei einem Projekt keine passive Frequenzweiche sondern einen miniDSP eingesetzt. Der hat das Analogsignal über 2 Stereo-Cinchkabel erhalten und das dann gemäß den Filtern, die man komfortabel per PC programmieren konnte, angepasst. So spart man sich unter anderem die Frequenzweiche für Hoch- bzw. Tieftöner und man kann noch ein wenig Raumoptimierung betreiben. Das Ding war damals sehr teuer (knapp 100€ das Stück), ich bin inzwischen nicht mehr so drinn in der Materie aber hab gehört / gelesen, dass es das inzwischen auch günstiger gibt. Mich hätte es nun einfach mal interessiert, wie viel Rechenleistung man braucht, um solche Filter in "Echtzeit" (mir ist klar, dass es eine Reaktionsverzögerung geben wird, aber das Audiosignal sollte störungsfrei sein) zu berechnen? Bei einem Stereosignal (d.h. 2 Lautsprecher mit jeweils 1x Tief- und 1x Hochtöner) sind das dann 4 Signale, die bearbeitet werden müssen. D.h. der µC müsste entweder 4 hochauflösende DACs haben oder man setzt auf externe DACs. Noch dazu 4 schnelle 16-Bit ADCs (bzw. braucht man 16-Bit überhaupt?). Die Frage kam bestimmt schon öfter vermute ich. Edit: Hab vor kurzem ein Teardown eines IKEA-Bluetooth-Lautsprechers auf YouTube angeschaut und da war ein Prozessor von NXP mit 1GHz Cortex A9 + 226MHz Cortex M4 verbaut - das erscheint mir nun doch etwas Overkill?
:
Bearbeitet durch User
Max M. schrieb: Machen wir es mal stückchenweise: > das Analogsignal über 2 Stereo-Cinchkabel erhalten Denkfehler 1: Mit Stereo-Cinchkabeln bekommt man schon ein Klangdefizit. Außerdem sind es 2 Analogsignale und zusammen mit dem GND deren 4! Max M. schrieb: > aber das Audiosignal sollte störungsfrei sein Denkfehler 2: Gerade digitale Technik baut Störungen in des Signal ein. Max M. schrieb: > sind das dann 4 Signale Denkfehler 3: Es sind 2 Signale, die bearbeitet werden müssen. 2 Signale auf 4 Leitungen = 2 Leitungspaaren. Erst nach der von dir angestrebten Trennung sind es 4 Signale = 2 Bässe und 2 Höhen auf insgesamt 4 Leitungspaaren = 8 Leitungen! Von diesen 8 Leitungen werden bei deiner Billiglösung 4 GND sein, nehme ich an. Max M. schrieb: > Noch dazu 4 schnelle 16-Bit ADCs Denkfehler 4: 16 Bit DACs sind bei Weitem nicht ausreichend. Seit 20 Jahren arbeiten die Audio-Techniker mit 20Bit-DACs oder gar 24 Bit-DACs. Max M. schrieb: > IKEA-Bluetooth-Lautsprechers Denkfehler 5: Was mit solchen Dingern getestet wurde, ist aussagenfrei. Wer so eine Qualität anstrebt, kauft lieber für 50,- was Fertiges! Denkfehler 6: Du hast du ADCs vergessen Denkfehler 7: Du hast die Verstärker vergessen
> Das Ding war damals sehr teuer (knapp 100€ das Stück) 100€ das Stück ist dafür nicht teuer. Wenn du es dafür noch bekommst: Kaufen. > ein Prozessor von NXP mit 1GHz Cortex A9 + 226MHz Cortex M4 verbaut Das ist Schnarpel für die Massen und hat mit "Hochwertig" gleich gar nichts zu tun.
Grösster Denkfehler ist das du alles in einem Kasten machst. 2 Lautsprecher also 2 * Elektronik (Mono) Dann hast Du entweder einen ADC oder einen Digitaleingang. Da wir hier im Lautsprecher sind reichen wahrscheinlich noch 12bit (16 oder 24 sind aber auch nicht schlecht auch wenn man >16bit nicht mehr bemerkt). Als Prozessor / Filter würde ein Cortex M4 oder M7 reichen. Dann noch eine Digitalentstufe dahinter (macht der Prozessor über PWM) und man ist fertig. Mehr braucht man innerhalb eines Lautsprechers nicht machen, es sind ja alle Eigenarten bekannt. Sauber ausmessen muss man das dann logischerweise, sonst klingt das nach einem Blecheimer. Ich habe schon Entstufen mit einem kleinen AVR gesehen, nur die würden keinen Filter mehr schaffen, darum der M4 mit seiner DSP-Einheit. Als externe Entstufen muss man sich schon etwas mehr anstrengen, weil man hier auf alles gefast sein muss. P.S. ich arbeite in der High End Branche (Lautsprecher).
Ob ein Prozessor reicht, oder nicht, kann man etwa abschätzen: Wert empfangen + Zwischenspeichern = 2 uC-Operationen x Taps Wert aus dem Speicher holen + Addieren + Multiplizieren + Aufsummieren = 4 x Taps/2 Sind: 2 x 1024 + 4 x 1024 / 2 -> ~4000 2 Kanäle x 48 kHz * 4.000 = 500 Mega-Operationen Kommt nun drauf an, wieviele Taktzyklen der Prozessor jeweils braucht. Für gestiegene Anforderungen: 8 Kanal x 7 Bänder x 8192 TAPs x 192kHz = 50 Giga OPs Wären 50 Cortexe oder ein kleines FPGA :D http://www.96khz.org/htm/precisionaudiofilter.htm
Danke für eure Antworten, da hab ich mein Vorhaben doch reichlich überschätzt, so weit weg sind wir von einem Cortex A9 dann gar nicht mehr. Peter schrieb: > Grösster Denkfehler ist das du alles in einem Kasten machst. Läuft das bei aktiven Lautsprechern nicht auch so? Also einer hat die Elektronik + Verstärker drinnen und liefert das dann an den 2. Lautsprecher weiter? Man könnte prinzipiell auch nur die Signalverarbeitung machen und einen externen Verstärker verwenden aber dann stelle ich mir die Verkabelung unschön vor da ich natürlich alles im Lautsprecher unterbringen möchte. Vielleicht geht man erstmal von einem einfachen Lautsprecher mit Breitbänder aus, da braucht man dann keine Frequenzweiche zum Schutz des Hochtöners und man hat nur ein Ausgangssignal pro Lautsprecher. Peter schrieb: > Sauber ausmessen muss man das dann logischerweise, sonst klingt das nach > einem Blecheimer. Das ist natürlich der wichtigste Part. Das coole an dem miniDSP war, dass man den Frequenzgang, den man per USB-Mikrofon aufgenommen hat, so gleich mit Filtern tunen konnte bis man einen möglichst glatten Verlauf hat. Peter schrieb: > Als externe Entstufen muss man sich schon etwas mehr anstrengen, weil > man hier auf alles gefast sein muss. Da komme ich nicht ganz mit, wie meinst du das? Peter schrieb: > P.S. ich arbeite in der High End Branche (Lautsprecher). Sehr cool. Ich hab das nur als (ernsthaftes) Hobby betrieben und würde jetzt gerne meine Leidenschaft für Microcontroller, Informatik und Eektronik mit Lautsprechern vernüpfen. Peter schrieb: > Da wir hier im Lautsprecher sind reichen wahrscheinlich noch 12bit Warum hängt das konkret an den Lautsprechern, dass man hier weniger Auflösung braucht? Im Vergleich zu Kopfhörern sind Lautsprecher sicher weniger kritisch aber an "CD-Qualität" möchte man doch schon hin. mid night man schrieb: > Von diesen 8 Leitungen werden bei deiner > Billiglösung 4 GND sein, nehme ich an. Wie funktioniert das bei einer hochwertigen Lösung? Irgendwie muss der Stromkreis ja geschlossen werden? Ein paar weitere Fragen hätte ich noch: Steigt mit jedem weiteren Filter, den ich z.B. verwende, um den Frequenzgang zu linearisieren, der Rechenaufwand d.h. ein Prozessor kann nur eine bestimmte Anzahl an Filtern realisieren? Muss das Eingangssignal, dass per 3.5mm Klinke reinkommt, noch in irgendeiner Form verarbeitet werden (z.B. verstärkt weil Spannung zu niedrig)?
Alles was ich sagte / sage bezieht sich auf einen direckten Einbau und nicht auf ein externes Gerät. Da sind die Anforderungen erheblich höher und da würde es ohne FPGA oder Cortex A* sehr schwer. Das ist dann aber auch etwas was deutlich über dem was der TO wollte. Rechnerisch hast aber Du recht. Aber bei einer Frequenzweiche (MONO) mit 2 Ausgängen brauchst Du nicht so viel berechnen. Es sind letztentlich nur 2 Filter. Stereo sind es dann halt 4 Filter, 2 ADC in und 4 DAC out. Also nichts was man nicht auf einem M4 hinbekommt und das sogar in einer guten Quallität. Wenn man die Qualität noch steigern will nimmt man Externe AD/DA Wandler und geht über I²S rein und raus.
Nein, aktive Lautsprecher habe das jeweils in der Box drin. Extern Entstufen müssen mit allem zurecht kommen was man dran hängt. Also 2-16 Ohm, unterschiedliche Kabel und weitere unbekannten Parametern. Bei einer Interne Endstufe kennts Du alle Parameter und hast keine Überraschungen. Je mehr Filter --> je mehr Rechenleistung. Geht nicht anders.
Jürgen S. schrieb: > Ob ein Prozessor reicht, oder nicht, kann man etwa abschätzen: > > Wert empfangen + Zwischenspeichern = 2 uC-Operationen x Taps > > Wert aus dem Speicher holen + Addieren + Multiplizieren + Aufsummieren = > 4 x Taps/2 > > Sind: 2 x 1024 + 4 x 1024 / 2 -> ~4000 > > 2 Kanäle x 48 kHz * 4.000 = 500 Mega-Operationen > > Kommt nun drauf an, wieviele Taktzyklen der Prozessor jeweils braucht. > > Für gestiegene Anforderungen: > > 8 Kanal x 7 Bänder x 8192 TAPs x 192kHz = 50 Giga OPs > > Wären 50 Cortexe oder ein kleines FPGA :D > http://www.96khz.org/htm/precisionaudiofilter.htm Nur das kein Ingenieur Lautsprecherweichen so umständlich programmiert (aber das weisst du ja :-) ). Wozu gibt es IIR Filter? Da reduziert sich der Aufwand gleich auf Daumen x Pi 1 Mega Multiplikationen pro Sekunde, und dafür reicht ein Cortex M3 locker.
Da habe ich noch ein paar Fragen übersehen. Das mit den 12 Bit geht nur weil man alles inntern in der Hand hat und kein Mensch das nachmessen kann. Der Bass müsste sogar noch mit 8Bit sauber genug arbeiten. Der Hochtöner sollte mindestens 12bit haben 16 wäre Logischerweise besser. Das Eingangssignal muss noch aufbereitet werden (EingangsImpedanz), ein OP mit entsprechender Beschaltung reicht da.
>Der Bass müsste sogar noch mit 8Bit >sauber genug arbeiten. He? Du brauchst mehr Dynamik um sauberer lautere Signale abzubilden! Du kannst beim Bass höchstens mit der Samplerate runtergehen.
Udo K. schrieb: > Nur das kein Ingenieur Lautsprecherweichen so umständlich programmiert > (aber das weisst du ja :-) ). > > Wozu gibt es IIR Filter? Schon richtig, aber ich wollte ihm eine worst case Abschätzung liefern. Wobei es natürlich Fälle gibt, wo FIR-Filter nötig sind. IIR werden ja oft exakt wegen der begrenzten Rechenkapazitäten verwendet. Peter schrieb: > Der Bass müsste sogar noch mit 8Bit > sauber genug arbeiten. Der Hochtöner sollte mindestens 12bit haben 16 > wäre Logischerweise besser. Warum sollte der Bass mit weniger Auflösung klarkommen? Bei Bässen liegen hohe Amplituden vor und obendrein ist der größtmögliche Anteil eventueller Harmonischer im Hörbaren.
>Warum sollte der Bass mit weniger Auflösung klarkommen?
Für ihn ist Auflösung = Samplerate....
Wir reden hier über ein System was aus dem Bass und einer Entstufe besteht. Der Bass muss vor und zurück bewegt werden. Das ganze ist ein träges System das es recht leicht verzeiht das man ein paar bit weniger hat. Wichtig ist das man zum Zeitpunkt X auf Position Y ist mit der Membran. Man könnte sogar wenn die Eingangsdaten es nicht hergeben interpolieren bei der Ausgabe. Wir reden hier ja nur über 16-400/1000Hz für den Bass. 8 Bit Input wäre definitiv das unterste Limit was man machen könnte. 12 Bit wären logischweise besser, besonnders bei leisen Tönen fehlt einem irgentwann die Ton Informationen. ABER man wird wohl selten 2 AD Wandler nehmen, macht halt keinen Sinn. Einen 16Bit Wandler am I²S dran mit 48/96KHz und man hat eine gute Signal Basis. Der Hochtöner braucht sowieso definitiv mehr Daten und auch eine höhere Abtastung wie der Bass.
Ihr dürft hier nicht eine Entstufe mit einem Lautsprecher vergleichen. Bei einer Entstufe wären 8 Bit Amplitude tötlich, das will sich keiner anhören / schon gar nicht messen, egal wie hoch die Samplerate ist. Ein Lautsprecher (Bass) ist da deutlich einfacher gestrickt.
>Wir reden hier über ein System was aus dem Bass und einer Entstufe >besteht. >Der Bass muss vor und zurück bewegt werden. >Das ganze ist ein träges System das es recht leicht verzeiht das man ein >paar bit weniger hat. Wichtig ist das man zum Zeitpunkt X auf Position Y >ist mit der Membran. Oh weia
Ihr dürft hier nicht eine Entstufe mit einem Lautsprecher vergleichen. Endstufe nicht Entstufe. Ach scheiße sind ja Ferien...
Nix "Oh weia" Mess es durch und du wirds es sehen! Laut ist kein Problem, besonders wenn Du noch die Samplerate intern verdoppelts und interpoloerst. Aber wir reden hier über Machbarkeit und nicht über etwas was man macht.
Welche Quellen sollen diesen Lautsprecher bespielen? Wenn da sowieso nur der PC dran hängt, lass den doch die Filter rechnen. Damit sparst du dir eine komplette analoge Zwischenstufe die sehr verlustanfällig ist.
Wenn Cortex M, dann kann man sich Audio Weaver anschauen. Da gibt es bei Verwendung von STM32 eine freie Lizenz. https://www.st.com/en/development-tools/st-audioweaver.html Mit oben genannten FIR Filtern ist das schon nett (und ich arbeite da auch beruflich mit...), aber im Bassbereich - no way. Mit IIR ist das Ganze easy, das schüttelt ein STM32 aus dem Ärmel. Thomas PS: Was ist für deine Zwecke falsch an einem Einsteiger-DSP wie z.B. ADAU1701? ADC und DAC bereits an Board, 2in/4out und grafische Programmierung mittels SIGMA-Studio? Da gibt es auch kleine und günstige Boards für: http://store.sure-electronics.com/product/AA-AP23122
Peter schrieb: > Ihr dürft hier nicht eine Entstufe mit einem Lautsprecher vergleichen. > Bei einer Entstufe wären 8 Bit Amplitude tötlich, das will sich keiner > anhören / schon gar nicht messen, egal wie hoch die Samplerate ist. Dir sind 1-Bit-Endstufen ein Begriff? Wie hoch ist da die Samplerate, dass das funktioniert?
Ich habe mal einen Audio-DSP mit einem STM32F407 realisiert, damals mit 44.1 kHz und 16 Bit Samplingtiefe.. Extern waren zwei SGTL5000 angebunden. Also in Summe 4* in und 4* out. Der STM32 hatte damals genug power um (ohne Witz) an die 40 biquads in echtzeit durchzurechnen (in fixed-point; unter zuhilfenahme der ARM CMSIS DSP Library). Das sollte mehr als ausreichen um 4 Ausgängskanäle sinnvoll zu bedienen.
Peter schrieb: > Der Bass muss vor und zurück bewegt werden. > Das ganze ist ein träges System das es recht leicht verzeiht das man ein > paar bit weniger hat. Wenn ich so einen Zinober lese, kriege ich die Motten. Kein Wunder ist die Audiowelt vollgestopft mit Esotherik, wenn jeder Ungebildete daher schreibt. Thomas F. schrieb: > it oben genannten FIR Filtern ist das schon nett (und ich arbeite da > auch beruflich mit...) FIR-Filter sind aber problematisch bei Audio. Besonders breitband-Filter mit großer Tiefe bei einsitig hochfrequenter Bespieleung.
Esotherik ???? Also doch die Kabel durch Kristalle legen und Kupferbenutzen das bei Vollmond gewonnen wurde. Ich wusste es wir haben damals was grundlegend falsch gemacht! Ich habe mal in den alten Unterlagen nachgesehen. Und habe tatsächlich Fehler in meinen Aussagen (nach Jahren kann das mal passieren): 1. Es war ein Subwoofer bis 120Hz 2. Die Signale wurden Digital eingelesen (16 / 44,1 --> CD) aufbereitet und dann Variabel in der Bit-Anzahl runter gedreht. Wobei wir damals bei 9Bit gelandet waren und nicht 8. 3. Es war also kein AD Wandler sondern ein digital aufbereitet Signal. Mit entsprechenden Filtern könnte man das Analog vielleicht auch hinbehommen, ist aber Zeitverschwendung. 4. Die Ausgangsstufe hatte am Ende 8bit. 5. Es wurden mehr Testsignal gemessen und nur wenig Musik. Gebaut wurde das so logischerweise nie, das wäre ja totaler Blödsinn. Es war ein Test was man minimal so braucht und mehr sollte es auch nie sein. Heute könnte man auch 1 Bit Wandler (DSD) nehmen, aber am Ende sollten einfach genug Daten vorliegen. Die kann, wie selber schon geschreiben, heute ein Cortex M4 gut verarbeiten auch wenn 40 biquads nicht unbedingt nötig sind, aber interressant das das der M4 noch geschafft hat.
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.