Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-1168930240
_alex_niv_
2007-01-16 09:50
2007.03.11
Перемещение курсора в TstringGrid


15-1171485372
Rouse_
2007-02-14 23:36
2007.03.11
Скайп реагирует на SoftIce


15-1170401592
boriskb
2007-02-02 10:33
2007.03.11
Пусть всегда будет солнце :)


15-1171349221
chvank
2007-02-13 09:47
2007.03.11
Photoshop


15-1171313306
DemonP
2007-02-12 23:48
2007.03.11
карта памяти ПЭВМ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский