简易版  登录 注册

Nuked OPL3 v1.8体验和存在的问题

gaoyf1997 9/10/2019 15:43:17 #1

俄罗斯nukeykt大神于2018年3月26日正式发布了这一版本,几乎100%还原了硬件芯片的效果,该版本是基于ymf262芯片的die-shot用C++写的。下载DOSBox-ECE r4088.2 以上的版本,并在配置文件中设置oplemu=nuked即可体验。
下面说一下这款软件OPL3合成器的缺点:
1.右声道有杂音:我在vogons上下了nukeykt自己写的软件 oplclone.exe 然后在DOSBox中运行,如果听到的是方波,就说明软件合成器不能还原硬件OPL3的效果,如果听到的是正弦波(就像电话拨号音),就说明该软件合成器非常精确
dosbox-000wav.wav
但是右声道在纯净的正弦波中隐约可以听到一点杂音,没有左声道这么纯净。我一开始以为是因为左右耳听觉的不同导致的,当我将右耳机戴在左耳上听的时候,杂音依然存在。我怀疑这个情况也有可能和opl3本身的特性有关,因为OPL3是立体声FM合成芯片,所以左右耳的声音就会不太一样。
2.音乐的电子感和鼓声的强劲感稍有欠缺:我在youtube上听了用nuked opl3 v1.8模拟的伊苏2dos版 to make the end of battle和用老声卡播放的to make the end of battle之后发现,老声卡播放的音乐更有电子感,同时在鼓声部分也更加强劲。

oplcloneexe.exe

C_Gear 9/12/2019 01:36:02 #2

个人理解,这个测试程序就是在测真OPL3的一个BUG。如果是精确模拟,那么就存在这个BUG,所以会听到您提到的正弦波的效果。
至于对比真卡录音。个人怀疑有一些老声卡的模拟输出有较大的染色。所以,至少需要使用数字输出录音才好做对比。当然,对于49716Hz输出的OPL3来说,数字输出的SRC几乎是不可避免的,所以还需要综合考虑。

gaoyf1997 9/12/2019 08:07:31 #3

回复给C_Gear: 您指的BUG是正弦波右声道中的杂音吗?

C_Gear 9/12/2019 10:02:38 #4

回复给gaoyf1997:
不是,我的理解是,按照规则,这个测试程序发出的不应该是正弦波的效果。那些不精确的模拟器的反应是对的。

gaoyf1997 9/12/2019 14:49:59 #5

我通过修改dosbox主配置文件发现,当sbtype=sbpro2时,右声道杂音现象消失,怀疑杂音跟resampler和系统硬件有关

gaoyf1997 9/13/2019 09:50:14 #6

ymf262芯片里有低频振荡器用来发出正弦波信号吗,如果有,那么模拟器在这一方面就比较弱,因为模拟器是用软件生成正弦波。

C_Gear 9/13/2019 10:57:32 #7

雅马哈的FM合成器是数字实现,并不是模拟电路的合成器。
据我所知,软件OPL模拟器和硬件OPL芯片,它们计算采样的工作原理没什么本质区别。OPL3芯片里的基础波形应该也是存储在非常简单的波表里,并没有模拟电路意义上的振荡电路来生成波形。

个人测试的结果是,雅马哈724声卡的OPL3(YMF289)输出的SPDIF数字音频,对比Nuked OPL3的输出,人听起来没什么值得注意的区别。而且,如果不考虑一些特殊情况,现阶段新版MAME、DOSBOX核心的输出也完全够用。

gaoyf1997 9/13/2019 14:38:04 #8

数字输出会经过YAC512 DAC吗,YAC512的作用是什么,模拟核心是否也需要模拟YAC512的功能。另外哪些声卡能支持49716hz输出,谢谢!

C_Gear 9/14/2019 03:19:59 #9

根据YMF724的DATA SHEET里的资料,个人认为数字输出是不会经过DAC的(但其它支持SPDIF的老声卡不一定如此)。YMF724的OPL3(YMF289模块)输出的采样会被RATE CONVERTER / MIXER转换采样率及混音,然后输出为SPDIF信号。
YAC512是DAC,把数字音频转换为模拟信号输出,据我所知模拟代码不考虑这个。
应该没有现代声卡支持49716Hz输出,非标准采样率的信号都需要转换采样率到标准采样率(DOSBOX不转换,WINDOWS也会转换)。当然,对于MAME、DOSBOX等等的核心来讲,你可以设定其输出采样率为标准采样率,避免重采样,但是一些音色就会出现变化。

gaoyf1997 9/17/2019 15:38:16 #10

有没有一种格式是OPL3芯片能直接接受的,就是将类似于midi的指令输入OPL3芯片,就可以直接发声,不用经过软件二次转换,比如大宇的rix格式要通过专用播放器或游戏中的播放程序段,或者windows3.1播放midi系统会查midi转OPL3表。
如果现代独立声卡上再次加上OPL3芯片,比如创新某一天推出一个经典怀旧版,不知道能不能通过DOSBox的特定版本中的OPL-Passthrough功能实现发声。

另外不知道我理解的对不对,OPL3可以被看做是一个处理FM音乐的CPU,因为以前CPU频率很低,无法在运行游戏的同时运行软件合成器,而且OPL3芯片像CPU一样有多个寄存器,这些寄存器都可以用指令操作。

另外您曾经提到过现代软件模拟的性能可能已经超过以前老的声卡了,您能说一下为社么会超过老声卡呢,多谢了!

gaoyf1997 9/17/2019 15:51:31 #11

CMI8738芯片内部是有一个硬件OPL3模块吗,还是非常准确的软件模拟器呢,官方data sheet上好像没具体讲,只讲有Leagcy audio compatible。

C_Gear 9/18/2019 01:19:49 #12

应该有,DOSBOX的两版DRO格式和AdPlug输出的RAW格式应该都是这一类,不过我没看过具体规格,不保证正确。但是播放这种格式仍然需要程序处理啊。让OPL3发声的办法就是通过端口写寄存器。硬件上稍微复杂点,因为OPL3的寄存器比较多,用了两组端口。在模拟器上就是有个函数,可以接受俩参数,寄存器号,值。就这样。你说的可行,只是没大厂家会这么做而已。

就我理解来说就是这样。

首先,AdPlug团队的成员设计了一种假的立体声实现:左右声道分别由不同的OPL2模拟器发声,右声道音高略微提升一点点。这样左右声道就存在了相位差,人就会体会到立体感。这样,原本是单声道的OPL2音乐就有了一种假的立体声效果,称为Surround OPL。这个实现(的细微修改版)被SDLPal团队移植到了硬件OPL3上。

其次,现在的音频系统,整体素质比较好吧?包括DAC、放大电路等等,从指标上看,很多方面都远超当年的消费级产品,甚至可以和当年一些个人专业设备比起来也不差。

第三,OPL2和3都有一个比较特殊的“缺陷”,就是每个音开始的时候要有一个强制的相位重置。这可以造成瞬间的电平跳跃,导致爆音。我之前在研究如何在模拟器上把这个改掉,有效果了,但是还有一些衍生问题未解决。

CMI8738使用软件FM合成器的可能性很小。首先,OPL3 FM合成对性能要求不低,在1999年前后这不是一个可以忽略的开销。其次,DOS下如何使用软件合成呢?TSR?8738的DOS支持没有TSR程序吧?

ZephRay 9/22/2019 22:33:44 #13

根据CMI8738的数据手册,内部很可能为一个DSP进行软件FM合成。软件合成代码运行在声卡内而非PC上。

bestmmk 10/6/2019 17:05:02 #14

回复给ZephRay: 看他的OPL表现, 实际上超出我的预期, 我觉得已经媲美真OPL3了。所以也算是真的OPL3吧(多分。

Designed by @ZephRay. Made by @ntzyz.
Copyright (c) 2016-2019 cnVintage Team.