unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, ComCtrls,
StdCtrls, bass, TplSliderUnit;
type
{ TForm1 }
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
plSlider1: TplSlider;
plSlider10: TplSlider;
plSlider2: TplSlider;
plSlider3: TplSlider;
plSlider4: TplSlider;
plSlider5: TplSlider;
plSlider6: TplSlider;
plSlider7: TplSlider;
plSlider8: TplSlider;
plSlider9: TplSlider;
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure SliderChange(Sender: TObject);
private
public
end;
var
Form1: TForm1;
strs : THandle;
p : BASS_DX8_PARAMEQ;
fx: array[0..10] of integer;
EQEnable: Boolean;
pR: BASS_DX8_REVERB;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
BASS_Init(-1, 44100, 0, Handle, nil);
//BASS_SetConfig(BASS_CONFIG_BUFFER, 5000);
BASS_SetVolume(0.1);
if BASS_ChannelIsActive(strs) <> 0 then
BASS_ChannelStop(strs);
strs := BASS_StreamCreateFile(False, pwidechar('a.mp3'), 0, 0, BASS_UNICODE);
BASS_ChannelPlay(strs, False);
fx[0] := BASS_ChannelSetFX(strs, BASS_FX_DX8_PARAMEQ, 1);
fx[1] := BASS_ChannelSetFX(strs, BASS_FX_DX8_PARAMEQ, 1);
fx[2] := BASS_ChannelSetFX(strs, BASS_FX_DX8_PARAMEQ, 1);
fx[3] := BASS_ChannelSetFX(strs, BASS_FX_DX8_PARAMEQ, 1);
fx[4] := BASS_ChannelSetFX(strs, BASS_FX_DX8_PARAMEQ, 1);
fx[5] := BASS_ChannelSetFX(strs, BASS_FX_DX8_PARAMEQ, 1);
fx[6] := BASS_ChannelSetFX(strs, BASS_FX_DX8_PARAMEQ, 1);
fx[7] := BASS_ChannelSetFX(strs, BASS_FX_DX8_PARAMEQ, 1);
fx[8] := BASS_ChannelSetFX(strs, BASS_FX_DX8_PARAMEQ, 1);
fx[9] := BASS_ChannelSetFX(strs, BASS_FX_DX8_PARAMEQ, 1);
fx[10] := BASS_ChannelSetFX(strs, BASS_FX_DX8_REVERB, 1);
//Apply EQ Settings to song
p.fGain := 0;
p.fBandwidth := 18;
p.fCenter := 80;
BASS_FXSetParameters(fx[0], @p);
p.fCenter := 170;
BASS_FXSetParameters(fx[1], @p);
p.fCenter := 310;
BASS_FXSetParameters(fx[2], @p);
p.fCenter := 600;
BASS_FXSetParameters(fx[3], @p);
p.fCenter := 1000;
BASS_FXSetParameters(fx[4], @p);
p.fCenter := 3000;
BASS_FXSetParameters(fx[5], @p);
p.fCenter := 7000;
BASS_FXSetParameters(fx[6], @p);
p.fCenter := 12000;
BASS_FXSetParameters(fx[7], @p);
p.fCenter := 14000;
BASS_FXSetParameters(fx[8], @p);
p.fCenter := 16000;
BASS_FXSetParameters(fx[9], @p);
BASS_FXGetParameters(fx[10], @pR);
pR.fReverbMix := -96;
pR.fReverbTime := 1500;
pR.fHighFreqRTRatio := 0.1;
BASS_FXSetParameters(fx[10], @pR);
end;
procedure TForm1.SliderChange(Sender: TObject);
var
CENTER : integer;
GAIN : integer;
INDEX : integer;
begin
CENTER:=(Sender as TplSlider).Frequency;
GAIN:=(Sender as TplSlider).Value;
INDEX:=(Sender as TplSlider).Index;
Label2.Caption:=inttostr(GAIN);
Label4.Caption:=inttostr(CENTER);
Label6.Caption:=inttostr(INDEX);
p.fGain := GAIN;
p.fBandwidth := 18;
p.fCenter := CENTER;
BASS_FXSetParameters(fx[INDEX], @p);
end;
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
BASS_Stop();
end;
end.