bool init_sound() { VALIDATE(sample_rate, "must call set_play_params before init_sound!"); LOG_AUDIO << "Initializing audio...\n"; if (SDL_WasInit(SDL_INIT_AUDIO) == 0) if (SDL_InitSubSystem(SDL_INIT_AUDIO) == -1) { return false; } if (!mix_ok) { if(Mix_OpenAudio(sample_rate, MIX_DEFAULT_FORMAT, 2, buffer_size) == -1) { mix_ok = false; ERR_AUDIO << "Could not initialize audio: " << Mix_GetError() << "\n"; return false; } mix_ok = true; Mix_AllocateChannels(n_of_channels); Mix_ReserveChannels(n_reserved_channels); channel_chunks.clear(); channel_chunks.resize(n_of_channels, NULL); channel_ids.resize(n_of_channels, -1); Mix_GroupChannel(bell_channel, SOUND_BELL); Mix_GroupChannel(timer_channel, SOUND_TIMER); Mix_GroupChannels(source_channel_start, source_channel_last, SOUND_SOURCES); Mix_GroupChannel(UI_sound_channel, SOUND_UI); Mix_GroupChannels(n_reserved_channels, n_of_channels - 1, SOUND_FX); set_sound_volume(preferences::sound_volume()); set_UI_volume(preferences::UI_volume()); set_music_volume(preferences::music_volume()); set_bell_volume(preferences::bell_volume()); Mix_ChannelFinished(channel_finished_hook); LOG_AUDIO << "Audio initialized.\n"; { int ii = 0; // play_music(); } } return true; }
bool init_sound() { LOG_AUDIO << "Initializing audio...\n"; if(SDL_WasInit(SDL_INIT_AUDIO) == 0) if(SDL_InitSubSystem(SDL_INIT_AUDIO) == -1) return false; if(!mix_ok) { if(Mix_OpenAudio(preferences::sample_rate(), MIX_DEFAULT_FORMAT, 2, preferences::sound_buffer_size()) == -1) { mix_ok = false; ERR_AUDIO << "Could not initialize audio: " << Mix_GetError() << std::endl; return false; } mix_ok = true; Mix_AllocateChannels(n_of_channels); Mix_ReserveChannels(n_reserved_channels); channel_chunks.clear(); channel_chunks.resize(n_of_channels, nullptr); channel_ids.resize(n_of_channels, -1); Mix_GroupChannel(bell_channel, SOUND_BELL); Mix_GroupChannel(timer_channel, SOUND_TIMER); Mix_GroupChannels(source_channel_start, source_channel_last, SOUND_SOURCES); Mix_GroupChannels(UI_sound_channel_start, UI_sound_channel_last, SOUND_UI); Mix_GroupChannels(n_reserved_channels, n_of_channels - 1, SOUND_FX); set_sound_volume(preferences::sound_volume()); set_UI_volume(preferences::UI_volume()); set_music_volume(preferences::music_volume()); set_bell_volume(preferences::bell_volume()); Mix_ChannelFinished(channel_finished_hook); LOG_AUDIO << "Audio initialized.\n"; DBG_AUDIO << "Channel layout: " << n_of_channels << " channels (" << n_reserved_channels << " reserved)\n" << " " << bell_channel << " - bell\n" << " " << timer_channel << " - timer\n" << " " << source_channel_start << ".." << source_channel_last << " - sound sources\n" << " " << UI_sound_channel_start << ".." << UI_sound_channel_last << " - UI\n" << " " << UI_sound_channel_last + 1 << ".." << n_of_channels - 1 << " - sound effects\n"; play_music(); } return true; }