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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2011, 20:09   #1
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию Воспроизведение MIDI файлов в Bass.dll

Здравствуйте.Подскажите пожалуйста, как воспроизвести MIDI (.mid) файл в библиотеке Bass.dll?
werrey вне форума Ответить с цитированием
Старый 08.07.2011, 20:22   #2
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

загрузи bass_midi.dll и используй sound fonts
все подробности есть на un4seen.com
ZuBy вне форума Ответить с цитированием
Старый 08.07.2011, 20:47   #3
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию

Цитата:
Сообщение от ZuBy Посмотреть сообщение
загрузи bass_midi.dll и используй sound fonts
все подробности есть на un4seen.com
Приведите пример если можете, библиотеку bassmidi.dll и файл bassmidi.pas
в проект добавил, в uses BASSmidi прописал.

А как воспроизвести?

Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, StdCtrls, BASS, mmsystem, BASSmidi;
type
  TChannelType = (ctUnknown, ctStream, ctMusic);//звук Bass.Dll

type
  TForm2 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
   Channel: DWORD;
    ChannelType: TChannelType;
   function BASS_PlaySoundFile(const FileName: string): Boolean;
    { Private declarations }
  public
   procedure WMMove(var Msg: TWMMove); message WM_MOVE;
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

uses Unit3, Unit4, Unit1;

{$R *.dfm}
function TForm2.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 TForm2.WMMove(var Msg: TWMMove);
 begin
 inherited;
if (Visible) then
 FormResize(Self);
 end;

procedure TForm2.Button1Click(Sender: TObject);
begin
Form3.Show;
Form4.Close;
//Form2.SendToBack;
//Form2.BringToFront;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
Form4.Show;
Form3.Close;
//Form2.SendToBack;
//Form2.BringToFront;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
BASS_ChannelSlideAttribute(Channel,Bass_ATTRIB_VOL, 0 / 100,3000); //затихание звука
end;

procedure TForm2.FormCreate(Sender: TObject);
var
  BassInfo: BASS_INFO;
begin
  BASS_Init(1, 44100, BASS_DEVICE_3D, Handle, nil);
  BASS_Start;
  BASS_GetInfo(BassInfo);
end;
procedure TForm2.FormResize(Sender: TObject);
begin
with Form3 do
 begin
 Form3.Top := Form2.Top+240 ;
 Form3.Left :=Form2.Left+360;
 end;
with Form3 do
 begin
 Form4.Top := Form2.Top+240 ;
 Form4.Left :=Form2.Left+310;
 end;


 end;

procedure TForm2.FormShow(Sender: TObject);
begin
 BASS_streamfree(channel); // все 5 строк для одного файла (Channel)
 Channel:=Bass_StreamCreateFile(false,Pchar(ExtractFilePath(ParamStr(0))+'Sound/drn.mid'), 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;

end.
werrey вне форума Ответить с цитированием
Старый 08.07.2011, 21:23   #4
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

а где загрузка bassmidi плагина?
та и вообще в архиве bassmidi есть демо miditest
ZuBy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структура midi файлов lacost Мультимедиа в Delphi 6 21.08.2011 21:49
Bass.dll -непрерывное воспроизведение звука werrey Мультимедиа в Delphi 9 13.06.2011 15:23
Ошибка при выхове функций Bass.dll из другой DLL SalasAndriy Общие вопросы Delphi 7 21.10.2009 23:36
Воспроизведение всех треков в директории, bass.dll Volkogriz Мультимедиа в Delphi 4 15.07.2009 13:16
Воспроизведение Midi-нот desperado Общие вопросы Delphi 2 26.06.2007 13:22