diff options
author | Vitaly Novichkov <admin@wohlnet.ru> | 2018-09-30 05:49:18 +0300 |
---|---|---|
committer | Vitaly Novichkov <admin@wohlnet.ru> | 2018-09-30 05:49:18 +0300 |
commit | fb0304b01968fd2a3279a87a5825bdedfa2d5289 (patch) | |
tree | f5cf1690157883da0898b78492483d862cb72d69 /src/adlmidi.cpp | |
parent | 6a3ae79625abdf8d85335b44fc6a3d37c2ae840e (diff) | |
download | libADLMIDI-fb0304b01968fd2a3279a87a5825bdedfa2d5289.tar.gz libADLMIDI-fb0304b01968fd2a3279a87a5825bdedfa2d5289.tar.bz2 libADLMIDI-fb0304b01968fd2a3279a87a5825bdedfa2d5289.zip |
Fix the 4-op channels count setup
Diffstat (limited to 'src/adlmidi.cpp')
-rw-r--r-- | src/adlmidi.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/adlmidi.cpp b/src/adlmidi.cpp index d76ed8c..e104465 100644 --- a/src/adlmidi.cpp +++ b/src/adlmidi.cpp @@ -383,7 +383,7 @@ ADLMIDI_EXPORT int adl_setNumFourOpsChn(ADL_MIDIPlayer *device, int ops4) MidiPlayer *play = GET_MIDI_PLAYER(device); assert(play); - if((unsigned int)ops4 > 6 * play->m_setup.numChips) + if((ops4 >= 0) && (unsigned int)ops4 > 6 * play->m_setup.numChips) { char errBuff[250]; snprintf(errBuff, 250, "number of four-op channels may only be 0..%u when %u OPL3 cards are used.\n", (6 * (play->m_setup.numChips)), play->m_setup.numChips); @@ -391,13 +391,13 @@ ADLMIDI_EXPORT int adl_setNumFourOpsChn(ADL_MIDIPlayer *device, int ops4) return -1; } - play->m_setup.numFourOps = static_cast<unsigned int>(ops4); + play->m_setup.numFourOps = ops4; if(!play->m_synth.setupLocked()) { - if(play->m_setup.numFourOps >= 0) - play->m_synth.m_numFourOps = play->m_setup.numFourOps; + if(play->m_setup.numFourOps < 0) + adlCalculateFourOpChannels(play, true); else - adlCalculateFourOpChannels(play); + play->m_synth.m_numFourOps = static_cast<uint32_t>(play->m_setup.numFourOps); play->m_synth.updateChannelCategories(); } |