Equalizer ohne FMOD
Equalizer ohne FMOD
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
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
- Froggerprogger
- Badmin
- Beiträge: 855
- Registriert: 08.09.2004 20:02
Das was du da beschreibst kann nichtmal fmod.
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.
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.
!UD2
-
msschulte
FMOD ist nicht Freeware!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 für dich kostenfrei solang du damit kein Geld machen willst. Sprich – solang deine Software Freeware bleibt.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
Zuletzt geändert von msschulte am 17.09.2006 14:30, insgesamt 1-mal geändert.
-
msschulte