Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Equalizer, bas.dll 
:(
    Опции темы
Racer
  Дата 23.7.2009, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 28.6.2009

Репутация: нет
Всего: нет



В свой плеер хочу добавить эквалайзер. Нашел код реализации через bass_fx.dll. ЕЕ гружу как плагин. Код:
Код

unit Unit5;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Bass, ComCtrls, sTrackBar, StdCtrls, sButton;

type
  TForm5 = class(TForm)
    sTrackBar1: TsTrackBar;
    sTrackBar2: TsTrackBar;
    sTrackBar3: TsTrackBar;
    sTrackBar4: TsTrackBar;
    sTrackBar5: TsTrackBar;
    sTrackBar6: TsTrackBar;
    sTrackBar7: TsTrackBar;
    sTrackBar8: TsTrackBar;
    sTrackBar9: TsTrackBar;
    sTrackBar10: TsTrackBar;
    sButton1: TsButton;
    sButton2: TsButton;
    procedure FormCreate(Sender: TObject);
    procedure sTrackBar1Change(Sender: TObject);
    procedure sButton2Click(Sender: TObject);
    procedure sTrackBar2Change(Sender: TObject);
    procedure sTrackBar3Change(Sender: TObject);
    procedure sTrackBar4Change(Sender: TObject);
    procedure sTrackBar5Change(Sender: TObject);
    procedure sTrackBar6Change(Sender: TObject);
    procedure sTrackBar7Change(Sender: TObject);
    procedure sTrackBar8Change(Sender: TObject);
    procedure sTrackBar9Change(Sender: TObject);
    procedure sTrackBar10Change(Sender: TObject);
    procedure sButton1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form5: TForm5;
  fx: array[0..10] of integer;
  EQEnable: Boolean;
  p: BASS_DX8_PARAMEQ;
  pR: BASS_DX8_REVERB;

implementation

uses Unit1;

{$R *.dfm}

function ProgDir: string;
begin
  result := ExtractFilePath(ParamStr(0));
end;

procedure IniEQ;
var
  p1: BASS_CHANNELINFO;
begin

  if (p1.flags and BASS_SAMPLE_8BITS) > 0 then
  begin
      // not 16-bit stereo
    ShowMessage('16-bit stereo sources only. Please select another.');
    Exit;
  end;

  fx[0] := BASS_ChannelSetFX(stream, BASS_FX_DX8_PARAMEQ, 1);
  fx[1] := BASS_ChannelSetFX(stream, BASS_FX_DX8_PARAMEQ, 1);
  fx[2] := BASS_ChannelSetFX(stream, BASS_FX_DX8_PARAMEQ, 1);
  fx[3] := BASS_ChannelSetFX(stream, BASS_FX_DX8_PARAMEQ, 1);
  fx[4] := BASS_ChannelSetFX(stream, BASS_FX_DX8_PARAMEQ, 1);
  fx[5] := BASS_ChannelSetFX(stream, BASS_FX_DX8_PARAMEQ, 1);
  fx[6] := BASS_ChannelSetFX(stream, BASS_FX_DX8_PARAMEQ, 1);
  fx[7] := BASS_ChannelSetFX(stream, BASS_FX_DX8_PARAMEQ, 1);
  fx[8] := BASS_ChannelSetFX(stream, BASS_FX_DX8_PARAMEQ, 1);
  fx[9] := BASS_ChannelSetFX(stream, BASS_FX_DX8_PARAMEQ, 1);
  fx[10] := BASS_ChannelSetFX(stream, 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);
  EQenable := True;
end;

procedure UpdateEQ(Band1, Band2, Band3, Band4, Band5, Band6,
  Band7, Band8, Band9, Band10: Integer);
var
  i: Integer;
begin

  BASS_FXGetParameters(fx[0], @p);
  p.fgain := Band1;
  BASS_FXSetParameters(fx[0], @p);

  BASS_FXGetParameters(fx[1], @p);
  p.fgain := Band2;
  BASS_FXSetParameters(fx[1], @p);

  BASS_FXGetParameters(fx[2], @p);
  p.fgain := Band3;
  BASS_FXSetParameters(fx[2], @p);

  BASS_FXGetParameters(fx[3], @p);
  p.fgain := Band4;
  BASS_FXSetParameters(fx[3], @p);

  BASS_FXGetParameters(fx[4], @p);
  p.fgain := Band5;
  BASS_FXSetParameters(fx[4], @p);

  BASS_FXGetParameters(fx[5], @p);
  p.fgain := Band6;
  BASS_FXSetParameters(fx[5], @p);

  BASS_FXGetParameters(fx[6], @p);
  p.fgain := Band7;
  BASS_FXSetParameters(fx[6], @p);

  BASS_FXGetParameters(fx[7], @p);
  p.fgain := Band8;
  BASS_FXSetParameters(fx[7], @p);

  BASS_FXGetParameters(fx[8], @p);
  p.fgain := Band9;
  BASS_FXSetParameters(fx[8], @p);

  BASS_FXGetParameters(fx[9], @p);
  p.fgain := Band10;
  BASS_FXSetParameters(fx[9], @p);
end;

procedure RemoveEQ;
var
  i: Integer;
begin
  for i := 0 to 9 do
  begin
    BASS_ChannelRemoveFX(stream, Fx[i]);
  end;
  EQEnable := False;
end;

procedure TForm5.FormCreate(Sender: TObject);
begin
// Form5.Width:= Form1.Width;
 BASS_PluginLoad(PChar(ProgDir +'bass_fx.dll'), 0);
 IniEQ;
end;

procedure TForm5.sButton1Click(Sender: TObject);
begin
 IniEQ;
end;

procedure TForm5.sButton2Click(Sender: TObject);
begin
 RemoveEQ;
end;

procedure TForm5.sTrackBar10Change(Sender: TObject);
begin
 UpdateEQ(sTrackBar1.Position, sTrackBar2.Position, sTrackBar3.Position, sTrackBar4.Position,
 sTrackBar5.Position, sTrackBar6.Position, sTrackBar7.Position,
 sTrackBar8.Position, sTrackBar9.Position, sTrackBar10.Position);
end;

procedure TForm5.sTrackBar1Change(Sender: TObject);
begin
 UpdateEQ(sTrackBar1.Position, sTrackBar2.Position, sTrackBar3.Position, sTrackBar4.Position,
 sTrackBar5.Position, sTrackBar6.Position, sTrackBar7.Position,
 sTrackBar8.Position, sTrackBar9.Position, sTrackBar10.Position);
end;

procedure TForm5.sTrackBar2Change(Sender: TObject);
begin
 UpdateEQ(sTrackBar1.Position, sTrackBar2.Position, sTrackBar3.Position, sTrackBar4.Position,
 sTrackBar5.Position, sTrackBar6.Position, sTrackBar7.Position,
 sTrackBar8.Position, sTrackBar9.Position, sTrackBar10.Position);
end;

procedure TForm5.sTrackBar3Change(Sender: TObject);
begin
 UpdateEQ(sTrackBar1.Position, sTrackBar2.Position, sTrackBar3.Position, sTrackBar4.Position,
 sTrackBar5.Position, sTrackBar6.Position, sTrackBar7.Position,
 sTrackBar8.Position, sTrackBar9.Position, sTrackBar10.Position);
end;

procedure TForm5.sTrackBar4Change(Sender: TObject);
begin
 UpdateEQ(sTrackBar1.Position, sTrackBar2.Position, sTrackBar3.Position, sTrackBar4.Position,
 sTrackBar5.Position, sTrackBar6.Position, sTrackBar7.Position,
 sTrackBar8.Position, sTrackBar9.Position, sTrackBar10.Position);
end;

procedure TForm5.sTrackBar5Change(Sender: TObject);
begin
 UpdateEQ(sTrackBar1.Position, sTrackBar2.Position, sTrackBar3.Position, sTrackBar4.Position,
 sTrackBar5.Position, sTrackBar6.Position, sTrackBar7.Position,
 sTrackBar8.Position, sTrackBar9.Position, sTrackBar10.Position);
end;

procedure TForm5.sTrackBar6Change(Sender: TObject);
begin
 UpdateEQ(sTrackBar1.Position, sTrackBar2.Position, sTrackBar3.Position, sTrackBar4.Position,
 sTrackBar5.Position, sTrackBar6.Position, sTrackBar7.Position,
 sTrackBar8.Position, sTrackBar9.Position, sTrackBar10.Position);
end;

procedure TForm5.sTrackBar7Change(Sender: TObject);
begin
 UpdateEQ(sTrackBar1.Position, sTrackBar2.Position, sTrackBar3.Position, sTrackBar4.Position,
 sTrackBar5.Position, sTrackBar6.Position, sTrackBar7.Position,
 sTrackBar8.Position, sTrackBar9.Position, sTrackBar10.Position);
end;

procedure TForm5.sTrackBar8Change(Sender: TObject);
begin
 UpdateEQ(sTrackBar1.Position, sTrackBar2.Position, sTrackBar3.Position, sTrackBar4.Position,
 sTrackBar5.Position, sTrackBar6.Position, sTrackBar7.Position,
 sTrackBar8.Position, sTrackBar9.Position, sTrackBar10.Position);
end;

procedure TForm5.sTrackBar9Change(Sender: TObject);
begin
 UpdateEQ(sTrackBar1.Position, sTrackBar2.Position, sTrackBar3.Position, sTrackBar4.Position,
 sTrackBar5.Position, sTrackBar6.Position, sTrackBar7.Position,
 sTrackBar8.Position, sTrackBar9.Position, sTrackBar10.Position);
end;

end.


Оно при загрузке формы говорит "16-bit stereo sources only. Please select another." и выходит из процедуры. Так тем кодом задумано( не знаю зачем), я его с форума bass`а взял.

В чем тут проблема? Помогите пожалуйста
PM MAIL   Вверх
AntonN
Дата 23.7.2009, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.8.2006

Репутация: 7
Всего: 18



Я тебе уже приводил ссылку, где был пример bass.dll, графический "спектрум", эквалайзер, эффекты вроде фленджера и ревеберации, тракбар в который можно загрузить картинку и фон. Но ты вроде бы не читаешь.

Это сообщение отредактировал(а) AntonN - 23.7.2009, 14:20


--------------------
user posted image
PM MAIL WWW   Вверх
Racer
Дата 23.7.2009, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 28.6.2009

Репутация: нет
Всего: нет



Я читаю, но забыл, щас посмотрю, спасибо.
ЗЫ ваще вопрос был что в этом коде не так))))

Это сообщение отредактировал(а) Racer - 23.7.2009, 21:05
PM MAIL   Вверх
Racer
Дата 23.7.2009, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 28.6.2009

Репутация: нет
Всего: нет



Так кароче СПС за напоминание про тот демыч, вроде понял как сделать лучше(правильнее(кажется)). Завтра буду мучать свой плеер smile
PM MAIL   Вверх
Racer
Дата 24.7.2009, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 28.6.2009

Репутация: нет
Всего: нет



У меня не получается  smile  smile  smile !!!
Помогите ПЛИЗ!!!
По той деме не выходит нифига, помогите сгенерировать код
PM MAIL   Вверх
inndim
Дата 24.7.2009, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 8.6.2008
Где: Королёв

Репутация: 1
Всего: 1



А чем тебя не устраивает пример эквалайзера идущий в комплекте с bass.dll, или ты эти примеры игнорируешь?
Там кстати даже не нужно использовать bass_fx.dll.
Если у тебя этого примера нет, то я его прикрепляю к этому посту.

Присоединённый файл ( Кол-во скачиваний: 52 )
Присоединённый файл  fxtest.rar 262,27 Kb
PM MAIL WWW   Вверх
Racer
Дата 24.7.2009, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 28.6.2009

Репутация: нет
Всего: нет



smile
Я их не игнорирую, сначала там ищу, но не подумал что эквалайзер будет в fxtest.
Спс , приеду с дачи протестю
PM MAIL   Вверх
Racer
Дата 26.7.2009, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 28.6.2009

Репутация: нет
Всего: нет



Всем спасибо за помощь, разобрался, рад!!!!
Сделал сам EQ, настройки его (рок, поп...), и сохранение его параметров для дальнейших запусков плеера.
 smile  smile  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0776 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.