02.12.2006, 12:41
|
|
Местный
|
|
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
|
|
Я делал так (выдержка из исходника):
Код:
const
MAX_EQ = 11;
eq: array[1..MAX_EQ] of integer = ( 80, 260, 440, 620, 800, 980, 1160, 1340, 1520, 1700, 1800 );
type
PMyArray = ^TMyArray;
TMyArray = array[1..MAX_EQ] of integer;
type
TBassPlayer = class
private
Stream: HSTREAM; // Указатель на текущий поток
p: BASS_FXPARAMEQ;
fx: PMyArray;
...
constructor TBassPlayer.Create;
begin
BASS_Init( -1, 44100, 32, Handle, nil );
BASS_Start;
end;
(* Загрузка файла *)
procedure TBassPlayer.LoadFile(f: string);
var
i: byte;
begin
Stream := BASS_StreamCreateFile( false, PChar( f ), 0, 0, 0 );
New( fx );
for i := 1 to MAX_EQ do
begin
fx^[i] := BASS_ChannelSetFX( Stream, BASS_FX_PARAMEQ, 1 );
p.fCenter := eq[i];
p.fGain := 0;
p.fBandwidth := 36;
BASS_FXSetParameters( fx^[i], @p );
end;
end;
procedure TBassPlayer.SetEq(Num: byte; Val: integer);
begin
// Val должен быть в пределах от -15 до 15
if ( Num < 1 ) or ( Num > MAX_EQ ) then Exit;
BASS_FXGetParameters( fx^[Num], @p );
p.fgain := Val;
BASS_FXSetParameters( fx^[Num], @p );
end;
Примерно так.
P.S.
Для версии библиотеки 2.3.
|