summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorraysan5 <[email protected]>2018-12-25 15:18:35 +0100
committerraysan5 <[email protected]>2018-12-25 15:18:35 +0100
commit35a6e9a07476c06e239b2cf1879bdb97fdc04b09 (patch)
tree310c4fd49b51cb37b0eca01e2914467bb0caa042
parent96207a8a026a629fcc3026efab96cf18e1302618 (diff)
downloadraylib-35a6e9a07476c06e239b2cf1879bdb97fdc04b09.tar.gz
raylib-35a6e9a07476c06e239b2cf1879bdb97fdc04b09.zip
Corrected issue with MOD playing
Despite issue is corrected, now module loop doesn't work...
-rw-r--r--examples/audio/audio_module_playing.c6
-rw-r--r--src/audio.c20
2 files changed, 18 insertions, 8 deletions
diff --git a/examples/audio/audio_module_playing.c b/examples/audio/audio_module_playing.c
index 671a119f..54bfa3d2 100644
--- a/examples/audio/audio_module_playing.c
+++ b/examples/audio/audio_module_playing.c
@@ -30,11 +30,11 @@ int main()
int screenWidth = 800;
int screenHeight = 450;
- SetConfigFlags(FLAG_MSAA_4X_HINT); // NOTE: Try to enable MSAA 4X
+ SetConfigFlags(FLAG_MSAA_4X_HINT); // NOTE: Try to enable MSAA 4X
InitWindow(screenWidth, screenHeight, "raylib [audio] example - module playing (streaming)");
- InitAudioDevice(); // Initialize audio device
+ InitAudioDevice(); // Initialize audio device
Color colors[14] = { ORANGE, RED, GOLD, LIME, BLUE, VIOLET, BROWN, LIGHTGRAY, PINK,
YELLOW, GREEN, SKYBLUE, PURPLE, BEIGE };
@@ -52,7 +52,7 @@ int main()
circles[i].color = colors[GetRandomValue(0, 13)];
}
- Music xm = LoadMusicStream("resources/mini1111.xm");
+ Music xm = LoadMusicStream("resources/chiptun1.mod");
PlayMusicStream(xm);
diff --git a/src/audio.c b/src/audio.c
index 41aa1b61..b4eec113 100644
--- a/src/audio.c
+++ b/src/audio.c
@@ -1176,14 +1176,15 @@ Music LoadMusicStream(const char *fileName)
if (jar_mod_load_file(&music->ctxMod, fileName))
{
+ // NOTE: Only stereo is supported for MOD
music->stream = InitAudioStream(48000, 16, 2);
music->totalSamples = (unsigned int)jar_mod_max_samples(&music->ctxMod);
music->samplesLeft = music->totalSamples;
music->ctxType = MUSIC_MODULE_MOD;
music->loopCount = -1; // Infinite loop by default
- TraceLog(LOG_DEBUG, "[%s] MOD number of samples: %i", fileName, music->samplesLeft);
- TraceLog(LOG_DEBUG, "[%s] MOD track length: %11.6f sec", fileName, (float)music->totalSamples/48000.0f);
+ TraceLog(LOG_INFO, "[%s] MOD number of samples: %i", fileName, music->samplesLeft);
+ TraceLog(LOG_INFO, "[%s] MOD track length: %11.6f sec", fileName, (float)music->totalSamples/48000.0f);
}
else musicLoaded = false;
}
@@ -1345,18 +1346,27 @@ void UpdateMusicStream(Music music)
#if defined(SUPPORT_FILEFORMAT_XM)
case MUSIC_MODULE_XM:
{
- // NOTE: Internally this function considers 2 channels generation, so samplesCount/2 --> WEIRD
+ // NOTE: Internally this function considers 2 channels generation, so samplesCount/2
jar_xm_generate_samples_16bit(music->ctxXm, (short *)pcm, samplesCount/2);
} break;
#endif
#if defined(SUPPORT_FILEFORMAT_MOD)
- case MUSIC_MODULE_MOD: jar_mod_fillbuffer(&music->ctxMod, pcm, samplesCount, 0); break;
+ case MUSIC_MODULE_MOD:
+ {
+ // NOTE: 3rd parameter (nbsample) specify the number of stereo 16bits samples you want, so sampleCount/2
+ jar_mod_fillbuffer(&music->ctxMod, (short *)pcm, samplesCount/2, 0);
+ } break;
#endif
default: break;
}
+
UpdateAudioStream(music->stream, pcm, samplesCount);
- music->samplesLeft -= samplesCount;
+ if ((music->ctxType == MUSIC_MODULE_XM) || (music->ctxType == MUSIC_MODULE_MOD))
+ {
+ music->samplesLeft -= samplesCount/2;
+ }
+ else music->samplesLeft -= samplesCount;
if (music->samplesLeft <= 0)
{