Equalizer ohne FMOD

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Equalizer ohne FMOD

Beitrag 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
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

ich sehe schon.. es gibt anscheinend unmengen an lösungen :wink:
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

ok leute, es kann doch nicht sein, das man equalizer nur mit fmod machen kann
Benutzeravatar
Frogger
Beiträge: 425
Registriert: 14.03.2006 19:27
Kontaktdaten:

Beitrag von Frogger »

Frag doch mal den Entwickler von fmod wie er es gemacht hat.
[PB4.20]
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

*gG*
könnte ci hmachen, nur hat der das mit PB gemacht??
und gibt er mir sie infos??


aber ich kanns versuchen
Benutzeravatar
Frogger
Beiträge: 425
Registriert: 14.03.2006 19:27
Kontaktdaten:

Beitrag 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.
[PB4.20]
Benutzeravatar
Froggerprogger
Badmin
Beiträge: 855
Registriert: 08.09.2004 20:02

Beitrag 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.
!UD2
msschulte

Beitrag 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.
Zuletzt geändert von msschulte am 17.09.2006 14:30, insgesamt 1-mal geändert.
Benutzeravatar
Frogger
Beiträge: 425
Registriert: 14.03.2006 19:27
Kontaktdaten:

Beitrag von Frogger »

:oops: douu und ich dachte tatsächlich es ist freeware
ok ich nehm alles zurück
[PB4.20]
msschulte

Beitrag von msschulte »

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