Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi fmod equalizer (https://www.delphipraxis.net/59696-fmod-equalizer.html)

Flips 27. Dez 2005 13:53


fmod equalizer
 
Hi.

Bin gerade dabei meinen Player zu verbessern/neu zu coden.
Jetzt wollte ich einen Equalizer drin haben.
Mit folgendem Code habe ich es versucht zu testen.

Delphi-Quellcode:
var EQBands : array [0..10] of integer;

...

Procedure Test_EQ;
var i : integer;
begin
  FSOUND_SetPaused(FSOUND_ALL,true);
  for i := 0 to 10 do
  EQBands[i] := FSOUND_FX_Enable(FSOUND_ALL,FSOUND_FX_PARAMEQ);
   
  FSOUND_FX_SetParamEQ(EQBands[0], 80, 12, 15);
  FSOUND_FX_SetParamEQ(EQBands[1], 170, 12, 15);
  FSOUND_FX_SetParamEQ(EQBands[2], 310, 12, 15);
  FSOUND_FX_SetParamEQ(EQBands[3], 600, 12, 15);
  FSOUND_FX_SetParamEQ(EQBands[4], 1000, 12, 15);
  FSOUND_FX_SetParamEQ(EQBands[5], 3000, 12, 15);
  FSOUND_FX_SetParamEQ(EQBands[6], 6000, 12, 15);
  FSOUND_FX_SetParamEQ(EQBands[7], 12000, 12, 15);
  FSOUND_FX_SetParamEQ(EQBands[8], 14000, 12, 15);
  FSOUND_FX_SetParamEQ(EQBands[9], 16000, 12, 15);

  fmod.FSOUND_SetPaused(FSOUND_ALL,false);
end;
Erklärung der Parameter:
Laut der Fmod hilfe gibt der erste Parameter der Funktion FSOUND_FX_SetParamEQ die Id des Effekts an, welche vorher in dem Array gespeichert wurde.
Der 2. Parameter gibt den Center Wert an (?), mögliche Werte von 80 bis 16000, habe die benutzen Werte aus diesem Thread hier.
Der 3. Parameter gibt irgendeine Bandweite an (?), standard ist 12.
Der 4. Parameter gibt den Gain Wert an, im bereich -15 bis 15, damit man merkt wenn was passiert habe ich 15 eingestellt.

Wisst ihr warum es trotzdem nicht geht?

MfG
Flips

Flips 27. Dez 2005 19:44

Re: fmod equalizer
 
Ok habe die Antwort gefunden.
Der Fehler war, das es anstatt:
Delphi-Quellcode:
 EQBands[i] := FSOUND_FX_Enable(FSOUND_ALL,FSOUND_FX_PARAMEQ);
Delphi-Quellcode:
 EQBands[i] := FSOUND_FX_Enable(song.Channel,FSOUND_FX_PARAMEQ);
//Wobei Channel hier die Variable ist in welche Vorher der channel gespeichert wurde
heißen muss.

Nur damit der Equalizer funktioniert, muss es bei FSOUND_Stream_Open
ja heißen FSOUND_ENABLEFX. Allerdings brauche ich für alle meine Features
FSOUND_ENABLEFX und FSOUND_NORMAL.

Jetzt habe ich versucht sie zu verbinden durch AND, also
Delphi-Quellcode:
FSOUND_Stream_Open(PChar(song.Filename),FSOUND_ENABLEFX and FSOUND_NORMAL, 0, 0);
Aber es geht nicht. wisst ihr warum, bzw. wie es geht?

MfG Flips

omata 27. Dez 2005 23:57

Re: fmod equalizer
 
Moin,

ich würde es mal mit OR versuchen.
Bei AND werden ja nur die Bits übernommen, die in beiden Operanden gesetzt sind.
Bei OR werden alle gesetzten Bits der Operanden auch im Ergebnis gesetzt.

MfG
Thorsten

Flips 28. Dez 2005 17:02

Re: fmod equalizer
 
Nehme mal an du meinst das so:
Delphi-Quellcode:
FSOUND_Stream_Open(PChar(song.Filename),FSOUND_ENABLEFX or FSOUND_NORMAL, 0, 0);
Klappt leider auch nicht...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz