diff options
author | Vitaly Novichkov <admin@wohlnet.ru> | 2018-04-11 00:40:55 +0300 |
---|---|---|
committer | Vitaly Novichkov <admin@wohlnet.ru> | 2018-04-11 00:40:55 +0300 |
commit | a074c7f2163def562a78ebf4c75e412580dd3118 (patch) | |
tree | ae8c0a7d5006516036f0a8f3cf7c8ed21bf3e7c9 /src/adlmidi_midiplay.cpp | |
parent | e81541bc74e2083afba8a38ab364e98b39c32b70 (diff) | |
download | libADLMIDI-a074c7f2163def562a78ebf4c75e412580dd3118.tar.gz libADLMIDI-a074c7f2163def562a78ebf4c75e412580dd3118.tar.bz2 libADLMIDI-a074c7f2163def562a78ebf4c75e412580dd3118.zip |
Changed logic of CC-74 Brightness
to affect sound only between 0 and 64 like real XG synthesizers affect sound only between 0 and 64.
Diffstat (limited to 'src/adlmidi_midiplay.cpp')
-rw-r--r-- | src/adlmidi_midiplay.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp index 901e6ea..7911adc 100644 --- a/src/adlmidi_midiplay.cpp +++ b/src/adlmidi_midiplay.cpp @@ -727,6 +727,7 @@ MIDIplay::MIDIplay(unsigned long sampleRate): //m_setup.SkipForward = 0; m_setup.loopingIsEnabled = false; m_setup.ScaleModulators = -1; + m_setup.fullRangeBrightnessCC74 = false; m_setup.delay = 0.0; m_setup.carry = 0.0; m_setup.tick_skip_samples_delay = 0; @@ -1544,6 +1545,15 @@ void MIDIplay::NoteUpdate(uint16_t MidCh, bool is_percussion = (MidCh == 9) || Ch[MidCh].is_xg_percussion; uint8_t brightness = is_percussion ? 127 : Ch[MidCh].brightness; + if(!m_setup.fullRangeBrightnessCC74) + { + // Simulate post-High-Pass filter result which affects sounding by half level only + if(brightness >= 64) + brightness = 127; + else + brightness *= 2; + } + switch(opl.m_volumeScale) { case OPL3::VOLUME_Generic: |