Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

22.05.2009, 11:33

Abtastauflösung bei Audio erhöhen

Hallo an alle,

ich bekomme von einem GSM Decoder ein 160byte großes 13bit aufgelöstes PCM Sample zurück. Mein Player braucht dieses Sample aber in 16bit.
Wenn ich das 13bit sample abspiele habe ich Klirrgeräusche dabei.
Wie kann ich von 13 auf 16bit erhöhen?

Gruß

Karsten
Arbeitswut ist eine psychische Störung, die schon mit einer Tasse Kaffee und einem netten Gespräch geheilt werden kann

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

2

22.05.2009, 12:45

Theoretisch müsste es so funktionieren, dass du dein Signal einfach ber FFT transformierst und dan per iFFT wieder zusammensetzt.

Allerdings ist es natürlich logisch, dass du aus einem 13Bit Signal kein vollwertiges 16Bit Signal erzeugen kannst.

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

3

22.05.2009, 13:33

Du könntest durch das Sample Array steppen und die 13 Bit Pakete mit 16/13 multiplizieren und dann in ein neues Sample Array als 16 Bit Wert speichern.

Edit: Bitshift um 3 sollte es auch tun anstelle der Multiplikation.

4

22.05.2009, 13:38

Ja das hab ich gerade schon mal gehört mit dem Bitshift um 3. Allerdings weiß ich noch nicht genau wie das funktioniert. Hab noch nie mit Bitoperationen gearbeitet.
Arbeitswut ist eine psychische Störung, die schon mit einer Tasse Kaffee und einem netten Gespräch geheilt werden kann

5

22.05.2009, 14:08

Vllt. kurz zu Veranschaulichung.
Ich habe mein sample in einem short* mit der größe 160.
Meine Frage ist nun wie iteriere ich durch das array und wie komme ich an die 13 bits? Dann shifte ich nach links(vermutlich) oder nach rechts.

oder so?

C-/C++-Quelltext

1
2
3
4
for (int i = 0; i < 160; i++)
{
     myarray[i] = myarray[i] << 3;
}


Versteh ich das so richtig?
Arbeitswut ist eine psychische Störung, die schon mit einer Tasse Kaffee und einem netten Gespräch geheilt werden kann

Werbeanzeige