[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