folder Tahribat.com Forumları
linefolder C - C++
linefolder Wav Dosyalarını Bellekten Çalma



Wav Dosyalarını Bellekten Çalma

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    monoton
    monoton's avatar
    Kayıt Tarihi: 21/Haziran/2008
    Erkek

    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);
    }
    //--------------------------------------------------------------------------

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SyspioniC
    SyspioniC's avatar
    Kayıt Tarihi: 26/Eylül/2007
    Erkek
    ney ? :|

    "Derviş Yunus bu sözü eğri büğrü söyleme, Seni sorguya çeker bir Molla Kasım gelir."
Toplam Hit: 1863 Toplam Mesaj: 2