VOID GameInit() { readBeats((global.currSong().name + _T("/") + global.currSong().osuFile).data()); global.accummulatedTime = 0; global.isGamePaused = false; QueryPerformanceCounter(&global.beginTime); if (global.currSong().audioLeadIn > 0) { global.accummulatedTime = -global.currSong().audioLeadIn; WCHAR firstMp3File[200]; wsprintf(firstMp3File, TEXT("%s/%s"), global.currSong().name.data(), global.currSong().audioFilename.data()); AudioOpen(firstMp3File); AudioPlayOnce(); AudioPause(); } else SwitchSong(); killAnimator(&global.blood); global.blood = 100.; global.accuracyIndicator = 0.; for (int i = 0; i < 4; i++) { global.heroes[i].height = 0.; global.heroes[i].startHeight = 0.; global.heroes[i].jpCount = 0; global.heroes[i].jpStartTime = INT_MIN; global.fHeight[i] = 0.; global.keySequence[i].clear(); } global.status = global.GS_PLAYING; }
void S9xMSU1PostLoadState(void) { if (DataOpen()) { REVERT_STREAM(dataStream, MSU1.MSU1_DATA_POS, 0); } if (MSU1.MSU1_STATUS & AudioPlaying) { if (AudioOpen()) { REVERT_STREAM(audioStream, 4, 0); READ_STREAM((char *)&audioLoopPos, 4, audioStream); audioLoopPos = GET_LE32(&audioLoopPos); audioLoopPos <<= 2; audioLoopPos += 8; REVERT_STREAM(audioStream, MSU1.MSU1_AUDIO_POS, 0); } else { MSU1.MSU1_STATUS &= ~(AudioPlaying | AudioRepeating); MSU1.MSU1_STATUS |= AudioError; } } bufPos = 0; bufBegin = 0; bufEnd = 0; partial_frames = 0; }
void S9xMSU1PostLoadState(void) { if (DataOpen()) { REVERT_STREAM(dataStream, MSU1.MSU1_DATA_POS, 0); } if (MSU1.MSU1_STATUS & AudioPlaying) { uint32 savedPosition = MSU1.MSU1_AUDIO_POS; if (AudioOpen()) { REVERT_STREAM(audioStream, 4, 0); READ_STREAM((char *)&audioLoopPos, 4, audioStream); audioLoopPos = GET_LE32(&audioLoopPos); audioLoopPos <<= 2; audioLoopPos += 8; MSU1.MSU1_AUDIO_POS = savedPosition; REVERT_STREAM(audioStream, MSU1.MSU1_AUDIO_POS, 0); } else { MSU1.MSU1_STATUS &= ~(AudioPlaying | AudioRepeating); MSU1.MSU1_STATUS |= AudioError; } } if (msu_resampler) msu_resampler->clear(); partial_frames = 0; }
int main(int argc, char* argv[]) { int rc; unsigned int i; memset(recordedSamples, 0, N_SAMPLES_TO_RECORD * sizeof(typeSample)); rc = AudioSetInputFormat(SAMPLING_RATE, N_CHANNELS_PER_TUPLE); if (rc != 0) { printf("ERROR: AudioSetInputFormat() returns %d\n", rc); exit(1); } rc = AudioOpen(); if (rc < 0) { printf("ERROR: AudioOpen() returns %d (device handle/ID)\n", rc); exit(1); } i = 0; while (i <= N_SAMPLES_TO_RECORD - N_SAMPLES_PER_BUFFER) { rc = AudioRead(&(recordedSamples[i]), N_FRAMES_PER_BUFFER); if (rc > 0) i += (rc * N_TUPLES_PER_FRAME * N_CHANNELS_PER_TUPLE); else printf("ERROR: AudioRead() returns %d\n", rc); } rc = AudioClose(); if (rc != 0) { printf("ERROR: AudioClose() returns %d\n", rc); exit(1); } /* write to file */ { FILE *fpOutput; char *szFilename = "output_AudioHardwareRecord.pcm"; fpOutput = fopen(szFilename, "wb"); if (fpOutput == NULL) { printf("ERROR: cannot create '%s'\n", szFilename); exit(1); } fwrite(recordedSamples, sizeof(typeSample), i, fpOutput); fclose(fpOutput); } return 0; }
void S9xMSU1WritePort(uint8 port, uint8 byte) { switch (port) { case 0: MSU1.MSU1_DATA_SEEK &= 0xFFFFFF00; MSU1.MSU1_DATA_SEEK |= byte << 0; break; case 1: MSU1.MSU1_DATA_SEEK &= 0xFFFF00FF; MSU1.MSU1_DATA_SEEK |= byte << 8; break; case 2: MSU1.MSU1_DATA_SEEK &= 0xFF00FFFF; MSU1.MSU1_DATA_SEEK |= byte << 16; break; case 3: MSU1.MSU1_DATA_SEEK &= 0x00FFFFFF; MSU1.MSU1_DATA_SEEK |= byte << 24; MSU1.MSU1_DATA_POS = MSU1.MSU1_DATA_SEEK; if (dataStream) { REVERT_STREAM(dataStream, MSU1.MSU1_DATA_POS, 0); } break; case 4: MSU1.MSU1_TRACK_SEEK &= 0xFF00; MSU1.MSU1_TRACK_SEEK |= byte; break; case 5: MSU1.MSU1_TRACK_SEEK &= 0x00FF; MSU1.MSU1_TRACK_SEEK |= (byte << 8); MSU1.MSU1_CURRENT_TRACK = MSU1.MSU1_TRACK_SEEK; MSU1.MSU1_STATUS &= ~AudioPlaying; MSU1.MSU1_STATUS &= ~AudioRepeating; if (AudioOpen()) { if (MSU1.MSU1_CURRENT_TRACK == MSU1.MSU1_RESUME_TRACK) { MSU1.MSU1_AUDIO_POS = MSU1.MSU1_RESUME_POS; MSU1.MSU1_RESUME_POS = 0; MSU1.MSU1_RESUME_TRACK = ~0; } else { MSU1.MSU1_AUDIO_POS = 8; } REVERT_STREAM(audioStream, MSU1.MSU1_AUDIO_POS, 0); } break; case 6: MSU1.MSU1_VOLUME = byte; break; case 7: if (MSU1.MSU1_STATUS & (AudioBusy | AudioError)) break; MSU1.MSU1_STATUS = (MSU1.MSU1_STATUS & ~0x30) | ((byte & 0x03) << 4); if ((byte & (Play | Resume)) == Resume) { MSU1.MSU1_RESUME_TRACK = MSU1.MSU1_CURRENT_TRACK; MSU1.MSU1_RESUME_POS = MSU1.MSU1_AUDIO_POS; } break; } }
static int OpenAndPrepareSound(unsigned long ulFrequency) { #if defined(ANDROID) /* Only support certain frequencies. Modify this to check frequency against a structure of valid frequencies */ #ifdef FILTER_ON if ( ulFrequency == 11025 ) { if ( AudioSetInputFormat ( 44100, NR_OF_CHANNELS ) != 0 ) /* sample at 44100 then downsample */ { PLogError ( "Audio In Error OpenAndPrepareSound - AudioSetInputFormat failed!\n"); return LHS_E_AUDIOIN_COULDNOTOPENDEVICE; } } else { PLogError ( "Audio In Error OpenAndPrepareSound - invalid frequency!"); return LHS_E_AUDIOIN_COULDNOTOPENDEVICE; } #else if ( ( ulFrequency == 11025 ) || ( ulFrequency == 8000 ) ) { if ( AudioSetInputFormat ( ulFrequency, NR_OF_CHANNELS ) != 0 ) { PLogError ( "Audio In Error OpenAndPrepareSound - AudioSetInputFormat failed!"); return LHS_E_AUDIOIN_COULDNOTOPENDEVICE; } } else { PLogError ( "Audio In Error OpenAndPrepareSound - invalid frequency!"); return LHS_E_AUDIOIN_COULDNOTOPENDEVICE; } #endif /* set some variables */ gAudioInInfo.u32SamplesAvailable = 0; /* Open Audio driver */ if (AudioOpen() < 0) { PLogError ( "Audio In Error OpenAndPrepareSound - AudioOpen failed!"); return ~LHS_AUDIOIN_OK; } #else snd_pcm_hw_params_t *hwparams; unsigned int exact_rate; int dir; int rc; /* step 1 : open the sound device */ /* ------------------------------ */ if ((rc = snd_pcm_open(&ghPCM, "default", SND_PCM_STREAM_CAPTURE, 0)) < 0) { PLogError ( "Audio In Error snd_pcm_open() (rc = %d: %s)\n", rc, snd_strerror(rc)); return LHS_E_AUDIOIN_COULDNOTOPENDEVICE; } if ((rc = snd_pcm_hw_params_malloc(&hwparams)) < 0) { PLogError ( "Audio In Error snd_pcm_hw_params_malloc() (rc = %d: %s)\n", rc, snd_strerror(rc)); return LHS_E_AUDIOIN_COULDNOTOPENDEVICE; } /* step 2 : configuring the audio channel */ /* -------------------------------------- */ if ((rc = snd_pcm_hw_params_any(ghPCM, hwparams)) < 0) { PLogError ( "Audio In Error snd_pcm_hw_params_any() (rc = %d: %s)\n", rc, snd_strerror(rc)); return LHS_E_AUDIOIN_COULDNOTOPENDEVICE; } if ((rc = snd_pcm_hw_params_set_access(ghPCM, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) { PLogError ( "Audio In Error snd_pcm_hw_params_set_access() (rc = %d: %s)\n", rc, snd_strerror(rc)); return LHS_E_AUDIOIN_COULDNOTOPENDEVICE; } if ((rc = snd_pcm_hw_params_set_format(ghPCM, hwparams, SND_PCM_FORMAT_S16_LE)) < 0) { PLogError ( "Audio In Error snd_pcm_hw_params_set_format() (rc = %d: %s)\n", rc, snd_strerror(rc)); return LHS_E_AUDIOIN_COULDNOTOPENDEVICE; } #ifdef FILTER_ON if (ulFrequency == 11025) { exact_rate = 44100; } else return LHS_E_AUDIOIN_COULDNOTOPENDEVICE; #else exact_rate = ulFrequency; #endif dir = 0; #if 0 /* This version seems to have problems when the code is compiled into a shared library. The subsequent call to snd_pcm_hw_params() fails. */ if ((rc = snd_pcm_hw_params_set_rate_near(ghPCM, hwparams, &exact_rate, &dir)) < 0) { PLogError ( "Audio In Error snd_pcm_hw_params_set_rate_near() (rc = %d: %s)\n", rc, snd_strerror(rc)); return LHS_E_AUDIOIN_COULDNOTOPENDEVICE; } #else /* This version works better and in fact makes more sense. */ if ((rc = snd_pcm_hw_params_set_rate(ghPCM, hwparams, exact_rate, dir)) < 0) { PLogError ( "Audio In Error snd_pcm_hw_params_set_rate() (rc = %d: %s)\n", rc, snd_strerror(rc)); return LHS_E_AUDIOIN_COULDNOTOPENDEVICE; } #endif if ((rc = snd_pcm_hw_params_set_channels(ghPCM, hwparams, NR_OF_CHANNELS)) < 0) { PLogError ( "Audio In Error snd_pcm_hw_params_set_channels() (rc = %d: %s)\n", rc, snd_strerror(rc)); return LHS_E_AUDIOIN_COULDNOTOPENDEVICE; } if ((rc = snd_pcm_hw_params(ghPCM, hwparams)) < 0) { PLogError ( "Audio In Error snd_pcm_hw_params() (rc = %d: %s)\n", rc, snd_strerror(rc)); return LHS_E_AUDIOIN_COULDNOTOPENDEVICE; } /* step 3 : preparing for read */ /* --------------------------- */ /*prepare the channel */ if ((rc = snd_pcm_prepare(ghPCM)) < 0) { PLogError ( "Audio In Error snd_pcm_prepare() (rc = %d: %s)\n", rc, snd_strerror(rc)); return LHS_E_AUDIOIN_COULDNOTOPENDEVICE; } /* set some variables */ gAudioInInfo.u32SamplesAvailable = 0; #endif /* prepare to read samples */ setCloseOff(); return 0; }