Здравствуйте. Пишу плеер на вашем уроке. Даже уже написал благодоря вашему уроку. Все отлично работает. Но мне этого мало. Я решел сделать эквалайзер на form2 и эффекты(reverb,echo,flanger) Сам вопрос: Разместил тракбары на form2, прописал коды которые в вашем уроки в Unit2, подключил bass в 2 х юнитах и Uses form1 прописал Unit2, но настройки эквалайзера а также эффектов не работают. Если эквалайзер и эффекты добавляю на form1 работает все нормально. Программа сама работает и открывает form2 но начинаю настраивать нечего не происходит. Помогите уже во всех поисковиках перерыл нечего найти немогу подобного. Может как то нужно form2 включить чтобы он настройки посылал на form1. Да еще я новичек в программировании но все схватываю на лету СПС.
Этот код, который вы вставили в unit2, нужно оставить там где он был, а в unit2 перенести код для каждого TrackBar эквалайзера в событии OnChange. Вот посмотрите здесь, я специально вынес эквалайзер на отдельную форму. Думаю разберетесь. )))
Спс большое седня попробую. Отличный сайт. Я уже незнал что делать. Да впринцепи разабрался начну до делывать. Если возникнут вопросы то вам еще напишу.
xaramamburu, Я использовал код, когда громкость регулируется путём передвижения одного Imagе по другому. Но, эту проблему уже решил. И с перетаскиванием формы разобрался.
У меня остался последний вопрос... Не могли бы вы привести примеры, как использовать эффекты в плеере (типо Flanger, Echo, Click) но толкьо что бы их можно было включать CheckBox-ами и регулировать Trackbarom-и. Если не сложно, конечно Я посмотрел демо к bass.dll но что-то ничего не понял...
Filo$oF, вот пример для REVERB и ECHO, думаю для остальных делается также: И так, в разделе Var описываем:
fx: array[1..2] of integer; //настройки эффектов ReverbParam: BASS_DX8_REVERB; EchoParam: BASS_DX8_ECHO;
Далее процедура для CheckBox-а ревербера:
procedure TForm1.CheckBox1Click(Sender: TObject); begin if CheckBox1.Checked = true then begin fx[1] := BASS_ChannelSetFX(channel, BASS_FX_DX8_REVERB, 1); ReverbParam.fInGain := 0.0; ReverbParam.fReverbMix :=-trackBar1.Position;// может изменяться от -96 до 0, по умолчанию 0 (смотрите справку по bass) ReverbParam.fReverbTime := 1000.0; ReverbParam.fHighFreqRTRatio := 0.1; BASS_FXSetParameters(Fx[1], @ReverbParam);
end else BASS_ChannelRemoveFX(channel, fx[1]); end;
Процедура регулировки Trackbarom:
procedure TForm1.TrackBar1Change(Sender: TObject); begin if BASS_FXGetParameters(Fx[1], @ReverbParam) then begin ReverbParam.fInGain := 0.0; ReverbParam.fReverbMix := -trackBar1.Position; ReverbParam.fReverbTime := 1000.0; ReverbParam.fHighFreqRTRatio := 0.1; BASS_FXSetParameters(Fx[1], @ReverbParam); end;
end;
Аналогично для ECHO:
procedure TForm1.CheckBox2Click(Sender: TObject); begin if CheckBox2.Checked = true then begin fx[2] := BASS_ChannelSetFX(channel, BASS_FX_DX8_ECHO, 1); EchoParam.fWetDryMix := trackBar2.Position; EchoParam.fFeedBack := 50.0; BASS_FXSetParameters(fx[2], @EchoParam); end else BASS_ChannelRemoveFX(channel, fx[2]); end;
procedure TForm1.TrackBar2Change(Sender: TObject); begin if BASS_FXGetParameters(fx[2], @EchoParam) then begin EchoParam.fWetDryMix := trackBar2.Position; EchoParam.fFeedBack := 50.0; BASS_FXSetParameters(fx[2], @EchoParam) end; end;
Ну и в чем проблема то? Вы читать не умеете или переводчиком пользоваться? Вам здесь ясно написано, что у вас переменная (идентификатор) fx редекларирован, т.е. он уже использован ранее.))))
А кто вам сказал, что надо, что то заменять? Это всего лишь пример. Если у вас эта переменная уже используется так замените ее на другую или увеличьте размерность уже имеющегося массива fx. Или вы в паскале совсем ничего не понимаете, то вам дорога не плееры писать, а читать умные книжки по основам программирования.))))