Equaliseur avec Bass

Résolu
Utilisateur anonyme - 10 juin 2007 à 17:16
 Utilisateur anonyme - 10 juin 2007 à 20:52
Salut à tous

J'essaye de faire un équaliseur avec la dll Bass :

J'ai deux forms avec le ptit bout de code suivant :

Form 2 :

Var
  fx: array[1..5] of integer;
  p: BASS_FXPARAMEQ;

procedure TParamForm.Tb_1Change(Sender: TObject);
begin
  BASS_FXGetParameters(fx[1], @p);
  p.fCenter := 125-Tb_1.position;
  BASS_FXSetParameters(fx[1], @p);
end;

procedure TParamForm.Tb_2Change(Sender: TObject);
begin
  BASS_FXGetParameters(fx[2], @p);
  p.fCenter := 500-Tb_2.position;
  BASS_FXSetParameters(fx[2], @p);
end;

procedure TParamForm.Tb_3Change(Sender: TObject);
begin
  BASS_FXGetParameters(fx[3], @p);
  p.fCenter := 1000-Tb_3.position;
  BASS_FXSetParameters(fx[3], @p);
end;

procedure TParamForm.Tb_4Change(Sender: TObject);
begin
  BASS_FXGetParameters(fx[4], @p);
  p.fCenter := 2000-Tb_4.position;
  BASS_FXSetParameters(fx[4], @p);
end;

procedure TParamForm.Tb_5Change(Sender: TObject);
begin
  BASS_FXGetParameters(fx[5], @p);
  p.fCenter := 8000-Tb_5.position;
  BASS_FXSetParameters(fx[5], @p);
end;

Form 1 :

Var
  chan : HRECORD;
  pchanSing,pchanVoice : HSTREAM;

procedure Form1.PlaySound(Sender:TObject);
Var
Index:Cardinal;
Begin
  BASS_MusicFree(pChanSing);
  BASS_StreamFree(pChanSing);
  pchanSing := BASS_StreamCreateFile(FALSE, PChar('MyFile.mp3'), 0, 0, BASS_SAMPLE_FX);
  fx[1] := BASS_ChannelSetFX(pChanSing, BASS_FX_PARAMEQ, 1);
  fx[2] := BASS_ChannelSetFX(pChanSing, BASS_FX_PARAMEQ, 1);
  fx[3] := BASS_ChannelSetFX(pChanSing, BASS_FX_PARAMEQ, 1);
  fx[4] := BASS_ChannelSetFX(pChanSing, BASS_FX_PARAMEQ, 1);
  fx[5] := BASS_ChannelSetFX(pChanSing, BASS_FX_PARAMEQ, 1);
  p.fGain := 0;
  p.fBandwidth := 18;
  For Index:=0 To (Form2.ComponentCount-1) Do
  If (Form2.Components[Index] is TRadioButton)
  AND (TRadioButton(Form2.Components[Index]).Tag<5)
  AND (TRadioButton(Form2.Components[Index]).Checked)
  then TRadioButton(Form2.Components[Index]).OnClick(Sender);  
  BASS_ChannelPlay(pchanSing, False);
End;

procedure Form1.PlaySound(Sender:TObject);
Begin
PlaySound(Object);
End;

Quand je fais un clicker du bouton, ben le son on l'entend bien (déjà ca sent bon ). Là ou ca sent le mammouth (Qui a montré Cari du doigt ? C'est pas sympas de balancer les copains ), c'est quand on click sur un trackbar : il se passe quoi ? Ben rien du tout et ca c'est pas juste, non Monsieur.

Alors j'ai du louper la bretelle d'autoroute quelque part, alors si quelqu'un avait un plan pour me dire ou ca faute, ca serait cool.

@+ et merci

2 réponses

Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
10 juin 2007 à 20:08
Salut,
c'est marrant j'en fait un aussi pr le moment ... (normallement il arrivera bientot !)

Si je ne dis pas de connerrie , ton p.fCenter va bouger dans tes frequences (la d accord ) mais tu fais varier le gain nulle part il reste a p.fGain := 0;

donc tu verra jamais la difference

procedure TParamForm.Tb_1Change(Sender: TObject);
begin
  BASS_FXGetParameters(fx[1], @p);
  p.fCenter := 125-Tb_1.position;
   p.fGain:= x ; //varie de -15 a 15
  BASS_FXSetParameters(fx[1], @p);
end;

A priori je dis que c est ca , pas trop regarder le ode mais ca m a choqué ..
Ciao
3
Utilisateur anonyme
10 juin 2007 à 20:52
Merci Nico,

Le coup du p.fGain à la place du p.fCenter, j'avais zappé .

@+
0
Rejoignez-nous