![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли в DELPHI создать генератор звука [D5]
pupsik © (2003-11-25 15:39:00)Можно ли в DELPHI создать генератор звука с выводом его на колонки,через звуковую карту.
Просьба хотя бы ссылочку на образец кода!
Например частота-1000 гц, громкость (-10 дб) и т.п.
Спасибо.
Evgeny V (2003-11-26 05:48:00) [1]
#include
#pragma hdrstop
#include "Unit1.h"
#include
#include
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
HWAVEOUT sound_out_handle;
WAVEHDR hdr[3];
WAVEFORMATEX wfx;
short int buff[3][4000];
bool st,ends;
void CALLBACK modem_callback(DWORD hw, UINT uMsg, DWORD dwinstance, DWORD dwParam1, DWORD dwParam2);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
st=false;
ends=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i,j,l;
double k;
MMRESULT p;
wfx.wFormatTag = WAVE_FORMAT_PCM;
wfx.nChannels = 1;
wfx.nSamplesPerSec = 8000;
wfx.wBitsPerSample = 16;
wfx.nBlockAlign = 2;
wfx.nAvgBytesPerSec = 8000*2;
wfx.cbSize = 0;
p=waveOutOpen((LPHWAVEOUT)&sound_out_handle,WAVE_MAPPER,(LPWAVEFORMATEX)&wfx.wFormatTag,(DWORD)&modem_callback,0,CALLBAC K_FUNCTION);
// делаю три буфера по пол секунды, которые заполняю сигналом
for (i=0;iProcessMessages();
Sleep(1500);// разрешаю закончить проигрыш текущих
//буферов, делал по другому, но лень, точнее работы много,
//для примера пойдет и так, на самом деле для
//последнего буфера в dwUser можно положить признак того,
// что он последний, и по этому признаку в WOM_DONE
//делать Reset и закрывать устройство, или слать PostMessage
waveOutReset(sound_out_handle);
waveOutClose(sound_out_handle);
Button1->Enabled=true;
}
Crocodile (2003-11-25 17:09:00) [2]For me to, if you please
S@shka (2003-11-25 15:57:00) [3]Можно :)
ПО факту ссылки на мыло отправлю исходники