我一直在尝试使用 C 中的数学波函数创建声音。我项目的下一步是从 MIDI 键盘控制器获取用户输入,以便将波调制到不同的音高。
我的第一个想法是这将相对简单,并且 Linux 作为 Linux 将允许我像读取任何其他文件一样从我的设备读取原始数据流。
然而,绝大多数研究建议我为 MIDI 控制器编写设备驱动程序。一般的想法是,即使设备文件可能存在,当我的应用程序调用 read() 和 write() 等函数时,内核也不知道要执行哪些系统调用。
尽管有这些警告,我还是做了一个实验。我插入了 MIDI 控制器并 cat'ed "/dev/midi1" 设备文件。出现了稳定的空字符流,当我按下 MIDI 控制器上的一个键时,出现了几个字节,这些字节对应于 MIDI 设备应该输出的预期消息块。MIDI 协议信息
所以我的问题是:
为什么 cat'ed 流会这样?
这是否意味着我的系统上已经安装了即插即用设备驱动程序?
我应该继续编写设备驱动程序,还是可以像文件一样阅读它?
非常感谢您在这些领域分享您的智慧。