diff options
author | Vitaly Novichkov <admin@wohlnet.ru> | 2018-05-19 22:33:37 +0300 |
---|---|---|
committer | Vitaly Novichkov <admin@wohlnet.ru> | 2018-05-19 22:33:37 +0300 |
commit | bb4797ee68c0f12018196d3ee8caddcdcad9fe38 (patch) | |
tree | 9cd938ebf9c39366eaf53401b439fa92a14f63bc /src/adlmidi_midiplay.cpp | |
parent | bed6bcb220346c622a307bf405b9a1e87fd99db5 (diff) | |
download | libADLMIDI-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.cpp | 22 |
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; |