diff options
author | JP Cimalando <jpcima@users.noreply.github.com> | 2018-07-07 02:03:01 +0200 |
---|---|---|
committer | JP Cimalando <jpcima@users.noreply.github.com> | 2018-07-07 02:40:02 +0200 |
commit | 7cb0fe9dad9f7ef24d1142d866450305102bf3a9 (patch) | |
tree | 392c55537731346ec8dc65a9f93afb35fbe4f73d /src/adlmidi.cpp | |
parent | 63f0c95a978902e0896513ca4c7e7e3907da7b9d (diff) | |
download | libADLMIDI-7cb0fe9dad9f7ef24d1142d866450305102bf3a9.tar.gz libADLMIDI-7cb0fe9dad9f7ef24d1142d866450305102bf3a9.tar.bz2 libADLMIDI-7cb0fe9dad9f7ef24d1142d866450305102bf3a9.zip |
sequencer API to turn tracks on/off/solo
Diffstat (limited to 'src/adlmidi.cpp')
-rw-r--r-- | src/adlmidi.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/adlmidi.cpp b/src/adlmidi.cpp index 4fed13b..93d1bf1 100644 --- a/src/adlmidi.cpp +++ b/src/adlmidi.cpp @@ -1356,6 +1356,63 @@ ADLMIDI_EXPORT int adl_atEnd(struct ADL_MIDIPlayer *device) #endif } +ADLMIDI_EXPORT size_t adl_trackCount(struct ADL_MIDIPlayer *device) +{ +#ifndef ADLMIDI_DISABLE_MIDI_SEQUENCER + if(!device) + return 0; + MidiPlayer *play = GET_MIDI_PLAYER(device); + if(!play) + return 0; + return play->m_sequencer.getTrackCount(); +#else + ADL_UNUSED(device); + return 0; +#endif +} + +ADLMIDI_EXPORT int adl_setTrackOptions(struct ADL_MIDIPlayer *device, size_t trackNumber, unsigned trackOptions) +{ +#ifndef ADLMIDI_DISABLE_MIDI_SEQUENCER + if(!device) + return -1; + MidiPlayer *play = GET_MIDI_PLAYER(device); + if(!play) + return -1; + MidiSequencer &seq = play->m_sequencer; + + unsigned enableFlag = trackOptions & 3; + trackOptions &= ~3u; + + // handle on/off/solo + switch(enableFlag) + { + default: + break; + case ADL_TrackOption_On: + case ADL_TrackOption_Off: + if(!seq.setTrackEnabled(trackNumber, enableFlag == ADL_TrackOption_On)) + return -1; + break; + case ADL_TrackOption_Solo: + seq.setSoloTrack(trackNumber); + break; + } + + // handle others... + if(trackOptions != 0) + return -1; + + return 0; + +#else + ADL_UNUSED(device); + ADL_UNUSED(trackNumber); + ADL_UNUSED(trackOptions); + return -1; +#endif +} + ADLMIDI_EXPORT void adl_panic(struct ADL_MIDIPlayer *device) { if(!device) |