一种易于发送和接收MIDI消息的包。

py-midi的Python项目详细描述


只需使用python3发送和接收MIDI消息。

这个程序的发布是希望它会有用,但没有任何保证。

警告:仅与python3一起使用。图书馆不能用python2。

一。目的

python3库是为了方便与任何midi设备通信而设计的。唯一的要求就是要有一个序列号 你机器上的接口。在这个接口上,您必须连接MIDI电缆才能在 机器和MIDI设备。

py midi库允许用户构建和/或读取midi消息,而不必担心在发送和/或接收之前对它们进行格式化。

MIDI(乐器数字接口)是一个标准,用于简化乐器、计算机和其他电子设备 沟通。

这个库能够处理任何类型的midi消息、16个可能的通道中的任何一个(对于通道类型消息)或任何类型的sysex消息。

有关MIDI标准的详细信息,请参见Wikipedia MIDI页面https://en.wikipedia.org/wiki/MIDI

2.安装

使用pip轻松安装软件包:

$ pip3 install py-midi

然后您可以将包导入程序:

>>>importmidi

三。开始

在程序和计算机的串行端口之间创建接口。通过给出串行端口的路径来实例化。示例:

>>>frommidiimportMidiConnector>>>conn=MidiConnector('/dev/serial0')# path to use on RaspberryPi 3

如果不希望^ {tt1} $方法永远不被阻塞,则使用关键字参数^ {STR 1 } $TimeOuts设置阻塞的最大持续时间(秒):

>>>conn=MidiConnector('/dev/serial0',timeout=5)

timeoutkwarg只用于读取,不用于写入。

要发送MIDI消息,首先需要实例化MidiMessageType。有8种不同类型的MIDI消息。它们在这里,有实例化参数:

  • NoteOff(note_number, velocity)
  • NoteOn(note_number, velocity)
  • PolyphonicAftertouch(note_number, pressure)
  • ChannelAftertouch(pressure)
  • ControlChange(control_number, value)
  • ProgramChange(program_number)
  • PitchWheel(lsbyte, msbyte)
  • SysEx(manufacturer_id, data1, data2..., dataN)

注释 除了SysExdata(0到255)或ProgramChangenumber(1到128),所有实例参数都必须包含在[0,127]中。

示例:创建类型ControlChange

>>>frommidiimportControlChange>>>cc=ControlChange(100,127)

现在构建完整的消息,提供一个频道:

>>>frommidiimportMessage>>>msg=Message(cc,channel=1)

您可以直接访问邮件的属性:

>>>msg.control_number100>>>msg.value127

使用接口将消息发送到MIDI输出:

>>>conn.write(msg)# returns the number of bytes sent3

要读取通过midi-in接收的消息,请使用方法read(),如下所示:(此处,我们)

>>>msg=conn.read()# read on ANY channel by default>>># Pretend to receive a ProgramChange message, on channel 2>>>msgMessage(ProgramChange(35),2)>>>msg.channel2>>>msg.typeProgramChange(35)>>>msg.program_number35

默认情况下,连接器的read()方法以omni模式读取。要指定频道,请添加频道号作为参数:

>>>msg=conn.read(8)# read only on channel 8, ignore the rest

根据midi标准,有16个频道可以读取,编号从1到16。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在ArrayList中比较数字   java在Kotlin中使异步调用同步   让“Scala编程”junit示例在IntelliJ中工作的java问题   java Servlet侦听器未在ContextListener中设置属性   将Microsoft SQL Server数据库连接到我的Java项目   加载资源时出现java“需要注册工厂”异常   java如何使用POI检查excel中的重复记录?   java如何更改机器生成的代码   java如何确保重写的方法是同步的   用Spring编写Hibernate时的java XML奥秘   java管理mysql数据库中存储的用户权限   java如何运行。来自Javascript的jar方法   java我想在Web应用程序中进行身份验证&对桌面应用程序使用相同的凭据。我该怎么做?