w7n吧 关注:36贴子:282

【教程】正说NES/FC音源。

只看楼主收藏回复

1L Baidu


1楼2012-11-04 13:05回复
    みんな! 这里是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章以后内容暂待更新。)


    2楼2012-11-04 13:08
    回复
      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计时为准。
      $符号代表十六进制。


      4楼2012-11-04 13:10
      回复
        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播放器就应该寻求播放效果较好的。


        5楼2012-11-04 13:10
        回复
          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%的音,可以让音变得更动听,也可以创造悲伤氛围。
          直角波能表现的音效非常多,具体利用方法很多,此处不提。直角波和杂音波是表现大部分音效的波形。


          6楼2012-11-04 13:13
          回复
            2.2 三角波
            三角波有1个通道。这里看这个图,上面的波形是标准三角波,而下面的波形则是NES三角波。NES三角波和标准的三角波有微小差异,一般可以忽略(NES三角波有毛糙感,而且仔细听可能听出一个音量低的高音)。

            三角波没有占空比的概念,也没有音量调节。同样的波长值,三角波比直角波的音低一个八度(频率为一半)。
            三角波的音色:低音浑厚,可以做Bass;高音很靠近笛声。
            不能用普通方法调整音量是三角波的一大弱点(用DAC法可以调节三角波音量范围为57%到100%,实用性不大,见3.0),正因此三角波的用处受到了巨大限制。
            三角波是一个重要性虽小但是不可或缺的波形,一般做Bass,也有其他应用。三角也适合表现颤抖的音。三角可以表现的音效较少(一般配合其他波形表现。另外我觉得超级马里奥中的跳跃用三角波表现更好)。
            


            8楼2012-11-04 13:16
            回复
              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,但是这里面良曲很多,音乐质量平均非常高。


              10楼2012-11-04 13:21
              回复
                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% 使用“音频率降低”则也比较接近“弦乐器合奏”。


                11楼2012-11-04 13:23
                回复
                  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 --- 完全的笛声,太高的话则不像笛声而基本只可能用于音效。


                  12楼2012-11-04 13:24
                  回复
                    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。)


                    14楼2012-11-04 13:26
                    回复
                      感谢分享。没推Natsume呀


                      IP属地:北京16楼2012-11-04 14:01
                      收起回复


                        17楼2012-11-04 19:57
                        回复


                          IP属地:北京18楼2012-11-05 00:17
                          回复
                            打算做nsf,但不知道应该如何做伴奏?(就是除主旋律以外的)


                            IP属地:山东19楼2012-11-05 18:52
                            收起回复
                              MARK


                              IP属地:上海20楼2013-01-29 21:52
                              回复