Seite 1 von 1

equalizer?

Verfasst: Mittwoch 27. September 2006, 15:33
von gorba
Hallo, ich will eine art equalizer mit python realisieren. das ding sollte sound:
- compressen
- bestimmte frequenzen pushen
- teilbereiche vorverstärken, wenn sie zu leise sind

Meine frage nun, ist sowas übewrhaupt in python möglich?
Habe mich nun ein wenig mit snack beschäftigt, aber ich habe das gefühl, auch mit snack ist sowas nicht möglich

Was denkt ihr?

Verfasst: Donnerstag 3. Mai 2007, 23:10
von joost
Wenn ich mir das
http://docs.python.org/lib/module-audioop.html
ansehe, und, dass das nur ein kleiner Teil der Sound-Features ist, kann ich nicht glauben, dass das unmöglich ist.

Du wirst Dich dafür aber so weit in Python eingearbeitet haben müssen, dass Du von selbst immer als erstes in die library reference siehst.

Verfasst: Sonntag 6. Mai 2007, 12:36
von Bernhard
Na ja,

das hilft alles beim Einlesen und Ausgeben von Audiodateien, aber das Verstärken einzelner Frequenzbänder und dergleichen kommt da ja nicht gerade out-of-the box. Dazu müsste man wohl einiges nicht über Python sondern über das Bearbeiten von Sounds wissen.

Gibt es dazu brauchbaren Lesestoff im Netz?

Gruß,
Bernhard

Verfasst: Montag 7. Mai 2007, 10:49
von gorba
habe mich eingenhend mit dem thema beschäftigt und bin zum schluss gekommen, dass dies mit einem DSP und ANSI C einfacher geht als mit Python.

Verfasst: Montag 7. Mai 2007, 11:03
von sunmountain
gorba hat geschrieben:habe mich eingenhend mit dem thema beschäftigt und bin zum schluss gekommen, dass dies mit einem DSP und ANSI C einfacher geht als mit Python.
Ich würde mal hier schauen:

http://audacity.sourceforge.net/onlineh ... effect.htm

http://audacity.sourceforge.net/help/nyquist

http://audacity.sourceforge.net/help/nyquist3

Bevor Du einen DSP programmierst, bist Du damit bestimmt schneller
fertig.

Hat halt wenig mit Python zu tun ;-)

Das schon eher:
http://www.onlamp.com/pub/a/python/2001 ... tml?page=1

http://www.speech.kth.se/snack/

Verfasst: Montag 7. Mai 2007, 11:08
von joost
Ganz ohne C sollte man es - selbst wenn's ging - wohl schon aus Gründen der Performance nicht machen. Bin aber gerade auf folgenden Abschnitt im Tutorial gestoßen:
Suppose you want to design a collection of modules (a ``package'') for the uniform handling of sound files and sound data. There are many different sound file formats (usually recognized by their extension, for example: .wav, .aiff, .au), so you may need to create and maintain a growing collection of modules for the conversion between the various file formats. There are also many different operations you might want to perform on sound data (such as mixing, adding echo, applying an equalizer function, creating an artificial stereo effect), so in addition you will be writing a never-ending stream of modules to perform these operations. Here's a possible structure for your package (expressed in terms of a hierarchical filesystem):

Code: Alles auswählen

Sound/                          Top-level package
      __init__.py               Initialize the sound package
      Formats/                  Subpackage for file format conversions
              __init__.py
              wavread.py
              wavwrite.py
              aiffread.py
              aiffwrite.py
              auread.py
              auwrite.py
              ...
      Effects/                  Subpackage for sound effects
              __init__.py
              echo.py
              surround.py
              reverse.py
              ...
      Filters/                  Subpackage for filters
              __init__.py
              equalizer.py
              vocoder.py
              karaoke.py
...
(http://docs.python.org/tut/node8.html). Da steht 'equalizer.py', was natürlich auch nur eine Kapselung für eine DLL sein kann. Nun ja, GvR verspricht selten zuviel.

Wenn man das in C macht, wäre es natürlich ein schöner Beitrag, gleich noch py-Bindings dazuzuliefern. Die hin- und herzureichenden Objekte sind ja immerhin ziemlich einfacher Natur (ein paar ints und buffers), allzuviel Extra-Code für die py-Bindings hätte man vielleicht gar nicht. Hat das wirklich noch niemand getan, gorba ?

Verfasst: Montag 7. Mai 2007, 11:37
von BlackJack
Warum reden hier immer alle von C? Für so etwas nimmt man FORTRAN wenn es schnell sein soll. ;-)