Wav Dosyalarını Bellekten Çalma
-
bi zamanlar baya bi ugrasip yapmistim merak eden arkadaslar olabilir derleyici C++ builder
#include <vcl\vcl.h>
#pragma hdrstop
#include "Unit1.h"
#define SM 1 //stero mono
#define HZ 11025 //herz
#define BIT 8 //bit per sample
#pragma resource "*.dfm"
#include <mmsystem.h>
//---------------------------------------------------------------------------
TForm1 *Form1;
WAVEFORMATEX WaveFmt;
HWAVEOUT WaveHandle;
WAVEHDR WaveHeader;
int hata,i,k;//herangi bi wave dosyasinin ses verisi burdaki veri telefon sesi
unsigned char veri[278*17]={131,131,131,131,131,131,131,131,
131,130,130,130,129,129,128,127,127,127,126,125,122,122,121,
120,120,120,121,122,126,127,130,134,138,141,143,144,144,144,
143,140,136,130,128,122,118,113,110,107,103,106,107,112,115,
121,127,135,141,148,154,156,160,159,156,153,146,140,129,122,
113,106,100,95 ,91 ,91 ,95 ,100,106,115,125,131,144,150,160,
166,171,173,171,165,156,146,135,126,113,103,91 ,85 ,81 ,81 ,
83 ,90 ,96 ,107,118,127,141,155,166,173,175,179,179,178,165,
153,140,128,116,103,88 ,81 ,78 ,78 ,78 ,83 ,90 ,102,115,127,
141,154,166,174,179,181,184,180,171,159,146,130,116,103,91 ,
81 ,78 ,78 ,78 ,78 ,87 ,100,112,126,138,150,163,173,180,184,
184,180,174,165,153,134,120,103,93 ,82 ,78 ,78 ,78 ,81 ,87 ,
96 ,108,121,135,148,156,166,174,179,179,178,171,161,153,136,
128,110,97 ,91 ,83 ,78 ,78 ,83 ,90 ,100,108,121,127,141,150,
160,166,171,173,171,166,160,153,140,128,118,107,100,93 ,88 ,
87 ,90 ,96 ,102,108,118,127,135,144,150,156,160,161,161,159,
153,146,140,130,125,116,110,103,103,101,102,103,108,115,121,
127,130,135,141,144,146,148,146,146,144,140,136,131,128,126,
121,118,116,116,116,116,116,118,121,122,126,127,128,130,131};
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
for(i=1;i<17;++i)
for(k=278*i;k<278*i+278;++k)
veri[k]=veri[k-278];
memset(&WaveFmt, 0, sizeof(WAVEFORMATEX));
WaveFmt.nChannels =SM; //stero mono
WaveFmt.nSamplesPerSec =HZ;
WaveFmt.wBitsPerSample =BIT;
WaveFmt.wFormatTag =WAVE_FORMAT_PCM;
WaveFmt.nBlockAlign =SM*BIT/8;
WaveFmt.nAvgBytesPerSec =HZ*WaveFmt.nBlockAlign;
WaveFmt.cbSize =0;
memset(&WaveHeader, 0, sizeof(WaveHeader));
WaveHeader.lpData=veri;
WaveHeader.dwBufferLength =sizeof(veri)*SM*BIT/8;
Form1->WindowState=wsMaximized;
Form1->Color=clBlack;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Canvas->Pen->Color=clRed;
for(k=0;k<sizeof(veri);++k){
Canvas->MoveTo(k,255-veri[k]);
Canvas->LineTo(k+1,255-veri[k+1]);
}
hata = waveOutOpen(&WaveHandle, WAVE_MAPPER, &WaveFmt,MAKELONG(Handle, 0), 0, CALLBACK_WINDOW);
wavhatasi(hata);
// hazır duruma getirme.
hata = waveOutPrepareHeader(WaveHandle, &WaveHeader, sizeof(WaveHeader));
wavhatasi(hata);
//play
hata = waveOutWrite(WaveHandle, &WaveHeader, sizeof(WaveHeader));
wavhatasi(hata);
Caption="Play";
}
//---------------------------------------------------------------------------
void TForm1::wavdone (TMessage& msg)
{
if (msg.Msg == WOM_DONE) {
hata = waveOutUnprepareHeader(WaveHandle, &WaveHeader, sizeof(WAVEHDR));
wavhatasi(hata);
hata = waveOutClose(WaveHandle);
wavhatasi(hata);
Caption="Stop";
}
}
//---------------------------------------------------------------------------
void TForm1::wavhatasi (DWORD kod)
{
char buff[256];
if (kod == 0) return;
waveOutGetErrorText(kod, buff, sizeof(buff));
MessageBox(0, buff, "wav hatasi", MB_OK);
}
//-------------------------------------------------------------------------- -
ney ? :|
