如何在不轮询的情况下从 ALSA MIDI 队列中获取时间事件?

How to get time events from an ALSA MIDI queue without polling?

ALSA MIDI 音序器 API 定义 snd_seq_queue_status_get_tick_time,它允许获取 运行 MIDI 队列的基于当前速度的时间。

我可以定期轮询此信息,但感觉从队列接收时间事件会更清晰,无论是否基于速度,基于回调都一样好。

有没有办法在没有轮询的情况下定期通知带有 ALSA 音序器的 MIDI 队列的时间事件?

— 编辑 —

当我说“轮询”时,我的意思是使用 SIGALRM 信号处理程序和一个分辨率足够小(1/50 秒)的计时器。

如果您想在特定时间收到通知,请安排一个事件在那个时间发送给您自己。

例如,arecordmidi 这样做是为了同步其节拍器模式的播放。