diff options
author | Vitaly Novichkov <Wohlstand@users.noreply.github.com> | 2018-07-07 19:41:27 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-07 19:41:27 +0300 |
commit | c8dc7434d1d07ffb441e2d4621eea6aa71dc6b63 (patch) | |
tree | 0487adc817c4f2f4289d663e73a33f985c1fbf88 /src/adlmidi.cpp | |
parent | 63f0c95a978902e0896513ca4c7e7e3907da7b9d (diff) | |
parent | ba37698fd82cab2513cd9f316189d433af4519df (diff) | |
download | libADLMIDI-c8dc7434d1d07ffb441e2d4621eea6aa71dc6b63.tar.gz libADLMIDI-c8dc7434d1d07ffb441e2d4621eea6aa71dc6b63.tar.bz2 libADLMIDI-c8dc7434d1d07ffb441e2d4621eea6aa71dc6b63.zip |
Merge pull request #128 from jpcima/track-options
Track options
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) |