smw吧 关注:553贴子:6,587

【科普】SMW BGM简易指令&制作教程 十五宅叔Version

只看楼主收藏回复


嗯......五一节说过要写结果太忙啥都没做,现在来补的.....
另外其他吧友也发过这方面的教程,但是要么是英文要么不太完善,所以还是打算做一个
总之就是给完全不会做BGM的人看的,也就是说你看了这个教程差不多也能做BGM了的程度........
(看看,本宅已经学到了轻小说凑字数的方法了w)
这个教程主要以Ice Man(SMW Central用户)的BGM制作教程为基础做成的,在这里感谢一下


IP属地:浙江1楼2014-06-21 11:54回复
    本宅没说完别插楼


    IP属地:浙江2楼2014-06-21 11:55
    回复
      首先
      要打入BGM,得用Addmusic
      而要打入的东西,则是txt文件(可能还要brr或bnk文件,后面会说)
      要做BGM就得从txt做起
      你随便打开一个别人做好的BGM的txt文件,你会看见长串字符和指令
      以下讲解的就是这些字符指令的含义。


      IP属地:浙江3楼2014-06-21 11:56
      回复
        ①、基本指令
        在文件开头,你可能会看到
        ;title=xxxxxx
        这是这个BGM会在LM里显示的名字
        在打入txt到ROM里时,会生成msc文件
        这个文件和打入了BGM的同名smc文件放在一个文件夹里,在LM里就会显示BGM的名字
        之后是#0
        这是声道的名字
        从0~7,SFC总共有8个声道
        #0就代表第一个声道,#3就代表第四个声道,以此类推
        当然,不写#几的话,是默认为#0的


        IP属地:浙江4楼2014-06-21 11:57
        收起回复
          然后会有w,这是总体音量,数值在0~255之间
          与之相对,v就是这个声道的音量,同样在0~255之间
          接着是t,这个指令确定了这个BGM的速度
          取值在0~255之间,当然取值太大反而会慢的
          接下来,你会看见有英文字母cdefgab的出现
          它们就代表着音乐的do re mi fa so la ti七个音
          而用“+”就能让一个音提半个声调,比如c+就是升do
          反之,“-”就能让这个音降半个调
          不会延续到下一个音


          IP属地:浙江5楼2014-06-21 11:58
          收起回复
            ox指令
            o即octave,音阶。
            x能取的范围就是1~6(SFC里最多6个音阶)
            o1最低,o6最高
            用法就是o4c,会延续到后面的音
            </>指令
            除了用o指令升降音阶,<和>也能调节音阶
            <表示降一个音阶,>表示升一个音阶
            用法比如<c,会延续到后面的音
            当然,一次性升降一个以上也是可以的,比如>>c


            IP属地:浙江7楼2014-06-21 11:58
            收起回复
              接下来是节拍
              节拍放在音的后面
              比如c1,就表示全音符的do;f64就是64分音符的fa,当然,64分音符是能达到的短的音符
              也就是几分音符就写多少
              这里要纠正一点
              以前本宅跟人说三分音符,六分音符是没的,后来发现是有的,连56分这样奇葩的都行.....
              @马里奥超级玛丽 以前这里讲错了,本宅道歉


              IP属地:浙江8楼2014-06-21 11:59
              收起回复
                @x指令
                这就是乐器的指令了
                下面是不同的乐器代表的指令:
                @0 = Flute
                @1 = String Ensemble 1 / Lead 1 (Square)
                @2 = Glockenspiel / Music Box / Vibraphone
                @3 = Marimba / Xylophone
                @4 = String Ensemble 2
                @5 = Pizzicato Strings / Acustic Guitar
                @6 = Trumpet / Trombone
                @7 = Steel Drum / Slap Bass
                @8 = Fretless Bass / Bass Guitar
                @9 = Piano / Honky-Tonk
                @10 = Percussion
                @11 = Harpsichord / Violin
                @12 = Yoshi Bongos
                @13 = Electric Piano
                @14 = Slap Bass
                @15 = Orchestra Hit
                @16 = Like @13 but softer
                @17 = Distortion Guitar
                @18 = Like @1
                @21 = Kick
                @22 = Pedal Hi-Hat
                @23 = Hi-Hat
                @24 = Snare
                @25 = Snare
                @26 = Bass Drum (hard)
                @27 = Bass Drum (medium)
                @28 = Bass Drum (soft)
                @29 = Power Set / Timpani
                注意,@19,@20和@大于等于30的乐器是没有的
                关于乐器,后面还有其他的东西,这就在后面讲啦
                基本指令完。接下去是循环缩减指令(自己命名的)


                IP属地:浙江9楼2014-06-21 11:59
                回复
                  ②、循环缩减指令
                  有时,你会用到重复的音,这个时候就不用一个一个写了
                  可以用循环缩减指令,既可以
                  大家先看下面:
                  f8f8f8f8
                  f8f8f8f8
                  f8f8f8f8
                  f8f8f8f8
                  以上是重复的对吧,那么就可以使用缩减指令
                  以上那段就可以简化为[f8]16


                  IP属地:浙江10楼2014-06-21 12:50
                  收起回复
                    你也会遇到下面的情况:
                    a+8c+8a+8c+8
                    a+8c+8a+8c+8
                    a+8c+8a+8c+8
                    a+8c+8a+8c+8
                    d16^32
                    c+16d16a8
                    a+8c+8a+8c+8
                    a+8c+8a+8c+8
                    a+8c+8a+8c+8
                    a+8c+8a+8c+8
                    d16^32
                    f+16c8^16
                    这个时候,你可以将它简化为:
                    (1)[a+8c+8]8
                    d16^32
                    c+16d16a8
                    (1)8
                    d16^32
                    f+16c8^16
                    也就是在方括号前面加上序号(1)【注意,括号不能是()而是()】
                    后面再次出现这个序号就代表了方括号的内容,后面也可加上重复次数


                    IP属地:浙江11楼2014-06-21 12:50
                    回复
                      这里也可以简化成这样:
                      [a+8c+8]8
                      d16^32
                      c+16d16a8
                      *8
                      d16^32
                      f+16c8^16
                      *指令指代了上一个方括号里的内容,*后面加上的数字就是方括号里内容的循环次数了
                      也就是说,假如有这样一段:
                      [f8c2]6
                      [a+8c+8]8
                      d16^32
                      c+16d16a8
                      *15
                      d16^32
                      f+16c8^16
                      *15就是将a+8c+8而不是f8c2循环15遍


                      IP属地:浙江12楼2014-06-21 12:50
                      回复
                        ③、拓展指令(一)
                        拓展指令是比较重要的指令,用得好,BGM就会如虎添翼,非常带感
                        yx指令
                        左右声道音量,在y0到y20之间
                        y0就是左声道,y10左右相等,y20就是右声道
                        qxy指令
                        x取值在0~7之间
                        y取值在0~f之间
                        x代表的是声音持续的长度,q0f就会使音很短促,q7f则使音比较长
                        y代表的是音量,f最大,0最小
                        pxx,yy指令
                        怎么说呢.......总之就是让音产生“扭动”......
                        xx相当于“扭动”的“频率/波长”
                        yy相当于“扭动”的“振幅”
                        取值都在0~255之间
                        这个是要靠自己试过才能掌握的.......


                        IP属地:浙江14楼2014-06-21 13:13
                        收起回复
                          &指令
                          变调。
                          比如有
                          c1&d1
                          这就会让c1在后半部分变调成d,然后d1正常发音
                          关于这个在后面的拓展指令(二)中还会有介绍
                          l指令
                          l即label,常用在一个声道开头
                          也许你发现了,在前面的教程中,在介绍节拍之前,介绍音调的指令时用的cdefgab是没有加节拍的指令的
                          其实,不加节拍是可以的
                          这个时候,比如e,就默认为e8
                          如果你设定了#0 l16
                          那么e就默认成e16了
                          以此类推
                          拓展指令(一)完。接下来是拓展指令中比较复杂的拓展指令(二)
                          量很多,也不知道今天能不能搞完......


                          IP属地:浙江15楼2014-06-21 13:13
                          收起回复
                            ④、拓展指令(二)
                            这些指令都有$字符,又没有上面那些指令好用,因此单独列出来
                            先是回声指令
                            格式:
                            $EF $XX $YY $ZZ
                            $F1 $AA $BB $CC
                            XX是指你要开启回声的声道
                            比如你想要#0#4#6#7有回声
                            那么
                            先列一个二进制数:
                            11010001
                            最左边的1代表#7开启回声
                            第二个1代表#6开启回声
                            最左边的0代表#5没有开回声
                            也就是说,0表示不开,1表示开,排列顺序从大到小
                            然后,再将这个二进制数转换为16进制数(用你的计算器吧)
                            D1
                            D1就是我们要的XX的值
                            YY,ZZ是左右声道的回声音量
                            AA是延迟量
                            BB是反馈
                            CC是过滤是否开启(00关闭,01开启)
                            同样还是要靠你试验才能搞懂的


                            IP属地:浙江16楼2014-06-21 13:27
                            收起回复
                              $E8 $XX $YY
                              音量变化指令
                              XX是变化的速度(01最快,FF最慢)
                              YY是音量要变化到的那个值(和前面的v和w一样是0~255的数,不过要转成16进制数)


                              IP属地:浙江17楼2014-06-21 13:30
                              回复