![]() |
Equalizer rauschen und verzerren
hallo,
brauche mal hilfe, denn der eigene mp3-player funktioniert sehr gut, jedoch wenn ich den equalizer aktiviere, erlogt ein völliges verzerren und rauschen. hier den code zum programm, irgend etwas muss hier schieflaufen. arbeite mit bass und bass_fx.dll
Delphi-Quellcode:
//*********Equalizer********
//**********Beginn********** procedure TFmenue.SetDSP_EQ(fGain, fBandwidth, fQ, fCenter_Bass, fCenter_Mid, fCenter_Treble: FLOAT); begin fxEQ := BASS_ChannelSetFX(chan, BASS_FX_BFX_PEAKEQ, 1); // fCenter_Mid, fCenter_Treble nicht gesetzt, bzw. nicht benutzt! eq.fGain := fGain; eq.fQ := fQ; eq.fBandwidth := fBandwidth; eq.lChannel := BASS_BFX_CHANALL; // create 1st band for bass eq.lBand := 0; eq.fCenter := fCenter_Bass; BASS_FXSetParameters(fxEQ, @eq); eq.lBand := 1; eq.fCenter := fCenter_Bass; BASS_FXSetParameters(fxEQ, @eq); eq.lBand := 2; eq.fCenter := fCenter_Bass; BASS_FXSetParameters(fxEQ, @eq); eq.lBand := 3; eq.fCenter := fCenter_Bass; BASS_FXSetParameters(fxEQ, @eq); eq.lBand := 4; eq.fCenter := fCenter_Bass; BASS_FXSetParameters(fxEQ, @eq); eq.lBand := 5; eq.fCenter := fCenter_Bass; BASS_FXSetParameters(fxEQ, @eq); eq.lBand := 6; eq.fCenter := fCenter_Bass; BASS_FXSetParameters(fxEQ, @eq); eq.lBand := 7; eq.fCenter := fCenter_Bass; BASS_FXSetParameters(fxEQ, @eq); eq.lBand := 8; eq.fCenter := fCenter_Bass; BASS_FXSetParameters(fxEQ, @eq); eq.lBand := 9; eq.fCenter := fCenter_Bass; BASS_FXSetParameters(fxEQ, @eq); eq.lBand := 10; eq.fCenter := fCenter_Bass; BASS_FXSetParameters(fxEQ, @eq); // update dsp eq UpdateFX(0, vsEQBASS80.position); UpdateFX(1, vsEQBASS125.position); UpdateFX(2, vsEQBASS200.position); UpdateFX(3, vsEQBASS320.position); UpdateFX(4, vsEQBASS600.position); UpdateFX(5, vsEQBASS1000.position); UpdateFX(6, vsEQBASS3000.position); UpdateFX(7, vsEQBASS6000.position); UpdateFX(8, vsEQBASS10000.position); UpdateFX(9, vsEQBASS12000.position); UpdateFX(10, vsEQBASS14000.position); end; procedure TFmenue.UpdateFX(band, pos: integer); begin eq.lBand := band; BASS_FXGetParameters(fxEQ, @eq); eq.fGain := 10 - pos; BASS_FXSetParameters(fxEQ, @eq); End; procedure TFmenue.chkEqualizerClick(Sender: TObject); begin If chkEqualizer.checked then begin fxEQ := BASS_ChannelSetFX(Chan, BASS_FX_BFX_PEAKEQ, 1); with eq do begin fBandwidth := 2.5; FQ := 0; fGain := 0; lChannel := BASS_BFX_CHANALL; // create 1st band for bass eq.lBand := 0; eq.fCenter := 80; BASS_FXSetParameters(fxEQ, @eq); eq.lBand := 1; eq.fCenter := 125; BASS_FXSetParameters(fxEQ, @eq); eq.lBand := 2; eq.fCenter := 200; BASS_FXSetParameters(fxEQ, @eq); eq.lBand := 3; eq.fCenter := 320; BASS_FXSetParameters(fxEQ, @eq); eq.lBand := 4; eq.fCenter := 600; BASS_FXSetParameters(fxEQ, @eq); eq.lBand := 5; eq.fCenter := 1000; BASS_FXSetParameters(fxEQ, @eq); eq.lBand := 6; eq.fCenter := 3000; BASS_FXSetParameters(fxEQ, @eq); eq.lBand := 7; eq.fCenter := 6000; BASS_FXSetParameters(fxEQ, @eq); eq.lBand := 8; eq.fCenter := 10000; BASS_FXSetParameters(fxEQ, @eq); eq.lBand := 9; eq.fCenter := 12000; BASS_FXSetParameters(fxEQ, @eq); eq.lBand := 10; eq.fCenter := 14000; BASS_FXSetParameters(fxEQ, @eq); end; // update dsp eq vsEQBASS80.OnChange(Self); vsEQBASS125.OnChange(Self); vsEQBASS200.OnChange(Self); vsEQBASS320.OnChange(Self); vsEQBASS600.OnChange(Self); vsEQBASS1000.OnChange(Self); vsEQBASS3000.OnChange(Self); vsEQBASS6000.OnChange(Self); vsEQBASS10000.OnChange(Self); vsEQBASS12000.OnChange(Self); vsEQBASS14000.OnChange(Self); end else BASS_ChannelRemoveFX(Chan, fxEQ); end; procedure TFmenue.UpdateEQ(b, pos: integer); var i: integer; begin eq.lBand := b; // get b band values i := 10; BASS_FXGetParameters(fxEQ, @eq); eq.fGain := i - pos; BASS_FXSetParameters(fxEQ, @eq); end; procedure TFmenue.vsEQBASS80Change(Sender: TObject); begin UpdateEQ(0, vsEQBASS80.Position); end; procedure TFmenue.vsEQBASS125Change(Sender: TObject); begin UpdateEQ(1, vsEQBASS125.Position); end; procedure TFmenue.vsEQBASS200Change(Sender: TObject); begin UpdateEQ(2, vsEQBASS200.Position); end; procedure TFmenue.vsEQBASS320Change(Sender: TObject); begin UpdateEQ(3, vsEQBASS320.Position); end; procedure TFmenue.vsEQBASS600Change(Sender: TObject); begin UpdateEQ(4, vsEQBASS600.Position); end; procedure TFmenue.vsEQBASS1000Change(Sender: TObject); begin UpdateEQ(5, vsEQBASS1000.Position); end; procedure TFmenue.vsEQBASS3000Change(Sender: TObject); begin UpdateEQ(6, vsEQBASS3000.Position); end; procedure TFmenue.vsEQBASS6000Change(Sender: TObject); begin UpdateEQ(7, vsEQBASS6000.Position); end; procedure TFmenue.vsEQBASS10000Change(Sender: TObject); begin UpdateEQ(8, vsEQBASS10000.Position); end; procedure TFmenue.vsEQBASS12000Change(Sender: TObject); begin UpdateEQ(9, vsEQBASS12000.Position); end; procedure TFmenue.vsEQBASS14000Change(Sender: TObject); begin UpdateEQ(10, vsEQBASS14000.Position); end; //*********************Ende******************************* wer kann helfen |
Re: Equalizer rauschen und verzerren
Ohne mich mit der Materie auszukennen, vermute ich den Fehler hier:
Delphi-Quellcode:
Debugge das mal und ueberpruefe, was fuer ein Gain-Wert benutzt wird.
procedure TFmenue.UpdateEQ(b, pos: integer);
var i: integer; begin eq.lBand := b; // get b band values i := 10; BASS_FXGetParameters(fxEQ, @eq); eq.fGain := i - pos; BASS_FXSetParameters(fxEQ, @eq); end; Wenn der Gain zu hoch ist, verzerrts natuerlich nur noch. |
Re: Equalizer rauschen und verzerren
hallo,
der wert war wirklich zu hoch, habe es mit der variablen i unter 2 bishin 0 probiert. der tipp war schon sehr gut, das rauschen ist so gut wie weg, noch ein wenig zerren im hintergrund. muss ich vielleicht im nachfolgenden den wert auch runtersetzen?
Delphi-Quellcode:
wäre es ratsam hier auch eine variable i zu setzen, wie bei "UpdateEQ"
procedure TFmenue.UpdateFX(band, pos: integer);
begin eq.lBand := band; // get values of the selected band BASS_FXGetParameters(fxEQ, @eq); eq.fGain := 10 - pos; BASS_FXSetParameters(fxEQ, @eq); end; bitte noch mal um rückantwort, danke |
Re: Equalizer rauschen und verzerren
Vermutlich schon (auch mal mit Werten < 10 probiert?). Aber die Variable ist ja im Moment eh ueberfluessig, da du diese eh nur statisch nutzt.
Fuer weitere Details muesste ich mir erstmal den BASS.dll-Kram anschauen (speziell was die Gain-Werte betrifft). |
Re: Equalizer rauschen und verzerren
Hallo,
habe zwischendurch zu diesem problem bei werten < 10 ... 0 keine verbesserungen im sound festgestellt. wozu brauche ich überhaupt diese beiden updates, d.h. "UpdateEQ" und "UpdateFX" ? habe diese codes auch aus mehreren foren zu diesem thema nur übernommen aber so richtig nicht verstanden ! normalerweise kann ich doch ...FX löschen, oder laufe ich gefahr, dass die bass_fx.dll nicht mehr wirksam wird. kann ich darauf eine antwort finden bis dahin danke,schönen abend, der 1. tipp :lol: war schon ein schritt in die richtige richtung. als bald bis morgen, muss jetzt ein anderes programm fertigstellen. malu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz