Bocsika, de ez ma mar nem olyan nagy szam. Tudja a DOS Navigator es a
4DOS is. (Rendszeresen ossze is szoktam keverni, hogy melyik tudja helyesen
konvertalni az ekezetes betuket. A DOS Navigator tudja, a 4DOS nem.)
Tenyleg: hogy lehet megcsinalni? En is orulnek a leirasnak, foleg ha
megszakitasok hivasaval megoldhato.
La'ng Attila D. > (latom az ekezeteket)
|
Hello Coderek!
Kis problemam van. Ha valaki ert a directsound-hoz az segitsen!!!
Feleadat:
Win95, Delphi 3 amibol meg kene szolaltatni hangokat memoriabol. Van hozza
SDK-m amibe szep kis mintaprogramok vann igaz C-ben de nem nagy ordongosseg
atirni Delphi-re de valamiert megsem jo. A helpet is bongesztem de ott is
csak azok vannak amit en is bekapcsoltam de valamit megse vagy nem jol mert
egy arvahang sem jon ki az egeszbol.
Szoval a program igy nez ki nagyjabol: /Igy nem fut csak osszevagtam/
Ja az eredmenyeket check-elem sehol semmi hiba csak itt kihagyom a levelbol
ne legyen olyan hosszu.
var
DSound1: IDirectSound = Nil;
SoundBuffer: IDirectSoundBuffer=Nil ;
{DirectSound objectum letrehozasa}
DirectSoundCreate(nil, DSound1, nil);
DSound1.SetCooperativeLevel(Application.Handle, DSSCL_NORMAL);
-------------
var
WaveFormat: TWaveFormatEx ;
BufferDesc: DSBUFFERDESC ;
{A SoundBuffer letrehozasa}
ZeroMemory ( @WaveFormat, sizeof ( WaveFormat ) ) ;
WaveFormat.wFormatTag := WAVE_FORMAT_PCM ;
WaveFormat.nChannels := 2 ;
WaveFormat.nSamplesPerSec := 22050 ;
WaveFormat.nAvgBytesPerSec := 22050 * 4 ;
WaveFormat.nBlockAlign := 4 ;
WaveFormat.wBitsPerSample := 16 ;
ZeroMemory ( @BufferDesc, sizeof ( BufferDesc ) ) ;
BufferDesc.dwSize := sizeof ( DSBUFFERDESC ) ;
BufferDesc.dwFlags := DSBCAPS_STATIC + DSBCAPS_CTRLDEFAULT ;
BufferDesc.dwBufferBytes := 44100 ;
BufferDesc.lpwfxFormat := @WaveFormat ;
DSound1.CreateSoundBuffer ( BufferDesc, SoundBuffer, nil );
-----------
var
BufSize1,BufSize2 : DWord;
Buffer1Ptr, Buffer2Ptr: ^Byte;
{Buffer feltoltese veletlen adatokkal}
SoundBuffer.Lock ( 0, 44100, Pointer(Buffer1Ptr), BufSize1,
Pointer(Buffer2Ptr), BufSize2, 0 ) ;
for t:=0 to 44100 do
begin
Buffer1Ptr^[t] := Random(256);
end;
SoundBuffer.Unlock ( Pointer(Buffer1Ptr), BufSize1, Pointer(Buffer2Ptr),
BufSize2 ) ;
------------
SoundBuffer.Play(0,0,0);
------------
SoundBuffer.Release;
DSound1.Release;
Ja a Delphi-hez kiadtak a DirectX- Header-eket tehat biztos hogy jo csak En
nem allitok be valamit.
Ha barki tud segitsen vagy mar van tapasztalata az ilyesmiben. Meg ha nem
is erti a fenti kodot de tudja elmeletben hogyan kell az is irjon. Koszonom!
Udv,
Moonlight.
|