|
|
@ -288,6 +288,13 @@ uint64_t jar_xm_get_latest_trigger_of_sample(jar_xm_context_t*, uint16_t instr, |
|
|
|
*/ |
|
|
|
uint64_t jar_xm_get_latest_trigger_of_channel(jar_xm_context_t*, uint16_t); |
|
|
|
|
|
|
|
/** Get the number of remaining samples. Divide by 2 to get the number of individual LR data samples. |
|
|
|
* |
|
|
|
* @note This is the remaining number of samples before the loop starts module again, or halts if on last pass. |
|
|
|
* @note This function is very slow and should only be run once, if at all. |
|
|
|
*/ |
|
|
|
uint64_t jar_xm_get_remaining_samples(jar_xm_context_t*); |
|
|
|
|
|
|
|
#ifdef __cplusplus |
|
|
|
} |
|
|
|
#endif |
|
|
@ -2543,7 +2550,22 @@ void jar_xm_generate_samples(jar_xm_context_t* ctx, float* output, size_t numsam |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
uint64_t jar_xm_get_remaining_samples(jar_xm_context_t* ctx) |
|
|
|
{ |
|
|
|
uint64_t total = 0; |
|
|
|
uint8_t currentLoopCount = jar_xm_get_loop_count(ctx); |
|
|
|
jar_xm_set_max_loop_count(ctx, 0); |
|
|
|
|
|
|
|
while(jar_xm_get_loop_count(ctx) == currentLoopCount) |
|
|
|
{ |
|
|
|
total += ctx->remaining_samples_in_tick; |
|
|
|
ctx->remaining_samples_in_tick = 0; |
|
|
|
jar_xm_tick(ctx); |
|
|
|
} |
|
|
|
|
|
|
|
ctx->loop_count = currentLoopCount; |
|
|
|
return total; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|