aboutsummaryrefslogtreecommitdiff
path: root/src/adlmidi_midiplay.cpp
diff options
context:
space:
mode:
authorVitaly Novichkov <admin@wohlnet.ru>2018-05-19 22:33:37 +0300
committerVitaly Novichkov <admin@wohlnet.ru>2018-05-19 22:33:37 +0300
commitbb4797ee68c0f12018196d3ee8caddcdcad9fe38 (patch)
tree9cd938ebf9c39366eaf53401b439fa92a14f63bc /src/adlmidi_midiplay.cpp
parentbed6bcb220346c622a307bf405b9a1e87fd99db5 (diff)
downloadlibADLMIDI-bb4797ee68c0f12018196d3ee8caddcdcad9fe38.tar.gz
libADLMIDI-bb4797ee68c0f12018196d3ee8caddcdcad9fe38.tar.bz2
libADLMIDI-bb4797ee68c0f12018196d3ee8caddcdcad9fe38.zip
Works and fixes
- Fixed an incorrect calculation of 4-op channels and choosing 4-op channels for 2-op only banks - Resolved trouble with automatically chosen flags because of internal confusion
Diffstat (limited to 'src/adlmidi_midiplay.cpp')
-rw-r--r--src/adlmidi_midiplay.cpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp
index 1ee7cfb..8aab901 100644
--- a/src/adlmidi_midiplay.cpp
+++ b/src/adlmidi_midiplay.cpp
@@ -740,16 +740,28 @@ MIDIplay::MIDIplay(unsigned long sampleRate):
void MIDIplay::applySetup()
{
m_setup.tick_skip_samples_delay = 0;
- opl.HighTremoloMode = m_setup.HighTremoloMode == -1 ? adlbanksetup[m_setup.AdlBank].deepTremolo : (bool)m_setup.HighTremoloMode;
- opl.HighVibratoMode = m_setup.HighVibratoMode == -1 ? adlbanksetup[m_setup.AdlBank].deepVibrato : (bool)m_setup.HighVibratoMode;
- opl.AdlPercussionMode = m_setup.AdlPercussionMode == -1 ? adlbanksetup[m_setup.AdlBank].adLibPercussions : (bool)m_setup.AdlPercussionMode;
- opl.ScaleModulators = m_setup.ScaleModulators == -1 ? adlbanksetup[m_setup.AdlBank].scaleModulators : (bool)m_setup.ScaleModulators;
+
+ if(opl.AdlBank != ~0u)
+ opl.dynamic_bank_setup = adlbanksetup[m_setup.AdlBank];
+
+ opl.HighTremoloMode = m_setup.HighTremoloMode < 0 ?
+ opl.dynamic_bank_setup.deepTremolo :
+ (bool)m_setup.HighTremoloMode;
+ opl.HighVibratoMode = m_setup.HighVibratoMode < 0 ?
+ opl.dynamic_bank_setup.deepVibrato :
+ (bool)m_setup.HighVibratoMode;
+ opl.AdlPercussionMode = m_setup.AdlPercussionMode < 0 ?
+ opl.dynamic_bank_setup.adLibPercussions :
+ (bool)m_setup.AdlPercussionMode;
+ opl.ScaleModulators = m_setup.ScaleModulators < 0 ?
+ opl.dynamic_bank_setup.scaleModulators :
+ (bool)m_setup.ScaleModulators;
opl.LogarithmicVolumes = m_setup.LogarithmicVolumes;
//opl.CartoonersVolumes = false;
opl.m_musicMode = OPL3::MODE_MIDI;
opl.ChangeVolumeRangesModel(static_cast<ADLMIDI_VolumeModels>(m_setup.VolumeModel));
if(m_setup.VolumeModel == ADLMIDI_VolumeModel_AUTO)//Use bank default volume model
- opl.m_volumeScale = (OPL3::VolumesScale)adlbanksetup[m_setup.AdlBank].volumeModel;
+ opl.m_volumeScale = (OPL3::VolumesScale)opl.dynamic_bank_setup.volumeModel;
opl.NumCards = m_setup.NumCards;
opl.NumFourOps = m_setup.NumFourOps;