|
@@ -121,51 +121,47 @@ void jar_xm_free_context(jar_xm_context_t*);
|
|
|
|
|
|
/** Play the module and put the sound samples in an output buffer.
|
|
|
*
|
|
|
- * @param output buffer of 2*numsamples elements
|
|
|
+ * @param output buffer of 2*numsamples elements (A left and right value for each sample)
|
|
|
* @param numsamples number of samples to generate
|
|
|
*/
|
|
|
void jar_xm_generate_samples(jar_xm_context_t*, float* output, size_t numsamples);
|
|
|
|
|
|
/** Play the module, resample from 32 bit to 16 bit, and put the sound samples in an output buffer.
|
|
|
*
|
|
|
- * @param output buffer of 2*numsamples elements
|
|
|
+ * @param output buffer of 2*numsamples elements (A left and right value for each sample)
|
|
|
* @param numsamples number of samples to generate
|
|
|
*/
|
|
|
void jar_xm_generate_samples_16bit(jar_xm_context_t* ctx, short* output, size_t numsamples)
|
|
|
{
|
|
|
float* musicBuffer = malloc((2*numsamples)*sizeof(float));
|
|
|
- short* musicBuffer2 = malloc((2*numsamples)*sizeof(short));
|
|
|
-
|
|
|
jar_xm_generate_samples(ctx, musicBuffer, numsamples);
|
|
|
|
|
|
- int x;
|
|
|
- for(x=0;x<2*numsamples;x++)
|
|
|
- musicBuffer2[x] = musicBuffer[x] * SHRT_MAX;
|
|
|
+ if(output){
|
|
|
+ int x;
|
|
|
+ for(x=0;x<2*numsamples;x++)
|
|
|
+ output[x] = musicBuffer[x] * SHRT_MAX;
|
|
|
+ }
|
|
|
|
|
|
- memcpy(output, musicBuffer2, (2*numsamples)*sizeof(short));
|
|
|
free(musicBuffer);
|
|
|
- free(musicBuffer2);
|
|
|
}
|
|
|
|
|
|
/** Play the module, resample from 32 bit to 8 bit, and put the sound samples in an output buffer.
|
|
|
*
|
|
|
- * @param output buffer of 2*numsamples elements
|
|
|
+ * @param output buffer of 2*numsamples elements (A left and right value for each sample)
|
|
|
* @param numsamples number of samples to generate
|
|
|
*/
|
|
|
void jar_xm_generate_samples_8bit(jar_xm_context_t* ctx, char* output, size_t numsamples)
|
|
|
{
|
|
|
float* musicBuffer = malloc((2*numsamples)*sizeof(float));
|
|
|
- char* musicBuffer2 = malloc((2*numsamples)*sizeof(char));
|
|
|
-
|
|
|
jar_xm_generate_samples(ctx, musicBuffer, numsamples);
|
|
|
|
|
|
- int x;
|
|
|
- for(x=0;x<2*numsamples;x++)
|
|
|
- musicBuffer2[x] = musicBuffer[x] * CHAR_MAX;
|
|
|
+ if(output){
|
|
|
+ int x;
|
|
|
+ for(x=0;x<2*numsamples;x++)
|
|
|
+ output[x] = musicBuffer[x] * CHAR_MAX;
|
|
|
+ }
|
|
|
|
|
|
- memcpy(output, musicBuffer2, (2*numsamples)*sizeof(char));
|
|
|
free(musicBuffer);
|
|
|
- free(musicBuffer2);
|
|
|
}
|
|
|
|
|
|
|