Re: Nameless Player | Sujet: Re: Nameless Player par ramses sur 29/6/2007 9:49:32
Un equaliseur n'est pas très dur à faire avec Bass:
Déclare une classe du style
C_DSPEQ est une classe
lBand est un entier
lFreq est un entier
fBandwidth est un réel sur 4 octets
fQ est un réel sur 4 octets
fCenter est un réel sur 4 octets
fGain est un réel sur 4 octets
lChannel est un entier
FIN
Ensuite active ou pas l'equaliseur ici pour une equaliseur 10 bandes:
PROCEDURE ActiveEQ(pbActiver, peStream, pePriorité=0)
SI peStream=0 ALORS
:bEQisActive=pbActiver
RENVOYER Vrai
FIN
SI pbActiver ALORS
API(CBass::BASS_FXDLL,CBass::_BASS_FX_DSP_Set,peStream,CBASS::BASS_FX_DSPFX_PEAKEQ,pePriorité)
API(CBass::BASS_FXDLL,CBass::_BASS_FX_DSP_Set,peStream,CBASS::BASS_FX_DSPFX_PEAKEQ,pePriorité)
API(CBass::BASS_FXDLL,CBass::_BASS_FX_DSP_Set,peStream,CBASS::BASS_FX_DSPFX_PEAKEQ,pePriorité)
API(CBass::BASS_FXDLL,CBass::_BASS_FX_DSP_Set,peStream,CBASS::BASS_FX_DSPFX_PEAKEQ,pePriorité)
API(CBass::BASS_FXDLL,CBass::_BASS_FX_DSP_Set,peStream,CBASS::BASS_FX_DSPFX_PEAKEQ,pePriorité)
API(CBass::BASS_FXDLL,CBass::_BASS_FX_DSP_Set,peStream,CBASS::BASS_FX_DSPFX_PEAKEQ,pePriorité)
API(CBass::BASS_FXDLL,CBass::_BASS_FX_DSP_Set,peStream,CBASS::BASS_FX_DSPFX_PEAKEQ,pePriorité)
API(CBass::BASS_FXDLL,CBass::_BASS_FX_DSP_Set,peStream,CBASS::BASS_FX_DSPFX_PEAKEQ,pePriorité)
API(CBass::BASS_FXDLL,CBass::_BASS_FX_DSP_Set,peStream,CBASS::BASS_FX_DSPFX_PEAKEQ,pePriorité)
API(CBass::BASS_FXDLL,CBass::_BASS_FX_DSP_Set,peStream,CBASS::BASS_FX_DSPFX_PEAKEQ,pePriorité)
:bEQisActive=Vrai
SINON
API(CBass::BASS_FXDLL,CBass::_BASS_FX_DSP_Remove, peStream, CBASS::BASS_FX_DSPFX_PEAKEQ)
:bEQisActive=Faux
FIN
RENVOYER Vrai
Pour modifier les valeurs des bandes déclare 10 potar et dans le code de modification de chanque potar fait appel au code suivant :
gpBass:BASS_ChannelGetAttributes(geStream,&gpDSP:EQ:lFreq,Null,Null)
gpDSP:EQ:fQ=0
gpDSP:EQ:fBandwidth=1
gpDSP:EQ:lChannel=-1
gpDSP:EQ:lBand=0
gpDSP:EQ:fCenter=60
gpDSP:EQ:fGain=-EqualizerPotar1/10
gpDSP:SetEQ(geStream)
gpDSP:EQ:lBand=1
gpDSP:EQ:fCenter=170
gpDSP:EQ:fGain=-EqualizerPotar2/10
gpDSP:SetEQ(geStream)
gpDSP:EQ:lBand=2
gpDSP:EQ:fCenter=310
gpDSP:EQ:fGain=-EqualizerPotar3/10
gpDSP:SetEQ(geStream)
gpDSP:EQ:lBand=3
gpDSP:EQ:fCenter=600
gpDSP:EQ:fGain=-EqualizerPotar4/10
gpDSP:SetEQ(geStream)
gpDSP:EQ:lBand=4
gpDSP:EQ:fCenter=1000
gpDSP:EQ:fGain=-EqualizerPotar5/10
gpDSP:SetEQ(geStream)
gpDSP:EQ:lBand=5
gpDSP:EQ:fCenter=3000
gpDSP:EQ:fGain=-EqualizerPotar6/10
gpDSP:SetEQ(geStream)
gpDSP:EQ:lBand=6
gpDSP:EQ:fCenter=6000
gpDSP:EQ:fGain=-EqualizerPotar7/10
gpDSP:SetEQ(geStream)
gpDSP:EQ:lBand=7
gpDSP:EQ:fCenter=12000
gpDSP:EQ:fGain=-EqualizerPotar8/10
gpDSP:SetEQ(geStream)
gpDSP:EQ:lBand=8
gpDSP:EQ:fCenter=14000
gpDSP:EQ:fGain=-EqualizerPotar9/10
gpDSP:SetEQ(geStream)
gpDSP:EQ:lBand=9
gpDSP:EQ:fCenter=16000
gpDSP:EQ:fGain=-EqualizerPotar10/10
gpDSP:SetEQ(geStream)
Où SetEQ est de la forme:
SI peStream<>0 _ET_ API(CBass::BASS_FXDLL,CBass::_BASS_FX_DSP_SetParameters,peStream,CBass::BASS_FX_DSPFX_PEAKEQ,&:EQ) ALORS
RENVOYER Vrai
FIN
RENVOYER Faux
Voila espérant que cela va t'éclairer sur la gestion d'un equaliseur avec BASS.
Philippe
|
|
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
|