发新帖本帖赏金 5.00元(功能说明)我要提问
返回列表
打印

有谁用过语音处理IC U6295+W27C02 在线等待!谢谢

[复制链接]
楼主: 邓崇广
手机看帖
扫描二维码
随时随地手机跟帖
41
tyw| | 2016-12-7 14:56 | 只看该作者 回帖奖励 |倒序浏览
本帖最后由 tyw 于 2016-12-7 15:03 编辑
枫叶丶LRG 发表于 2016-12-7 14:23
请问你有YM2149产生声音程序吗?我不知道怎么产生类似于“叮咚”好听的提示声. ...


94年玩过YM3812.是用cakewalk软件先产生音效MIDI文件,再由YM3812还原MIDI档的音效.
当时存储芯片很贵,所以选择了MIDI格式(相当于矢量中文,有别于点阵中文),是编程方式放音,1分钟音乐仅需几K字节的ROM开销.
现在ROM很便宜,可采用WAV档或MP3文件来放音.不大有人再去折腾MIDI了.除非老设备改进,要用原有硬件来放新音乐,那只好静下心啃资料了.
MP3方式可去淘宝弄块MP3解码模块,成本不高的.

YM3812 全部ASM资料.rar (110.18 KB)
赛车主板全部资料.rar (191.52 KB)


使用特权

评论回复
42
枫叶丶LRG| | 2016-12-7 16:31 | 只看该作者
tyw 发表于 2016-12-7 14:56
94年玩过YM3812.是用cakewalk软件先产生音效MIDI文件,再由YM3812还原MIDI档的音效.
当时存储芯片很贵,所 ...

是现有的硬件,现在我要写程序控制2149产生至少不难听的提示音。
2149数据手册很多地方说得不明不白。我不知道怎么产生特定波形的声音。

使用特权

评论回复
43
枫叶丶LRG| | 2016-12-7 16:33 | 只看该作者
能说说YM3812怎么还原MIDI档的音效??
谢谢

使用特权

评论回复
44
tyw| | 2016-12-7 17:17 | 只看该作者
枫叶丶LRG 发表于 2016-12-7 16:33
能说说YM3812怎么还原MIDI档的音效??
谢谢

Ym3812驱动.pdf (1.81 MB)
3812驱动 源程序.pdf (163.52 KB)

先了解MIDI文件是什么
MIDI(Musical Instrument Digital Interface)乐器数字接口 ,是20 世纪80 年代初为解决电声乐器之间的通信问题而提出的。MIDI是编曲界最广泛的音乐标准格式,可称为“计算机能理解的乐谱”。它用音符的数字控制信号来记录音乐。一首完整的MIDI音乐只有几十KB大,而能包含数十条音乐轨道。几乎所有的现代音乐都是用MIDI加上音色库来制作合成的。MIDI 传输的不是声音信号, 而是音符、控制参数等指令, 它指示MIDI 设备要做什么,怎么做, 如演奏哪个音符、多大音量等。它们被统一表示成MIDI 消息(MIDI Message) 。传输时采用异步串行通信, 标准通信波特率为31.25×( 1±0.01) KBaud。
MIDI文件是一种描述性的“音乐语言”,它将所要演奏的乐曲信息用字节进行描述。譬如在某一时刻,使用什么乐器,以什么音符开始,以什么音调结束,加以什么伴奏等等,MIDI文件本身并不包含波形数据,所以MIDI文件非常小巧。


想知道MIDI档每一字节定义,去这里https://bbs.21ic.com/forum.php?mod=viewthread&tid=29425&highlight=MIDI%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F

YM3812可解读MIDI档,在指定声道上,用指定音色,还原音符.具体操作参考上面2个资料.

使用特权

评论回复
45
枫叶丶LRG| | 2016-12-7 18:15 | 只看该作者
tyw 发表于 2016-12-7 17:17
先了解MIDI文件是什么
MIDI(Musical Instrument Digital Interface)乐器数字接口 ,是20 世纪80 年代 ...

再请问一下,YM2419适用MIDI这方法不?

使用特权

评论回复
46
tyw| | 2016-12-7 20:44 | 只看该作者
本帖最后由 tyw 于 2016-12-7 21:58 编辑

〓◆ MIDI 玩家书库 12册 228M ◆〓
YAMAHA 音乐合成芯片.pdf (33.3 KB)
UM3567(YM2413) KC89C72(AY-3-8910) U6295(MSM6295).pdf (432.47 KB)

恐怕不行, YM2149与AY3-8910是兼容的芯片.

AY-3-8910是通用仪器设计的3语音可编程声音发生器(PSG),最初与16位CP1610或PIC1650系列8位微型计算机配合使用。 AY-3-8910及其变体成为许多街机游戏和弹球机的流行芯片,并用于Intellivision和Vectrex视频游戏机,Amstrad CPC,Oric 1,Color Genie,Elektor电视游戏计算机, MSX和Sinclair ZX Spectrum 128 / + 2 / + 3家用电脑以及Apple II系列的Mockingboard和Cricket声卡。

在通用仪器于1987年推出Microchip Technology后,该芯片在Microchip品牌下销售了几年。 它也是由Yamaha许可(略有修改,即可选择的时钟分频器引脚,和双分辨率但双倍速率体积包络表)作为YM2149F; Atari ST使用此版本。 它产生与德州仪器SN76489非常相似的结果,并在市场上类似的时期。

芯片不再制造,但是仍然可以获得用于维修老式机器的下降库存。 功能相同的克隆芯片仍然处于活性生产中(参见变体)。 VHDL等效描述已经被写入,用于街机和其他类似于上面提到的那些的FPGA再现。 VHDL源代码可在Internet上获得,并编译为填充约10%的Xilinx XC2S300 FPGA。

AY-3-8910本质上是一个状态机,状态被设置在一系列十六个8位寄存器中。 这些通过8位总线编程,通过切换外部引脚之一来用于寻址和数据。 例如,典型的建立周期将使总线进入“地址模式”以选择寄存器,然后切换到“数据模式”以设置该寄存器的内容。 这个总线本身是在GI自己的CPU上实现的,但是它必须以胶合逻辑或者利用额外的接口适配器(例如MOS Technology 6522)来重建,当芯片与更常见的MOS技术6502或Zilog Z80 CPU。

六个寄存器控制在三个主要通道中产生的音调。 要生成的波长保存在专用于每个通道的两个8位寄存器中,但由于其他原因,值被限制为12位,总共为4095(寄存器值用作分频器,0被视为 1)不同的音高。 另一个寄存器控制伪随机噪声发生器的周期,而另一个寄存器控制该噪声到三个主要信道的混合。

三个附加寄存器控制通道的音量,以及打开或关闭通道上的可选信封控制。最后,最后三个寄存器通过设置包络类型和包络周期时间来控制包络控制器的时间。信封类型包括锯齿形或三角形,从最大或最小开始。形状也可以设置为循环效果重复。由于所有三个通道之间只有一个包络,许多程序员忽略它,并在软件中编程自己的包络控制器(直接控制音量)。一个众所周知的技巧是在20Hz以上的周期时间运行硬件包络以产生锯齿波或类似脉冲波的低音声音。

虽然只有16个寄存器,但在选择寄存器时,8位总线的4个MSB位必须设置为出厂默认值“0000”。错误地设置MSB位会导致芯片忽略寄存器更改。通用仪器订购了定制的MSB位(出厂设置为“0000”以外的位)。用定制的MSB寄存器位制成的芯片允许相同的处理器控制同一总线上的多个AY芯片(例如,Mockingboard声卡)。在二级市场上有许多新旧库存(NOS)芯片,MSB位出厂设置为非'0000'值。非0000值对于设计师和维修技术人员可能造成显着的发展问题。必须写入软件以识别任何给定芯片上MSB位的正确值。此外,必须更改软件或添加硬件,以允许使用这些出厂设置的MSB芯片代替默认的“0000”芯片。

AY-3-8910产生的基频高达125 kHz(4 MHz输入时钟,或8 MHz与YM2149F),远远超出人类的感知和进入超声波范围。然而,这并不像它可能首先出现的那样浪费,因为它提供比在分频器方案下可获得的更精细的频率分辨率,而仅牺牲总的4096个值中的几个;只有低于5的分频器意味着完全超声波频率。相当于钢琴键盘的顶部八度音阶的频率可以以合理的精度与接受的偶数音阶的音符值,在A440范围内接近1Hz的精度,以及甚至在较低音高时更精细地定义。尽管高的最大频率,将该图除以4096意味着最低的可直接定义的输出频率的能力是30.6Hz,大致等于B0,正常的88键钢琴上的第三低音,以及与每天亚音速一样好扬声器系统。本质上,芯片能够以大多数合成中发现的所有合理音高产生音乐输出。

相比之下,SN76489的分频器只有10位的精度。具有125kHz的相同基频,理论上它应该缺少PSG的两个最低倍频程。为了解决这个问题,SN76489播放其音调发生器比它们计算的频率低一个八度,给出它在低音中一个八度音和在PSG低一个八度。

而YM3812则是OPL2型芯片.(OPL是FM Operator Type-L的缩写),该电路有244个不同的只写寄存器。它可以产生9声道的声音,每个由两个振荡器或6通道与5打击乐器可用。每个振荡器可以产生正弦波,其也可以被修改为3个其他波形 - 正弦的负部分可以被静音或反转,并且也可以产生伪锯齿波(仅在其之间的无声部分向上的正弦波)。这种奇怪的产生波形的方式给予YM3812特有的声音。每个波发生器都有自己的ADSR包络发生器。它的主要合成方法是频率调制合成,通过其中一个通道的振荡器的相位的相位调制由另一个的输出完成。


YM3812振荡器波形通道寄存器的视图:

对于整个渠道:

主频率(10位)
八度(3位)
注意开/关
合成模式(FM或只是添加剂)
反馈(0-7,调制器自身调制)
对于2个振荡器中的每一个:

频率乘法(可设置为½,1至10,12或15)
波形(正弦,半正弦,绝对正弦,四分之一正弦)
体积(0-63,对数)
攻击,衰减,维持,释放(每个4位,对数)
颤音(开或关)
振动(开或关)
持续(开或关)
每个键的信封缩放(打开或关闭)
每个键的音量缩放(0-3)
还有一些参数可以为整个芯片设置:

振动深度
颤音深度
打击乐模式(使用3声道提供5打击声)
复合正弦模式(使用定时器周期性地重新定位所有声音;非常少使用;不在OPL3上工作)
内部操作芯片的内部操作完全是数字的。每个FM音调由使用直接数字合成形式的数字振荡器产生。对数变换的正弦波形的四分之一作为采样近似值存储在256字的只读存储器(ROM)表中。正弦波形的其余部分通过其对称性来外推。将振荡器的输出缩放到所需的量通常通过乘法来完成,但是YM3812通过对对数变换的信号进行操作来避免乘法,这将乘法减少到计算上更便宜的加法。另一个256字ROM存储指数函数作为查找表,用于在需要时将对数标度信号转换回线性标度,作为振荡器输出相加在一起(在DAC输出总线之前)的最后一级, ,调制器波形总是在载波波形之前延迟一个采样。[1] YM3812的输出(一个以大约49716 Hz的采样频率计时的浮点数序列)被发送到单独的数模转换器(DAC)芯片YM3014B。



AY3-8910以前在用的时候好象只能读WAV档.






使用特权

评论回复
47
枫叶丶LRG| | 2016-12-7 23:18 | 只看该作者
tyw 发表于 2016-12-7 20:44
〓◆ MIDI 玩家书库 12册 228M ◆〓

膜拜大神,谢谢你回复那么详细,那AY3-8910怎么读wav文件呢?我有wav提示音文件。。

使用特权

评论回复
48
tyw| | 2016-12-8 09:26 | 只看该作者
本帖最后由 tyw 于 2016-12-8 12:08 编辑
枫叶丶LRG 发表于 2016-12-7 23:18
膜拜大神,谢谢你回复那么详细,那AY3-8910怎么读wav文件呢?我有wav提示音文件。。 ...


你得找到原设备cpu的EPROM,把YM2194的数据块位置找到,用新的数据复盖.记得以前台湾游戏机公司老板拿来过一块卡,可找出数据块地址.很方便更换音效芯片的数据.自己裸奔难度恐怕不是一眼眼.
今天在PUDN网发现一篇东西"ay-8910 95101 89c72 ym1234 midi 音乐 可由mcu 控制 发出各种音效-ay-8910 95101 89c72 ym1234 midi "
可能8910能读MIDI档,这家网很抠,要收费的,我注册上传了5个源程序,等他们站长申核,想办法弄下来看看.
自己啃确实很费劲的,94年我啃3812时费了好几个月时间.

使用特权

评论回复
49
枫叶丶LRG| | 2016-12-8 09:59 | 只看该作者
tyw 发表于 2016-12-8 09:26
你得找到原设备cpu的EPROM,把YM2194的数据块位置找到,用新的数据复盖.记得以前台湾游戏机公司老板拿来过 ...

MPU可以通过控制寄存器让2149产生好听声音?声音我是产生出来了,不过不是我想要的声音。

使用特权

评论回复
50
tyw| | 2016-12-8 12:35 | 只看该作者
本帖最后由 tyw 于 2016-12-8 12:46 编辑
枫叶丶LRG 发表于 2016-12-8 09:59
MPU可以通过控制寄存器让2149产生好听声音?声音我是产生出来了,不过不是我想要的声音。 ...

ay-3-8910 2.pdf (889.7 KB)
a vhdl model to ym2149.zip (29.84 KB)
单片机与kc89c72之间的读写控制部分.rar (702 Bytes)

晕,被PUDN忽悠了,弄下的竟还是8页的datasheet.

你声音是用什么类型的数据?wav或midi档都可用其他软件先产生音效的.




使用特权

评论回复
51
tyw| | 2016-12-8 17:01 | 只看该作者
本帖最后由 tyw 于 2016-12-8 18:54 编辑

翻到一个ay-3-8910详细资料,做了中文注释供参考.

AY-3-8910 56页 中文注释版.pdf (963.74 KB)
玛丽机AY-3-8910硬件介绍.pdf (334.43 KB)

使用特权

评论回复
52
枫叶丶LRG| | 2016-12-8 19:55 | 只看该作者
tyw 发表于 2016-12-8 17:01
翻到一个ay-3-8910详细资料,做了中文注释供参考.

本来我想用2149产生一些类似于“叮咚”清脆的提示声的,后来找来一些清脆声音看它的波形频率,然后用2419产生同样的频率,频率是达到了,可是声音不清脆,只是发出低沉声。。我不知道怎么控制2149产生清脆的声音。。。什么数据类型都行啊,只要发出那清脆的声音就好了,控制芯片是STM32F103.。

使用特权

评论回复
53
枫叶丶LRG| | 2016-12-8 19:57 | 只看该作者
tyw 发表于 2016-12-8 17:01
翻到一个ay-3-8910详细资料,做了中文注释供参考.

8910的资料真详细,谢谢了。。

使用特权

评论回复
54
tyw| | 2016-12-8 20:24 | 只看该作者
枫叶丶LRG 发表于 2016-12-8 19:55
本来我想用2149产生一些类似于“叮咚”清脆的提示声的,后来找来一些清脆声音看它的波形频率,然后用2419 ...

3812可选127音色,选钢板琴音色就行了,3812有个音色库可借用.2149恐怕得自已构造音色包络线了.

3812中构造音色是通过对"Amp   | Level | Atta  | Sust  | Wav e | Feed"这6个参数设置,来得到不同包络线,不同音色.
3812音色库.rar (8.17 KB)

使用特权

评论回复
55
tyw| | 2016-12-8 20:32 | 只看该作者
本帖最后由 tyw 于 2016-12-8 20:35 编辑

你先分析一下.现在的声音是什么格式.是用什么工具产生的.
知道格式就有戏了.可用cakewalk之类的软件来造一个声音,再用2149回放.

使用特权

评论回复
56
枫叶丶LRG| | 2016-12-8 21:44 | 只看该作者
tyw 发表于 2016-12-8 20:32
你先分析一下.现在的声音是什么格式.是用什么工具产生的.
知道格式就有戏了.可用cakewalk之类的软件来造一 ...

什么是回放?2149怎么回放?声音是录音录下来的wav格式啊

使用特权

评论回复
57
tyw| | 2016-12-9 08:35 | 只看该作者
本帖最后由 tyw 于 2016-12-9 10:46 编辑
枫叶丶LRG 发表于 2016-12-8 21:44
什么是回放?2149怎么回放?声音是录音录下来的wav格式啊

〓◆ 文件格式规范专辑 13册 21.5M ◆〓
〓◆ MIDI 玩家书库 12册 228M ◆〓

MIDI文件格式分析.pdf (487.01 KB)
WAV文件格式.pdf (113.57 KB)
WAV文件格式说明.pdf (1.53 MB)

回放就是把声音数据读进来送到2149,再处理还原成模拟音频号播放.

使用特权

评论回复

打赏榜单

枫叶丶LRG 打赏了 5.00 元 2016-12-09
理由:感谢你的热情帮忙。。

58
枫叶丶LRG| | 2016-12-9 12:45 | 只看该作者
tyw 发表于 2016-12-9 08:35
〓◆ 文件格式规范专辑 13册 21.5M ◆〓
〓◆ MIDI 玩家书库 12册 228M ◆〓
[/ ...

谢谢,我自己慢慢去瞎搞试试。。。

使用特权

评论回复
59
tyw| | 2016-12-9 13:27 | 只看该作者
枫叶丶LRG 发表于 2016-12-9 12:45
谢谢,我自己慢慢去瞎搞试试。。。

WAV文件格式分析详解 44页 6.2M.pdf

这个资料讲wav格式较透彻.
所谓wav数据,其实质就是依一定速率对音乐波形采样所得的数据群,说白了就是A/D转换数据.
经2149处理(D/A)后还原成原始音乐波形.似乎不涉及波形包络处理.
不象3812,乐音的频率是3812内部自已产生的,也就有音色处理,波形包络处理一说.
所以用2149回放的音效得事先用其他工具做好才成.

使用特权

评论回复
60
zhao2014| | 2017-8-19 23:38 | 只看该作者
楼主--------大神!!!!!!!!!!!!

使用特权

评论回复
发新帖 本帖赏金 5.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则