Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int SoundPlayer_create(SoundPlayer *player,
- unsigned long int sample_rate, unsigned int sample_size, unsigned int channels)
- {
- player->format.nSamplesPerSec = sample_rate;
- player->format.wBitsPerSample = sample_size;
- player->format.nChannels = channels;
- player->format.nBlockAlign = channels * sample_size / 8;
- player->format.nAvgBytesPerSec = sample_rate * player->format.nBlockAlign;
- player->format.cbSize = 0;
- player->format.wFormatTag = WAVE_FORMAT_PCM;
- int err = waveOutOpen(&player->hndl,
- WAVE_MAPPER, &player->format,
- 0, 0, CALLBACK_NULL);
- switch(err)
- {
- case MMSYSERR_NOERROR: return 0;
- case MMSYSERR_ALLOCATED: return -1;
- case MMSYSERR_BADDEVICEID: return -2;
- case MMSYSERR_NODRIVER: return -3;
- case MMSYSERR_NOMEM: return -4;
- default: return -999;
- }
- }
- int SoundPlayer_playWave(SoundPlayer *player, void *wave_block, unsigned long wave_size)
- {
- int err;
- WAVEHDR header;
- {
- memset(&header, 0, sizeof(header));
- header.dwBufferLength = wave_size;
- header.lpData = wave_block;
- err = waveOutPrepareHeader(player->hndl, &header, sizeof(WAVEHDR));
- switch(err)
- {
- case MMSYSERR_NOERROR: break;
- case MMSYSERR_INVALHANDLE: return -1;
- case MMSYSERR_NODRIVER: return -2;
- case MMSYSERR_NOMEM: return -3;
- default: return -999;
- }
- }
- err = waveOutWrite(player->hndl, &header, sizeof(WAVEHDR));
- switch(err)
- {
- case MMSYSERR_NOERROR: return 0;
- case MMSYSERR_INVALHANDLE: return -1;
- case MMSYSERR_NODRIVER: return -2;
- case MMSYSERR_NOMEM: return -3;
- default: return -999;
- }
- }
- static SoundPlayer main_sound_player;
- SoundPlayer_create(&main_sound_player, 44100, 16, 2);
- {
- test_sound.data_size);
- unsigned char *test_wave = malloc(4096);
- memset(test_wave, 127, 4096);
- SoundPlayer_playWave(&main_sound_player, test_wave, 4096);
- }
Add Comment
Please, Sign In to add comment