void IAGSEngine::PlaySoundChannel (int32 channel, int32 soundType, int32 volume, int32 loop, const char *filename) { stop_and_destroy_channel (channel); SOUNDCLIP *newcha = NULL; if (((soundType == PSND_MP3STREAM) || (soundType == PSND_OGGSTREAM)) && (loop != 0)) quit("IAGSEngine::PlaySoundChannel: streamed samples cannot loop"); if (soundType == PSND_WAVE) newcha = my_load_wave (filename, volume, loop); else if (soundType == PSND_MP3STREAM) newcha = my_load_mp3 (filename, volume); else if (soundType == PSND_OGGSTREAM) newcha = my_load_ogg (filename, volume); else if (soundType == PSND_MP3STATIC) newcha = my_load_static_mp3 (filename, volume, (loop != 0)); else if (soundType == PSND_OGGSTATIC) newcha = my_load_static_ogg (filename, volume, (loop != 0)); else if (soundType == PSND_MIDI) { if (midi_pos >= 0) quit("!IAGSEngine::PlaySoundChannel: MIDI already in use"); newcha = my_load_midi (filename, loop); newcha->set_volume (volume); } else if (soundType == PSND_MOD) { newcha = my_load_mod (filename, loop); newcha->set_volume (volume); } else quit("!IAGSEngine::PlaySoundChannel: unknown sound type"); channels[channel] = newcha; }
SOUNDCLIP *load_sound_and_play(ScriptAudioClip *aclip, bool repeat) { SOUNDCLIP *soundfx = load_sound_clip(aclip, repeat); if (soundfx != NULL) { if (soundfx->play() == 0) soundfx = NULL; } return soundfx; }
SOUNDCLIP *load_sound_from_path(int soundNumber, int volume, bool repeat) { SOUNDCLIP *soundfx = load_sound_clip_from_old_style_number(false, soundNumber, repeat); if (soundfx != NULL) { if (soundfx->play() == 0) soundfx = NULL; } return soundfx; }
void update_queued_clips_volume(int audioType, int new_vol) { for (int i = 0; i < play.new_music_queue_size; ++i) { // NOTE: if clip is uncached, the volume will be set from defaults when it is loaded SOUNDCLIP *sndclip = play.new_music_queue[i].cachedClip; if (sndclip) { ScriptAudioClip *clip = &game.audioClips[play.new_music_queue[i].audioClipIndex]; if (clip->type == audioType) sndclip->set_volume_percent(new_vol); } } }
SOUNDCLIP *load_sound_clip(ScriptAudioClip *audioClip, bool repeat) { if (!is_audiotype_allowed_to_play((AudioFileType)audioClip->fileType)) { return NULL; } update_clip_default_volume(audioClip); SOUNDCLIP *soundClip = NULL; AssetPath asset_name = get_audio_clip_assetpath(audioClip->bundlingType, audioClip->fileName); switch (audioClip->fileType) { case eAudioFileOGG: soundClip = my_load_static_ogg(asset_name, audioClip->defaultVolume, repeat); break; case eAudioFileMP3: soundClip = my_load_static_mp3(asset_name, audioClip->defaultVolume, repeat); break; case eAudioFileWAV: case eAudioFileVOC: soundClip = my_load_wave(asset_name, audioClip->defaultVolume, repeat); break; case eAudioFileMIDI: soundClip = my_load_midi(asset_name, repeat); break; case eAudioFileMOD: #ifndef PSP_NO_MOD_PLAYBACK soundClip = my_load_mod(asset_name, repeat); #else soundClip = NULL; #endif break; default: quitprintf("AudioClip.Play: invalid audio file type encountered: %d", audioClip->fileType); } if (soundClip != NULL) { soundClip->set_volume_percent(audioClip->defaultVolume); soundClip->soundType = audioClip->type; soundClip->sourceClip = audioClip; } return soundClip; }
SOUNDCLIP *load_sound_clip(ScriptAudioClip *audioClip, bool repeat) { const char *clipFileName = get_audio_clip_file_name(audioClip); if ((clipFileName == NULL) || (usetup.digicard == DIGI_NONE)) { return NULL; } update_clip_default_volume(audioClip); SOUNDCLIP *soundClip = NULL; switch (audioClip->fileType) { case eAudioFileOGG: soundClip = my_load_static_ogg(clipFileName, audioClip->defaultVolume, repeat); break; case eAudioFileMP3: soundClip = my_load_static_mp3(clipFileName, audioClip->defaultVolume, repeat); break; case eAudioFileWAV: case eAudioFileVOC: soundClip = my_load_wave(clipFileName, audioClip->defaultVolume, repeat); break; case eAudioFileMIDI: soundClip = my_load_midi(clipFileName, repeat); break; case eAudioFileMOD: #ifndef PSP_NO_MOD_PLAYBACK soundClip = my_load_mod(clipFileName, repeat); #else soundClip = NULL; #endif break; default: quitprintf("AudioClip.Play: invalid audio file type encountered: %d", audioClip->fileType); } if (soundClip != NULL) { soundClip->set_volume_origin(audioClip->defaultVolume); soundClip->soundType = audioClip->type; soundClip->sourceClip = audioClip; } return soundClip; }