to get the latest pitch wheel position when a new note is started, there is the currentPitchWheelPosition argument in the SynthesizerVoice::startNote() method. This is fine to initialise the pitch of the new voice.
But what about the mod wheel? The controllerMoved() method is only called when the voice is active. Hence, if the mod wheel is moved up all active voices will follow, but inactive voices are not notified. When I press a new key, only previously active voices will have the correct mod wheel position.
Any reason why this is the default behaviour in the Synthesizer class? I think I can easily work around this by creating my own class and overwrite the Synthesizer::handleController() method. But maybe there is a smarter solution?