如何在不轮询的情况下从 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 这样做是为了同步其节拍器模式的播放。
ALSA MIDI 音序器 API 定义 snd_seq_queue_status_get_tick_time
,它允许获取 运行 MIDI 队列的基于当前速度的时间。
我可以定期轮询此信息,但感觉从队列接收时间事件会更清晰,无论是否基于速度,基于回调都一样好。
有没有办法在没有轮询的情况下定期通知带有 ALSA 音序器的 MIDI 队列的时间事件?
— 编辑 —
当我说“轮询”时,我的意思是使用 SIGALRM
信号处理程序和一个分辨率足够小(1/50 秒)的计时器。
如果您想在特定时间收到通知,请安排一个事件在那个时间发送给您自己。
例如,arecordmidi 这样做是为了同步其节拍器模式的播放。