Audio 方面剩下的就是要实现基于 DSP 的 midi 回放和对 PC Speaker 的管理。
RME 是借助了 windows 的音频功能,简化了开发上的难度。而如果是直接对 DSP 进行编程实现 midi 的回放,难度会更大些。我看过一些资料,可用的方法有 FM 合成、波表技术和 DSP 的硬件 midi 接口。其中波表技术是纯软件的实现,需要在 wave 回放的基础上做,FM 合成需要借助 FM 合成器,许多声卡里面都有 FM 合成器,SoundBlaster 中就用的是 雅马哈的 OPLX,这个相当普及,而且 WinXP 的 NTVDM 就有提供对 OPL2 的支持。要借助 DSP 的硬件 midi 接口,则不太现实,WinXP 的 NTVDM 根本就不支持。PC Speaker 的功能就是要驱动 PC 机的机箱喇叭发声,记得以前 BASIC 语言里面就有类似的语句,只要能达到那个效果就可以了。FM 合成我以前曾实现过可以发声,但是 midi 文件结构还没有研究透,很麻烦。
RME 是借助了 windows 的音频功能,简化了开发上的难度。而如果是直接对 DSP 进行编程实现 midi 的回放,难度会更大些。我看过一些资料,可用的方法有 FM 合成、波表技术和 DSP 的硬件 midi 接口。其中波表技术是纯软件的实现,需要在 wave 回放的基础上做,FM 合成需要借助 FM 合成器,许多声卡里面都有 FM 合成器,SoundBlaster 中就用的是 雅马哈的 OPLX,这个相当普及,而且 WinXP 的 NTVDM 就有提供对 OPL2 的支持。要借助 DSP 的硬件 midi 接口,则不太现实,WinXP 的 NTVDM 根本就不支持。PC Speaker 的功能就是要驱动 PC 机的机箱喇叭发声,记得以前 BASIC 语言里面就有类似的语句,只要能达到那个效果就可以了。FM 合成我以前曾实现过可以发声,但是 midi 文件结构还没有研究透,很麻烦。