Forum: Digitale Signalverarbeitung / DSP / Machine Learning 16Bit PCM-Sample


von Franziskus K. (fertas)


Lesenswert?

Hallo,

Ich bin gerade am suchen, wie ein 16Bit PCM-Sample aufgebaut ist.
Ich finde zwar Informationen darüber, aber die widersprechen sich in 
Teilen und sind ungenau.

Also, falls sich jemand auskennt, wäre ich ihm sehr dankbar für eine 
erklärung, wofür die 4 einzelnen Nibbles genau stehen.

Grüße

Franz

von T. H. (pumpkin) Benutzerseite


Lesenswert?

Meinst du eine Bewertung nach A- oder µ-Law? Wenn nicht: PCM-Samples 
stellen Werte im 2er-Komplement dar.

von FL (Gast)


Lesenswert?

A-law oder u-Law sind normalerweise 8-bittig (ITU-T G.711).

16 Bit PCM, also das, was auf Audio-CDs zu finden ist, ist wie T.H. 
richtig schreibt eine Aneinanderreihung von vorzeichenbehafteten 16-Bit 
Werten. Der Wertebreich erstreckt sich damit auf -32768..32767.
Eine andere Sache ist noch, wie die einzelnen Abtastwerte z.B. bei 
Stereo-Signalen in einer WAV-Datei abgespeichert werden. Bei WAV ist es 
so, dass die Abtastwerte der beiden Kanäle immer abwechselnd 
hintereinander gespeichert werden, also:

L | R | L | R | L | R | ...

In anderen Dateiformaten / Streams etc. kann das aber anders sein.

Gruß
FL

von Franziskus K. (fertas)


Lesenswert?

also steht ein 'L' oder ein 'R' bei dir jeweils für einen 16-Bit-Wert?
Ich hatte nämlich mal irgendwo gelesen, dass in einem 16Bit-Sample eben 
L und R gemeinsam 16bit sind.

Und danke schonmal für beide Antworten.

von T. H. (pumpkin) Benutzerseite


Lesenswert?

Franziskus Karsunke wrote:
> also steht ein 'L' oder ein 'R' bei dir jeweils für einen 16-Bit-Wert?

Ja.

> Ich hatte nämlich mal irgendwo gelesen, dass in einem 16Bit-Sample eben
> L und R gemeinsam 16bit sind.

Kann man sicher machen. Hab' ich aber noch nie gesehen.

von FL (Gast)


Lesenswert?

> Ich hatte nämlich mal irgendwo gelesen, dass in einem 16Bit-Sample eben
> L und R gemeinsam 16bit sind.

Da die Daten sowieso "ein Bit hinter dem nächsten" in einem "Stream" 
sind, wäre das von Dir beschriebene lediglich eine 
"16-Bit-Interpretation" von 2 8-bit Werten, die hintereinander in dem 
Stream stehen.

Jeder vernünftige(TM) Programmierer würde wohl die Daten aus diesem 
Stream als zwei getrennte 8-bit-Werte einlesen, und nicht als einzelnen 
16-bit-Wert, den er dann erst wieder auseinanderfriemeln muss.

Wenn Du die Daten als Datei auf einem PC hast, kannst Du sie ja mal in 
einen Audio-Editor einlesen (z.B. in Audacity als Rohdaten). Beim Import 
kannst Du angeben, wie sie interpretiert werden sollen -- wenn 
anschliessend ein vernünftiges Audio-Signal im Editor steht, hast Du das 
richtige Format gefunden...

Gruß
FL

von Franziskus K. (fertas)


Lesenswert?

ok dann danke für die antworten. Dann denke ich mal hab ich jetz das 
richtige.

Ich habe leider keine Datei. Ich erzeuge einen Stream in Assembler und 
gebe ihn an einen AC97-Controller weiter.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Aber dann wirst Du doch bestimmt irgend ein Interface bedienen müssen. 
I2S oder ein ähnliches serielles Protokoll. BTW: die Daten für 16Bit PCM 
Wave liegen im Format LinksLowByte, LinksHighByte, RechtsLowByte 
RechtsHighByte vor (Little Endian).

von Oliver N. (neufranke)


Lesenswert?

Wie ist das bei 48Bit Signalen? (24 Bit Stereo)

von Franziskus K. (fertas)


Lesenswert?

die 24-Bit PCMs sind in WIkipedia ganz gut erklärt glaub ich.
Entweder im englischen oder im deutschen.

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
Noch kein Account? Hier anmelden.