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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2011, 13:39   #1
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию BASS.DLL в дополнительном модуле.

Здравствуйте.
Подскажите пожалуйста, как разместить нижеприведённый код в дополнительном модуле(без формы)? Надо те события, которые у меня
на кнопках, сделать как отдельные функции в дополнительном модуле,
чтобы потом их оттуда можно было вызывать в разных формах.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, Forms, Bass,
  StdCtrls, ExtCtrls, jpeg;

type
  TChannelType = (ctUnknown, ctStream, ctMusic);

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;

   procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);


private
     Channel: DWORD;
     Channel1: DWORD;
     Channel2: DWORD;
    ChannelType: TChannelType;
    function BASS_PlaySoundFile(const FileName: string): Boolean;

  end;

var
  Form1: TForm1;


implementation

{$R *.DFM}


function TForm1.BASS_PlaySoundFile(const FileName: string): Boolean;
var
  ChannelInfo: BASS_CHANNELINFO;
begin
  Result:= False;
 Channel:= BASS_StreamCreateFile(False, PAnsiChar(AnsiString(FileName)), 0, 0, 0);
  if (Channel <> 0) then
    ChannelType:= ctStream;

  if (Channel <> 0) then
  begin
    BASS_ChannelPlay(Channel, False);
  end;
  Result:= Channel <> 0;
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
BASS_streamfree(channel1);
Channel1:=Bass_StreamCreateFile(false,Pchar(ExtractFilePath(ParamStr(0))+'w/test.mp3'), 0, 0, BASS_SAMPLE_LOOP  or {$IFDEF UNICODE} BASS_UNICODE {$ELSE} 0 {$ENDIF});
BASS_ChannelPlay(Channel1, False);
BASS_ChannelSetAttribute(Channel1,Bass_ATTRIB_VOL,0);
BASS_ChannelSlideAttribute(Channel1,Bass_ATTRIB_VOL,  + 1,10000);

 end;

procedure TForm1.Button2Click(Sender: TObject);
begin

BASS_streamfree(channel);
Channel:=Bass_StreamCreateFile(false,Pchar(ExtractFilePath(ParamStr(0))+'w/test2.mp3'), 0, 0, BASS_SAMPLE_LOOP  or {$IFDEF UNICODE} BASS_UNICODE {$ELSE} 0 {$ENDIF});
BASS_ChannelPlay(Channel, False);
BASS_ChannelSetAttribute(Channel,Bass_ATTRIB_VOL,0);
BASS_ChannelSlideAttribute(Channel,Bass_ATTRIB_VOL,  + 1,10000);

 end;

procedure TForm1.Button3Click(Sender: TObject);
begin
BASS_ChannelSlideAttribute(Channel,Bass_ATTRIB_VOL, 0 / 100,7000);
end;


procedure TForm1.FormCreate(Sender: TObject);
var
  BassInfo: BASS_INFO;
begin
  BASS_Init(1, 44100, BASS_DEVICE_3D, Handle, nil);
  BASS_Start;
  BASS_GetInfo(BassInfo);
end;


end.
werrey вне форума Ответить с цитированием
Старый 22.10.2011, 16:56   #2
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию

Вопрос решен.
Всем спасибо за внимание и помощь!
Не знаю, насколько правильный получился код, но главное что работает:

Код:
unit zvuk_bass;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,  ExtCtrls, StdCtrls, BASS, mmsystem, shellapi;

type
TChannelType = (ctUnknown, ctStream, ctMusic);
function BASS_PlaySoundFile(const FileName: string): Boolean;  

var
ChannelType: TChannelType;

Channel: DWORD;     
Channel1: DWORD;    

procedure zvuk_btn();
procedure zvuk_ptc1(); 


implementation

 
function BASS_PlaySoundFile(const FileName: string): Boolean;
var
  ChannelInfo: BASS_CHANNELINFO;
begin
  Result:= False;
Channel:= BASS_StreamCreateFile(False, PAnsiChar(AnsiString(FileName)), 0, 0, 0);
  if (Channel <> 0) then
    ChannelType:= ctStream;

  if (Channel <> 0) then
  begin
    BASS_ChannelPlay(Channel, False);
  end;
  Result:= Channel <> 0;
end;                          

procedure zvuk_btn(); 
begin
BASS_streamfree(channel);
Channel:=Bass_StreamCreateFile(false,Pchar(ExtractFilePath(ParamStr(0))+'Sound/btn.wav'), 0, 0,{ BASS_SAMPLE_LOOP  or} {$IFDEF UNICODE} BASS_UNICODE {$ELSE} 0 {$ENDIF});
BASS_ChannelPlay(Channel, False);
BASS_ChannelSetAttribute(Channel,Bass_ATTRIB_VOL,0.55);
//BASS_ChannelSlideAttribute(Channel,Bass_ATTRIB_VOL,  + 1,10000);  // нарастание)))
end;



procedure zvuk_ptc1();  
begin
BASS_streamfree(channel1);
Channel1:=Bass_StreamCreateFile(false,Pchar(ExtractFilePath(ParamStr(0))+'Sound/1-1.mp3'), 0, 0,{ BASS_SAMPLE_LOOP  or} {$IFDEF UNICODE} BASS_UNICODE {$ELSE} 0 {$ENDIF});
BASS_ChannelPlay(Channel1, False);
BASS_ChannelSetAttribute(Channel1,Bass_ATTRIB_VOL,0);
BASS_ChannelSlideAttribute(Channel1,Bass_ATTRIB_VOL,  + 0.85,10000);  // нарастание)))
end;





end.
werrey вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка события Onkeypress в дополнительном модуле vedro-compota Общие вопросы Delphi 2 01.05.2010 15:29
bass.dll larry Общие вопросы C/C++ 1 09.11.2009 13:23
Ошибка при выхове функций Bass.dll из другой DLL SalasAndriy Общие вопросы Delphi 7 21.10.2009 23:36
BASS DLL ygy Мультимедиа в Delphi 4 29.09.2009 04:39
BASS.DLL VintProg Мультимедиа в Delphi 2 21.09.2009 16:36