Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2012, 13:37   #1
Menmo
Пользователь
 
Регистрация: 17.10.2012
Сообщений: 40
По умолчанию bass.dll перемотка на отдельной форме

Я что-то ничего не понял.. Я хочу сделать перемотку на другой форме. Пишу так
BASS_ChannelSetPosition(channel, form1.Scrollbar1.Position, 0);
Т.е один скролл бар находиться на форме 3, другой на форме 1, тот который на 3, отлично матает туда, суда.. А который на 1 форме не матает.. Помогите.
Menmo вне форума Ответить с цитированием
Старый 29.10.2012, 14:12   #2
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

желательно бы увидеть больше кода..p.S могу выложить исходники моего недоработанного плеера(Много функций много кода))) если надо?
Кольша вне форума Ответить с цитированием
Старый 29.10.2012, 14:53   #3
Menmo
Пользователь
 
Регистрация: 17.10.2012
Сообщений: 40
По умолчанию

Выкладывай =))
Вот больше кода:
scrollbar1.Min:=0; //минимальное значение
scrollbar1.Max:=bass_ChannelGEtLeng th(Channel, 0)-1;//максимальное значение
form1.scrollbar1.Min:=0; //минимальное значение
form1.scrollbar1.Max:=bass_ChannelG EtLength(Channel, 0)-1;//максимальное значение
//присваеваем заголовку формы имя проигрываемого файла
Form3.Caption:=ExtractFileName(File Name);
//Устанавливаем PlayMode - play
mode:=play;
end;
procedure TForm3.FormCreate(Sender: TObject);
begin
//установка громкости
form2.trackbar1.Min:=0;
form2.trackbar1.Max:=10;
form2.trackbar1.Position:=5;
//установка баланса
form2.trackbar2.Min:=-5;
form2.trackbar2.Max:=5;
form2.trackbar2.Position:=0;
// проверка корректности загруженной BASS.DLL
if (HIWORD(BASS_GetVersion) <> BASSVERSION) then
begin
MessageBox(0,'Не корректная версия BASS.DLL',nil,MB_ICONERROR);
Halt;
end;
// Инициализация аудио - по умолчанию, 44100hz, stereo, 16 bits
if not BASS_Init(-1, 44100, 0, Handle, nil) then
begin
MessageBox(0,'Ошибка инициализация аудио',nil,MB_ICONERROR);
Halt;
bass_ChannelSetPosition(Channel, form1.scrollbar1.position, 0);
bass_ChannelSetPosition(Channel, scrollbar1.position, 0);
end;
end;
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//Освобождаем объекты перед закрытием
Bass_Stop(); //останавливаем проигрывание
BASS_StreamFree(channel); // освобождаем звуковой канал
Bass_Free;// Освобождаем ресурсы используемые Bass
end;
procedure TForm3.ListBox1DblClick(Sender: TObject);
begin
i:=ListBox1.Itemindex;
Filename:=ListBox1.Items.Strings[i];
BASS_ChannelStop(Channel);//останавливаем воспроизведение - стоп
mode:=Stop;//устанавливаем playmode -> стоп
player;
end;
procedure TForm3.Button2Click(Sender: TObject);
begin
PlaySound('ancient_button1.wav',0,S ND_ASYNC);
//очистка плейлиста
ListBox1.Clear;
end;
procedure TForm3.Timer1Timer(Sender: TObject);
var FFTFata : TFFTData;
TrackLen, TrackPos: Double;
ValPos: Double;
ValLen: Double;
begin
//проверяем режим воспроизведения, если не Play то выходим
if mode<>play then Exit;
//воспроизведение следующей песни
//если время проигрывания равно длине песни по времени,
if BASS_ChannelGetPosition(channel, 0)= BASS_ChannelGetLength(channel, 0) then
// в место if BASS_ChannelGetPosition(channel, 0)=BASS_ChannelGetLength(channel, 0) then
// можно сделать так: if BASS_ChannelIsActive(channel)=BASS_ ACTIVE_STOPPED then
// Практика показывает, что второй вариант более предпочтительный,
// т.к. проверка по длине трека иногда приводит к ошибкам в работе плеера.
begin
//то выбираем следующую песню из плейлиста
if i<ListBox1.Items.Count-1 then
begin
inc(i);
Filename:=ListBox1.Items.Strings[i];
ListBox1.ItemIndex:=i;
mode:=stop;
player;
end
//если лист закончился - выходим
else exit;
end;
//вызов визуализации
BASS_ChannelGetData(Channel, @FFTFata, BASS_DATA_FFT1024);
Draw (form1.PaintBox1.Canvas.Handle, FFTFata, 0,-5);
//устанавливаем позицию scrollbar в зависимоти от позиции трека
form1.ScrollBar1.Position:=bass_cha nnelGetPosition(channel,0);
scrollbar1.Position:=bass_channelGe tPosition(channel,0);
//время проигрывания трека
//считаваем сколько секунд прошло от начала воспроизведения
TrackPos:=BASS_ChannelBytes2Seconds (Channel, BASS_ChannelGetPosition(Channel,0)) ;
//считываем всю длину песню в секундах
TrackLen:=BASS_ChannelBytes2Seconds (Channel, BASS_ChannelGetLength(Channel,0));
//переводим секунды в часы
ValPos:=TrackPos / (24 * 3600);
ValLen:=TrackLen / (24 * 3600);
//Выводим данные о времени на форму в Label1 и Label2
form1.Label1.Caption:=FormatDateTim e('hh:mm:ss',ValPos);
form1.Label2.Caption:=FormatDateTim e('hh:mm:ss',ValLen);
//установка громкости звука
BASS_ChannelSetAttribute(Channel,BA SS_ATTRIB_VOL, form2.trackBar1.Position/10);
//установка баланса
BASS_ChannelSetAttribute(Channel,BA SS_ATTRIB_PAN, form2.Trackbar2.Position/5);

end;
procedure TForm3.ScrollBar1Scroll(Sender: TObject;
ScrollCode: TScrollCode; var ScrollPos: Integer);
begin
//устанавливаем позицию воспроизведения трека в зависимости от положения scrollbar
BASS_ChannelSetPosition(channel, form1.Scrollbar1.Position, 0);
end;
procedure TForm3.ListBox1Click(Sender: TObject);
begin
end;
end.[/INDENT]
Menmo вне форума Ответить с цитированием
Старый 29.10.2012, 21:20   #4
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Bass.dll
Кольша вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Видеоплеер на отдельной форме саша40 Мультимедиа в Delphi 5 26.09.2012 20:42
перемотка bass 2.4 s1s1s1 Мультимедиа в Delphi 9 27.11.2011 00:08
BASS.DLL Serrg1994 Мультимедиа в Delphi 0 20.09.2011 21:38
Перемотка с использованием bass.dll WinMen Мультимедиа в Delphi 8 16.05.2011 01:23
Ошибка при выхове функций Bass.dll из другой DLL SalasAndriy Общие вопросы Delphi 7 21.10.2009 23:36