예제 #1
0
UINT soundmng_create(UINT rate, UINT ms) {

	UINT	samples;

	QSound_Playing = FALSE;

	if (rate < 11025) {
		rate = 11025;
	}
	else if (rate > 44100) {
		rate = 44100;
	}

	if (SoundChannel_Init()) {
		goto qsinit_err;
	}
#if !defined(SOUND_CRITICAL)
	samples = rate * ms / (SOUNDBUFFERS * 1000);
	samples = (samples + 3) & (~3);
#else
	samples = rate * ms / 1000;
	samples = (samples + 255) & (~255);
#endif
	if (SoundBuffer_Init(rate, samples)) {
		goto qsinit_err;
	}
#if defined(VERMOUTH_LIB)
	cmvermouth_load(rate);
#endif
	return(samples);

qsinit_err:
	soundmng_destroy();
	return(0);
}
예제 #2
0
void soundmng_deinitialize(void) {

#if defined(MT32SOUND_DLL)
	mt32sound_deinitialize();
#endif
	pcmdestroy();
	soundmng_destroy();
	RELEASE(pDSound);
}
예제 #3
0
BRESULT soundmng_initialize(void) {

	if (dsoundcreate(g_hWndMain) != SUCCESS) {
		goto smcre_err;
	}
	pcmcreate();
#if defined(MT32SOUND_DLL)
	mt32sound_initialize();
#endif
	return(SUCCESS);

smcre_err:
	soundmng_destroy();
	return(FAILURE);
}