I ran into a similar problem with an RME MadiFace USB. Here is what I have found:
[For simplicity, I’m using Lo to group 44.1 and 48KHz, and Hi to group 88.2 and 96K]
When RME’s SampleRate is changed between a “Lo” group and “Hi” group - for example from 44.1 to 96, or from 48 to 96, 44.1 to 88.2, etc… the ASIO driver sends the latencies changed callback (kAsioLatenciesChanged).
When RME’s SampleRate is changed within the Lo or Hi groups (44.1 -> 48, or 96 -> 88.2, etc.) the RME driver does not send any callbacks, neither through the asioMessage callaback, nor though the sampleRateDidChange callback).
What’s interesting is that Cubase 7 is able to detect this change even when I see no callbacks from the RME driver.
On the other hand, other DAWs such as Reaper are not able to detect this change either.
I’m suspecting that Cubase is doing one of two things to trigger their SR change handling logic:
- Polling the getCurrentSampleRate() from a timer.
- Calculating the actual SampleRate (based on the OS timer) when it gets the bufferSwitch/bufferSwitchTimeInfo callbacks.