Parametrischer Equalizer mit der FMOD-DLL
Verfasst: 21.01.2005 17:48
Nachfolgend mal ein code um zu sehen wie man sich mit FMOD einen Equalizer bastel kann.
Ihr braucht zum kompilieren die FMOD-Wrapper-LIB von Froggerprogger (zu finden auf PureArea.net) und die fmod.dll.
Ich habe das mit der fmod.dll version 3.7.4.0 getestet.
viel spaß damit
gruß nico
Ihr braucht zum kompilieren die FMOD-Wrapper-LIB von Froggerprogger (zu finden auf PureArea.net) und die fmod.dll.
Ich habe das mit der fmod.dll version 3.7.4.0 getestet.
Code: Alles auswählen
; Author: nicolaus
; Date: 21. Januar 2005
; um das beispiel zu kompilieren und zu starten braucht ihr die FMOD-Wrapper-LIB
; und die fmod.dll (getestet wurde mit dll-version 3.7.4.0)
Enumeration
#TrackBar_80
#TrackBar_170
#TrackBar_310
#TrackBar_600
#TrackBar_1000
#TrackBar_3000
#TrackBar_6000
#TrackBar_12000
#TrackBar_14000
#TrackBar_16000
EndEnumeration
Global HardCh_1.l
Dim EQBand.l(10)
Procedure InitEQ()
Protected I.l
For I=0 To 10
EQBand(I)= FSOUND_FX_Enable(HardCh_1, #FSOUND_FX_PARAMEQ)
Debug EQBand(I)
Next
FSOUND_FX_SetParamEQ(EQBand(0), 80, 10, 0)
FSOUND_FX_SetParamEQ(EQBand(1), 170, 10, 0)
FSOUND_FX_SetParamEQ(EQBand(2), 310, 10, 0)
FSOUND_FX_SetParamEQ(EQBand(3), 600, 10, 0)
FSOUND_FX_SetParamEQ(EQBand(4), 1000, 10, 0)
FSOUND_FX_SetParamEQ(EQBand(5), 3000, 10, 0)
FSOUND_FX_SetParamEQ(EQBand(6), 6000, 10, 0)
FSOUND_FX_SetParamEQ(EQBand(7), 12000, 10, 0)
FSOUND_FX_SetParamEQ(EQBand(8), 14000, 10, 0)
FSOUND_FX_SetParamEQ(EQBand(9), 16000, 10, 0)
EndProcedure
Procedure Open_Equalizer()
If OpenWindow(0, 216, 0, 376, 250, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_TitleBar , "FMOD Equalizer")
If CreateGadgetList(WindowID())
TrackBarGadget(#TrackBar_80, 20, 30, 20, 200, 0, 240, #PB_TrackBar_Vertical)
TrackBarGadget(#TrackBar_170, 60, 30, 20, 200, 0, 240, #PB_TrackBar_Vertical)
TrackBarGadget(#TrackBar_310, 95, 30, 20, 200, 0, 240, #PB_TrackBar_Vertical)
TrackBarGadget(#TrackBar_600, 130, 30, 20, 200, 0, 240, #PB_TrackBar_Vertical)
TrackBarGadget(#TrackBar_1000, 165, 30, 20, 200, 0, 240, #PB_TrackBar_Vertical)
TrackBarGadget(#TrackBar_3000, 200, 30, 20, 200, 0, 240, #PB_TrackBar_Vertical)
TrackBarGadget(#TrackBar_6000, 235, 30, 20, 200, 0, 240, #PB_TrackBar_Vertical)
TrackBarGadget(#TrackBar_12000, 270, 30, 20, 200, 0, 240, #PB_TrackBar_Vertical)
TrackBarGadget(#TrackBar_14000, 305, 30, 20, 200, 0, 240, #PB_TrackBar_Vertical)
TrackBarGadget(#TrackBar_16000, 340, 30, 20, 200, 0, 240, #PB_TrackBar_Vertical)
SetGadgetState(#TrackBar_80,120)
SetGadgetState(#TrackBar_170,120)
SetGadgetState(#TrackBar_310,120)
SetGadgetState(#TrackBar_600,120)
SetGadgetState(#TrackBar_1000,120)
SetGadgetState(#TrackBar_3000,120)
SetGadgetState(#TrackBar_6000,120)
SetGadgetState(#TrackBar_12000,120)
SetGadgetState(#TrackBar_14000,120)
SetGadgetState(#TrackBar_16000,120)
EndIf
EndIf
EndProcedure
Procedure Set_EQ_Value(ID.l,Value.f)
Select ID
Case 0
FSOUND_FX_SetParamEQ(EQBand(0), 80, 10, Value)
Case 1
FSOUND_FX_SetParamEQ(EQBand(1), 170, 10, Value)
Case 2
FSOUND_FX_SetParamEQ(EQBand(2), 310, 10, Value)
Case 3
FSOUND_FX_SetParamEQ(EQBand(3), 600, 10, Value)
Case 4
FSOUND_FX_SetParamEQ(EQBand(4), 1000, 10, Value)
Case 5
FSOUND_FX_SetParamEQ(EQBand(5), 3000, 10, Value)
Case 6
FSOUND_FX_SetParamEQ(EQBand(6), 6000, 10, Value)
Case 7
FSOUND_FX_SetParamEQ(EQBand(7), 12000, 10, Value)
Case 8
FSOUND_FX_SetParamEQ(EQBand(8), 14000, 10, Value)
Case 9
FSOUND_FX_SetParamEQ(EQBand(9), 16000, 10, Value)
EndSelect
EndProcedure
Procedure.f Calculate_EQ_Gain(Value.f)
If Value > 15.00
temp_value.f = 15.00
Gain = Value - temp_value
ProcedureReturn Gain
ElseIf Value < 15.00
temp_value.f = -15.00
Gain = Value + temp_value
ProcedureReturn Gain
EndIf
EndProcedure
soundfile.s = OpenFileRequester("Wähle eine Musikdatei (wav, mp3,....)","","",0)
If soundfile = ""
End
EndIf
FSOUND_SetOutput(#FSOUND_OUTPUT_DSOUND)
Init_OK = #False
For I=0 To FSOUND_GetNumDrivers() - 1
FSOUND_GetDriverCaps(I, @caps)
If caps & #FSOUND_CAPS_HARDWARE
Init_OK = #True
FSOUND_SetDriver(I)
Break
EndIf
Next
If Init_OK = #False
MessageRequester("","Es wurde kein Soundtreiber mit Hardwarechannel gefunden", #MB_ICONERROR)
End
EndIf
numSoftChannels = 2
HardCh_1 = numSoftChannels + 1
FSOUND_Init(44100, numSoftChannels,0)
sample = FSOUND_Sample_Load(#FSOUND_FREE, soundfile, #FSOUND_LOOP_NORMAL | #FSOUND_HW2D | #FSOUND_ENABLEFX, 0, 0)
channel = FSOUND_PlaySoundEx(HardCh_1, sample, 0, #True)
InitEQ()
FSOUND_SetPaused(channel, #False)
Open_Equalizer()
Repeat
Delay(1)
EventID = WindowEvent()
If EventID = #PB_EventGadget
gadget = EventGadgetID()
If gadget = #TrackBar_80
Set_EQ_Value(0,Calculate_EQ_Gain(GetGadgetState(#TrackBar_80)/8))
ElseIf gadget = #TrackBar_170
Set_EQ_Value(1,Calculate_EQ_Gain(GetGadgetState(#TrackBar_170)/8))
ElseIf gadget = #TrackBar_310
Set_EQ_Value(2,Calculate_EQ_Gain(GetGadgetState(#TrackBar_310)/8))
ElseIf gadget = #TrackBar_600
Set_EQ_Value(3,Calculate_EQ_Gain(GetGadgetState(#TrackBar_600)/8))
ElseIf gadget = #TrackBar_1000
Set_EQ_Value(4,Calculate_EQ_Gain(GetGadgetState(#TrackBar_1000)/8))
ElseIf gadget = #TrackBar_3000
Set_EQ_Value(5,Calculate_EQ_Gain(GetGadgetState(#TrackBar_3000)/8))
ElseIf gadget = #TrackBar_6000
Set_EQ_Value(6,Calculate_EQ_Gain(GetGadgetState(#TrackBar_6000)/8))
ElseIf gadget = #TrackBar_12000
Set_EQ_Value(7,Calculate_EQ_Gain(GetGadgetState(#TrackBar_12000)/8))
ElseIf gadget = #TrackBar_14000
Set_EQ_Value(8,Calculate_EQ_Gain(GetGadgetState(#TrackBar_14000)/8))
ElseIf gadget = #TrackBar_16000
Set_EQ_Value(9,Calculate_EQ_Gain(GetGadgetState(#TrackBar_16000)/8))
EndIf
EndIf
If EventID = #PB_Event_CloseWindow
FSOUND_Close()
Quit = 1
EndIf
Until Quit = 1
End
gruß nico