Message de rapport:
 

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
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2