Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.11;
Скачать: CL | DM;

Вниз

Звук из ресурса   Найти похожие ветки 

 
!_SM_!   (2006-07-12 18:44) [16]

Вот код примера (ниже) как я делаю он рабочий, компилиться нормально.
В ресурсе есть два wav файла. Ресурсы с именами:
RCDT тип RT_RCDATA и
SND тип SOUND
они загружаються нормально - PlaySound их играет.
На форме 7 кнопок TButton; В папке с exe есть файл 3.wav;
Вот сам код:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, BASS, StdCtrls, MMSystem;

type
 TForm1 = class(TForm)
   ButtonPlayFile: TButton;
   ButtonPlayRes: TButton;
   ButtonPlayRes1: TButton;
   ButtonPlayResMM: TButton;
   ButtonPlaySound: TButton;
   Button1: TButton;
   Button2: TButton;
   procedure FormCreate(Sender: TObject);
   procedure ButtonPlayFileClick(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure ButtonPlayResClick(Sender: TObject);
   procedure ButtonPlayRes1Click(Sender: TObject);
   procedure ButtonPlayResMMClick(Sender: TObject);
   procedure ButtonPlaySoundClick(Sender: TObject);
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 ChF, ChR, ChR1, ChR2: HCHANNEL;
 SndF, SndR, SndR1, SndR2: HSAMPLE;
 ResS, ResRC: TResourceStream;
 ResMM: TmemoryStream;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 if not BASS_Init(-1, 44100, 0, Handle, nil) then Halt;
 SndF :=BASS_SampleLoad(FALSE, PChar("3.wav"), 0, 0, 3, BASS_SAMPLE_OVER_POS);
 ChF  :=BASS_SampleGetChannel(SndF, False);
 ResS :=TResourceStream.Create(hInstance, Pchar("SND"), Pchar("SOUND"));
 ResRC:=TResourceStream.Create(hInstance, Pchar("RCDT"), RT_RCDATA);
 ResMM:=TmemoryStream.Create;
 ResMM.CopyFrom(ResS, ResS.Size);
 if ResS<>nil then begin
  SndR:=BASS_StreamCreateFile(True, ResS, 0, 0, BASS_SAMPLE_OVER_POS);
  ChR:=BASS_SampleGetChannel(SndR, False);
 end else Exit;
 if ResRC<>nil then begin
  SndR1:=BASS_StreamCreateFile(True, ResRC, 0, 0, BASS_SAMPLE_OVER_POS);
  ChR1:=BASS_SampleGetChannel(SndR1, True);
 end else Exit;
 if ResMM<>nil then begin
  //SndR2:=BASS_SampleLoad(True {False}, ResMM, 0, 0, 0, BASS_SAMPLE_OVER_POS); //и так пробовал,

тишина
  //ChR2:=BASS_SampleGetChannel(SndR2, True);
  SndR2:=BASS_StreamCreateFile(True, ResMM, 0, 0, BASS_SAMPLE_OVER_POS);
  ChR2:=BASS_SampleGetChannel(SndR2, True);
 end else Exit;
 BASS_Start;  //Без этого файл играет всеравно
 ShowMessage("OK"); {TEST}  //Показывается, значит всё создается ..не суть
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 BASS_SampleFree(SndF);
 BASS_SampleFree(SndR);
 BASS_SampleFree(SndR1);
 BASS_SampleFree(SndR2);
 ResS.Free;
 ResRC.Free;
 ResMM.Free;
 BASS_Free;
end;

procedure TForm1.ButtonPlayFileClick(Sender: TObject);

begin
 BASS_ChannelPlay(chF, True);  //ПОЕТ
end;

procedure TForm1.ButtonPlayResClick(Sender: TObject);
begin
 BASS_ChannelPlay(chR, True);   //НЕ поет
end;

procedure TForm1.ButtonPlayRes1Click(Sender: TObject);
begin
 BASS_ChannelPlay(chR1, True);  //НЕ поет
end;

procedure TForm1.ButtonPlayResMMClick(Sender: TObject);
begin
 BASS_ChannelPlay(chR2, True);  //НЕ поет
end;

procedure TForm1.ButtonPlaySoundClick(Sender: TObject);
begin
 PlaySound(ResS.Memory, hInstance, SND_MEMORY or SND_ASYNC); //ПОЕТ
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 PlaySound(ResRC.Memory, hInstance, SND_MEMORY or SND_ASYNC); //ПОЕТ
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 PlaySound(ResMM.Memory, hInstance, SND_MEMORY or SND_ASYNC); //ПОЕТ
end;

end.


ПОМОГИТЕ ПОЖАЛУЙСТА, ЧТО НЕ ТАК У МЕНЯ?
или может BASS не умеет играть ресурсы?
для чего нужен тогда первый пораметр BASS_StreamCreateFile(mem: LongBool...
или BASS_SampleLoad(mem: LongBool...?

> antonn ©   (11.07.06 05:31) [11]
>antonn ©   (12.07.06 05:00) [15]
>!_SM_!   (12.07.06 0:47) [13]
>так и не будет петь...
>!_SM_!   (12.07.06 1:18) [14]
во первых, так тоже не будет. Потому что это не тот код, что я приводил...

????????????????????????????



Страницы: 1 вся ветка

Текущий архив: 2007.03.11;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.041 c
3-1166083953
cad2206
2006-12-14 11:12
2007.03.11
Помогите составить запрос


15-1171487412
ProgRAMmer Dimonych
2007-02-15 00:10
2007.03.11
Была в своё время передача "Красная стрела"...


15-1171519470
kolyann..
2007-02-15 09:04
2007.03.11
Есть ли жизнь после HDD low level format ????


3-1166200568
Vlad Oshin
2006-12-15 19:36
2007.03.11
подскажите объединение таблиц


15-1171315254
ProgRAMmer Dimonych
2007-02-13 00:20
2007.03.11
Помогите найти произведение в оригинале