![]() |
Equalizer mit Bass will nicht..
Liste der Anhänge anzeigen (Anzahl: 1)
Hab ja schon viel mit Bass gemacht aber der EQ will einfach nicht.
Delphi-Quellcode:
BassInit
type
BASS_FXPARAMEQ = record fCenter: FLOAT; fBandwidth: FLOAT; fGain: FLOAT; end; TBand = Record par: BASS_FXPARAMEQ; hnd: HFX; end;
Delphi-Quellcode:
Taste ONOFF
function BassInit: BOOL;
begin if gnBassInitDone = False then begin BASS_SetConfig(BASS_CONFIG_FLOATDSP, 1); gnBassInitDone := BASS_Init(1, 44100, 0, MainWindow(0), nil); if not BASS_RecordInit(0) then begin BASS_RecordFree; BASS_Free(); halt; end; BASS_GetInfo(BassInfoParam); if BassInfoParam.dsver >= 8 then FDX8EffectReady := true; end; Result := gnBassInitDone; end;
Delphi-Quellcode:
ID_ONOFF: begin if not EQenable then SetupEqualizer else BassResetEQ(gnAudioChannel);
Delphi-Quellcode:
procedure SetupEqualizer;
var K: Integer; nChecked: Boolean; begin With SkinEngine do begin nChecked := GetCheckButtonStatus(GetMainItem(ID_ONOFF)); for K := low(EQBand) to high(EQBand) do BassInitEQ(gnAudioChannel, K, GetTrackValue(GetMainItem(K + ID_EQU_FIRST)), integer(nChecked)); end; end;
Delphi-Quellcode:
procedure BassInitEQ(UseChannel: HSTREAM; Item: Integer; Percent: float;
Checked:Integer); begin if not FDX8EffectReady then exit; if UseChannel <> 0 then begin if Checked = 0 then begin if EQBand[Item].hnd <> 0 then begin BASS_ChannelRemoveFX(UseChannel, EQBand[Item].hnd); EQBand[Item].hnd := 0; end else begin EQBand[Item].hnd := BASS_ChannelSetFX(UseChannel, BASS_FX_DX8_PARAMEQ, 1); EQBand[Item].par.fBandwidth := 18; EQBand[Item].par.fCenter := Float(PAnsiChar(ParseThis('80,170,310,600,1000,3000,6000,10000,12000,14000', ',' ,Item, 1))); EQBand[Item].par.fGain := 0; BASS_FXSetParameters(EQBand[Item].hnd, @EQBand[Item].par); end; end; end; EQenable := True; end;
Delphi-Quellcode:
procedure BassResetEQ(UseChannel: HSTREAM);
var i: integer; begin if not FDX8EffectReady then exit; for i := low(EQBand) to high(EQBand) do begin BASS_ChannelRemoveFX(UseChannel, EQBand[i].hnd); end; EQEnable := False; end;
Delphi-Quellcode:
Maximale Value = 100
procedure BassUpdateEQ(UseChannel: HSTREAM; Item: Integer; Percent: Integer;
Checked:Integer); var gain: Integer; i: Integer; begin if not FDX8EffectReady then exit; gain := trunc(Percent / 3.3333) - 15; for i := low(EQBand) to high(EQBand) do if i <> Item then EQBand[Item].par.fgain := 0; if UseChannel <> 0 then begin BASS_FXGetParameters(EQBand[Item-1].hnd, @EQBand[Item-1].par); EQBand[Item-1].par.fgain := gain; BASS_FXSetParameters(EQBand[Item-1].hnd, @EQBand[Item-1].par); end; end; umgerechnet auf MinValue -15, MaxValue 15 gain := trunc(Percent / 3.3333) - 15; kann machen was ich will der Ton ändert sich nicht. Woran kann das liegen ? Sieht jemand einen Fehler ? Also Musik läuft :) gruss Emil |
Re: Equalizer mit Bass will nicht..
Hiho
Mir ist eine kleine Sache aufgefallen(der Rest des Codes war mir zu hoch^^)
Delphi-Quellcode:
Sicher das das sorum richtig ist?
begin
if not EQenable then SetupEqualizer else BassResetEQ(gnAudioChannel); Für mich wärs andersrum eher nachvollziehbar, wenn also das Setup dem Enable folgt, und der Reset dem Disable ;) GreeZ HenKst |
Re: Equalizer mit Bass will nicht..
Sry, ich hab gerade nicht die Zeit mich da wieder so ganz reinzuarbeiten, aber vllt hilft dir das ja ein wenig weiter:
Delphi-Quellcode:
if chkbEqualizer.Checked then
frmBullPlayerMain.BassPlayer1.UpdateEQ( -1 * Trackbar1.Position, -1 * Trackbar2.Position, -1 * Trackbar3.Position, -1 * Trackbar4.Position, -1 * Trackbar5.Position, -1 * Trackbar6.Position, -1 * Trackbar7.Position, -1 * Trackbar8.Position, -1 * Trackbar9.Position, -1 * Trackbar10.Position); if not ComboEQ then begin Equalizer[cmbEQ.ItemIndex].Name := cmbEQ.Text; Equalizer[cmbEQ.ItemIndex].T1 := Trackbar1.Position; Equalizer[cmbEQ.ItemIndex].T2 := Trackbar2.Position; Equalizer[cmbEQ.ItemIndex].T3 := Trackbar3.Position; Equalizer[cmbEQ.ItemIndex].T4 := Trackbar4.Position; Equalizer[cmbEQ.ItemIndex].T5 := Trackbar5.Position; Equalizer[cmbEQ.ItemIndex].T6 := Trackbar6.Position; Equalizer[cmbEQ.ItemIndex].T7 := Trackbar7.Position; Equalizer[cmbEQ.ItemIndex].T8 := Trackbar8.Position; Equalizer[cmbEQ.ItemIndex].T9 := Trackbar9.Position; Equalizer[cmbEQ.ItemIndex].T10 := Trackbar10.Position; end; |
Re: Equalizer mit Bass will nicht..
Zitat:
Und die von dir gezeigten Values gebe ich ja schon weiter wenn auch in einer schleife. Zitat:
Wenn der Equalizer noch nicht initialiisert ist oder der knopf nicht eingeschaltet ist wird das SetupEqualizer aufgrufen. Andernfalls gelöscht (ausgeschaltet) gruss Emil |
Re: Equalizer mit Bass will nicht..
Was ist EQBand?
Wo/Wann wird EQBand initialisiert? |
Re: Equalizer mit Bass will nicht..
Zitat:
Delphi-Quellcode:
Initialisiert mit SetupEqualizer; > BassInitEQ
TBand = Record
par: BASS_FXPARAMEQ; // band of eq hnd: HFX; // band handle end; EQBand: array[0..9] of TBand; funktioniert nun ... Das problem ist das ich die Bänder aus einer anderen Funktion in einer Schleife übergebe das mag Bass anscheinend nicht. gruss Emil |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 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 by Thomas Breitkreuz