diff options
Diffstat (limited to 'src/adlmidi_midiplay.cpp')
-rw-r--r-- | src/adlmidi_midiplay.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp index cebea6a..f96243e 100644 --- a/src/adlmidi_midiplay.cpp +++ b/src/adlmidi_midiplay.cpp @@ -1310,10 +1310,11 @@ void MIDIplay::noteUpdate(size_t midCh, // Don't bend a sustained note if(d.is_end() || (d->value.sustained == AdlChannel::LocationData::Sustain_None)) { - double midibend = m_midiChannels[midCh].bend * m_midiChannels[midCh].bendsense; + MIDIchannel &chan = m_midiChannels[midCh]; + double midibend = chan.bend * chan.bendsense; double bend = midibend + ins.ains.finetune; double phase = 0.0; - uint8_t vibrato = std::max(m_midiChannels[midCh].vibrato, m_midiChannels[midCh].aftertouch); + uint8_t vibrato = std::max(chan.vibrato, chan.aftertouch); vibrato = std::max(vibrato, info.vibrato); if((ains.flags & adlinsdata::Flag_Pseudo4op) && ins.pseudo4op) @@ -1321,8 +1322,8 @@ void MIDIplay::noteUpdate(size_t midCh, phase = ains.voice2_fine_tune;//0.125; // Detune the note slightly (this is what Doom does) } - if(vibrato && (d.is_end() || d->value.vibdelay_us >= m_midiChannels[midCh].vibdelay_us)) - bend += static_cast<double>(vibrato) * m_midiChannels[midCh].vibdepth * std::sin(m_midiChannels[midCh].vibpos); + if(vibrato && (d.is_end() || d->value.vibdelay_us >= chan.vibdelay_us)) + bend += static_cast<double>(vibrato) * chan.vibdepth * std::sin(chan.vibpos); #define BEND_COEFFICIENT 172.4387 synth.noteOn(c, c_slave, BEND_COEFFICIENT * std::exp(0.057762265 * (currentTone + bend + phase))); |