使用 Python 计算接收到的 Midi 输入数

Count number of Midi inputs received using Python

我正在使用 Mido (https://mido.readthedocs.io/en/latest/) 在 Python 中接收 Midi 消息。 我希望能够记录每次有新输入时收到的消息数。

问题:

如何将所有输入包装在一个列表中?

然后如何将新的输入项添加到列表中?

随着该列表不断变化,我如何计算该列表中的项目数?

class MyThread(threading.Thread):
def run(self):
    for msg in inport:
        print msg       
m = MyThread()
m.start()

这会产生如下输出:

control_change channel=0 control=16 value=1 time=0
control_change channel=0 control=16 value=2 time=0
control_change channel=0 control=16 value=3 time=0
control_change channel=0 control=16 value=4 time=0
control_change channel=0 control=16 value=5 time=0
control_change channel=0 control=16 value=6 time=0
control_change channel=0 control=16 value=7 time=0

您只需修改线程 class 即可对 inport 列表进行操作,如下所示:

class MyThread(threading.Thread):
    inport = []

    def add(ele):
        inport.append(ele)
    def count(): 
        return len(inport)
    def run(self):
        for msg in self.inport:
            print msg       
    m = MyThread()
    m.start() 

如果您是列表中的 运行 个多线程,您可以使用像 Queue 这样的同步结构。了解更多 here