如何在 mido 中从 Message 中获取 note 属性?

Posted

技术标签:

【中文标题】如何在 mido 中从 Message 中获取 note 属性?【英文标题】:How to grab the note attribute from Message in mido? 【发布时间】:2019-12-23 20:26:27 【问题描述】:

我正在尝试在 .mid 文件中打印出 mido 输出的每条消息中的 note 属性。现在,我的代码如下所示:

for msg in mid.tracks[1]:
    if not msg.is_meta:
        print(msg.note)

但是,在运行代码时,我得到了错误:

AttributeError: 'Message' object has no attribute 'note'

我很困惑,因为the documentation 显示相同的“msg.note”语法工作得很好。任何帮助将非常感激。

【问题讨论】:

print(mid.tracks[1]) 看看它是什么对象,因为它看起来不像是一个 msg 对象。 它只打印了 '' 1695 次。消息通常使用'print(msg)'打印,只是在我尝试抓取便条时不会。使用 type(),mid.tracks[1] 的类型为 ''。 您使用的是哪个版本的库?你有minimal reproducible example吗? 【参考方案1】:

有许多不同类型的 MIDI 信息,但并非所有信息都有音符编号。

如果你想打印出所有的笔记,你必须先检查消息类型。 如果您想打印所有消息,则不能依赖 note 字段。

【讨论】:

【参考方案2】:

试试

if not msg.is_meta:
   if msg.type == 'note_on':
      print(msg.note)

这应该只产生数字注释作为输出。

【讨论】:

以上是关于如何在 mido 中从 Message 中获取 note 属性?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 中从 json 索引计数

如何从T-SQL中的排序表中从第M行开始获取N行

如何将MIDO下的ticks_per_beat设置为一个新的MIDI文件?

在 Angular 中从 nodejs 获取 JSON

在 Python MIDI MIDO 读取/保存文件中转换时间/刻度

如何在扭曲的python中从服务器发送列表中的内容?