[Python-de] AIFF-Dateien interpretieren

Matthias Kluwe mkluwe at web.de
Don Apr 22 18:23:36 CEST 2004


On Dinu Gherman wrote:
> Hallo,
> 
> ich weiss nicht, ob sich hier jemand damit auskennt, aber wir werden
> ja sehen. Ich lese mit dem Modul "aifc" der Standardbibliothek AIFF-,
> d.h. Audiodateien (nicht komprimiert).
> 
> Ein Ziel dabei ist die weitere Verarbeitung der Audiodaten, d.h. ich
> moechte z.B. irgendwo eine Art Klangkurve darstellen koennen, wie man
> es in einigen Soundeditor-Programmen sehen kann - kein Equalizer-Ding,
> sondern einfach nur etwas Lautstaerke-aehnliches.
> 
> Nun habe ich mit aifc Zugriff auf das, was ich brauche, glaube ich,
> aber es kommen partout keine "sinnvollen" Tondaten dabei heraus, d.h.
> mit Blick auf solch eine Kurve. Dabei habe ich schon einiges an Byte-
> Verdrehungen ausprobiert... Aber vielleicht mache ich da auch einen
> systematischen Fehler, was die Interpretation der Sample-Punkte an-
> geht...?

Vermutlich.
> 
> Unten ein bischen Code, der erklaert, was ich tue... Dabei habe ich
> es immer mit numChannels, sampleWidth = 2, 2 zu tun...
[...]
>          sample = data[i:i+frameLength]
>          ll1, ll0, rr1, rr0 = map(ord, sample)
>          left = ll0*256 + ll1
>          right = rr0*256 + rr1

Ich glaube, AIFF ist in "most significant first" byte-order. Du machst
es anders herum. Dann musst du wohl noch richtig interpretieren: 32768
entspricht dem Wert -32768, 65536 der -1 (Twos-complement). Aber
Achtung: Keine Garantie!

Gruß,
Matthias