mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Vernünftige Audio Wiedergabe mit kleinem Controller


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Stefan G. (stef_g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo geschätzte Kollegen,

ich bin momentan auf der Suche nach einer "kleinen" Lösung zur 
Wiedergabe von Audio Dateien von einer SD Karte (z.B. WAV) als 16bit bei 
44,1 KHz mono.
Das Quantisierungsrauschen bei 8bit ist sehr störend und die 
Klangwiedergabe soll realistisch werden, daher dachte ich an 16 bit.

Ich habe mehrere Lösungen im Kopf, brauche aber euren Rat.
Die Daten sollen von einer SD Karte kommen

Lösung mit 16 bit Hardware PWM (z.B. PIC24)
Lösung mit DSPic unter Verwendung des DAC Audio Moduls
Lösung mit kleinem MCU z.B. PIC16 mit externem 16bit PWM Baustein

optional: Lösung mit kleinem MCU z.B. PIC16 mit 8bit anschließender 
Nachbearbeitung

Momentan tendiere ich zur Lösung mit dem PIC24, da der eine 16bit PWM in 
Hardware hat und auch eine FAT16 Library existiert, aber ich habe jetzt 
schon oft gelesen, dass auch mit 8bit und entsprechender Nachbereitung 
sehr gute Ergebnisse drin sein sollen - jetzt bin ich am Grübeln.
Der dsPIC scheint mir ein wenig oversized und auch von der Kosten her 
ziemlich hoch, aber ich muss wohl relativ wenig Aufwand reinstecken um 
ein akzeptables Ergebnis zu bekommen, richtig ?

Erfahrungen habe ich bisher ausschließlich im 8 Bit Bereich (PIC12/16). 
Im Bereich Audio habe ich das übliche geäfhrliche Halbwissen, aber 
bisher keine Serienerfahrung.

Bin ich mit meinem PIC24 Ansatz richtig unterwegs ?

In diesem Fall würde dann nämlich einfach das Explorer16 Board nehmen 
und ne SD Karte auf nem Zusatzmodul, um möglichst schnell erste 
Ergebnisse zu bekommen so dass ich anschließend eine eigene HW stricken 
kann.

Danke vorab für eure Einschätzungen.

Grüße,

Stefan

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>aber ich habe jetzt
>schon oft gelesen, dass auch mit 8bit und entsprechender Nachbereitung
>sehr gute Ergebnisse drin sein sollen

Was heisst Nachbereitung? Wenn die Audiodateien möglichst hoch
ausgesteuert sind kommt man auch mit 8Bit einigermassen hin.
Bei leisen Passagen kommt dann halt noch ein wenig Geraschel.
Die Frage ist wie viel davon dich stört.

Autor: Stefan G. (stef_g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
holger schrieb:
>>aber ich habe jetzt
>>schon oft gelesen, dass auch mit 8bit und entsprechender Nachbereitung
>>sehr gute Ergebnisse drin sein sollen
>
> Was heisst Nachbereitung? Wenn die Audiodateien möglichst hoch
> ausgesteuert sind kommt man auch mit 8Bit einigermassen hin.
> Bei leisen Passagen kommt dann halt noch ein wenig Geraschel.
> Die Frage ist wie viel davon dich stört.

Hallo Holger,

siehe letzter Post in DIESEM Thread:

Ralph P. schrieb:

> Microchip bringt dieses Jahr noch einen neuen 8-Bit Chip, der über 28KB
> Programmspeicher und 1KB Ram verfügt (und der über 28 i/O im DIP Format
> verfügt, 32MHz Takt intern/20 Mhz Takt extern). Das dürfte dann
> ausreichen um gepuffert FAT lesen UND schreiben zu können und so
> nebenbei passt ein FAT Filesystem auch zum Schreiben auf die CPU. Und
> wem die Qualität der Samples nicht ausreicht der kann ja einen externen
> PWM mit 12-16 Bit nehmen, ist allemal besser als sein Design unnötig
> durch grössere CPU's aufblähen zu müssen.
> Und so summieren sich die Kosten auf nicht mal 10 Euro um einen
> tauglichen Player/Rekorder in CD-Qualität herzustellen, benutzt man
> einen kleineren Quartz dann reicht es allemal für Telefonqualität -
> manchmal sogar Pflicht wenn es um Projekte geht die Störstrahlung so gar
> nicht brauchen können ;-)
>

: Bearbeitet durch User
Autor: der alte Hanns (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende einen ATtiny461 mit 10 bit PWM. Klingt nicht schlecht, wenn 
gut ausgesteuert. Allerdings liegen die Daten roh auf der SDC, also nix 
FATnn. Für diese ist der 461 mit seinen 256 B RAM wohl etwas dürftig, 
auch der 861 hat nur 512.

Autor: Stefan G. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der alte Hanns schrieb:
> Ich verwende einen ATtiny461 mit 10 bit PWM. Klingt nicht
> schlecht, wenn
> gut ausgesteuert. Allerdings liegen die Daten roh auf der SDC, also nix
> FATnn. Für diese ist der 461 mit seinen 256 B RAM wohl etwas dürftig,
> auch der 861 hat nur 512.

Hallo Hanns,

verzeih mir meine laienhaften Fragen.

Was für eine Samplingrate erreichst Du damit - 8kHz ?

Wie beschreibst du die SDC mit Rohdaten ?
Wie wurden die Rohdaten erfasst (Samplingrate usw.)?

Ist dieses typische "wischende" Geräusch, dass man bei 8bit Ausgabe 
gerne hört dann auch noch hörbar ?

Ich möchte eine Stimme abspielen, diese soll aber naturgetreu klingen 
und nicht "blechern" oder metallisch.

Lässt sich das mit 10bit noch machen ?

Grüße,

Stefan

Autor: Karl H. (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir ist eines unklar.
Wenn du sowieso Spezialhardware darauf ansetzt, warum nimmst du dann 
nicht gleich einen DAC?

Autor: uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: hinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: der alte Hanns (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Projekt begann vor Jahren als reine Insellösung.

>Was für eine Samplingrate erreichst Du damit - 8kHz ?
Ursprünglich 62.5 kHz, seit einiger Zeit schalte ich auch auf 66.15 kHz 
um (richtig getippt: 44.1 *3/2).

>Wie beschreibst du die SDC mit Rohdaten ?
>Wie wurden die Rohdaten erfasst (Samplingrate usw.)?
Urspr. direkt von der Tonquelle -> (ext. ADC ->) ATmega -> SDC, heute 
ziehe ich auch am PC einzelne Stücke von CD und transferiere mit einer 
Freeware namens Win32DiskImager.

>Ist dieses typische "wischende" Geräusch, dass man bei 8bit Ausgabe
>gerne hört dann auch noch hörbar ?
Mit dem Begriff kann ich nichts anfangen.

>Ich möchte eine Stimme abspielen, diese soll aber naturgetreu klingen
>und nicht "blechern" oder metallisch.
Die Wiedergabe klingt gut, nur ist natürlich bei leisen Passagen das 
Quantisierungsrauschen zu hören.

>Lässt sich das mit 10bit noch machen ?
Ich denke doch. Zwar speichere ich 12 bit und spiele die auch manchmal 
mit einem ext. DAC ab, aber die 10 bit-Version ist okay und findet 
Abnehmer.

Allerdings liegen, wie gesagt, meine Anfänge Jahre zurück, und ich habe 
mich über neue Hardware nicht informiert ('never change a winning team', 
und für meine Anwendungen hat's gereicht).

Autor: der alte Hanns (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich vergaß zu erwähnen: wie von Hinz angedeutet macht ElmChan Ähnliches 
(etwas professioneller), und ich dachte, bei ihm auch was mit dem 861 
und 10 bit gesehen zu haben, kann es jetzt aber auf die Schnelle nicht 
finden:

http://elm-chan.org/he_a_e.html

Autor: Stef_G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hinz schrieb:
> http://elm-chan.org/works/sd8p/report.html

Nichts für ungut, aber hast Du den Thread gelesen ?
Die Rede war von 16bit 44.1 kHz mono

Autor: Stef_G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl Heinz schrieb:
> Mir ist eines unklar.
> Wenn du sowieso Spezialhardware darauf ansetzt, warum nimmst du dann
> nicht gleich einen DAC?

Weil laut meiner Recherche ein externer DAC mitsamt 8bit Controller 
teurer kommt als so ein PIC24 oder ein dsPIC für sich allein.

Autor: Matthias S. (Firma: matzetronics) (mschoeldgen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Evtl. könnte auch a-Law oder µ-Law für dich das richtige sein. Mein 
alter Drumcomputer vom Emu-Systems macht so aus den 8-bit Samples 
'gefühlte' 12-bit und klingt dabei recht gut.
Der Trick besteht darin, eine Expansion während der Wiedergabe zu 
machen, während bei der Aufnahme komprimiert wird.
https://en.wikipedia.org/wiki/A-law_algorithm
https://en.wikipedia.org/wiki/Companding

Autor: c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan G. schrieb:

> Ist dieses typische "wischende" Geräusch, dass man bei 8bit Ausgabe
> gerne hört dann auch noch hörbar ?

Häh? Wer Amiga-Spielesounds oder überhaupt die Soundtracker-Musik der 
Amiga-Ära kennt, der weiß, daß 8Bit Auflösung keinesfalls zwingend 
irgendwelche "typischen wischenden" Geräusche produziert.

Das tuen nur Leute, die unfähig zum sachgerechten Sampeln sind, sprich: 
Leute, die nicht in der Lage sind, das Eingangssignal entsprechend der 
verwendeten Samplefrequenz in der Bandbreite zu begrenzen. Und die 
schaffen das bei 16Bit ganz genauso wie bei 8Bit, weil dieser Effekt 
einfach mal nichts mit der Auflösung zu schaffen hat, sondern nur mit 
der Samplefrequenz.

Alles, was 8Bit unvermeidbar produziert, ist deutlich mehr Grundrauschen 
als bei 16Bit, was aber trotzdem erst bei relativ geringer Aussteuerung 
des Nutzsignals hörbar wird. Das Rauschen ist pegelmäßig im Vergleich 
zur möglichen Aussteuerung gesehen ungefähr vergleichbar mit dem 
Rauschen eines einfachen Cassettenrecorders ohne Dolby und ähnlichen 
Schnickschnack, eher noch etwas besser.

Nicht gerade schön, aber erträglich. Ganze Jugend-Generationen hatten 
garnix anderes für ihren Musikkonsum und sind trotzdem erwachsen 
geworden...

> Ich möchte eine Stimme abspielen, diese soll aber naturgetreu klingen
> und nicht "blechern" oder metallisch.

SAVAGE!

So hieß mal ein Amiga-Spiel und in dem Song intoniert dauernd einer laut 
dieses Wort. Das klang kein bissel blechern oder metallisch, war aber 
auch nur 8Bit-Sample mit 22kHz Samplefrequenz. Grundsätzlich ist Sprache 
noch um vieles einfacher als Musik in wenig Auflösung und Samplerate zu 
quetschen.

Wenn man es RICHTIG macht. Und dazu gehören insbesondere zwei Sachen: 
sinnvoll Filtern, bevor es in den AD-Wandler rein geht und sinnvoll 
Filtern, nachdem es aus dem DA-Wandler rauskommt.

Und genau diese beiden Sachen nimmt dir vermutlich kein µC ab. Ich kenne 
jedenfalls keinen, der das tut.

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.