aboutsummaryrefslogtreecommitdiff
path: root/src/adlmidi.cpp
diff options
context:
space:
mode:
authorVitaly Novichkov <admin@wohlnet.ru>2018-09-30 05:49:18 +0300
committerVitaly Novichkov <admin@wohlnet.ru>2018-09-30 05:49:18 +0300
commitfb0304b01968fd2a3279a87a5825bdedfa2d5289 (patch)
treef5cf1690157883da0898b78492483d862cb72d69 /src/adlmidi.cpp
parent6a3ae79625abdf8d85335b44fc6a3d37c2ae840e (diff)
downloadlibADLMIDI-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.cpp10
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();
}