void osd_sound_enable(int enable_it) { #ifdef USE_SEAL if (enable_it) ASetAudioMixerValue(AUDIO_MIXER_MASTER_VOLUME,master_volume); else ASetAudioMixerValue(AUDIO_MIXER_MASTER_VOLUME,0); #endif #ifdef USE_ALLEGRO if (enable_it) set_volume(255,0); else set_volume(0,0); #endif }
// Initialize Sound Card ------------------------------------------------------ static int Sound_Init_SoundCard (void) { int i; AUDIOINFO Audio_Infos; ConsolePrintf (Msg_Get (MSG_Sound_Init_Soundcard), Sound.SampleRate); ConsolePrint ("\n"); Audio_Infos.nDeviceId = Sound.SoundCard; Audio_Infos.wFormat = AUDIO_FORMAT_16BITS | AUDIO_FORMAT_STEREO; // FIXME: Stereo ? Audio_Infos.nSampleRate = audio_sample_rate = Sound.SampleRate; if (AOpenAudio(&Audio_Infos) != AUDIO_ERROR_NONE) { Quit_Msg ("%s", Msg_Get (MSG_Sound_Init_Error_Audio)); return (MEKA_ERR_FAIL); } // FIXME: original sound engine was trying different sample rate on failure // Unused // Maybe it was intended to check out number of channels there ? // AGetAudioCaps (Audio_Infos.nDeviceId, &Audio_Caps); // Open voices if (AOpenVoices(Sound.Voices_Max) != AUDIO_ERROR_NONE) { Quit_Msg ("%s", Msg_Get (MSG_Sound_Init_Error_Voices)); return (MEKA_ERR_FAIL); } ASetAudioMixerValue (AUDIO_MIXER_MASTER_VOLUME, 256); // Allocate voices and waveforms Sound.Voices = Memory_Alloc (sizeof (t_voice) * Sound.Voices_Max); for (i = 0; i < Sound.Voices_Max; i++) { if (ACreateAudioVoice(&Sound.Voices[i].hVoice) != AUDIO_ERROR_NONE) { Quit_Msg (Msg_Get (MSG_Sound_Init_Error_Voice_N), i); return (MEKA_ERR_FAIL); } ASetVoicePanning(Sound.Voices[i].hVoice, 128); // Center voice Sound.Voices[i].lpWave = NULL; Sound.Voices[i].playing = FALSE; } // FIXME: is this needed ? AUpdateAudio (); // FIXME: is this needed ? // Check frame sample rate audio_sample_rate = nominal_sample_rate = Audio_Infos.nSampleRate; return (MEKA_ERR_OK); }
/* attenuation in dB */ void osd_set_mastervolume(int _attenuation) { float volume; attenuation = _attenuation; volume = 256.0; /* range is 0-256 */ while (_attenuation++ < 0) volume /= 1.122018454; /* = (10 ^ (1/20)) = 1dB */ master_volume = volume; ASetAudioMixerValue(AUDIO_MIXER_MASTER_VOLUME,master_volume); }
/* attenuation in dB */ void osd_set_mastervolume(int _attenuation) { float volume; if (_attenuation > 0) _attenuation = 0; if (_attenuation < -32) _attenuation = -32; attenuation = _attenuation; volume = 256.0; /* range is 0-256 */ while (_attenuation++ < 0) volume /= 1.122018454; /* = (10 ^ (1/20)) = 1dB */ master_volume = volume; #ifdef USE_SEAL ASetAudioMixerValue(AUDIO_MIXER_MASTER_VOLUME,master_volume); #endif }