Audio samplen und mit µC wiedergeben

Hallo NG,

ich steh grad irgendwie auf der Leitung :-)

Ich würde gerne ein Audiosample (liegt als MP3 vor) mit einem µC wieder ausgeben; dazu habe ich es in RAW-Werte konvertiert und in den Speicher des µC übertragen.

Die Ausgabe hätte ich über PWM gemacht; meine Frage ist jetzt, wie ich von den Audiodaten (die ja z.B. als 16-Bit signed int vorliegen) auf die PWM-Werte komme - mit der PWM kann ich ja nur positive Werte ausgeben...? Soll ich die negativen einfach weglassen?

Wäre super wenn mir jemand helfen könnte...

Schönen Sonntag noch, Martin

Reply to
Martin Hinterdobler
Loading thread data ...

Das würde einen ziemlich schlechten Klirrfaktor geben. Addiere einfach den größtmöglichen negativen Wert zu allen Werten hinzu und schon hast du nur noch positive Werte. 16 Bit Auflösung wirst du aber wohl nicht hinbekommen, da dann die Taktfrequenz je nach Samplerate sehr hoch sein muß.

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

Martin Hinterdobler schrieb:

MSB invertieren.

Das wird grausig klingen.

Gruß Henning

--
henning paul home:  http://home.arcor.de/henning.paul
PM: henningpaul@gmx.de , ICQ: 111044613
Reply to
Henning Paul

Hallo Martin,

Nein. Du musst zum signed Wert 2^15 dazuaddieren. Dann hast Du nur noch positive Werte. Das ganze dann auf den PWM und wichtig: PWM mit einem Tiefpass filtern und anschließend einem Hochpass auskoppeln. Dein µC kann ja keine negativen Spannungen wiedergeben. Durch die Addition vo

2^15 hast Du alles ins positive geschoben. 0V Audio entspricht dann Vcc/2, also vermutlich 2,5V. Mit einem Hochpass mit niedriger Grenzfequenz (10Hz) machst Du dann wieder +-2,5V draus. Aber mit 16-Bit Genauigkeit wird das nichts, schon 8-Bit werden eng (je nach Samplerate). Mit reiner digitaler PWM ist einfach nicht viel mehr zu machen.

Michael

Reply to
Michael Rübig

Frank Buss schrieb:

und das ist 0x8000...

Also MSB invertieren.

Gruß Henning

--
henning paul home:  http://home.arcor.de/henning.paul
PM: henningpaul@gmx.de , ICQ: 111044613
Reply to
Henning Paul

Michael Rübig schrieb:

aka DC-Entkopplungskondensator, 1 bis 10uF.

Gruß Henning

--
henning paul home:  http://home.arcor.de/henning.paul
PM: henningpaul@gmx.de , ICQ: 111044613
Reply to
Henning Paul

Es gibt auch noch den "Poor Man's DAC". Wenn Du ein paar frei Port Pins hast oder ein Serial-Parallel Register spendieren kannst: R2R an 4, 5 oder 6 Pins haengen und Stromsumme erzeugen.

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Joerg schrieb:

Auch eine nette Variante des R-2R-Wandlers:

formatting link

Wenn es wirklich nur um die Ausgabe des Samples und keine weiteren Steueraufgaben geht könnte man den µC sogar noch durch einen passenden Zähler ersetzen...

Gruß

Jochen

Reply to
Jochen Reeg

Jochen Reegschrieb: "

Das ist ja nun wirklich ein völlig krankes Beispiel.

- Mikrocontroller, der lediglich als einfacher Counter betrieben wird

- 16bit Ausgabe, aber nur 0.1% Widerstandstoleranz, ach nein ich lese gerade, er hat 1%ige ausgemessen. Welchen TK die wohl haben mögen?

- der pseudo DA-Wandler wird direkt aus die EPROMS geschaltet. Was da wohl herauskommt?

- TDA7053 mit B-Endstufe und 10% Klirrfaktor bei 1,2W

Dirk

Reply to
Dirk Ruth

Dirk Ruth schrieb:

...

Lag halt in der Kiste.

8 wollte er nicht, 16 waren dann das nächstliegende, lag halt in der Kiste....

Hast Du mal einen Originool-Baumarkt-Big-Ben-Gong gehört?

Mir fällt auf Anhieb keine Möglichkeit ein, _dieses_ Geräusch zu erzeugen :-)

Falk

Reply to
Falk Willberg

1 Bit nehmen. :-)

Gruß Henning

Reply to
Henning Paul

Hallo Dirk,

nun mach den Jung doch nicht gleich rund. Das war ein Bastelprojekt, da kam es sicher nicht auf -100 dB Rauschen und 0,0000x % Klirr an. Das Teil funktioniert mit den Teilen, die der Jung in der Krabbelkiste gefunden hatte offensichtlich nach Wunsch. Er hat die Software nicht geheimgehalten, Ein anderer darf das gerne mit einem TTL-Grab machen, oder wie auch immer. Ich glaub zwar auch, dass der Jung die erreichbare Qualität von 8 Bit Sound unterschätzt (ich staune immer wieder über die 4 Bit 8 kSps in meinem MP3 Player, wenn er aufnehmen soll), aber was solls. Ein nettes Hobbyprojekt, das am Ende erfolgreich funktioniert.

Marte

Reply to
Marte Schwarz

Du kannst es ja mal ausprobieren: Wenn du die untersten 8 Bit weglässt, wirst du keinen Unterschied hören. Am besten im Doppelblindversuch, um es objektiv beurteilen zu können.

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

Dirk Ruth schrieb:

Und auch das Filter und die Anpassung zwischen D/A-Wandler und Verstärker ist alles andere als optimal. So wie die meisten Schaltungen lässt sich auch diese anders und besser bauen. Mir ist auch klar, dass die Genauigkeit von 16 Bit nie erreicht wird. Aber 8 Bit sind bei linearen Abstufungen definitiv zu wenig, optimal wären 12. Aber da die Anschlüsse vorhanden und Widerstände übrig waren, habe ich mir erlaubt, diese auch noch zu verdrahten. Man möge mir verzeihen :-)

Ich habe auf diese Weise versucht, einen brauchbaren Gong aufzubauen und er erfüllt seinen Zweck. Er lässt sich auch relativ einfach nachbauen, erfordert keine Spezialteile und ist nicht teuer. Natürlich würde so eine Schaltung bei den Spezialisten unter euch nicht durchgehen, aber das war auch nicht das Ziel. Mit den meisten typischen China-Teilen kann das Gerät durchaus mithalten, außerdem macht selber bauen mehr Spaß als fertig kaufen.

Tschüs, Scott-Falk Hühn

--
Scott-Falk Hühn's Elektronik-Projekte: http://s-huehn.de/elektronik/
Reply to
Scott-Falk Huehn

Schonmal ausprobiert, wie es sich mit dem Low-EPROM mit lauter Nullen gefüllt anhört? Bei 1% Toleranz bei den Widerständen hast du nämlich noch nicht mal 8 Bit, alles darunter geht sowieso im Rauschen unter. Und wie bereits geschrieben, Doppelblindversuch, damit du dich nicht selber täuschst, also wenn du noch ein EPROM zuviel hast, dann mischen, beide ausprobieren im Vergleich und dann die EPROMs auslesen, um zu sehen, wo die Nullen drin waren.

--
Frank Buss, fb@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Reply to
Frank Buss

Frank Buss schrieb:

Er kann ja auch ein leeres nehmen, lauter Einsen sollten es genau so tun. :-)

Gruß Henning

--
henning paul home:  http://home.arcor.de/henning.paul
PM: henningpaul@gmx.de , ICQ: 111044613
Reply to
Henning Paul

Frank Buss schrieb:

Die Widerstände wurden zwar mit einer Toleranz von 1% gekauft, sind aber nachträglich selektiert worden. Der erste Prototyp war mit einem EPROM und nur 8 Bit D/A-Wandler aufgebaut, das klang deutlich schlechter.

Tschüs, Scott-Falk Hühn

--
Scott-Falk Hühn's Elektronik-Projekte: http://s-huehn.de/elektronik/
Reply to
Scott-Falk Huehn

Am Mon, 18 Feb 2008 21:19:56 +0100 schrieb Scott-Falk Huehn:

Hi!

Ganz schön akademische Diskussion um so einen Gong :-)

Na ja, unten beschnittene 16Bit sind ja auch nicht das selbe wie 8Bit. Mit beschnittenen 8Bit machst du sozusagen primitiv mp3, du schneidest alles unhörbare (sofern es wirklich unhörbar ist, was es ja zu testen gilt) ab.

Liebe Grüße, Thorsten

Reply to
Thorsten Oesterlein

Das habe ich jetzt nicht verstanden. Übrigens: MP3 arbeitet auch in Zeitrichtung.

Gruß Henning

Reply to
Henning Paul

Thorsten Oesterlein schrieb:

Ich sehe da keinen Unterschied. Das höchstwertigste Bit eines DAC (egal ob 8 oder 16 Bit) entspricht Vref/2, das zweite Bit Vref/4 usw. Das achte Bit entspricht Vref/256. Setzt man beim 16-Bit-DAC nun alle folgenden Bits zu 0, so ist das äquivalent zum 8-Bit-DAC. (Sind die Bits 9-16 nicht 0, aber konstant, so entspricht das einem

8-Bit-ADC + Gleichanteil.)

Die ganzen MPEG-Audiocodecs funktionieren doch noch einmal deutlich anders.

CU Christian

--
Christian Zietz  -  CHZ-Soft  -  czietz (at) gmx.net
WWW: http://www.chzsoft.com.ar/
PGP/GnuPG-Key-ID: 0x6DA025CA
Reply to
Christian Zietz

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.