// Initialize SEAL library ---------------------------------------------------- int Sound_Init_SEAL (void) { if (AInitialize() != AUDIO_ERROR_NONE) { Quit_Msg (Msg_Get (MSG_Sound_Init_Error_SEAL)); return (MEKA_ERR_FAIL); } return (MEKA_ERR_OK); }
int main(void) { AUDIOINFO info; AUDIOCAPS caps; UINT rc, nDevId; /* initialize audio library */ AInitialize(); /* show registered device drivers */ printf("List of registered devices:\n"); for (nDevId = 0; nDevId < AGetAudioNumDevs(); nDevId++) { AGetAudioDevCaps(nDevId, &caps); printf(" %2d. %s\n", nDevId, caps.szProductName); } printf("\n"); /* * NOTE: Here we can use any of the above devices, or we can * use the virtual device AUDIO_DEVICE_MAPPER for detection. */ /* open audio device */ info.nDeviceId = AUDIO_DEVICE_MAPPER; info.wFormat = AUDIO_FORMAT_16BITS | AUDIO_FORMAT_STEREO; info.nSampleRate = 44100; if ((rc = AOpenAudio(&info)) != AUDIO_ERROR_NONE) { CHAR szText[80]; AGetErrorText(rc, szText, sizeof(szText) - 1); printf("ERROR: %s\n", szText); exit(1); } /* * NOTE: Since the audio device may not support the playback * format and sampling frequency, the audio system uses the * closest configuration which is then returned to the user * in the AUDIOINFO structure. * */ /* print information */ AGetAudioDevCaps(info.nDeviceId, &caps); printf("%s at %d-bit %s %u Hz detected\n", caps.szProductName, info.wFormat & AUDIO_FORMAT_16BITS ? 16 : 8, info.wFormat & AUDIO_FORMAT_STEREO ? "stereo" : "mono", info.nSampleRate); /* close audio device */ ACloseAudio(); return 0; }
int msdos_init_seal (void) { #ifdef USE_SEAL if (AInitialize() == AUDIO_ERROR_NONE) return 0; else return 1; #else return 0; #endif }
int main(void) { AUDIOINFO info; LPAUDIOMODULE lpModule; LPAUDIOWAVE lpWave; HAC hVoice; BOOL stopped; /* initialize audio library */ AInitialize(); /* open audio device */ info.nDeviceId = AUDIO_DEVICE_MAPPER; info.wFormat = AUDIO_FORMAT_16BITS | AUDIO_FORMAT_STEREO; info.nSampleRate = 44100; AOpenAudio(&info); /* load module and waveform file */ ALoadModuleFile("test.s3m", &lpModule, 0); ALoadWaveFile("test.wav", &lpWave, 0); /* open voices for module and waveform */ AOpenVoices(lpModule->nTracks + 1); /* play the module file */ APlayModule(lpModule); ASetModuleVolume(64); /* play the waveform through a voice */ ACreateAudioVoice(&hVoice); APlayVoice(hVoice, lpWave); ASetVoiceVolume(hVoice, 48); ASetVoicePanning(hVoice, 128); /* program main execution loop */ printf("Playing module and waveform, press any key to stop.\n"); while (!kbhit()) { /* update audio system */ AUpdateAudio(); /* restart waveform if stopped */ AGetVoiceStatus(hVoice, &stopped); if (stopped) APlayVoice(hVoice, lpWave); /* check if the module is stopped */ AGetModuleStatus(&stopped); if (stopped) break; } /* stop playing the waveform */ AStopVoice(hVoice); ADestroyAudioVoice(hVoice); /* stop playing the module */ AStopModule(); ACloseVoices(); /* release the waveform & module */ AFreeWaveFile(lpWave); AFreeModuleFile(lpModule); /* close audio device */ ACloseAudio(); return 0; }
int msdos_init_sound(int *rate, int card) { int i; seal_sample_rate = *rate; seal_sound_card = card; if (AInitialize() != AUDIO_ERROR_NONE) return 1; /* Ask the user if no sound card was chosen */ if (seal_sound_card == -1) { unsigned int k; printf("\n SELECT YOUR AUDIO DEVICE :\n\n" " AWE32/64 playback requires onboard DRAM,\n" " Sound Blaster playback is the most compatible & better for emulation\n\n"); for (k = 0;k < AGetAudioNumDevs();k++) { if (AGetAudioDevCaps(k,&caps) == AUDIO_ERROR_NONE) printf(" %2d. %s\n",k,caps.szProductName); } printf("\n"); if (k < 10) { i = getch(); seal_sound_card = i - '0'; } else scanf("%d",&seal_sound_card); } /* initialize SEAL audio library */ if (seal_sound_card == 0) /* silence */ { /* update the Machine structure to show that sound is disabled */ seal_sample_rate = 0; exit(0); return 0; } /* open audio device */ /* info.nDeviceId = AUDIO_DEVICE_MAPPER;*/ info.nDeviceId = seal_sound_card; /* always use 16 bit mixing if possible - better quality and same speed of 8 bit */ info.wFormat = AUDIO_FORMAT_16BITS | AUDIO_FORMAT_STEREO | AUDIO_FORMAT_RAW_SAMPLE; info.nSampleRate = seal_sample_rate; if (AOpenAudio(&info) != AUDIO_ERROR_NONE) { return (1); } AGetAudioDevCaps(info.nDeviceId,&caps); printf("Using `%s' at %d-bit %s %u Hz\n", caps.szProductName, info.wFormat & AUDIO_FORMAT_16BITS ? 16 : 8, info.wFormat & AUDIO_FORMAT_STEREO ? "stereo" : "mono", info.nSampleRate); /* open and allocate voices, allocate waveforms */ if (AOpenVoices(NUMVOICES) != AUDIO_ERROR_NONE) { printf("voices initialization failed\n"); return 1; } for (i = 0; i < NUMVOICES; i++) { if (ACreateAudioVoice(&hVoice[i]) != AUDIO_ERROR_NONE) { printf("voice #%d creation failed\n",i); return 1; } ASetVoicePanning(hVoice[i],128); lpWave[i] = 0; } /* update the Machine structure to reflect the actual sample rate */ *rate = seal_sample_rate = info.nSampleRate; { uclock_t a,b; LONG start,end; if ((lpWave[0] = (LPAUDIOWAVE)malloc(sizeof(AUDIOWAVE))) == 0) return 1; lpWave[0]->wFormat = AUDIO_FORMAT_8BITS | AUDIO_FORMAT_MONO; lpWave[0]->nSampleRate = seal_sample_rate; lpWave[0]->dwLength = 3*seal_sample_rate; lpWave[0]->dwLoopStart = 0; lpWave[0]->dwLoopEnd = 3*seal_sample_rate; if (ACreateAudioData(lpWave[0]) != AUDIO_ERROR_NONE) { free(lpWave[0]); lpWave[0] = 0; return 1; } memset(lpWave[0]->lpData,0,3*seal_sample_rate); /* upload the data to the audio DRAM local memory */ AWriteAudioData(lpWave[0],0,3*seal_sample_rate); APrimeVoice(hVoice[0],lpWave[0]); ASetVoiceFrequency(hVoice[0],seal_sample_rate); ASetVoiceVolume(hVoice[0],0); AStartVoice(hVoice[0]); a = uclock(); /* wait some time to let everything stabilize */ do { osd_update_audio(); b = uclock(); } while (b-a < UCLOCKS_PER_SEC/10); a = uclock(); AGetVoicePosition(hVoice[0],&start); do { osd_update_audio(); b = uclock(); } while (b-a < UCLOCKS_PER_SEC); AGetVoicePosition(hVoice[0],&end); nominal_sample_rate = seal_sample_rate; seal_sample_rate = end - start; AStopVoice(hVoice[0]); ADestroyAudioData(lpWave[0]); free(lpWave[0]); lpWave[0] = 0; } osd_set_mastervolume(0); /* start at maximum volume */ return 0; }
int main(void) { AUDIOINFO info; LPAUDIOWAVE lpWave; HAC hVoice[NUMVOICES]; BOOL stopped; UINT n, m; /* initialize audio library */ AInitialize(); /* open audio device */ info.nDeviceId = AUDIO_DEVICE_MAPPER; info.wFormat = AUDIO_FORMAT_16BITS | AUDIO_FORMAT_STEREO; info.nSampleRate = 44100; AOpenAudio(&info); /* load waveform file */ ALoadWaveFile("test.wav", &lpWave, 0); /* open and allocate voices */ AOpenVoices(NUMVOICES); for (n = 0; n < NUMVOICES; n++) { ACreateAudioVoice(&hVoice[n]); ASetVoiceVolume(hVoice[n], 64); ASetVoicePanning(hVoice[n], n & 1 ? 0 : 255); } /* program main execution loop */ printf("Playing waveform, press any key to stop.\n"); for (n = m = 0; !kbhit() && n < 48 - 7; n++) { /* play chord C-E-G */ APlayVoice(hVoice[m+0], lpWave); APlayVoice(hVoice[m+1], lpWave); APlayVoice(hVoice[m+2], lpWave); ASetVoiceFrequency(hVoice[m+0], FREQ(aPeriodTable[n+0])); ASetVoiceFrequency(hVoice[m+1], FREQ(aPeriodTable[n+4])); ASetVoiceFrequency(hVoice[m+2], FREQ(aPeriodTable[n+7])); m = (m + 3) % NUMVOICES; /* wait until note finishes */ do { /* update audio system */ AUpdateAudio(); AGetVoiceStatus(hVoice[0], &stopped); } while (!stopped); } /* stop and release voices */ for (n = 0; n < NUMVOICES; n++) { AStopVoice(hVoice[n]); ADestroyAudioVoice(hVoice[n]); } ACloseVoices(); /* release the waveform file */ AFreeWaveFile(lpWave); /* close audio device */ ACloseAudio(); return 0; }