从其他驱动程序获取输入流?图形输入板驱动程序,输出 Midi 以与 Web Midi API 一起使用

Posted

技术标签:

【中文标题】从其他驱动程序获取输入流?图形输入板驱动程序,输出 Midi 以与 Web Midi API 一起使用【英文标题】:get input stream from other driver? Graphical tablet driver, output Midi to use with Web Midi API 【发布时间】:2017-01-26 18:13:56 【问题描述】:

我在编写驱动程序方面的经验为 0。

在我承诺更多地了解这个主题之前,我需要询问我的想法是否可以实施(可行?),是否值得,或者是否有更好的方法。

有没有办法获取图形输入板驱动程序的输入流,使用标准记录的图形输入板协议从另一个驱动程序(操作系统视为 Midi 硬件设备)对其进行解码,将其转换为 midi 输出(最好不会丢失数据)。

这样做的唯一原因是自稳定版本 49 以来,Chrome 已经支持 Web Midi API,而 Web USB API 仍处于规范起草阶段。 见Can I Use - Midi

我想使用 Web Midi API 从我的平板电脑获取来自 Midi 驱动程序的输入,并将其转换回图形平板电脑输入流(坐标、压力深度等),显然是在 Canvas 上绘制它接近原生应用程序的经验,可以访问图形输入板和功能以利用它。

【问题讨论】:

【参考方案1】:

让 USB MIDI 驱动程序连接到设备的唯一方法是让设备将自己报告为 MIDI 设备;这将需要您修改设备的固件。 (这不是您可以通过 PC 上的软件完成的,更不用说 Web 应用了。)

可以为平板电脑编写自己的设备驱动程序,将所有事件转换为 MIDI 消息(在 Linux 中,这不需要内核驱动程序,但可以使用用户空间程序完成),但这是没有经验,什么都做不了。

【讨论】:

我首先关注的是 Windows,因为大多数用户都会使用它。 MS docs - What is a Driver? - Expanding the definition “并非所有驱动程序都直接与设备通信。对于给定的 I/O 请求(例如从设备读取数据),通常有多个驱动程序,分层在堆栈中,参与请求。” ... "堆栈中的某些驱动程序可能通过将请求从一种格式转换为另一种格式来参与。这些驱动程序不直接与设备通信;它们只是操纵请求并传递请求以及堆栈中较低的驱动程序。” 您仍然需要将驱动程序附加到标准驱动程序。这是您无法通过网络应用执行的操作。

以上是关于从其他驱动程序获取输入流?图形输入板驱动程序,输出 Midi 以与 Web Midi API 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

Java IO流

JAVA 输入输出+图形用户界面

Io流中的其他流

Java面试题|输入流和输出流的区别

输入输出流(I/O)

输入输出流(I/O)