diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/adlmidi.cpp | 7 | ||||
-rw-r--r-- | src/adlmidi_midiplay.cpp | 10 | ||||
-rw-r--r-- | src/adlmidi_private.hpp | 1 |
3 files changed, 18 insertions, 0 deletions
diff --git a/src/adlmidi.cpp b/src/adlmidi.cpp index 4744903..df00706 100644 --- a/src/adlmidi.cpp +++ b/src/adlmidi.cpp @@ -200,6 +200,13 @@ ADLMIDI_EXPORT void adl_setScaleModulators(ADL_MIDIPlayer *device, int smod) play->opl.ScaleModulators = play->m_setup.ScaleModulators; } +ADLMIDI_EXPORT void adl_setFullRangeBrightness(struct ADL_MIDIPlayer *device, int fr_brightness) +{ + if(!device) return; + MIDIplay *play = reinterpret_cast<MIDIplay *>(device->adl_midiPlayer); + play->m_setup.fullRangeBrightnessCC74 = fr_brightness; +} + ADLMIDI_EXPORT void adl_setLoopEnabled(ADL_MIDIPlayer *device, int loopEn) { if(!device) return; 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: diff --git a/src/adlmidi_private.hpp b/src/adlmidi_private.hpp index 312f462..8e5f060 100644 --- a/src/adlmidi_private.hpp +++ b/src/adlmidi_private.hpp @@ -792,6 +792,7 @@ public: //unsigned int SkipForward; bool loopingIsEnabled; int ScaleModulators; + bool fullRangeBrightnessCC74; double delay; double carry; |