【教程】正说NES/FC音源。
w7n吧
全部回复
仅看楼主
level 13
mariohacker 楼主
1L Baidu
2012年11月04日 05点11分 1
level 13
mariohacker 楼主
みんな! 这里是w7n的完美音乐教室。好好学习,你就有望成为一位geek(读音:Baka)!
在SMB音乐教程尚未发布的时候,本人先写一篇关于NES的音乐浅论。不当之处,多多包涵。
1.前言
- 1.1 概述
- 1.2 关于NSF
- 1.3 相关软件
2.2A03音源
- 2.1 直角波
- 2.2 三角波
- 2.3 杂音波
- 2.4 DPCM
- 2.5 注意事项及其他内容
- 2.6 2A03作曲小攻略、2A03良曲
- 2.7 2A03音源有关内存
3.扩展音源
- 3.0 有关2A03的部分深入知识,包括DAC以及DPCM的PCM用法。
- 3.1 VRC6
- 3.2 VRC7
- 3.3 FDS
- 3.4 MMC5
- 3.5 N106(N163)
- 3.6 FME7(SN5B)
4.其他事项
(第3章以后内容暂待更新。)
2012年11月04日 05点11分 2
level 13
mariohacker 楼主
1 前言
1.1 概述
Nintendo Entertainment System(Family Computer)是一个神奇的游戏机。NES成就了Nintendo在日美的游戏界霸主地位,也让美国游戏产业起死回生,在巅峰时期其市场占有率高达90%多。NES也是我们一代人的童年回忆。相信很多人听到NES的音乐,如果玩过那个游戏的话,一定会很怀念。
我们知道CPU是机器的中央处理器,也可能知道PPU(图像处理),APU(音频处理)。现在我们要讲的就是有关APU。NES使用2A03 CPU和2A03 APU,PPU则独立开来,只通过少数内存地址进行数据交换。
NES APU有5个音源通道,分别是直角波1和2(SQ1, SQ2),三角波(TRI),杂音波(NOI),差值编码波(简称DPCM)。编辑这5个通道的音,是通过向CPU内存段($4000-$4015)写入地址实现的。
简单普及:
NTSC NES(日美版)的一帧是1/60 s,PAL NES(欧版)的一帧是1/50 s。NES CPU频率为1.8MHz(NTSC,1789773Hz),1.7MHz(PAL, 1662607Hz)。下面以NTSC计时为准。
$符号代表十六进制。
2012年11月04日 05点11分 4
level 13
mariohacker 楼主
1.2 关于NSF
NSF(NES Sound Format)是专门表现NES音乐的一种文件形式。理论上来说NSF是一种程序,但是大多数NSF的表现形式都接近于MIDI的表现形式,亦即储存曲目资料。
目前,关于NES音乐的研究、创作等等,很多都依靠了NSF文件。
1.3 相关软一一件
FamiTracker:上手难度中等的强大NES音乐编辑器。
FamiTracker NSF Import Ver:不能编辑FamiTracker的文件,但是可以把NSF的曲目导入成FamiTracker文件。
VirtuaNES:很好的NES模拟器,可以用来播放NSF,但是播放效果不好。不过,VNES可以比较直观地显示出弹出哪些音,以及打击乐播放状况。
NSF播放器:比如VirtuaNSF。专门的NSF播放器就应该寻求播放效果较好的。
2012年11月04日 05点11分 5
level 13
mariohacker 楼主
2 2A03音源
之前说过2A03音源的通道情况,下面将逐个介绍。
2.1 直角波
直角波有2个通道,即1和2,这2个没有实际差别,所以放在一起介绍。
何为直角波?直角波的波形如图所示。
这里面有一个概念:占空比(duty ratio),亦如图,a和b的长度之比即为占空比。不同占空比的直角波音色有明显差别。NES APU中的占空比有4种:12.5%, 25%, 50%, 75%,其中75%和25%音色完全一样,但是应用上有部分区别,我们权且把75%占空比归到25%中。一般来说,占空比越靠近50%,声音就越趋向柔和,越远离50%,声音就越趋向尖锐。50%占空比的直角波是我们日常生活中随处可以听到的那种机器音。12.5%占空比的声音非常尖锐,25%介于其间。
具体点说:
占空比 低音 高音
12.5% 比较浑厚 尖锐,类似唢呐
25% 中间态,不浑厚 中间态(需细说)
50% 柔和,略浑厚 柔和且轻,可以模仿口哨
直角波是NES最简单也最重要的波形。一般NES乐曲的主旋律都是直角波来做的(不可能是NOI,部分情况为TRI,只有Konami等少数公司做的少数游戏用DPCM,只有Action 52等少数游戏用DPCM的PCM用法)。
直角波机能方面:
直角波拥有3种占空比,16种音量大小,即0到15,频率最低为54Hz,最高频率为28KHz但是意义较小(超声波你懂得……)。除此之外,直角波有预设的下滑音、减弱音功能。每一帧都可以变化直角波的这些属性值,所以音量变化和占空比变化也是直角波音色的重要决定因素。
占空比的值域记号为0到3,分别对应着12.5%,25%,50%,75%占空比。占空比变化一般是如下形式(不一定是按帧计):0 1 2(少见,有时是0 2);0 1(低音可以做Bass);1 2;2 1;2 1 0;1 0。这样的音色与单一不变的直角波有差别,大家可以自己试验。
音量变化影响着音的柔和性。像这样的一个音量变化:3 4 5 5 6 6 6 5 5 5 4 4 4 3(然后持续3),这个声音趋向柔和。如果是8 7 7 6 6 5 4 0(然后持续0,即静音),一开头就迅速上升然后减弱,则这个声音趋向响亮。(语言表达可能不太容易,请自行想象笛子和钢琴的音量变化)这种变化对于25%直角波尤其显著:前者会造成柔和的声音,后者则很响亮(中等音高的音也是)。
8以上的音量都非常大,持续很多帧的这样的音给人感觉音量尤其大。
调整音高是通过调整波长(即与频率成倒数的物理概念)实现的。波长值域从$0000到$07FF(实际效果为$0001到$0800。太低的值的音根本听不到),频率为1.8MHz除以波长实际效果值。
这里面有一个特殊应用就是颤抖的音。直角波用调整音量的方法来实现音的颤抖的效果不好(VRC7音源可以),只能用变化频率(波长值)来实现,比如:降1-不变-升1-不变-升1-不变-降1-不变,如此往复。一般这种方法用于占空比为25%和12.5%的音,可以让音变得更动听,也可以创造悲伤氛围。
直角波能表现的音效非常多,具体利用方法很多,此处不提。直角波和杂音波是表现大部分音效的波形。
2012年11月04日 05点11分 6
level 13
mariohacker 楼主
2.2 三角波
三角波有1个通道。这里看这个图,上面的波形是标准三角波,而下面的波形则是NES三角波。NES三角波和标准的三角波有微小差异,一般可以忽略(NES三角波有毛糙感,而且仔细听可能听出一个音量低的高音)。
三角波没有占空比的概念,也没有音量调节。同样的波长值,三角波比直角波的音低一个八度(频率为一半)。
三角波的音色:低音浑厚,可以做Bass;高音很靠近笛声。
不能用普通方法调整音量是三角波的一大弱点(用DAC法可以调节三角波音量范围为57%到100%,实用性不大,见3.0),正因此三角波的用处受到了巨大限制。
三角波是一个重要性虽小但是不可或缺的波形,一般做Bass,也有其他应用。三角也适合表现颤抖的音。三角可以表现的音效较少(一般配合其他波形表现。另外我觉得超级马里奥中的跳跃用三角波表现更好)。

2012年11月04日 05点11分 8
level 13
mariohacker 楼主
2.4 DPCM
DPCM有1个通道,是NES及扩展音源中所有通道中最强者。DPCM可以以较低的精度模仿在一定音量范围内的各种声音,比如鼓击,乐器,人声。下面的图片是一个人声的例子,样本长度大约2.5秒。
我们知道声音总有一个波形,DPCM就是用低精度模仿这种波形。看下图:每过一个计时点,DPCM的波形就上移1或者下移1,由此模仿出一个正弦波。(这个例子夸张了,实际上只有低音量时才会有这么差的精度)
DPCM有16种采样率,0到15。越高则精度越高,一般是用最高或次高精度,而且低于11的精度都很差。最高(15)采样率为33KHz。DPCM的默认播放方式是播放样本,样本最大容量为略少于4K,而最高精度的4K样本则只持续大约1秒钟,由此可见DPCM耗空间之大。(对比:超级马里奥兄弟的程序部分只有32K)
同一个样本可以用多种采样率,而且如果原样本是一个采样率为15的乐音,那么采样率稍低点的这个样本是音高较低的乐音。利用这点可以让DPCM也变成乐音部分(典型例子:Sunsoft中后期音乐、Super C等),也可以让同一种打击乐有低音高音之分,从而做出低鼓击等效果。
DPCM样本可以设置循环播放和不循环播放。
既然DPCM是最强大且最自由的波形,那么我们现在偏要来讲DPCM的缺点。DPCM有几大缺点:
1,费空间,更费PRG ROM块。PRG ROM块在内存中总共就只能32K,而且DPCM只能存储在$C000之后,这块部分一般不能移动,就算能移,DPCM播放时也不能移。因为这点,就连后期也有很多大型游戏都不用DPCM。
2,精度低。这有2个体现:1,虽然33KHz的时候采样率已经足够高了(WAV:44.1KHz或更低),但是精度仍然低的原因是DPCM并不是PCM方式存储WAV,而是只能以+1和-1记录波形的增减。最显著的表现是有杂音(在有除DPCM波以外的波形音量稍高的时候就不太明显了)。另外,有些声音如踩镲会根本模仿不像,甚至用NOI都比DPCM好。2,稍低精度的样本效果更差,13以下的静音样本都有明显高音直角波音,比如第一个图中红框部分(注:没图中这么夸张,其实音的频率要远高于图中的,而且音量也要低很多。这是FamiTracker作图的问题……)。
3,DPCM的播放会降低三角波和杂音波的音量,而且降低的音量随样本和时间决定(见3.0)。VNES模拟不出这一点……
另外DPCM虽强,也不是用了就是良曲(废话)。像Mega Man系列的音乐都不用DPCM,但是这里面良曲很多,音乐质量平均非常高。
2012年11月04日 05点11分 10
level 13
mariohacker 楼主
2.5 注意事项
下面是关于2A03音源的一些注意事项。
A.波形混合问题
如果两个发声设备发出两个相同的直角波声音,那么我们确能听到2个直角波的声音。但是NES并不能这样理解,比如碰到下图中的情况就悲剧了……
NES中波形累加是真正的“加法”。其中最需要当心的是2个直角波的混合,其余波形混合一般影响不大。
很重要的原则:频率完全相同的两个直角波音,不可长时间混合。如果需要混合的话可以让一个直角波音的频率减少或降低,或者围绕着基本值不断变化(比如a a a+1 a+1 a a a-1 a-1...)
下面是一些音量相同的直角波声音混合的效果。
--1比2恰好高一个八度--
直角波1占空比 直角波2占空比 效果(近似)
50% 50% 比25%直角波略浑厚的直角波,音高同直角波2
50% 25% 25%直角波,音高同直角波2,略能辨别出2种波形
50% 12.5% 能辨别出两个直角波
25% 50% 12.5%直角波,音高同直角波2
25% 25% 25%直角波,一般不常见
25% 12.5% 12.5%直角波,音高同直角波2
12.5% ANY 6.25%直角波,音高同直角波2
--1比2高一个八度但是不恰好高一个八度,比如1或2频率摆动--
50% 50% 50%,不常见
50% 25% 能辨别
50% 12.5% 能辨别
25% 50% 12.5%,但是能辨别
25% 25% 25%,如果是“频率摆动”则是一种Sunsoft风格的特殊效果。
25% 12.5% 能辨别……
12.5% 50%或25% 6.25%直角波,能辨别出2种波形
12.5% 12.5% 让人感觉是介于6.25%和12.5%间。
--1和2频率基本相同,但是其中一个略低,或者频率摆动--
50% 50% 50%
50% 25% 貌似还是接近50%……
50% 12.5% 接近37.5%直角波。37.5%是一种浑厚的直角波。
25% 25% 25%,这个用法很常见。如果是“音频率降低”则比较接近“弦乐器合奏”。
25% 12.5% 使用“音频率降低”的话接近midi“弦乐器合奏”。虽然“弦乐器合奏”的用法在NES游戏音乐中不常见,但是这用法很重要!!!!
12.5% 12.5% 使用“音频率降低”则也比较接近“弦乐器合奏”。
2012年11月04日 05点11分 11
level 13
mariohacker 楼主
B.三角波的具体利用问题
三角波是一个很奇葩的波形,主要因为其“音高”的影响。现在我说明一下其音高对给人的感觉的一些影响。
以下,以“C-4”表示“中音C”。(C就是简谱的1,而4为所在八度。CDEFGAB就是简谱的1234567。而比如“C#4”则表示“中音升C”)。
A-0(大致最低) --- A-1 很刺耳的低音,当然部分情况下也有一定的作用。
A-1 --- C-3 低音,可以做Bass。
C-3 --- C-4 此段变化非常大!具体点来说,低音类似Bass,中间的音处于Bass和笛声之间,高音略趋近笛声。音高越高,就更容易被人辨别出来,也就是说如果作为和声,那么和声感就越强。
C-4 --- C-5 此段变化主要是从“适合做和声的音”-->“完全的笛声”的变化。
C-5 --- 完全的笛声,太高的话则不像笛声而基本只可能用于音效。
2012年11月04日 05点11分 12
level 13
mariohacker 楼主
C.DPCM乐音使用
我说过DPCM大多是用做打击乐,但是也有部分地方用来做乐音,比如Konami,Sunsoft,Naxat等等公司。那么现在说一下对于不同的采样频率,同样的样本会发出什么乐音。
假设在采样率为最高(15)时,这个样本发出的是C-4音。
采样率 音
15 C-4
14 G-3
13 E-3
12 C-3
11 A-2
10 G-2
9 F-2
一般采样率8以下的样本清晰度都太低,但是还是列出来:
8 D-2
7 C-2
6 B-2
5 A-2
4 G-2
3 F-2
2 E-2
1 D-2
0 C-2
采样率8以下样本的一种利用方法可见烈火92的BGM。
(注:实际上样本的音会有偏差,比如采样率为12的样本音会略高于C-3,但不至于到C#3。)
2012年11月04日 05点11分 14
level 1
感谢分享。没推Natsume呀
2012年11月04日 06点11分 16
Natsume和konami公司的音乐差不多,只是Natsume没有运用DPCM而已
2012年11月04日 07点11分
回复 JrWatson :话说Kyouhei Sada不是K社的人么,怎么会给Natsume的SCAT作曲……
2012年11月04日 08点11分
回复 mariohacker :这个不清楚,我只知道Natsume公司的很多作曲家都是从konami跳槽过来的
2012年11月04日 08点11分
感觉Natsume的音乐都是一个风格,规律很好找,konami就很难找,只会觉得音乐很浑厚而已
2012年11月04日 08点11分
level 1
[顶]
2012年11月04日 11点11分 17
level 1
[啊!]
2012年11月04日 16点11分 18
level 2
打算做nsf,但不知道应该如何做伴奏?(就是除主旋律以外的)
2012年11月05日 10点11分 19
可见我的作曲攻略。一般另一个直角波,适合和声的部分,则用和弦方法(135,246...类似的)去做和声;也可以用创造和弦的方法做副旋律。三角波可以作为和音,或者作为Bass旋律。如果实在不行,那么也可以在必要的地方,让主旋律频率振动,让另一个直角波作为主旋律之延续(即低音量恒定,音为主旋律的延迟)
2012年11月05日 11点11分
level 9
MARK
2013年01月29日 13点01分 20
level 1
好坟才有挖的价值. 但是 FT 用得很少了 目前转战 FL 中
现在遇到的难题是用合成器直接得到 Noise 的两种模式
另外 11 楼的对比图 2: 两个相位完全相反的外形重合时会静音, 但我用 2 个2A03 - 25% 矩形波得不得对比图那样的情况, 反倒产生了新的音色. 2 个相同的波形相加只会使最终声音的振幅更大.
2013年06月24日 10点06分 22
1 个 75% 和 1 个 25% 重合也不会出现相位抵消.
2013年06月24日 10点06分
有的时候就是看人品的问题。2个50%,或者75%和25%,都有可能出现抵消的情况,关键是要看内部的处理(即:2个声音开始播放相差多少时间)。如果两个频率完全相同的波形产生新音色,这个音色也是不确定的,依然是看内部处理。
2013年08月02日 00点08分
level 8
顶啊!太有用了!尤其是2.5部分
老师,这个还有更新吗?好想学啊
2013年08月29日 02点08分 23
我或许会考虑什么时候更新……
2013年08月30日 01点08分
level 1
什么时候更新……
2013年11月08日 17点11分 24
level 13
mariohacker 楼主
3.0 有关2A03的部分深入知识,包括DAC以及DPCM的PCM用法。
NES中,三角波,杂音波,DPCM波之间有一个特殊的联系。NES机器中,直角波1和2在一个pin上,Tri, Noi, DPCM则在第二个pin上。
首先我们要知道:一个波形是x=“时间”和y=“相位”的函数y=f(x),“相位”可以理解成波形显示图中的Y坐标。
(之前说过,DPCM是每过一小段时间让相位+1或-1以制造一个波形)
在NES机中,DPCM的相位值称作DAC,范围是0到127(在FT当中,0在y轴的上边,127在y轴的下边)。
而【DAC是会对三角波、杂音波、以及DPCM自身的音量造成影响】的。DAC的值越高则它们的音量也会降低。DAC的值在127的时候,三角波/杂音波的音量大概为DAC的值在0的时候的音量的60%。(VirtuaNES貌似是用的线性模拟,于是DAC的影响就消失了)
所以说若要保持这些波形的音量的稳定,应该让DAC尽量稳定。比如:DPCM播放结尾时的DAC值应该在某一个特定值的附近。
当然,你可以通过调整DPCM的值来调整三角波和杂音波的音量。尤其是三角波,因为三角波的音量只能被DAC调整!比如如果你需要C-4的三角波音量不那么大,而C-3的三角波音量大一点的时候,你就可以调整DAC。
在FT中调整DAC的指令是Zxx。xx为DAC的值,十六进制,范围是00-7F。
当DAC突然跳转的时候(比如0跳到64),会突然出现一个电子音(大家可以在FT中,DPCM波形的effect栏输入“Z40”或者“Z7F”,然后播放)。这一点的一个利用是在打击乐DPCM刚开始播放的时候使得DAC跳转,让DPCM声音更明显一点。
(这个特性也有副作用,比如你意图调整三角波的音量,却为了这种电子音而烦恼。解决方法:你可以手动制作一个渐渐降低/升高DAC的DPCM样本。这样的DPCM样本是几乎没有声音的。)
2014年02月21日 13点02分 25
level 1
[哈哈]给W7n大神跪了。
2014年03月23日 01点03分 27
1 2 尾页