前言
最近想着做合成音乐,于是看到了雅马哈的音乐芯片,最终选定了YMF288,
YM F288是雅马哈(Yamaha)在20世纪80年代末至90年代初开发的一款FM合成音频芯片,广泛应用于个人计算机和游戏机中。当然还有一款兄弟型号,YMF262,它组合而成的声卡也被称为OPL3,他最广泛的使用是被用在日本本土电脑——PC98电脑里面,而另一边组合成的OPL3则是用于AT计算机也就是IBM兼容机
YMF288是YMF262,组成的声卡系统叫做OPL3-L,低功耗的意思,因为制程先进一点所以功耗降低,可以用在手持设备和便携电脑上面。
居然是3,那必然有其他的咯,比如YM2203就同时被称为OPN,属于一个更早的型号,而YMF288可以实现无损替换升级,但是一些寄存器有差别
下面是雅马哈(Yamaha)芯片及其前后替代关系的表格展示:
芯片型号 别名 类型 应用 特征 替代关系 YM2149 AY-3-8910 PSG (Programmable Sound Generator) Amstrad CPC, Atari ST 3个方波通道 - YM2203 OPN FM音源 + PSG NEC PC-88, MSX 3个FM音源通道 + 3个PSG通道 被YMF288替代 YM2413 OPLL 简化版FM音源 MSX音频扩展卡, Sega Master System 9个FM通道,但可编程性较低 - YM2608 OPNA 高级FM音源 NEC PC-98 6个FM通道 + 3个SSG通道, 支持ADPCM - YMF288 OPL3-L FM音源 NEC PC-98 6个FM通道 + 3个SSG通道, 功耗更低, 兼容性良好 替代YM2203 YM3812 OPL2 FM音源 AdLib声卡, IBM PC声卡 9个FM通道,基本FM合成 被YMF262替代 YMF262 OPL3 先进FM音源 Sound Blaster 16声卡 18个FM通道,支持立体声输出 替代YM3812 YMF278 OPL4 高级FM音源 + 波形表合成 高端声卡(如Yamaha SW1000XG) 包含波形表合成功能,使声音更逼真 - YMF7xx系列 - 音频控制器 现代PC声卡(如Yamaha XG系列) 集成FM音源和波形表合成,兼容OPL3,支持MIDI合成 -
YMF288 在雅马哈音频芯片家族中处于一个承前启后的位置。它继承了YM2203的FM音源特性,并在降低成本和功耗的同时,保持了较高的音质。随着技术的发展,雅马哈逐渐推出了更高级的FM合成芯片,如YMF262(OPL3)和YMF278(OPL4),最终发展到集成多种音频合成技术的YMF7xx系列。
雅马哈这些芯片可以在微机,游戏机,声卡等地方使用,曾在20世纪80至90年代广泛装载,但随着技术进步逐渐被淘汰。
为什么呢,因为数字音频技术的普及使FM合成音频被更高音质的波形表合成和全数字音频取代。现代计算机的多核处理器可以实时处理音频,集成度的提高也使得独立音频芯片不再必要。市场对高质量音频的需求和游戏音频的进化推动了对更先进技术的采用。
还有一点是FM合成音效通过软件模拟就能完美实现,讲究一个向下兼容,所以也就不需要额外配置硬件芯片来合成了。
详细介绍
YMF288设计上是为了替代YM2608B,这一款音源LSI芯片,在保持与YM2608B的音源部、节奏音源部和SSG音源部的寄存器兼容性的同时,删除了ADPCM音源部、I/O端口和SSG音源用的A/D转换器,从而减少了引脚数量,并采用了CMOS工艺。它新增了待机模式和低电压运行的支持。
因此,与YM2608B相比,它实现了更低的功耗和更小的占用空间,适合用于笔记本电脑等设备。
(分别为:低音鼓、军鼓、边鼓、镲片、钹、踩镲,每种音色1声道)
- 音频数据为立体声16位,2's补码,MSB优先输出
- 28引脚塑料SOP封装(YMF288-M),48引脚塑料SQFP封装(YMF288-S)
引脚定义
这一芯片目前还能在闲鱼上面搜到,并且确实有卖价格也比较便宜,主要能找到的是YMF288-M,和S比较只有封装上面的差别其他没有差异
10 14 /TEST1 I LSI测试端子1(请务必保持未连接)
12 21 5V/3V I 电源电压切换端子("H":5V,"L":3.3V)
13 22 /TEST2 I LSI测试端子2(请务必保持未连接)
16 26 /COM I YM2608/YMF288模式切换("H":YM2608,"L":YMF288)
22 42 /STBY O 待机模式输出("H":正常工作,"L":待机模式)
28 56 MCLK I 主时钟输入(7.9872MHz)
解析
根据上面的资料可以了解到,这一款芯片是I2S输出的所以我们需要加一个这个
然后,可以看到它只有一个MCLK,也就是说并不是普通单片机那样采用无源晶振提供时钟,而是用有源晶振,因此最终测试板电路如下。这里主控我使用Arduino Nano,I2S也使用插件方式支持
同时有三个机械键盘轴,以及一个I2C的OLED来实现交互,后面会把控制器换成STM32或者树莓派Pico以实现SD卡读取文件,并且能够有更多的引脚可用
PCB板设计上做了3mm的打孔以匹配外壳设计
下一期来说明这个设计成功与否,到底能不能实现YMF288芯片的测试以及通过串口实现合成音乐的播放