summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/sound.c3
-rw-r--r--uisimulator/sdl/sound.c7
2 files changed, 6 insertions, 4 deletions
diff --git a/firmware/sound.c b/firmware/sound.c
index 30b9b6a2d2..dd70b42230 100644
--- a/firmware/sound.c
+++ b/firmware/sound.c
@@ -663,9 +663,10 @@ void sound_set_superbass(int value)
663#endif /* (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) */ 663#endif /* (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) */
664 664
665#else /* SIMULATOR */ 665#else /* SIMULATOR */
666int sim_volume;
666void sound_set_volume(int value) 667void sound_set_volume(int value)
667{ 668{
668 (void)value; 669 sim_volume =128*(value +40)/46; /* 128 is SDL_MIX_MAXVOLUME */
669} 670}
670 671
671void sound_set_balance(int value) 672void sound_set_balance(int value)
diff --git a/uisimulator/sdl/sound.c b/uisimulator/sdl/sound.c
index c3bb4d6592..0ade0c9edc 100644
--- a/uisimulator/sdl/sound.c
+++ b/uisimulator/sdl/sound.c
@@ -286,6 +286,7 @@ void pcm_calculate_peaks(int *left, int *right)
286 } 286 }
287} 287}
288 288
289extern int sim_volume; /* in firmware/sound.c
289void write_to_soundcard(struct pcm_udata *udata) { 290void write_to_soundcard(struct pcm_udata *udata) {
290 if (cvt.needed) { 291 if (cvt.needed) {
291 Uint32 rd = udata->num_in; 292 Uint32 rd = udata->num_in;
@@ -315,8 +316,7 @@ void write_to_soundcard(struct pcm_udata *udata) {
315 memcpy(cvt.buf, pcm_data, cvt.len); 316 memcpy(cvt.buf, pcm_data, cvt.len);
316 317
317 SDL_ConvertAudio(&cvt); 318 SDL_ConvertAudio(&cvt);
318 319 SDL_MixAudio(udata->stream, cvt.buf, cvt.len_cvt, sim_volume);
319 memcpy(udata->stream, cvt.buf, cvt.len_cvt);
320 320
321 udata->num_in = cvt.len / pcm_sample_bytes; 321 udata->num_in = cvt.len / pcm_sample_bytes;
322 udata->num_out = cvt.len_cvt / pcm_sample_bytes; 322 udata->num_out = cvt.len_cvt / pcm_sample_bytes;
@@ -357,7 +357,8 @@ void write_to_soundcard(struct pcm_udata *udata) {
357 } 357 }
358 } else { 358 } else {
359 udata->num_in = udata->num_out = MIN(udata->num_in, udata->num_out); 359 udata->num_in = udata->num_out = MIN(udata->num_in, udata->num_out);
360 memcpy(udata->stream, pcm_data, udata->num_out * pcm_sample_bytes); 360 SDL_MixAudio(udata->stream, pcm_data,
361 udata->num_out * pcm_sample_bytes, sim_volume);
361 362
362 if (udata->debug != NULL) { 363 if (udata->debug != NULL) {
363 fwrite(pcm_data, sizeof(Uint8), udata->num_out * pcm_sample_bytes, 364 fwrite(pcm_data, sizeof(Uint8), udata->num_out * pcm_sample_bytes,