void digi_set_max_channels(int n) { OSErr err; song_resource *song; digi_max_channels = n; if ( digi_max_channels < 1 ) digi_max_channels = 1; if ( digi_max_channels > MAX_SOUND_CHANNELS ) digi_max_channels = MAX_SOUND_CHANNELS; if ( !digi_initialized ) return; if (digi_midi_song_playing) digi_stop_current_song(); if (midi_volume <= 0) ChangeSystemVoices(0, digi_max_channels/2, digi_max_channels); else ChangeSystemVoices(MAX_MUSIC_CHANNELS, 4 + (digi_max_channels/2), digi_max_channels); if (digi_last_midi_song != 0) digi_play_midi_song(digi_last_midi_song, digi_last_midi_song_loop); digi_reset_digi_sounds(); }
void digi_set_midi_volume(int n) { int old_volume = midi_volume; if (!digi_initialized) return; if (n < 0) midi_volume = 0; else if (n > 255) midi_volume = 255; else midi_volume = n; #ifdef MAC_SHAREWARE SetSongVolume(midi_volume); #else redbook_set_volume(midi_volume); #endif if (!old_volume && midi_volume) { #ifdef MAC_SHAREWARE ChangeSystemVoices(MAX_MUSIC_CHANNELS, 4 + (digi_max_channels/2), digi_max_channels); #endif digi_play_midi_song(digi_last_midi_song, digi_last_midi_song_loop); } else if (old_volume && !midi_volume) { digi_stop_current_song(); #ifndef MAC_SHAREWARE digi_cd_started = 0; #else ChangeSystemVoices(0, digi_max_channels/2, digi_max_channels); #endif } }
/* Shut down audio */ void digi_close() { if (!Digi_initialized) return; digi_stop_current_song(); Digi_initialized = 0; #ifdef __MINGW32__ SDL_Delay(500); // CloseAudio hangs if it's called too soon after opening? #endif Mix_CloseAudio(); }
void digi_play_midi_song(int songnum, int loop ) { OSErr err; song_resource *song; ushort midi_id; if (!digi_initialized) return; digi_last_midi_song = songnum; digi_last_midi_song_loop = loop; #ifndef MAC_SHAREWARE if ( !have_descent_cd ) { if ( !cd_playing && !digi_cd_started ) redbook_start_play(); digi_cd_started = 1; return; } #endif digi_stop_current_song(); if (midi_volume < 1) return; #ifdef MAC_SHAREWARE Song_handle = GetResource('SONG', songnum); if (!Song_handle) return; song = (song_resource *)(*Song_handle); midi_id = song->midi_id; Midi_handle = GetResource('Midi', midi_id); if (!Midi_handle) { ReleaseResource(Song_handle); return; } song->sound_voices = digi_max_channels; song->norm_voices = 4 + (digi_max_channels/2); err = BeginSongFromMemory(songnum, Song_handle, Midi_handle, loop); if (err != noErr) return; #else play_redbook_track(songnum, loop); #endif digi_midi_song_playing = 1; }
void digi_play_midi_song( char * filename, char * melodic_bank, char * drum_bank, int loop ) { if (!digi_initialised) return; digi_stop_current_song(); //added on 5/20/99 by Victor Rachels to fix crash/etc if(filename == NULL) return; if(midi_volume < 1) return; //end this section addition - VR if ((hmp = hmp_open(filename))) { hmp_play(hmp); digi_midi_song_playing = 1; digi_set_midi_volume(midi_volume); } else printf("hmp_open failed\n"); }
void digi_audio_play_midi_song( char * filename, char * melodic_bank, char * drum_bank, int loop ) { #ifdef _WIN32 if (GameArg.SndNoMusic) return; digi_stop_current_song(); if (filename == NULL) return; if ((hmp = hmp_open(filename))) { hmp_play(hmp,loop); digi_midi_song_playing = 1; digi_set_midi_volume(midi_volume); } #endif }
void digi_close() { int i, sound_num; if (!digi_initialized) return; digi_stop_current_song(); SetMasterVolume(master_save); // free the sounds that we have registered. for (i = 0; i < num_sounds; i++) { sound_num = digi_xlat_sound(i); if (sound_num != -1) FreeSound(i); } ReleaseRegisteredSounds(); FinisSoundMusicSystem(); digi_initialized = 0; }
//stop any songs - midi or redbook - that are currently playing void songs_stop_all(void) { digi_stop_current_song(); // Stop midi song, if playing songs_stop_redbook(); // Stop CD, if playing }