diff options
author | Vitaly Novichkov <admin@wohlnet.ru> | 2018-06-04 02:25:46 +0300 |
---|---|---|
committer | Vitaly Novichkov <admin@wohlnet.ru> | 2018-06-04 02:25:46 +0300 |
commit | 4c9532c688bf535a6327c31978d66b3a3ef27e51 (patch) | |
tree | 636362f306596e9eaf874e7a050efcf195c60cbd | |
parent | 6fd0fdaae724cc584755b2a797999f7e3a1bc28b (diff) | |
parent | de2bd5ff8f8ffc3002df396b5e2022d54b75b16f (diff) | |
download | libADLMIDI-4c9532c688bf535a6327c31978d66b3a3ef27e51.tar.gz libADLMIDI-4c9532c688bf535a6327c31978d66b3a3ef27e51.tar.bz2 libADLMIDI-4c9532c688bf535a6327c31978d66b3a3ef27e51.zip |
Merge branch 'master' of github.com:Wohlstand/libADLMIDI
-rw-r--r-- | src/adlmidi.cpp | 2 | ||||
-rw-r--r-- | src/chips/nuked_opl3.cpp | 12 | ||||
-rw-r--r-- | src/chips/nuked_opl3_v174.cpp | 12 |
3 files changed, 18 insertions, 8 deletions
diff --git a/src/adlmidi.cpp b/src/adlmidi.cpp index e90680a..f7099e1 100644 --- a/src/adlmidi.cpp +++ b/src/adlmidi.cpp @@ -373,6 +373,8 @@ ADLMIDI_EXPORT void adl_setLogarithmicVolumes(struct ADL_MIDIPlayer *device, int play->m_setup.LogarithmicVolumes = (logvol != 0); if(play->m_setup.LogarithmicVolumes) play->opl.ChangeVolumeRangesModel(ADLMIDI_VolumeModel_NativeOPL3); + else + play->opl.ChangeVolumeRangesModel(static_cast<ADLMIDI_VolumeModels>(play->opl.m_volumeScale)); } ADLMIDI_EXPORT void adl_setVolumeRangeModel(struct ADL_MIDIPlayer *device, int volumeModel) diff --git a/src/chips/nuked_opl3.cpp b/src/chips/nuked_opl3.cpp index fc6363d..6490f7f 100644 --- a/src/chips/nuked_opl3.cpp +++ b/src/chips/nuked_opl3.cpp @@ -73,10 +73,14 @@ int NukedOPL3::generateAndMix(int16_t *output, size_t frames) #if defined(ADLMIDI_ENABLE_HQ_RESAMPLER) for(size_t i = 0; i < frames; ++i) { - int16_t frame[2]; - generateResampledHq(frame); - output[0] += (int32_t)frame[0]; - output[1] += (int32_t)frame[1]; + int32_t frame[2]; + generateResampledHq32(frame); + for (unsigned c = 0; c < 2; ++c) { + int32_t temp = (int32_t)output[c] + frame[c]; + temp = (temp > -32768) ? temp : -32768; + temp = (temp < 32767) ? temp : 32767; + output[c] = temp; + } output += 2; } #else diff --git a/src/chips/nuked_opl3_v174.cpp b/src/chips/nuked_opl3_v174.cpp index 675e104..d8e8ef8 100644 --- a/src/chips/nuked_opl3_v174.cpp +++ b/src/chips/nuked_opl3_v174.cpp @@ -73,10 +73,14 @@ int NukedOPL3v174::generateAndMix(int16_t *output, size_t frames) #if defined(ADLMIDI_ENABLE_HQ_RESAMPLER) for(size_t i = 0; i < frames; ++i) { - int16_t frame[2]; - generateResampledHq(frame); - output[0] += (int32_t)frame[0]; - output[1] += (int32_t)frame[1]; + int32_t frame[2]; + generateResampledHq32(frame); + for (unsigned c = 0; c < 2; ++c) { + int32_t temp = (int32_t)output[c] + frame[c]; + temp = (temp > -32768) ? temp : -32768; + temp = (temp < 32767) ? temp : 32767; + output[c] = temp; + } output += 2; } #else |