The midi sustain works in a strange way, when I release the note and press sustain on my midi keyboard, it sustains.
When I let go of sustain and press down sustain again while the sound is in release, the note ramps up to the last sustain vol level.
Is this the intended sustain behaviour? For most synths I've tried the sustain seems to work only once in the entire adsr, once you release that's it. Granted, it's probably an easy fix, but is this intended?
Turned out to be pretty simple to change the behaviour, commented the below code in doEnvelope()
But, is there a use case for such the original behaviour?
// --- if sustain pedal is down, override and return
// m_dEnvelopeOutput = m_dSustainLevel;
// --- render value
m_dEnvelopeOutput = m_dReleaseOffset + m_dEnvelopeOutput*m_dReleaseCoeff;
// --- check go to next state
if(m_dEnvelopeOutput <= 0.0 || m_dReleaseTime_mSec <= 0.0)
m_dEnvelopeOutput = 0.0;
m_uState = off; // go to next state
Refer to the book regarding the way the DXSynth is different that all others in that it has no one specific Output EG connected to the DCA. The Sustain Override should only apply to EGs that are on the final output, and there is a flag you set to control this. So, when you hold the sustain pedal, only the output EG's should "stick" and the others should still be in motion. I think this may be what you are experiencing but you can double check that.
Most Users Ever Online: 152
Currently Browsing this Page:
Guest Posters: 1
Newest Members:channa, bvaccaro, HCassell, Max, Sim1, Chris Wade-Evans, Marlow, kcmixs2, DanieleR, jimjulian
Moderators: W Pirkle: 391
Administrators: Tom: 74, JD Young: 80, Will Pirkle: 0, W Pirkle: 391