diff options
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | include/adlmidi.h | 10 | ||||
-rw-r--r-- | src/adlmidi.cpp | 15 |
3 files changed, 26 insertions, 0 deletions
@@ -180,6 +180,7 @@ To build that example you will need to have installed SDL2 library. # Changelog ## 1.5.1 dev * Added an ability to disable the automatical arpeggio + * Added an ability to set the count of loops (how many times to play the song) ## 1.5.0.1 2020-10-11 * Fixed an incorrect timer processing when using a real-time interface diff --git a/include/adlmidi.h b/include/adlmidi.h index 2b68509..53f57f8 100644 --- a/include/adlmidi.h +++ b/include/adlmidi.h @@ -564,6 +564,16 @@ extern ADLMIDI_DECLSPEC void adl_setAutoArpeggio(struct ADL_MIDIPlayer *device, extern ADLMIDI_DECLSPEC void adl_setLoopEnabled(struct ADL_MIDIPlayer *device, int loopEn); /** + * @brief Set how many times loop will be played + * + * Note: The song will be played once if loop has been disabled with no matter which value of loop count was set + * + * @param device Instance of the library + * @param loopCount Number of loops or -1 to loop infinitely + */ +extern ADLMIDI_DECLSPEC void adl_setLoopCount(struct ADL_MIDIPlayer *device, int loopCount); + +/** * @brief Enable or disable soft panning with chip emulators * @param device Instance of the library * @param softPanEn 0 - disabled, 1 - enabled diff --git a/src/adlmidi.cpp b/src/adlmidi.cpp index c62c2cb..621c385 100644 --- a/src/adlmidi.cpp +++ b/src/adlmidi.cpp @@ -574,6 +574,21 @@ ADLMIDI_EXPORT void adl_setLoopEnabled(ADL_MIDIPlayer *device, int loopEn) #endif } +ADLMIDI_EXPORT void adl_setLoopCount(ADL_MIDIPlayer *device, int loopCount) +{ +#ifndef ADLMIDI_DISABLE_MIDI_SEQUENCER + if(!device) + return; + MidiPlayer *play = GET_MIDI_PLAYER(device); + assert(play); + play->m_sequencer->setLoopsCount(loopCount); +#else + ADL_UNUSED(device); + ADL_UNUSED(loopCount); +#endif +} + + ADLMIDI_EXPORT void adl_setSoftPanEnabled(ADL_MIDIPlayer *device, int softPanEn) { if(!device) |