Guten Tag zusammen, ich möchte mit einem Xmega ein Lied abspielen welches auf einem Flash mit 8mb sitzt. Die Hardware ist super, es ist kein Rauschen, weder im Hintergrund noch beim abspielen zu hören. 16khz Abtastrate. Problem ist aber: Die Ausgabe soll per 8 bit unsigned erfolgen, direkt über den integrierten 12 bit dac. Die 8 bit Daten schiebe ich um 4 nach oben. Jetzt ist das Problem: mp3 Datei super Qualität (klar, ist das Original). Konvertierung zu 16 bit PCM, super Qualität (ich kann es aber nicht abspielen, ich vermute das ist signed 16 bit, es ist nur Krach). Konvertierung zu unsigned 8 bit PCM - ich kann es abspielen. Allerdings habe ich ein ziemliches Rauschen im Hintergrund. Ich dachte der Fehler liegt erst an der Hardware wenn ich die Datei aber am PC abspiele mit höherer Lautstärke, hört man genau das Rauschen hier. Jetzt meine Frage: Wie bekomme ich die Datei konvertiert, OHNE dieses Rauschen? Ich verstehe auch nicht woher das kommt, wenn ich eine 16 bit PCM habe, habe ich das nicht, bei 8 bit habe ich das auf einmal? Müssen doch nur jedes 2 Byte genommen werden.
> ... Xmega ... direkt über den integrierten 12 bit dac Weshalb werden dann nicht die vollen 12 bit genutzt? Die Anpassung der > 16 bit PCM -Werte sollte recht einfach sein. Bei 8 bit ist nun mal das Quantisierungsrauschen ziemlich störend.
Markus M. schrieb: > Ich verstehe auch nicht woher das kommt, wenn ich eine 16 bit > PCM habe, habe ich das nicht, bei 8 bit habe ich das auf einmal? Das, was du beim Runden von 16 auf 8 Bit an Information verlierst, IST dein Rauschen. Du erhöhst dabei das Quantisierungsrauschen um einen Faktor 256.
:
Bearbeitet durch User
Markus M. schrieb: > Konvertierung zu 16 bit PCM, super Qualität (ich kann es aber nicht > abspielen, ich vermute das ist signed 16 bit, es ist nur Krach). Bei 16 Bit ist signed üblich, bei 8 Bit eher unsigned mit entsprechendem Offset. > Jetzt meine Frage: Wie bekomme ich die Datei konvertiert, OHNE dieses > Rauschen? Auf 8 Bit linear? Gar nicht. Rate mal, warum man normalerweise lieber 16 Bit nutzt, falls möglich. > Ich verstehe auch nicht woher das kommt, wenn ich eine 16 bit > PCM habe, habe ich das nicht, bei 8 bit habe ich das auf einmal? Dachtest du, es gibt keinen Verlust, wenn du auf 8 Bit reduzierst?
Rolf M. schrieb: > Markus M. schrieb: >> Konvertierung zu 16 bit PCM, super Qualität (ich kann es aber nicht >> abspielen, ich vermute das ist signed 16 bit, es ist nur Krach). > > Bei 16 Bit ist signed üblich, bei 8 Bit eher unsigned mit entsprechendem > Offset. > >> Jetzt meine Frage: Wie bekomme ich die Datei konvertiert, OHNE dieses >> Rauschen? > > Auf 8 Bit linear? Gar nicht. Rate mal, warum man normalerweise lieber 16 > Bit nutzt, falls möglich. > >> Ich verstehe auch nicht woher das kommt, wenn ich eine 16 bit >> PCM habe, habe ich das nicht, bei 8 bit habe ich das auf einmal? > > Dachtest du, es gibt keinen Verlust, wenn du auf 8 Bit reduzierst? Ja, dachte ich, weil es einfach jedes 2. Byte wäre. Jetzt aber die spannende Frage: Wie bekomme ich die 16 bit entweder unsigned oder alternativ, wie gebe ich die signed wieder über einen 12 bit DAC. Ich habe nur positive Werte, ich kann keine negativen verarbeiten. 12 oder 16 ist egal, dann fallen halt die unteren 4 bit weg, das ist ok. Nur das signed macht mir Probleme.
:
Bearbeitet durch User
Markus M. schrieb: > Wie bekomme ich die 16 bit entweder unsigned oder alternativ, wie gebe > ich die signed wieder über einen 12 bit DAC. Ich habe nur positive > Werte, ich kann keine negativen verarbeiten. Wenn du die Werte von 0…200 hast und daraus sollen -100…+100 werden… oder Wenn du die Werte von -100…+100 hast und daraus sollen 0…200 werden… Also da gibt Rechenanweisungen welche im Additions- bzw. Subtraktionsmilieu angesiedelt sind. ;-)
Den Wertebereich anpassen. Und zwar nicht nur dehnen/stauchen sondern auch verschieben indem ein Offset addiert wird. Signed 16 Bit gehen von -2^15 bis +2^15-1. Dein 12 Bit DAC geht von 0 bis +2^12-1. Du musst also die 16 Bit Werte durch 2^4 teilen, den Wertebereich als um Faktor 16 stauchen. Dann sind das Werte von -2^11 bis +2^11-1. Und dann musst du noch den Wertebereich verschieben um 2^11. Damit die Mitte vom Wertebereich nichtmehr bei 0 sondern in der Mitte deines DACs liegt. DAC_Wert = PCM_Wert/16 + 2048
Norbert schrieb: > Markus M. schrieb: >> Wie bekomme ich die 16 bit entweder unsigned oder alternativ, wie gebe >> ich die signed wieder über einen 12 bit DAC. Ich habe nur positive >> Werte, ich kann keine negativen verarbeiten. > > Wenn du die Werte von 0…200 hast und daraus sollen -100…+100 werden… > oder > Wenn du die Werte von -100…+100 hast und daraus sollen 0…200 werden… > > Also da gibt Rechenanweisungen welche im Additions- bzw. > Subtraktionsmilieu angesiedelt sind. ;-) Korrekt. Allerdings habe ich noch ein Brett vor dem Kopf dort etwas. Ich weiß ja nicht in welchem Bereich die Werte sind. Ich convertiere die Daten in 16 bit PCM signed, dann schiebe ich den data Chunk einfach auf den flash. theoretisch können die Werte dann -32768 bis 32767 sein. Addiere ich dann einfach max. negativen Wert drauf, also 32768 + PCM Wert?
Gustl hat's schon richtig beschrieben. Dividiere (mit passender Rundung) durch 16 -> -2048…+2047 Addiere 2048 -> 0…+4095
Norbert schrieb: > Gustl hat's schon richtig beschrieben. > Dividiere (mit passender Rundung) durch 16 -> -2048…+2047 > Addiere 2048 -> 0…+4095 Errotisch. Danke, funktioniert perfekt OHNE Rauschen, herrlich! Einziger Nachteil ist jetzt, durch die Stauchung ist es deutlich leiser als vorher. Wie bekomme ich das wieder ausgeglichen?
:
Bearbeitet durch User
Markus M. schrieb: > Norbert schrieb: >> Gustl hat's schon richtig beschrieben. >> Dividiere (mit passender Rundung) durch 16 -> -2048…+2047 >> Addiere 2048 -> 0…+4095 > > Errotisch. > Danke, funktioniert perfekt OHNE Rauschen, herrlich! > > Einziger Nachteil ist jetzt, durch die Stauchung ist es deutlich leiser > als vorher. Wie bekomme ich das wieder ausgeglichen? Indem Du es wieder mal 16 nimmst ... Jetzt mal im Ernst - was vergleichst Du hier eigentlich? Als Du noch 16bit hattest, ging das ja sicherlich noch über einen 16bit DAC raus. Jetzt sind es 12bit über einen 12bit DAC. Wenn danach derselbe Audioverstärker folgt (also gleiche Verstärkung in beiden Fällen), dann arbeiten offensichtlich beide DACs mit unterschiedlichen Referenzen, was zu unterschiedlicher Lautstärke führt. Also hast Du zwei Optionen: - erhöhe die Referenz des 12bit DAC auf denselben Wert wie die des 16bit DAC - oder erhöhe die Verstärkung des Audioverstärkers um den fehlenden Faktor
:
Bearbeitet durch User
Markus M.freute sich:
> perfekt OHNE Rauschen, herrlich!
Nein.
Nochmal zum Verständnis: das Quantisierungsrauschen ist um den Faktor
2^(12-8) kleiner geworden, aber natürlich noch immer vorhanden und bei
leisen Tonpassagen ganz sicher deutlich hörbar.
Markus M. schrieb: > Einziger Nachteil ist jetzt, durch die Stauchung ist es deutlich leiser > als vorher. Naja, wenn dein Nutzsignal dabei deutlich leiser geworden ist, dann ist es auch das Rauschen. Verstärke es wieder auf eine der beschriebenen Arten und es ist wieder hörbar. Abgesehen davon gibt es bei der Konvertierung auf eine kleinere Wortbreite auch die Möglichkeit 'Noise Shaping' anzuwenden - wird in DAWs angeboten. Das Zeitsignal sieht zwar schrecklich aus, aber das Rauschen ist trotzdem deutlich geringer als bei einfachem Abschneiden der LSBs.
Klaus H. schrieb: > Markus M. schrieb: >> Einziger Nachteil ist jetzt, durch die Stauchung ist es deutlich leiser >> als vorher. > > Naja, wenn dein Nutzsignal dabei deutlich leiser geworden ist, dann ist > es auch das Rauschen. Nein, das Quantisierungsrauschen wird dadurch nicht weniger. Und das Nutzsignal sollte eigentlich ebenfalls nicht leiser werden. > Abgesehen davon gibt es bei der Konvertierung auf eine kleinere > Wortbreite auch die Möglichkeit 'Noise Shaping' anzuwenden - wird in > DAWs angeboten. Das Zeitsignal sieht zwar schrecklich aus, aber das > Rauschen ist trotzdem deutlich geringer als bei einfachem Abschneiden > der LSBs. Genau genommen wird es nicht geringer, sondern es wird so verändert, dass es eher in Frequenzbereichen stattfindet, in denen es weniger auffällt.
Rolf M. schrieb: > Nein, das Quantisierungsrauschen wird dadurch nicht weniger. Und das > Nutzsignal sollte eigentlich ebenfalls nicht leiser werden. Wenn alles leiser wird, wie bei einem Lautstärkesteller, den man zurückgdreht, dann auch das Rauschen. Es fällt dann weniger auf. Mehr meinte ich nicht. Was die von Gustl B. beschriebene Modifikation bewirkt, habe ich nicht versucht nachzuvollziehen - das muss ich zugeben. > Genau genommen wird es nicht geringer, sondern es wird so verändert, > dass es eher in Frequenzbereichen stattfindet, in denen es weniger > auffällt. Richtig. Ich schrieb ja auch, dass das Zeitsignal 'schlimm' aussieht. Der Rauschanteil wird dadurch zu hohen, weniger hörbaren Frequenzen verschoben. Zumindest für meine Altersklasse ideal ...
Klaus H. schrieb: > Was die von Gustl B. beschriebene Modifikation bewirkt, habe ich nicht > versucht nachzuvollziehen - das muss ich zugeben. Das Nachvollziehen wird sicherlich auch nicht klappen, solange der TO keine Details dazu rausrückt, was er wie an welcher Stelle anders gemacht hat, bzw. welche Äpfel er mit welchen Birnen vergleicht.
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.