作者ResolaQQ (ResolaQQ)
看板Emulator
标题[分享] 模拟器声音/音效原理
时间Fri May 15 21:09:45 2015
简单就我所知道的提一下
照 wiki 解释,声音是通过物体振动产生的声波
是通过介质(空气或固体、液体)传播并能被人或动物听觉器官所感知的波动现象
所以电脑产生声音基本上就是把声波重现出来(透过电压或电流,我不确定是哪个)
声音有分音色(钢琴、小喇叭)、高低(女声、男声)、大小
影响音色的就是波型
早期家用主机能用的声音波型只有少数几种,图如下,右下角有按钮可以听听看
http://en.wikipedia.org/wiki/Waveform
分别是正弦波、方波、三角波、锯齿波,因为图形单纯好产生
理论上,所有波型都能由不同频率的正弦波合成出来,不过这个跟模拟器没啥关系不多提
跟正弦波听起来最像的声音是音叉的声音
方波就是大部分 NES 主旋律用的声音
声音高低则是由频率决定,下面有不同频率的正弦波图形
http://en.wikipedia.org/wiki/Frequency
图中红色频率低,声音最低,紫色频率高,声音最高
如果同时有多个声音产生,波型可以直接叠加
声音大小则是由波峰波谷的位置有多大或多小决定
http://en.wikipedia.org/wiki/Crest_(physics)
图中波峰是 Crest,波谷是 Trough
以上是声音的基本概念
回到 Atari 2600,它只有方波,应该是直接用震荡器产生的
0 就是波谷,1 就是波峰
再透过一些电路,把波型整的比较乱一点
AUDC Pattern Shapes
x Rep Pattern Shape
0 1 ----------------------------------------------------------------------
1 15 ----___-__--_-_----___-__--_-_----___-__--_-_----___-__--_-_----___-__
2 465 --------------------------------------------------------------________
3 465 ------______-___---__-----___-------___----___--__--_____---------___-
4 2 -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
5 2 -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
6 31 ------------------_____________------------------_____________--------
7 31 -----___--_---_-_-____-__-_--__-----___--_---_-_-____-__-_--__-----___
8 511 ---------_____----_-----___-_---__--__-_____-__-_-__---_--_-___----__-
9 31 -----___--_---_-_-____-__-_--__-----___--_---_-_-____-__-_--__-----___
A 31 ------------------_____________------------------_____________--------
B 1 ----------------------------------------------------------------------
C 6 ---___---___---___---___---___---___---___---___---___---___---___---_
D 6 ---___---___---___---___---___---___---___---___---___---___---___---_
E 93 -------------------------------------------------_____________________
F 93 ----------_____---_______----__________------___------____---------___
这是 Atari 2600 的全部波型(有些不完整)
x 代表 Pattern 的代号,Rep 代表每多少格波型会重复
其中 Pattern 4 就是标准的方波(一高一低,每两格重复一次)
Pattern C 是频率比较低的方波,其他虽然应该也都算方波,但就不是那麽规则了
然後 Atari 2600 的声音设备部分,每个 channel 由三个暂存器控制
一个存波型(音色),一个存频率(高低),一个存音量(大小)
模拟的时候就是照这三个暂存器的数值把最终的波型秀出来而已,没什麽技术含量可言
我之前在板上 PO 的声音设备模拟器影片,就是固定波型去调整频率
NES 的话,基本上有两组方波,一组三角波,一组杂讯(像收音机收不到讯号时的沙沙声)
一组像电子琴能储存音色的 DPCM(很少人用,大概是因为很占容量)
大概还有一堆控制音色跟频率杂七杂八的东西(这就复杂了,跟 Atari 2600 比起来)
如果看不懂我在写什麽,建议去下载 NSFImport 这个程式
开个洛克人之类的音乐来看会比较好懂
看过之後你就会发现,强的是那些写曲的人,设备其实很普通的
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.46.136.3
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Emulator/M.1431695388.A.6F0.html
1F:推 BadGame: 怕人不知道快点推 05/15 21:29
2F:推 if4: 嗯...这是电子科系的入门知识 ^_^ 05/15 22:44
3F:推 erspicu: 我曾经试图模拟GB开机的当声 但感觉怎样音调都有点怪怪的 05/16 00:18
你说的 GB 开机声是 等登 这两声吗?
如果是的话,以我的烂耳朵来听,那两声是方波 + Duty 2
你开 FamiTracker
New instrument 的 Duty / Noise 填 2,Volume 填
14 15 15 15 15 15 15 15 15 15 15 14 14 13 13 12 11 10 9 8 6 5 4 3 2 1 1 1 1 0
(两个填完记得都要按 Enter 键,要看到白色长条图而且前面有打勾才有效)
Pulse 的部分填
C-5 00
C-6 00
这样声音就有点像了
我猜你会觉得音调怪怪的大概是 Duty 2 的实作方法错了吧
4F:推 erspicu: 感谢..参考一下 越高阶的机种声音参数好像又更多些 05/16 00:24
5F:推 mindsteam: 这些老机器的声音合成真的很有意思。 05/16 01:24
※ 编辑: ResolaQQ (114.46.147.100), 05/16/2015 02:38:15
6F:推 Jay915: 推 05/16 07:41
7F:推 tint: 7、80年代的游乐器几乎都是靠晶片产生频率发出这些电子声音 05/16 22:33
8F:推 emulators: 你怎麽这麽专业 05/17 01:40
9F:推 silverair: 以前的音乐虽然简单,但是超好听的 05/17 03:51
10F:推 srwcc: cool! 05/17 10:45
11F:推 conpo: 专业好文推 05/17 19:06
12F:推 timTan: 想邀请给个演讲 <(_ _)> 05/17 23:18
13F:推 EDGE: 推解说分享! 05/18 20:21
14F:推 crgc: 这两篇看不懂 但是好文要推XD 05/18 20:58
15F:推 cloud1017: 快推!不然别人会以为我们看得懂(?) 05/18 21:50
16F:→ djboy: 就推了 05/19 16:48
17F:推 playlive: 推! 05/19 21:44
18F:推 if4: 推…^_^ 05/19 22:57