仙剑奇侠传吧 关注:1,005,834贴子:26,317,605

!!RIX 音乐格式分离乐器和乐谱成功!? 100% 重置mid指日可待

只看楼主收藏回复

https://www.bilibili.com/video/bv1VF411Y7WQ
此为快速烤出的视频!
仙剑1的音乐用了opl2 的特殊的打击乐模式,OpenMPT 不支持,就找了轩辕剑的代替测试了理论,成功!
众所周知,仙剑95版中有些音乐并没有midi版,所以98版中就少了那些音乐(好像是045?),现将rix格式打回原形(即.rol 和 .ins 文件)即可实现100%重置!!
不用看发帖时间! 现在是 12 20 年!(小尾数储存)
下面为图片

左边是轩辕剑的pattern(即.rol 的等效替代) 右边是4号乐器的参数,sbi 文件和.ins 文件等效。

这个是使用与仙剑95相同特殊打击乐模式的 大富翁2 的rix 转出的pattern,因为OpenMPT不支持,我现在还在抓脑袋,你可以明显看出并不是YM3812的常规9通道,而是12个通道。


IP属地:贵州1楼2021-11-08 16:56回复
    IP属地:贵州2楼2021-11-08 17:27
    回复
      2025-06-12 06:25:19
      广告
      先来理一理一些基本事实吧。
      Rix 格式的音乐从百度百科上看来是使用小尾数法储存的388h 指令,这点可以从http://www.doczj.com/doc/3c9e9f18a8114431b90dd891-2.html 得到印证。 我查了许多资料,其中有一篇文章提到“只需将rix文件写入388h即可发声”,但现在找不到来源,姑且认为这就是软星播放的方式。
      388h 是IBM 兼容机上的一个常用声卡Adilib card的默认端口,这个声卡使用的是YM3812,当时雅马哈较低端的2op FM 合成器,大部分软件习惯只交代388h,实际上389h也是需要以达成控制YM3812。此后来者 创新 通过直接克隆电路的方式兼容了adilib card,并且加入了数字音频播放、手柄接口等功能来快速取代了adilib card 使得声霸卡及其标准迅速统治了IBM 兼容机的声卡市场,这就是为什么会在YM3812 上 同时出现 .rol + .ins 和 .mid + .sbi 格式的原因,是两个统治者的遗产。
      因为早期计算机资源十分有限,不可能像街机那样直接将YM3812 链接在
      ISA 总线上,那样既不可靠(ISA总线速度太快,噪音大),又占用大量io线,且无法满足ISA 地址解码等必须控制,所以adilib 在YM3812 和ISA 总线间加入地址解码电路,使得adilib card 只监听ISA 端口 388 ,当程序向388h 写入一个由adilib硬件决定的指令集时,那些74原件就会解码并转发数据到YM3812 的寄存器。
      (歪路1:这个指令集也并不是x86 系的机器码,我用IDA 看过了……)
      因此,必须理解一个重要的点,RIX文件纪录的通过388h 操作 YM3812 寄存器的指令。现流行的解析OPL音乐的方式,大多是直接看YM3812的寄存器,因为你可以直接到yamaha去下载他们的寄存器参数,为此,必须要先对RIX文件进行第一步转化,也就是要将其从寄存器操作,变成寄存器数据。
      晕了吗?我反正晕了!
      那要怎么完成这个任务呢? 如果是在80-90 年代的话,我会找个逻辑分析仪连接在 74HC 系列原件和YM3812 间看总线和地址线的变化,90年代的话OPL3(ym262)可以直接实时读取寄存器参数,那现在呢?
      DosBox 横空出世!
      将.rix 从左变为.dro (即388h 指令变为寄存器的 1000hz dump)

      此时就可以对照着雅马哈的数据表一个音符一个音符的重构了…………或者是吗?
      这样虽然可行,但不止工作量大,出错的可能性也极端的高。基本不实用。
      为此我暂停许久…………直到近日我在“科幻 学习 上进 网络”途中,看到了国外论坛对另外一种格式 .imf (我 被 开)
      https://keenwiki.shikadi.net/wiki/IMF ID Software Music Format. 的探讨 https://www.lemmingsforums.net/index.php?topic=1840.0
      我才大雾!!!!
      这个格式和rix 大同小异,只不过 rix是直接dump,imf给其修饰了下,但imf已经有工具直接识别寄存器参数,然后比较乐器参数,导出乐谱为 .mid
      而且支持.dro!!!???
      赶紧试了一下!

      henhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh?
      看起来DosBox 的DRO 还分版本?
      没关系,imf维基上还有一个.dro2imf 转化工具。(左为.imf 右为.dro)

      精彩刺激的找你M开始了!看看那里不同,指向大屏幕如果你发现了不同。
      然后?!
      ----------------------------------------------
      以下为日志
      -----------------------------------------------
      PS C:\Users\liu\Desktop\rix\dro2midi-1.5-win32> .\dro2midi.exe .\49.9.imf 48.952.mid
      Input file appears to be in IMF type-0 format.
      File extension is .imf - using 560Hz speed (rename to .wlf if this is too slow)
      Using conversion constant of 49716.0
      // Ch01 <- Inst#067 @ line 127: Marimba [13]
      ** New instrument in use on channel 2
      ** Copy this into inst.txt to assign it a MIDI patch:
      NO 11-31/2D-00/C8-F5/2F-F5/0C/00-00: patch=?
      >> Using similar match: Inst#270 @ line 384: Electric Guitar (muted) [29]
      // Ch02 <- Inst#270 @ line 384: Electric Guitar (muted) [29]
      ** New instrument in use on channel 7
      ** Copy this into inst.txt to assign it a MIDI patch:
      NO 4E-48/0F-06/20-2F/F1-05/02/00-00: patch=?
      >> Using similar match: Inst#055 @ line 110: Oboe [69]
      // Ch07 <- Inst#055 @ line 110: Oboe [69]
      (此处省略超过5k字)
      // Ch01 <- Inst#018 @ line 66: Gunshot [128]
      // Ch01 <- Inst#067 @ line 127: Marimba [13]
      // Ch01 <- Inst#018 @ line 66: Gunshot [128]
      // Ch01 <- Inst#067 @ line 127: Marimba [13]
      // Ch01 <- Inst#018 @ line 66: Gunshot [128]
      Conversion complete. Wrote 48.952.mid
      Total pitchbent notes: 1179
      Total notes: 1179
      Notes still active at end of song: 0
      --------------------------------------------------------------
      日志结束
      ----------------------------------------------------------------
      此时得到了一个 48.952.mid 的文件,这里面纪录了音乐的乐谱。
      等等!
      ** Copy this into inst.txt to assign it a MIDI patch:
      NO 11-31/2D-00/C8-F5/2F-F5/0C/00-00: patch=?
      >> Using similar match: Inst#270 @ line 384: Electric Guitar (muted) [29]
      // Ch02 <- Inst#270 @ line 384: Electric Guitar (muted) [29]
      这是什么玩意?

      也就是说 NO 11-31/2D-00/C8-F5/2F-F5/0C/00-00 这是YM3812 的乐器参数
      此处省略几千字关于 .ins 和 .sbi 乐器格式的研究,感兴趣我再发吧。结论就是
      NO 11-31/2D-00/C8-F5/2F-F5/0C/00-00 等效于 这个sbi文件(红框内是sbi文件的有效值)

      这里有个恶心的点,请注意看偏移地址46、44 45,即倒数第二行的 14 、12 13 列,其和软件列出的 /0C/00-00 刚好是相反的。
      还有些乐器,软件已知是和GM 中那些乐器相近音色的就会直接映射,如下。
      // Ch01 <- Inst#067 @ line 127: Marimba [13]
      没关系,到其目录下找inst.txt 文件 中的第127 行

      等效于 sbi 文件中有效值部分 32 11 44 00 F8 F5 FF 7F 00 00 0E
      如此就可以得到.rix 文件中包含的 .ins 文件
      用OpenMPT 整理整理即可得到
      链接: https://pan.baidu.com/s/1SXBejhbR6w6TfZDQYvW7kw 提取码: wjmi 复制这段内容后打开百度网盘手机App,操作更方便哦
      用OpenMPT 打开。
      这个过程中得到的铺子是接近100%完整的(有些神奇到不能再神奇的pitch bent 可能要手动调一下),乐器也是。
      不过因为OpenMPT 不支持 打击乐模式,要是碰到像仙剑那种用打击乐的还得抓脑袋一下。
      以此留存方式,望诸位多多分享,让圈内得出些更完美的“考古”结果!


      IP属地:贵州3楼2021-11-08 20:07
      回复
        三个帖子互链防吞,如果都吞的话大量回复或者私信。
        https://tieba.baidu.com/p/7604967786
        https://tieba.baidu.com/p/7604960466
        https://tieba.baidu.com/p/7604964747


        IP属地:贵州4楼2021-11-08 20:11
        回复
          技术贴顶顶


          IP属地:上海5楼2021-11-08 20:41
          收起回复
            看不懂,帮顶,感觉很强


            IP属地:北京6楼2021-11-08 20:50
            收起回复
              技术贴顶一下


              IP属地:江苏来自iPhone客户端7楼2021-11-08 21:22
              收起回复
                看不懂。但感觉好屌


                IP属地:上海8楼2021-11-08 21:27
                收起回复
                  2025-06-12 06:19:19
                  广告
                  其实我也很惊奇,相关工具在千禧年的时候就已经有了,只不过在一零年左右才成熟,结果到二零二一年才到这步。


                  IP属地:贵州9楼2021-11-08 21:42
                  回复
                    我还没拉完,继续占坑…………
                    https://www.jitashe.org/album/722010619/ 中提到
                    【换掉了哪些曲目】
                    有004/006/037/041/045/086这六首。
                    当年林坤信在制作MIDI的时候,有些RIX特有的曲目根本就没做MID,就是037《风起云涌》、041《飞沙走石》,以及045这三首,被林坤信以038《势如破竹》、040《战意昂》、以及046《兵凶战危-变奏》这三首取代。我能力有限,无法从零开始制作MID,但是用OVERTURE修改MID的本事还是有一点的,恰好037/041有网友制作的MID,我就用OVERTURE修理了一下,还原出感觉比较好的MID档案。至於045,因为没有现成的MID档案,所以我用020《兵凶战危》取代了。
                    086《酒剑仙》属於原版MID的小修改,添了一些修饰音素,无伤大雅,不过这首改版的MID不是我做的。
                    004这首主选单音乐和005差异不大,这种同质性没什麼意义。还好有人制作了《新仙剑奇侠传》的主题曲《》的MID,我就拿来直接取代了,毕竟这首音乐更能让玩友FEEL到仙剑的特质。这首《》是MUSIT POWER作曲制作的,如果没猜错的话应该和林坤信无关。
                    上述MID中,不是我做的那几首,作者已无处可考,的确是个遗憾。
                    先准备快速抓给mid出来改改,我不是音乐家,但至少应该可以听听。


                    IP属地:贵州10楼2021-11-09 17:04
                    收起回复
                      感觉好厉害,虽然并看不懂这是在干什么


                      IP属地:浙江11楼2021-11-09 17:42
                      收起回复
                        https://www.bilibili.com/video/BV1YT4y19722?pop_share=1
                        以下为文件下载链接,x.mid 为修改后,x23.77.mid 为修改前。
                        链接: https://pan.baidu.com/s/1qTIqBJO1lVk1XZAnWKU4PA 提取码: bbwf 复制这段内容后打开百度网盘手机App,操作更方便哦


                        IP属地:贵州12楼2021-11-09 18:16
                        回复
                          我参考98柔情版中的041.mid 的乐器选择,把x23.77.mid 修改为 x.mid ,如果有了解midi 的同仁还可以继续优化,下一步显然是进一步自动化转化过程,不过对于ym3812寄存器转mid的学术研究就到此终止了。
                          有问题欢迎讨论!


                          IP属地:贵州13楼2021-11-09 18:20
                          收起回复
                            先马克下


                            IP属地:新疆14楼2021-11-09 18:32
                            收起回复
                              2025-06-12 06:13:19
                              广告
                              又转一个:
                              059 历险
                              https://www.bilibili.com/video/BV1iQ4y1m7zg/
                              文件下载地址
                              链接:https://pan.baidu.com/s/1-90rw_MPu4VluKAXQ8prrw 提取码:7c2r
                              感觉林坤信做opl2 音乐的秘籍就是 把Modulation Feedback (让第一个op自调,效果就是输出更加机械化直到完全变成噪声)使劲拉…………基本上除了“类钢琴”外每个乐器都被拉满或者接近满…………比较不常见。


                              IP属地:贵州15楼2021-11-09 23:34
                              回复