如何解释 MIDI 文件分析的参数值,尤其是“midi.NoteOnEvent”的“数据”字段?

2024-03-20

我正在尝试使用工具包分析 MIDI 文件python-midi for python (链接到存储库 https://github.com/vishnubob/python-midi).

基本上,我的问题是关于数据的解释我刚提取出来。

这是数据:

mididump.py HHOP-Drums.mid 
midi.Pattern(format=0, resolution=96, tracks=\
[midi.Track(\
  [midi.TrackNameEvent(tick=0, text='HHOP-Drums\x00', data=[72, 72, 79, 80, 45, 68, 114, 117, 109, 115, 0]),
   midi.TimeSignatureEvent(tick=0, data=[4, 2, 36, 8]),
   midi.NoteOnEvent(tick=0, channel=0, data=[60, 125]),
   midi.NoteOnEvent(tick=0, channel=0, data=[71, 110]),
   midi.NoteOffEvent(tick=24, channel=0, data=[60, 0]),
   midi.NoteOffEvent(tick=0, channel=0, data=[71, 0]),
   (...)
   midi.NoteOffEvent(tick=12, channel=0, data=[71, 0]),
   midi.NoteOffEvent(tick=0, channel=0, data=[72, 0]),
   midi.NoteOnEvent(tick=0, channel=0, data=[72, 110]),
   midi.NoteOffEvent(tick=24, channel=0, data=[72, 0]),
   midi.EndOfTrackEvent(tick=0, data=[])])])

(我省略了大部分 midi.NoteOn/OffEvent 以缩短此问题中嵌入的代码。 此处提供了对该 MIDI 轨道的完整分析:http://pastebin.com/5emVhJWb http://pastebin.com/5emVhJWb.)

  1. 我不知道 a 有什么作用data现场midi.TrackNameEvent代表。
  2. Secondly, a data field of midi.NoteOn/OffEvent is quite obscure. According to the documentation of the python-midi repo:

    NoteOnEvent 捕获音符的开始,就像钢琴演奏者按下钢琴键一样。刻度是该事件发生的时间,音高是按下的琴键的音符值,力度表示按下琴键的力度。

    NoteOffEvent 捕获音符的结尾,就像钢琴演奏者将手指从按下的钢琴琴键上移开一样。再说一次,滴答声是该事件发生的时间,音高是释放的音符,速度与现实世界没有类比,通常被忽略。速度为零的 NoteOnEvents 与 NoteOffEvents 等效。

所以,很容易猜测,如果midi.NoteOn/OffEvent data字段,我们可以这样解释:midi.NoteOnEvent(tick=0, channel=0, data=[note_number, velocity]).

这是棘手的部分:在分析的循环中分配给 C1 的底鼓。根据MIDI 标准的解释 http://faydoc.tripod.com/formats/mid.htmC1 的音符编号是 12。但是,我们可以在分析的输出中看到,底鼓的音符编号是 71。

为什么会这样呢?


注意:此外,将此分析结果编码回 MIDI 后,底鼓似乎在 Logic(OS X 的音乐软件)中的 C1 上播放。


  1. The data领域的TrackNameEventtext,只是不尝试解码它。

  2. 对于 MIDI 来说,音符编号是唯一重要的。 您想要如何标记它(“C1”、“底鼓”或“71”)并不重要,并且在不同的程序中可能会有所不同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何解释 MIDI 文件分析的参数值,尤其是“midi.NoteOnEvent”的“数据”字段? 的相关文章

  • 如何使用curl将文件上传到Atlassian Confluence页面

    我正在尝试按照远程 API 文档中给出的指南将 xls 文件上传到 Confluence wiki 页面 https developer atlassian com confdev confluence server rest api co
  • 静态文件配置不正确

    我已经在 Heroku 上部署了简单的博客应用程序 它运行在Django 1 8 4 我在静态文件方面遇到了一些问题 当打开我的应用程序时 我看到Application Error页面 所以我尝试调试它并发现当我提交到 Heroku 时它无
  • 无法在 mysql 表中的值中使用破折号(-)[重复]

    这个问题在这里已经有答案了 我一直在尝试从 python 将数据插入 MYSQL 表 我的sql表中的字段是id token start time end time和no of trans 我想存储使用生成的令牌uuid4在令牌栏中 但由于
  • 在 Python 3 中动态导入模块的问题

    我遇到的情况是 在我的 Python 3 项目中 在运行时必须包含某些模块 我在用着importlib import module为了这 第二次更新 我确实找到了一种方法来做一些接近我想要的事情 一些额外的代码可能会使我的一些链接稍微偏离一
  • 将 matplotlib png 转换为 base64 以在 html 模板中查看

    背景 你好 我正在尝试制作一个简单的网络应用程序 按照教程计算阻尼振动方程 并将结果的 png 返回到 html 页面 然后将其转换为 Base64 字符串 Problem 该应用程序运行正常 只是在计算结果时返回损坏的图像图标 可能是因为
  • 对图像使用 Pixellib 自定义训练时出现 input_image 元形状错误

    我正在使用 Pixellib 来训练自定义图像实例分割 我创建了一个数据集 可以在下面的链接中看到 数据集 https drive google com drive folders 1MjpDNZtzGRNxEtCDcTmrjUuB1ics
  • 理解@property装饰器和继承[重复]

    这个问题在这里已经有答案了 这里是 Python 3 以防万一它很重要 我试图正确理解如何实现继承 property使用 我已经搜索了 StackOverflow 并阅读了大约 20 个类似的问题 但无济于事 因为他们试图解决的问题略有不同
  • 当 DetailView 遇到时更新模型字段。 [姜戈]

    我有一个类似的 DetailViewviews py views py class CustomView DetailView context object name content model models AppModel templa
  • 在ansible中合并字典

    我目前正在构建一个使用 ansible 安装 PHP 的角色 并且在合并字典时遇到一些困难 我尝试了多种方法来做到这一点 但我无法让它像我想要的那样工作 A vars file my default values key value my
  • 如何使用 python 操作系统更改驱动器?

    我正在尝试更改当前目录C to Y 我试过 import os os chdir Y 但我不断收到错误消息 提示无法找到驱动器 本质上我正在寻找相当于 cd d cmd 中的命令 你确定吗Y 确实是有效的驱动器号吗 Try os chdir
  • Floyd-Warshall 算法:获取最短路径

    假设一个图由一个表示n x n维数邻接矩阵 我知道如何获得所有对的最短路径矩阵 但我想知道有没有办法追踪所有最短路径 Blow是python代码实现 v len graph for k in range 0 v for i in range
  • 如何从数据框的单元格中获取值?

    我构建了一个条件 从我的数据框中提取一行 d2 df df l ext l ext df item item df wn wn df wd 1 现在我想从特定列中获取一个值 val d2 col name 但结果 我得到一个包含一行和一列
  • 如何在matplotlib中基于x轴更改直方图颜色

    我有根据 pandas 数据框计算出的直方图 我想根据 x 轴值更改颜色 例如 If the value is 0 the color should be green If the value is gt 0 the color shoul
  • 如何在 Python 中执行相当于预处理器指令的操作?

    有没有办法在 Python 中执行以下预处理器指令 if DEBUG lt do some code gt else lt do some other code gt endif There s debug 这是编译器预处理的特殊值 if
  • Flask SQLAlchemy 与 MyPy - 模型类型错误

    我遇到了以下组合问题flask sqlalchemy and mypy 当我定义一个新的 ORM 对象时 例如 class Foo db Model pass where db是使用创建的数据库SQL炼金术应用于flask app mypy
  • 日期时间的自定义 JavaScriptConverter?

    我有一个对象 它有一个 DateTime 属性 我想通过 AJAX JSON 将该对象从 ashx 处理程序传递回网页 我不想使用第 3 方控件 当我这样做时 new JavaScriptSerializer Serialize DateT
  • 从 csv 中读取 pandas 数据帧,以非固定标头开始

    我有许多数据文件是由我的实验室中使用的一些相当黑客的脚本生成的 该脚本非常有趣 因为它在标头之前附加的行数因文件而异 尽管它们具有相同的格式并具有相同的标头 我正在编写一个批处理来将所有这些文件处理为数据帧 如果我不知道位置 如何让 pan
  • 如何使用 Python 将我的 GoPro Hero 4 相机直播连接到 openCV?

    我在尝试从我的新 GoPro Hero 4 相机捕获实时流并使用 openCV 对其进行一些图像处理时遇到麻烦 这是我的试用 创建的窗口上没有显示任何内容 import cv2 import argparse import time imp
  • 在Python中从列表中获取n个项目组的惯用方法? [复制]

    这个问题在这里已经有答案了 给定一个列表 A 1 2 3 4 5 6 是否有任何惯用的 Pythonic 方式来迭代它 就好像它是 B 1 2 3 4 5 6 除了索引之外 这感觉像是 C 的遗留物 for a1 a2 in A i A i
  • Shap - 颜色条不显示在摘要图中

    显示summary plot时 不显示颜色条 shap summary plot shap values X train 我尝试过改变plot size 当绘图较高时 会出现颜色条 但它非常小 看起来不应该 shap summary plo

随机推荐