Дата: Понедельник, 25.04.2011, 02:27 | Сообщение # 17
Пользователь
Сообщений: 17
Статус: Offline
Shegorat Благодарю за помощь но есть небольшие проблемки, когда нажимаешь паузу а потом заново воспроизводишь то он не продолжает воспроизводить и если после этого нажмешь переключение песни то песни переключаются между собой беспрерывно не воспроизводясь
в примере BASS_Example.iss при регулировке громкости звук не изменяется, но если бегунок довести до конца звук полностью выключается Многие вещи кажутся изысканными пока они происходят не с вами
Дата: Понедельник, 25.04.2011, 06:03 | Сообщение # 18
Местный гуру
Администратор
Сообщений: 150
Статус: Offline
Quote (Black_angel)
когда нажимаешь паузу а потом заново воспроизводишь то он не продолжает воспроизводить и если после этого нажмешь переключение песни то песни переключаются между собой бес перерыв-на не воспроизводясь
Спасибо, исправил. Что-то еще?
Quote (Black_angel)
в примере BASS_Example.iss при регулировке громкости звук не изменяется, но если бегунок довести до конца звук полностью выключается
Надо было сразу курить справку по поводу обновленной функции SetVolume. Исправил. Как много дел считались невозможными, пока они не были осуществлены. (Гай Плиний Секунд) Не занимаюсь подключением FreeArc/ISDone к чужим скриптам.
[_code] var Label1: TLabel; NewButton1: TNewButton;
function BASS_ChannelGetPosition(handle,mode: DWORD):DWORD; external 'BASS_ChannelGetPosition@{src}\bass.dll stdcall';
procedure NewButton1Click(Sender: TObject); var i:integer; begin i:=BASS_ChannelGetPosition(BASS_Mp3Handle,1); Label1.caption:=inttostr(i); end;
procedure InitializeWizard(); begin Label1 := TLabel.Create(WizardForm); with Label1 do begin Parent := WizardForm; Transparent := False; SetBounds(136,327,31,13); end;
NewButton1 := TNewButton.Create(WizardForm); with NewButton1 do begin Parent := WizardForm; SetBounds(32,323,75,25); OnClick := @NewButton1Click; end;
Дата: Понедельник, 25.04.2011, 16:17 | Сообщение # 20
Местный гуру
Администратор
Сообщений: 150
Статус: Offline
DaRKdemoN Надо было справку для Bass читать. Используй вторым параметром в функции ноль, тогда она вернет значение текущей позиции в байтах. Как много дел считались невозможными, пока они не были осуществлены. (Гай Плиний Секунд) Не занимаюсь подключением FreeArc/ISDone к чужим скриптам.
Дата: Понедельник, 25.04.2011, 17:10 | Сообщение # 21
Пользователь
Сообщений: 26
Статус: Offline
Shegorat
Quote
Надо было справку для Bass читать.
Читал.
Quote
Используй вторым параметром в функции ноль, тогда она вернет значение текущей позиции в байтах.
Это тоже пробовал один фиг BASS_ERROR_UNKNOWN
Добавлено (25.04.2011, 17:10) --------------------------------------------- Тогда можете написать рабочий срипт: при нажатии на NewButton1 показывалось текущая позиции в байтах.
[code] var Label1: TLabel; NewButton1: TNewButton;
function BASS_ChannelGetPosition(handle,mode: DWORD): DWORD; external 'BASS_ChannelGetPosition@{tmp}\bass.dll stdcall delayload';
procedure NewButton1Click(Sender: TObject); var i:DWORD; begin i:=BASS_ChannelGetPosition(BASS_Mp3Handle,0); Label1.caption:=inttostr(i); end;
procedure InitializeWizard(); begin Label1 := TLabel.Create(WizardForm); with Label1 do begin Parent := WizardForm; Transparent := False; SetBounds(136,327,31,13); end;
NewButton1 := TNewButton.Create(WizardForm); with NewButton1 do begin Parent := WizardForm; SetBounds(32,323,75,25); OnClick := @NewButton1Click; end;
Shegorat пожелания по модулю STS. * Обновить Botva2.dll до версии 0.9.5. * Сделать вертикальную панель. Если еще что-то придумаю допишу Кто не с нами, тот в запое...
Сообщение отредактировал Edison007 - Суббота, 30.04.2011, 14:51
function MyProc(h: HWND; Msg, wParam, lParam: longint): Longint; begin if Msg=WM_MOVE then SetWindowPos(Mp3Form.Handle, 0, WizardForm.Left+WizardForm.Width+5, WizardForm.Top, 0, 0, $415); if Msg=WM_ACTIVATE then SendMessage(Mp3Form.Handle, WM_NCACTIVATE, 1, 0); Result:= CallWindowProc(OldProc, h, Msg, wParam, lParam); end;
function MyProc1(h: HWND; Msg, wParam, lParam: longint): Longint; begin if Msg=WM_MOVE then begin SetWindowPos(WizardForm.Handle, 0, Mp3Form.Left-(WizardForm.Width+5), Mp3Form.Top, 0, 0, $415); end; if Msg=WM_CLOSE then begin SendMessage(WizardForm.handle, WM_CLOSE, 0, 0); Exit; end; Result:= CallWindowProc(OldProc1, h, Msg, wParam, lParam); if Msg=WM_ACTIVATE then SendMessage(WizardForm.Handle, WM_NCACTIVATE, 1, 0); end;
function GetSelected(): Integer; var n: integer; begin Result:= -1; for n:=0 to Mp3List.Items.Count-1 do begin if mp3List.Selected[n] then begin Result:= n; Break; end; end; end;
procedure SetSelected(Index: Integer); begin SendMessage(Mp3List.Handle, $186, Index, 0); end;
procedure GetClickedItem(Sender: TObject); begin SetCurrentMp3(GetSelected()); end;
procedure NextSelected(Sender: TObject); var n: Integer; begin n:= GetSelected()+1; if n>=Mp3List.Items.Count then n:=0; SetSelected(n); SetCurrentMp3(n); end;
procedure PreviousSelected(Sender: TObject); var n: Integer; begin n:= GetSelected()-1; if n<0 then n:= Mp3List.Items.Count-1; SetSelected(n); SetCurrentMp3(n); end;
procedure PlayMp3(Sender: TObject); begin if IsMp3Play then begin Mp3Play.Caption:='Play'; BASS_ChannelPause(Mp3Handle); IsMp3Play:= False; end else begin Mp3Play.Caption:='Pause'; BASS_ChannelPlay(Mp3Handle, False); IsMp3Play:= True; end; end;
procedure Mp3ListAddFiles(Dir: String; Mask: String); var FSR: TFindRec; FindR: Boolean; begin Mp3FilesDir:= Dir; FindR:= FindFirst(AddBackSlash(Dir)+Mask, FSR); repeat Mp3List.Items.Add(FSR.Name); FindR:= FindNext(FSR); until not FindR; FindClose(FSR); end;
procedure Mp3TimerProc(HandleW, msg, idEvent, TimeSys: LongWord); var s: string; begin LastEvent:=LastEvent+50; if (BASS_ChannelIsActive(Mp3Handle) = 0)and(IsMp3Play) then NextSelected(nil);
if (CurMp3Name.Caption<>'')and(LastEvent>300) then begin s:= CurMp3Name.Caption s:= s+Copy(s, 1, 1); Delete(s, 1, 1); CurMp3Name.Caption:=s; LastEvent:=0; end; end;
procedure InitializeWizard(); begin ExtractTemporaryFile('#1_01_Eagles_Otel California.mp3'); ExtractTemporaryFile('#1_02_Urge overkill_Girl you''ll be a woman soon.mp3'); ExtractTemporaryFile('#1_03_Gary Moore_Still got the blues.mp3'); ExtractTemporaryFile('#1_04_Extreme_More than worlds.mp3'); ExtractTemporaryFile('#1_05_Chris Rea_I just wanna be with you.mp3'); ExtractTemporaryFile('#1_06_The Beatles_Yesterday.mp3');
Если есть ошибки или проблемы пишите здесь, но сначала читайте поcты других пользователей, возможно они уже описали найденную Вами проблему. Когда полностью доработаю добавлю в модуль BASS и зарелизю его. Note: Версия библиотеки Bass - 2.4.7.1 (последняя версия)
P.S. Если кто сможет нарисовать нормальную графику для панели и модуля BASS в одном стиле, буду благодарен.
Как много дел считались невозможными, пока они не были осуществлены. (Гай Плиний Секунд) Не занимаюсь подключением FreeArc/ISDone к чужим скриптам.
еще можно добавить чтение mp3-тегов и вывести инфу во всплвающее окно. типа как в винампе
А поподробнее можно? Как много дел считались невозможными, пока они не были осуществлены. (Гай Плиний Секунд) Не занимаюсь подключением FreeArc/ISDone к чужим скриптам.
подробнее можно вот как-то так http://ifolder.ru/23582391 (18,3 МБ) я уже не помню код (его еще и поискать надо), но есть подозрение, что это можно и без сторонних длл сделать
я уже не помню код (его еще и поискать надо), но есть подозрение, что это можно и без сторонних длл сделать
Чтение то сделал. Осталось придумать как выводить эти данные. Думаю также надо будет сделать тракбар текущей позиции при проигрывании песни. Это тоже в принципе несложно сделать. P.S. Так кто все-таки нарисует графику? Как много дел считались невозможными, пока они не были осуществлены. (Гай Плиний Секунд) Не занимаюсь подключением FreeArc/ISDone к чужим скриптам.