Neatbo.

从原始字节推导 Torrent 身份与 MIDI 时间轴

为何种子身份必须基于原始 info 字节,MIDI 秒段查询必须积分所有变速区间;辨别本地报告能够回答的任务与更强的结论。

身份字段不同于通用文件哈希

即使解析器能列出文件,元信息身份仍可能不一致。实际任务是复现种子客户端显示的身份值,计算输入为原始 bencode info 值,不是整个容器,也不是单独的 pieces 字段。

解码后再编码可能改变不规范输入。Neatbo 会先检查原始编码,再计算原始 info 字节区间的哈希;报告提供边界供独立复算。这能得到可重复的元信息身份,但不声称内容存在或符合声明哈希。

不同证据回答不同任务
问题采用的证据仍需核对
元信息身份原始 info 字节区间 SHA-1与客户端身份比较
声明文件布局长度、连接偏移与片段范围另行检查实际文件内容
某秒附近的音符完整速度积分与明确音符状态规则与生成端事件和策略比较

文件边界不一定是片段边界

示例把 3 字节文件与 5 字节文件按顺序连接,以 4 字节分片;两个文件都接触片段 0。如果让每个文件另起片段,即使单个长度看似合理,也会得到错误布局。

声明偏移和含端点片段范围帮助解释客户端显示;空文件没有片段区间。真正内容验证需要同一片段涉及的所有文件字节。本版只读取元信息,不暗示已经进行更强的内容校验。

秒数来自速度区间的累计换算

MIDI 示例跨越一次变速:前 480 tick 用 0.5 秒,后 480 tick 用 1 秒。固定倍数会把 tick 960 放在错误时刻。查询某秒附近的音符,需要完整的前序速度历史。

积分后按区间相交判断哪些按键释放区间与 [起始, 结束) 相交;这不同于只选开启事件发生在秒段内的音符。每个音符保留一次并附筛选标记,接收者可同时对照匹配项和未匹配项。

事件解释规则应与结果一同保留

MIDI 流可能包含同音高重复开启、无法配对的关闭或轨道结束仍未关闭的事件。Neatbo 明确采用 FIFO 按键释放规则并报告警告,延音踏板事件保留但不改变这些区间。

多轨同时刻的不同速度在此规则下无法构成唯一全局时间轴,因此拒绝处理。其他读者可能采用不同重叠或踏板规则;比较原始事件和策略后,再判断时长差异是否意味着损坏。

后续核对使用完整报告

预览和复制有意保持有界。完整 JSON 保留种子身份边界与所有片段哈希、MIDI 事件及警告;CSV 方便表格核对。种子疑似公式路径的前置单引号属于 CSV 导出表达,JSON 保留原始路径。

报告保持本地处理且有预算。种子布局不证明可用性或可信度,MIDI 秒数不合成声音或渲染乐谱。按实际任务所需层级,把下载报告与原始文件、接收客户端或生成端对照。

  • 可见预览结束时使用完整下载。
  • 为接收任务保留原始字节与报告策略。

参考资料

本分类工具使用说明

展开工具,查看操作步骤、可调选项和支持范围,再直接进入工作区。

Torrent 元信息身份与布局检查从本地 .torrent 的原始 info 字节计算 v1 info-hash,列出声明的文件偏移和片段范围,并保存完整布局与本地磁力链接文本。

将种子身份与客户端中的值比较,查看多个声明文件如何共享同一片段。身份取决于原始 info 字节;无需连接种子客户端或 tracker。

操作步骤

  1. 选择一个原始 BEP3 v1 .torrent。
  2. 比较 info-hash、总长度和声明布局;一个片段可以跨越两个文件。
  3. 下载完整 JSON、CSV 与磁力链接文本,再在种子客户端比较身份。

能力与限制

  • 一次选择一个不超过 4 MiB 的 .torrent。最多 5,000 个声明文件、100,000 个片段哈希、100,000 个 bencode 值,嵌套深度最多 64。根名称和每个 UTF-8 路径组件不超过 4,096 字节;计入重复根名称的完整路径累计不超过 8 MiB。长度和累计偏移须为安全整数,正片段长度最多 16 MiB。规范整数 token 最多 32 个 ASCII 字节;多文件路径在根名称之后最多 64 个组件。
  • 接受严格编码的 BEP3 v1:整数和字节长度采用规范写法,字典键按原始字节排序且唯一,名称为有效 UTF-8,length 与 files 恰有一个。片段哈希数量须匹配连接后的总长度。拒绝 v2、混合种子、文件属性和填充扩展。
  • 拒绝不安全或有歧义的路径:空组件、点号跳转、斜线或反斜线、冒号、控制字节、结尾点号或空格、重复完整路径,以及某个文件同时作为父目录的布局。只读取路径元数据,不向声明路径写入文件。
  • 完整 JSON、CSV 与磁力链接下载累计不超过 24 MiB;任一组合预算超出时整次拒绝。表格最多预览 200 个文件,每格仅显示前 240 个字符;文本与复制显示摘要和前 20 个文件。成功下载保留完整路径和全部片段哈希。CSV 疑似公式路径加前置单引号,JSON 保留原文。
  • info-hash 是原始 info 字节区间的 SHA-1,不是 pieces 字段或整个 .torrent 的哈希。片段范围从 0 开始且含首尾;空文件范围为 null。不验证文件内容、签名、可信度、tracker 可用性或 peer。磁力文本仅有 xt 和 dn 参数,不发起网络请求。
打开Torrent 元信息身份与布局检查 →
MIDI 音符秒段查询根据本地 SMF 0/1 的完整速度图将 tick 转为音符秒数,按秒段、轨道和通道查询,并保存全部原始事件与音符。

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

操作步骤

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

可调选项

起始秒(留空:不限制下界)
按需要填写

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

结束秒(留空:不限制上界)
按需要填写

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

轨道(从 0 开始,留空:全部)
按需要填写

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

通道(从 0 开始,留空:全部)
按需要填写

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

能力与限制

  • 一次选择一个不超过 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 设备或网络服务。
打开MIDI 音符秒段查询 →

本文相关工具

Torrent 元信息身份与布局检查 →从本地 .torrent 的原始 info 字节计算 v1 info-hash,列出声明的文件偏移和片段范围,并保存完整布局与本地磁力链接文本。MIDI 音符秒段查询 →根据本地 SMF 0/1 的完整速度图将 tick 转为音符秒数,按秒段、轨道和通道查询,并保存全部原始事件与音符。