Neatbo.

MIDI 音符秒段查询

根据本地 SMF 0/1 的完整速度图将 tick 转为音符秒数,按秒段、轨道和通道查询,并保存全部原始事件与音符。

浏览器本地处理输入SMF 0/1 PPQN .mid / .midi输出完整时间轴 JSON / 全部音符 CSV单个文件最多 5 MiB · 最多 1 个
  1. 1添加输入
  2. 2调整设置
  3. 3获取结果

工具输入和文件在当前浏览器处理,不会上传。

输入内容

切换工具时在当前标签页临时保留输入。刷新或关闭后清除,较大的结果可能需要重新生成。

⌘ / Ctrl + Enter 运行

或将文件拖到这里

文件留在当前设备,原始文件不会被覆盖。

.mid · .midi

单个文件最多 5 MiB · 最多 1 个

    处理选项

    先填写标记为必填的选项,其余可保留默认值。

    选择与秒段相交的音符区间,起始端点包含在内。

    结束端点不包含在内;填写时须大于起始秒。

    填写存在的轨道编号,轨道不同于 MIDI 通道。

    范围 0–15;其他软件的通道标签 1–16 对应这里减一。

    正在准备处理工具…

    开始之前

    找出导出的 MIDI 在指定秒段内有哪些音符。变速会影响之后所有 tick,因此先积分完整全局速度图,再应用筛选。

    如何使用

    1. 选择原始 SMF 0/1 PPQN MIDI 文件。
    2. 按需输入起止秒、轨道或通道,留空保留该项全部范围。
    3. 查看选中音符区间与警告,再保存完整 JSON 和全部音符 CSV。

    支持范围与限制

    一次选择一个不超过 5 MiB 的 .mid 或 .midi;接受正 PPQN 分辨率的 SMF 0/1,最多 64 轨、50,000 个事件、25,000 个音符。单轨累计 tick 最多 4,294,967,295。拒绝类型 2、SMPTE/drop-frame 分辨率、SYX 转储、截断块、无效 running status 或缺少最终轨道结束事件。

    使用全部变速事件构建全局 tick→秒图,默认每四分音符 500,000 微秒。不同轨道同一 tick 声明不同速度时整次拒绝;相同速度合并。同一轨道同一 tick 的多次变速按原始顺序采用最后一个。

    秒段采用半开区间 [起始, 结束)。按键释放区间与秒段相交即选中,零时长音符按起点判断。起止秒、轨道和通道字段留空时不施加该项约束。轨道与通道从 0 开始,轨道必须存在。筛选不删除下载中的事件,也不复制音符:每个完整音符仅出现一次并带 selected 标记。

    同轨道、通道、音高的重复开启事件按 FIFO 闭合;力度为 0 的开启事件视为关闭。无配对关闭事件产生警告且不生成音符;未闭合开启事件按所属轨道结束时刻闭合并警告。CC64 只保留事件,不延长时长。音色状态按轨道与通道区分;不合成音频、不渲染乐谱,也不推断实际声学尾音。

    完整 JSON 与 CSV 下载累计最多 24 MiB,超限时整次拒绝。表格预览前 200 个选中音符;文本和复制显示摘要及前 20 个选中音符。下载保留全部源事件、轨道统计、变速点、音符、警告详情和筛选标记。不访问 MIDI 设备或网络服务。

    操作示例

    示例输入

    选择 tempo.mid
    示例参数
    {"params":{"startSeconds":0.25,"endSeconds":1,"track":1,"channel":0}}

    示例输出

    {
      "format": 1,
      "ppqn": 480,
      "trackCount": 2,
      "eventCount": 9,
      "noteCount": 2,
      "selectedNoteCount": 1,
      "endSeconds": 2.5,
      "tempoPointCount": 2,
      "warningCount": 0,
      "query": {
        "from": 0.25,
        "to": 1,
        "track": 1,
        "channel": 0
      },
      "preview": [
        {
          "track": 1,
          "channel": 0,
          "pitch": 60,
          "velocity": 90,
          "program": 7,
          "startTick": 0,
          "startSeconds": 0,
          "endTick": 960,
          "endSeconds": 1.5,
          "endPolicy": "key-release",
          "selected": true
        }
      ]
    }

    出现问题时

    从生成端重新导出完整 SMF 0/1 PPQN 文件,解决同时刻冲突速度或畸形事件。使用存在的从 0 开始轨道/通道编号,结束秒应大于起始秒;清空筛选可查看全部音符。数量或完整输出预算超限时缩小输入。

    常见问题

    为什么 tick 乘单个速度得到的秒数不对?

    每次变速都会改变后续 tick 区间的换算。查询前会先对完整速度图积分。

    延音踏板会让音符一直延长到松开吗?

    不会。时长表示开启到关闭事件的区间,并明确处理无法配对的事件。踏板控制事件保留在完整报告中。

    CSV 只包含匹配的音符吗?

    不是。CSV 中每个音符出现一次并标有 selected true/false;页面表格只显示匹配项。

    文档与延伸阅读

    相关工具