void GuiSound::Play() { switch (type) { case SOUND_PCM: xenon_sound_submit((void*)sound,length); break; } #ifndef NO_SOUND int vol; switch (type) { case SOUND_PCM: vol = 255 * (volume / 100.0); voice = ASND_GetFirstUnusedVoice(); if (voice >= 0) ASND_SetVoice(voice, VOICE_STEREO_16BIT, 48000, 0, (u8 *) sound, length, vol, vol, NULL); break; case SOUND_OGG: voice = 0; if (loop) PlayOgg((char *) sound, length, 0, OGG_INFINITE_TIME); else PlayOgg((char *) sound, length, 0, OGG_ONE_TIME); SetVolumeOgg(255 * (volume / 100.0)); break; } #endif }
/*** gx_audio_Stop This function stops current Audio DMA process This is called when going back to Main Menu ***/ void gx_audio_Stop(void) { /* restart menu audio processing */ DSP_Unhalt(); ASND_Init(); ASND_Pause(0); /* play background music */ if (Bg_music_ogg && !Shutdown) { PauseOgg(0); PlayOgg((char *)Bg_music_ogg, Bg_music_ogg_size, 0, OGG_INFINITE_TIME); SetVolumeOgg(((int)config.bgm_volume * 255) / 100); } }
int AalibPlay(int channel) { if ((channel<1)||(channel>48)) { return PSPAALIB_ERROR_INVALID_CHANNEL; } if (!channels[channel].initialized) { return PSPAALIB_ERROR_UNINITIALIZED_CHANNEL; } if (!AalibGetStopReason(channel)) { return PSPAALIB_SUCCESS; } int hardwareChannel=GetFreeHardwareChannel(); if (hardwareChannel==-1) { return PSPAALIB_WARNING_NO_FREE_CHANNELS; } hardwareChannels[hardwareChannel]=channel; sceKernelStartThread(threads[hardwareChannel],sizeof(int),(void*)(&hardwareChannel)); if ((PSPAALIB_CHANNEL_WAV_1<=channel)&&(channel<=PSPAALIB_CHANNEL_WAV_32)) { return PlayWav(channel-PSPAALIB_CHANNEL_WAV_1); } if ((PSPAALIB_CHANNEL_OGG_1<=channel)&&(channel<=PSPAALIB_CHANNEL_OGG_10)) { return PlayOgg(channel-PSPAALIB_CHANNEL_OGG_1); } if ((PSPAALIB_CHANNEL_SCEMP3_1<=channel)&&(channel<=PSPAALIB_CHANNEL_SCEMP3_2)) { return PlaySceMp3(channel-PSPAALIB_CHANNEL_SCEMP3_1); } if ((PSPAALIB_CHANNEL_AT3_1<=channel)&&(channel<=PSPAALIB_CHANNEL_AT3_2)) { return PlayAt3(channel-PSPAALIB_CHANNEL_AT3_1); } return PSPAALIB_ERROR_INVALID_CHANNEL; }
void CDAudio_Play(byte track, qboolean looping) { int i, lf; trackinfo_t* tnod; int trackHdl; int newTrackDataLength; byte* newTrackData; if (!enabled) return; if (!cdValid) { CDAudio_GetAudioDiskInfo(); if (!cdValid) return; } track = remap[track]; if (track < 1 || track > maxTrack) { Con_DPrintf("CDAudio: Bad track number %u.\n", track); return; } i = track; if(cd_nofirst.value) i--; if (playing) { if (playTrack == track) return; CDAudio_Stop(); } lf = -1; tnod = CDAudio_GetTrack(trackList, i - 1, &lf); if(tnod == NULL) { Con_Printf("CDAudio: Can't locate track %i\n", track); return; } newTrackDataLength = Sys_FileOpenRead(tnod->track, &trackHdl); if(newTrackDataLength <= 0) { Con_Printf("CDAudio: Can't open track %i\n", track); return; }; if(trackData == NULL) { trackData = Sys_Malloc(newTrackDataLength, "CDAudio_Play"); trackDataSize = newTrackDataLength; } else if(trackDataSize < newTrackDataLength) { newTrackData = realloc(trackData, newTrackDataLength); if(newTrackData == NULL) { free(trackData); trackData = Sys_Malloc(newTrackDataLength, "CDAudio_Play"); } else { trackData = newTrackData; }; trackDataSize = newTrackDataLength; }; trackDataLength = newTrackDataLength; Sys_FileRead(trackHdl, trackData, trackDataLength); Sys_FileClose(trackHdl); if(PlayOgg(trackData, trackDataLength, 0, looping ? OGG_INFINITE_TIME : OGG_ONE_TIME)) { Con_Printf("CDAudio: Can't play track %i\n", track); return; }; playLooping = looping; playTrack = track; playing = true; //Con_Printf("Now playing: %s\n", tnod->track); if (cdvolume == 0.0) CDAudio_Pause (); }