Seite 1 von 2

Equalizer ohne FMOD

Verfasst: 04.09.2006 20:52
von a14xerus
Hey Leute, ich suche eine Möglichkeit den MCI Soundausgang (mein Player spielt über MCI) zu "manipulieren"..
Also eig nur einen Equalizer (oder Analizer... kp) für meinen Player, ohen direkt den ganzen Soundausgang umzupolen..
Am besten ohne Fmod... also vll mit WinAPI
Danke im vorraus

Verfasst: 06.09.2006 19:16
von a14xerus
ich sehe schon.. es gibt anscheinend unmengen an lösungen :wink:

Verfasst: 16.09.2006 21:38
von a14xerus
ok leute, es kann doch nicht sein, das man equalizer nur mit fmod machen kann

Verfasst: 16.09.2006 21:45
von Frogger
Frag doch mal den Entwickler von fmod wie er es gemacht hat.

Verfasst: 16.09.2006 21:48
von a14xerus
*gG*
könnte ci hmachen, nur hat der das mit PB gemacht??
und gibt er mir sie infos??


aber ich kanns versuchen

Verfasst: 16.09.2006 22:33
von Frogger
Auch wenn er es nicht mit PB gemacht hat, kann er trotzdem das Prinzip erklären.
fmod ist freeware also warum sollte er das nicht verraten. Man will doch nicht den Quellcode sondern nur ein paar Tipps.

Verfasst: 17.09.2006 12:08
von Froggerprogger
Das was du da beschreibst kann nichtmal fmod. :wink:
fmod kann nur die Sounds manipulieren, die es selbst abspielt, nicht aber den globalen Ausgang aller anderen Anwendungen.

Das Prinzip ist folgendes:
A) Lese die Sounddaten ein, z.B. von Festplatte.
B) Bearbeite immer nur einen Buffer von bspw. 1024 Samples, also ca. einer 44stel Sekunde bei 44100 Hz
C) Kopiere die Sounds durch verschiedene Lautstärken gewichtet in den Buffer
D) Wende Effekte auf die Bufferdaten an, z.B. Reverb, Equalizer, FFT, etc.
E) Sende den Buffer an die Soundkarte, die ihn dann nahtlos nach dem vorigem abspielt.


Zu D) Es gibt bei modernen Soundkarten DirectX-Effekte, die man nutzen kann. Diese werden dann in seperaten Hardwaresoundkanälen von der Soundkarte draufgerechnet, von denen es so ca. 8 Stück gibt. Dies wird oft in Spielen genutzt.
Alternativ kann man die Effekte selbst programmieren, was meist nicht trivial ist.
Ein Delay-Effekt ist relativ einfach. Man muss den Buffer nur speichern und z.B. mit einer Sekunde Versatz wieder etwas leiser in die späteren Buffern addieren. Chorus und simpler Hall arbeiten ähnlich. Equalizer sind nicht trivial und hierfür gibt es verschiedene Ansätze. Einfach mal nach Googlen. Das Spektrum für den 'Analyser' erhält man mittels FFT. Du musst eine Funktion coden, die den Buffer nimmt und die Lautstärken seiner Sinuszusammensetzung liefert. Eine Funktion, die dasselbe wie die FFT berechnet ist mit ein paar Zeilen Code schnell runtergeschrieben und fliegt glaube ich sogar im Codearchiv rum. Sie ist aber lahm. Die echte FFT nutzt einige mathematische Tricks, um enorm schnell zu arbeiten. Möchte man das nicht selber proggen kann man auch auf FFTW (mal nach googlen) zurückgreifen. Das FFTW-package wird sogar von Matlab genutzt.
Wenn du einmal die FFT-Daten hast, dann kannst du damit auch sehr gute Equalizer bauen: Die Daten repräsentieren ja die Lautstärken der einzelnen Frequenzen. Nun kannst du beispielsweise die tiefen Frequenzen leiser machen und mit der Umkehrfunktion, der IFFT wieder zu einem veränderten Buffer zurückrechnen, und siehe da, das Wummern ist weg. Es gibt aber auch einfachere EQ, insbesondere für Hochpass und Tiefpass. Tiefpass: begrenze die maximale Veränderung zwischen Samples. Hochpass: Berechne "Buffer - Tiefpass".
fmod kann mittlerweile auch alle Effekte und den Analyser für jeden einzelnen Kanal anwenden, nicht nur auf die Summe aller Sounds.

Für den Beginn kannst du ja einfach mal Standard-WAV-Dateien manuell einlesen und diese dann blockweise verändern, z.B. um sie lauter/leiser zu machen und später dann andere Sachen damit auszuprobieren. Informationen zum WAV-Format gibt es hier:
http://www.sonicspot.com/guide/wavefiles.html
Dasselbe Format wie im Datenbereich von normalen WAV-Dateien wird auch rechnerintern zur Darstellung von Sounds genutzt.

Verfasst: 17.09.2006 14:19
von msschulte
Frogger hat geschrieben:Auch wenn er es nicht mit PB gemacht hat, kann er trotzdem das Prinzip erklären.
fmod ist freeware also warum sollte er das nicht verraten. Man will doch nicht den Quellcode sondern nur ein paar Tipps.
FMOD ist nicht Freeware!
fmod.org hat geschrieben:Product License for FMOD Ex (Including FMOD Designer).
1 Platform / SKU $6,000 USD
Extra platforms / SKUs $3,000 each

Product License for FMOD 3.
1 Platform / SKU $3,000 USD
Extra platforms / SKUs $1,500 each
FMOD ist für dich kostenfrei solang du damit kein Geld machen willst. Sprich – solang deine Software Freeware bleibt.

Verfasst: 17.09.2006 14:24
von Frogger
:oops: douu und ich dachte tatsächlich es ist freeware
ok ich nehm alles zurück

Verfasst: 17.09.2006 14:34
von msschulte
Nunja, so erspart man sich die Überraschung von deren Anwälten teuer abgemahnt zu werden inkl. der netten Nachzahlung. :)