summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2023-05-12 14:24:58 -0400
committerrealtradam <[email protected]>2023-05-12 14:24:58 -0400
commite81eb2369cbf21ca66fc49d2d09aab270131ea87 (patch)
tree5168b06797316af37770da971b9af44b3109f425 /src
parent333bfde55e090e4e393831c79f6576ce99ba4658 (diff)
downloadRodeoKit-e81eb2369cbf21ca66fc49d2d09aab270131ea87.tar.gz
RodeoKit-e81eb2369cbf21ca66fc49d2d09aab270131ea87.zip
finish initial audio system
Diffstat (limited to 'src')
-rw-r--r--src/audio/rodeo_audio.c85
-rw-r--r--src/audio/rodeo_audio_t.h5
-rw-r--r--src/rodeo.c2
3 files changed, 81 insertions, 11 deletions
diff --git a/src/audio/rodeo_audio.c b/src/audio/rodeo_audio.c
index 79cdac4..25b5106 100644
--- a/src/audio/rodeo_audio.c
+++ b/src/audio/rodeo_audio.c
@@ -11,11 +11,13 @@
#include "SDL_mixer.h"
static uint32_t **irodeo_audio_channelPool;
-static uint32_t irodeo_audio_channelPool_num;
-static uint32_t irodeo_audio_channelPool_size;
+//static uint32_t irodeo_audio_channelPool_num;
+//static uint32_t irodeo_audio_channelPool_size;
+//void
+//rodeo_audio_initialize(uint32_t num_sound_pools, uint32_t size_sound_pools)
void
-rodeo_audio_initialize(uint32_t num_sound_pools, uint32_t size_sound_pools)
+rodeo_audio_initialize(uint32_t channels)
{
if(Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 2048) < 0)
{
@@ -27,8 +29,10 @@ rodeo_audio_initialize(uint32_t num_sound_pools, uint32_t size_sound_pools)
}
else
{
- irodeo_audio_channelPool_num = num_sound_pools;
- irodeo_audio_channelPool_size = size_sound_pools;
+ Mix_AllocateChannels((int32_t)channels);
+ /*
+ irodeo_audio_channelPool_num = 1; //num_sound_pools;
+ irodeo_audio_channelPool_size = channels; //size_sound_pools;
void *mem_alloc =
malloc(
@@ -78,9 +82,10 @@ rodeo_audio_initialize(uint32_t num_sound_pools, uint32_t size_sound_pools)
);
}
}
+ */
// Lets not explode player's ears, yea?
- rodeo_audio_masterVolume_set(0.5f);
+ rodeo_audio_master_volume_set(0.5f);
}
}
@@ -91,6 +96,7 @@ rodeo_audio_deinitialize(void)
Mix_Quit();
}
+/*
uint32_t
irodeo_audio_channelPool_num_get(void)
{
@@ -102,20 +108,22 @@ irodeo_audio_channelPool_size_get(void)
{
return irodeo_audio_channelPool_size;
}
+*/
void
-rodeo_audio_masterVolume_set(float volume_level)
+rodeo_audio_master_volume_set(float volume_level)
{
Mix_MasterVolume((int32_t)(volume_level * (float)MIX_MAX_VOLUME));
Mix_VolumeMusic((int32_t)(volume_level * (float)MIX_MAX_VOLUME));
}
float
-rodeo_audio_masterVolume_get(void)
+rodeo_audio_master_volume_get(void)
{
return ((float)Mix_MasterVolume(-1)) / (float)MIX_MAX_VOLUME;
}
+/*
void
rodeo_audio_channelPool_volume_set(uint32_t channel_pool_id, float volume_level)
{
@@ -131,6 +139,7 @@ rodeo_audio_channelPool_volume_get(uint32_t channel_pool_id)
return ((float)Mix_Volume((int32_t)channel_pool_id, -1) /
(float)MIX_MAX_VOLUME);
}
+*/
rodeo_audio_sound_t*
rodeo_audio_sound_create_from_path(cstr path)
@@ -155,8 +164,64 @@ rodeo_audio_sound_destroy(rodeo_audio_sound_t* sound)
free(sound);
}
+rodeo_audio_music_t*
+rodeo_audio_music_create_from_path(cstr path)
+{
+ rodeo_audio_music_t *sample_music = malloc(sizeof(rodeo_audio_music_t));
+ sample_music->sdl_music = Mix_LoadMUS(cstr_str(&path));
+ if(NULL == sample_music->sdl_music)
+ {
+ rodeo_log(
+ rodeo_logLevel_error,
+ "Failed to load music. Mix_Error: %s",
+ Mix_GetError()
+ );
+ }
+ return sample_music;
+}
+
+void
+rodeo_audio_music_destroy(rodeo_audio_music_t* music)
+{
+ Mix_FreeMusic(music->sdl_music);
+ free(music);
+}
+
+
+void
+rodeo_audio_sound_play(rodeo_audio_sound_t *sound) //, uint32_t channel_pool_id)
+{
+ Mix_PlayChannel(-1, sound->sdl_sound, 0);
+}
+
+void
+rodeo_audio_music_play(rodeo_audio_music_t *music) //, uint32_t channel_pool_id)
+{
+ rodeo_audio_music_stop();
+ Mix_PlayMusic(music->sdl_music, 0);
+}
+
+void
+rodeo_audio_music_play_fadeIn(rodeo_audio_music_t *music, uint32_t fade_duration_milliseconds)
+{
+ rodeo_audio_music_stop();
+ Mix_FadeInMusic(music->sdl_music, 0, (int32_t)fade_duration_milliseconds);
+}
+
+void
+rodeo_audio_music_stop(void)
+{
+ Mix_HaltMusic();
+}
+
+bool
+rodeo_audio_music_isPlaying(void)
+{
+ return Mix_PlayingMusic();
+}
+
void
-rodeo_audio_sound_play(rodeo_audio_sound_t *sound, uint32_t channel_pool_id)
+rodeo_audio_music_stop_fadeOut(uint32_t fade_duration_milliseconds)
{
- Mix_PlayChannel((int32_t)channel_pool_id, sound->sdl_sound, 0);
+ Mix_FadeOutMusic((int32_t)fade_duration_milliseconds);
}
diff --git a/src/audio/rodeo_audio_t.h b/src/audio/rodeo_audio_t.h
index 6e3ce68..b762cf3 100644
--- a/src/audio/rodeo_audio_t.h
+++ b/src/audio/rodeo_audio_t.h
@@ -9,3 +9,8 @@ rodeo_audio_sound_t
Mix_Chunk *sdl_sound;
};
+struct
+rodeo_audio_music_t
+{
+ Mix_Music *sdl_music;
+};
diff --git a/src/rodeo.c b/src/rodeo.c
index c101839..c43b9a8 100644
--- a/src/rodeo.c
+++ b/src/rodeo.c
@@ -252,7 +252,7 @@ rodeo_window_init(
state.default_texture.width = 1;
state.default_texture.height = 1;
- rodeo_audio_initialize(4, 4);
+ rodeo_audio_initialize(4 * 4);
state.active_texture_p = &state.default_texture.internal_texture->texture_bgfx;
}