powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / Problema c waveOutOpen
3 сообщений из 3, страница 1 из 1
Problema c waveOutOpen
    #32141935
SergeyV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Privet vsem

Napisal (ili daje sodral s helpa) programmku vivoda buffera na sound cartu. Inizializiruyu cartu sleduyuschim obrazom:



bool waveStartPlay(memBlock (*ProcessPlay)(void), AnsiString& errMes)
{
DWORD err;
MIXERLINE mixerLine;
unsigned long n, numSrc;
int i=0;


//
ProcessPlaySound = NULL; // Clear processing
if(InPlay == TRUE) // Go away if already playing
{
errMes="Already record. Press stop before!";
return false;
}

if(ProcessPlay == NULL)
{
errMes="No process function defined (pointer==0)";
return false;
}
ProcessPlaySound = ProcessPlay;
InRecord = FALSE;

WaveFormat.wFormatTag = WAVE_FORMAT_PCM;
WaveFormat.nChannels = 1;
WaveFormat.nSamplesPerSec = 8000;
WaveFormat.wBitsPerSample = 2;
WaveFormat.nBlockAlign = waveFormat.nChannels * (waveFormat.wBitsPerSample/8);
WaveFormat.nAvgBytesPerSec = waveFormat.nSamplesPerSec * waveFormat.nBlockAlign;
WaveFormat.cbSize = 0;




/* Open the default WAVE Out Device, specifying my callback */
err = waveOutOpen(&HWaveOut, WAVE_MAPPER, &WaveFormat, (DWORD_PTR)WaveOutProc, 0, CALLBACK_FUNCTION);
switch(err)
{
case MMSYSERR_INVALHANDLE: errMes = "Error open. "+IntToStr(err) + " MMSYSERR_INVALHANDLE"; return false;
case MMSYSERR_BADDEVICEID: errMes = "Error open. "+IntToStr(err) + " MMSYSERR_BADDEVICEID"; return false;
case MMSYSERR_NODRIVER: errMes = "Error open. "+IntToStr(err) + " MMSYSERR_NODRIVER"; return false;
case MMSYSERR_NOMEM: errMes = "Error open. "+IntToStr(err) + " MMSYSERR_NOMEM"; return false;
case WAVERR_BADFORMAT: errMes = "Error open. "+IntToStr(err) + " WAVERR_BADFORMAT"; return false;
}


Vsegda poluchayu oshibku WAVERR_BADFORMAT. Pochemu? Vse vrode OK.
Napisal esche programulinu dlya zapisi zvuka ispol'zuya waveInOpen...
Esli zapuskayu snachala zapis' zvuka, a potom proigrivanie, to vse OK. Podskajite, gde mojet bit' problema, a to ya uje ustal hodit' po krugu.

I esche, kto-nit' nahodil rabochie primeri s ispol'zovaniem waveOutOpen. Esli da, kin'te link pls

S uvajeniem.
Sergey.
...
Рейтинг: 0 / 0
Problema c waveOutOpen
    #32145276
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
помойму через MCI все это проще сделать
так что прочитай на эту тему инфу
...
Рейтинг: 0 / 0
Problema c waveOutOpen
    #32146269
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что за формат такой 2 бита на сэмрл и 8000 сэмплов в секунду, моно?
Это вроде получается 4000 байт в секунду звучек, довольно говнистый вопервых, во вторых ну что это такое
waveFormat.nChannels * (waveFormat.wBitsPerSample/8); у тебя сначало 2 на 8 делится(а это нолик целочисленный) а потом этот нолик полученный умножаеш на 8000 и опять нолик получаеш. н и в третьи а сделай ка ты нормальный форматик 8 бит на сэмрл 22050 (ну или 11025 на худой конец) сэмплов в секунду, вот тогда и посмотри что у тебя выходить будет.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Problema c waveOutOpen
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]