mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-17 20:26:30 +01:00
Increase coreMIDI robustness, do not drop late events
see also https://discourse.ardour.org/t/ardour-not-getting-all-messages-from-midi-keyboard/107618/13
This commit is contained in:
parent
451fb3e761
commit
7e5fe695d0
1 changed files with 6 additions and 2 deletions
|
|
@ -269,7 +269,11 @@ CoreMidiIo::recv_event (uint32_t port, double cycle_time_us, uint64_t &time, uin
|
||||||
if ((*it)->timeStamp < end) {
|
if ((*it)->timeStamp < end) {
|
||||||
if ((*it)->timeStamp < start) {
|
if ((*it)->timeStamp < start) {
|
||||||
uint64_t dt = AudioConvertHostTimeToNanos(start - (*it)->timeStamp);
|
uint64_t dt = AudioConvertHostTimeToNanos(start - (*it)->timeStamp);
|
||||||
if (dt > 1e7 && (*it)->timeStamp != 0) { // 10ms slack and a timestamp is given
|
/* note: it used to be 10ms (insert handwavy explanation about percievable latency)
|
||||||
|
* turns out some midi-keyboads connected via bluetooth can be late by as much as 50ms
|
||||||
|
* https://discourse.ardour.org/t/ardour-not-getting-all-messages-from-midi-keyboard/107618/13?
|
||||||
|
*/
|
||||||
|
if (dt > 6e7 && (*it)->timeStamp != 0) { // 60ms slack and a timestamp is given
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
printf("Dropped Stale Midi Event. dt:%.2fms\n", dt * 1e-6);
|
printf("Dropped Stale Midi Event. dt:%.2fms\n", dt * 1e-6);
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -301,7 +305,7 @@ CoreMidiIo::recv_event (uint32_t port, double cycle_time_us, uint64_t &time, uin
|
||||||
} else {
|
} else {
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
uint64_t dt = AudioConvertHostTimeToNanos((*it)->timeStamp - end);
|
uint64_t dt = AudioConvertHostTimeToNanos((*it)->timeStamp - end);
|
||||||
printf("Ignored future Midi Event. dt:%.2fms\n", dt * 1e-6);
|
printf("Postponed future Midi Event. dt:%.2fms\n", dt * 1e-6);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
++it;
|
++it;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue