#macos #midi #core-midi #hotplug

coremidi-hotplug-notification

为MacOS提供接收设备更新通知的简单助手

3 个版本

0.1.3 2024年1月13日
0.1.1 2024年1月1日
0.1.0 2024年1月1日

#191音频

Download history 6/week @ 2024-04-23 5/week @ 2024-04-30 3/week @ 2024-05-14 120/week @ 2024-05-21 3/week @ 2024-05-28 52/week @ 2024-06-04 25/week @ 2024-06-11 13/week @ 2024-06-18 554/week @ 2024-06-25 622/week @ 2024-07-02 208/week @ 2024-07-09 369/week @ 2024-07-16 183/week @ 2024-07-23 745/week @ 2024-07-30

1,542 每月下载量
用于 tauri-plugin-midi

MIT 许可证

11KB
116 代码行

coremidi-hotplug-notification

这个crate是一个简单的助手,提供了一种接收设备更新通知的方式。它还允许midir等crate的用户在不重新启动程序的情况下刷新设备列表,通知是可选的。

先决条件

[target.'cfg(target_os = "macos")'.dependencies]
coremidi-hotplug-notification = "0.1.1"

用法

fn main() {
    #[cfg(target_os = "macos")]
    // Register for device update notifications
    coremidi_hotplug_notification::receive_device_updates(|| {
        println!("A MIDI device was connected or disconnected.");
        // Insert your handling logic here
    }).expect("Failed to register for MIDI device updates");
}

在实际应用中,您很可能想使用一个通道来接收更新。闭包不接受任何参数,只需从那里重新读取设备列表。

如果您不感兴趣通知,只想手动刷新,您可以传递一个空闭包( || () )。

注意事项

MacOS将在第一次调用创建coremidi客户端时设置发送通知的线程。因此,如果在调用之前使用任何MIDI功能,receive_device_updates将失败。

此crate将启动一个专用线程以运行runloop,这是接收设备更新所必需的。如果您不打算运行专用线程,您可能希望直接使用coremidi crate并调用CFRunLoop::run_currentrun_in_mode

依赖项

~640KB
~13K SLoC