Форум: "Media";
Текущий архив: 2007.03.11;
Скачать: [xml.tar.bz2];
ВнизЗвук из ресурса Найти похожие ветки
← →
!_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 вся ветка
Форум: "Media";
Текущий архив: 2007.03.11;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.073 c