东方旧作吧 关注:327贴子:2,648

【教程】制作简单的东方旧作PMD音乐(win10系统)

只看楼主收藏回复

·0 引言
申请吧主需要主题帖,我又不想发太水的东西,那么忙里偷闲开个坑分享下PMD音乐的制作吧,如果真有人看而且觉得有用的话欢迎催贴,其实东西也不多~
PMD是由梶原正裕(M.Kajihara 或 KAJA)制作的FM音源驱动程序,可用来编写音乐文件,东方旧作大多数曲目就是用PMD创作的,本贴介绍的内容仅限简单的音乐制作方法,因为很多复杂操作其实我也没搞懂(
你将无法避免看到以下情况:偷懒、啰嗦、无节操、强行口胡...
敬请指正!


IP属地:北京1楼2024-07-11 20:50回复
    二楼喂度娘


    IP属地:北京2楼2024-07-11 20:52
    收起回复
      ·1 相关程序及资料
      ·1.1 必要程序的下载地址
      地址供导览,我会直接在楼中楼放一个资源整合包,失效请回复此楼。多此一举写这些是为了预防哪天资源包失效了我人也神隐了的情况。
      ①MC.EXE
      http://www5.airnet.ne.jp/kajapon/tool.html
      位于PMD98行、download列的“Ver.4.8s+Source”压缩包内,点击下载。
      ②msdos.exe
      http://takeda-toshiya.my.coocan.jp/msdos/
      目前最后一次更新时间是2024.7.3,点击Binaries and Source Codes (i86/v30/i286/i386/i486/pentium4)并下载。
      ③WinFMP.dll
      http://c60.la.coocan.jp/download.html
      目前2023.3.4最后更新,里面可以找到WinFMP052.zip(音质优先)和WinFMP021.zip(速度优先)的下载,二者择一即可。
      ④PMDWin.dll
      网址和最后更新时间同上,有PMDWin052.zip和PMDWin042.zip两种可选版本。
      ⑤FMPMD.exe
      网址同上,2003.9.28最后更新,找到FMPMD031.lzh,选择日文版或英文版下载。
      ⑥WatchFileUpdate.exe
      网址同上,2001.2.17最后更新,找到WatchFileUpdate001.lzh并下载。
      ·1.2必要程序的整理(若下载资源整合包可略过①~⑤)
      ①解压所有下载的压缩包,分别找到上面提到的程序,复制进同一个文件夹。
      ②msdos.exe位于msdos\binary\,有众多版本,可根据操作系统选择其中一个文件夹里的进行复制,后续如果启动FMPMD.exe出错就换一个文件夹里的。我用的是“i86_x86”文件夹里的。
      ③PMDWin.dll和WinFMP.dll的选择方法如上,我复制的都是“x86”文件夹里的。
      ④新建txt文件,重命名为pmd.txt并打开,复制下面三行内容进去:
      @璐村惂鐢ㄦ埛_000076K馃惥 off
      msdos mc /v %~nx1
      if ERRORLEVEL 1 ( pause ) ELSE start fmpmd %~n1.m
      ⑤保存并关闭pmd.txt,将后缀名txt修改为bat
      ---本小节分割线以下内容请勿略过---
      ⑥新建一个txt文件,后缀名改为mml,这就是创作音乐的地方了。文件名举例-“work.mml”。
      ⑦打开WatchFileUpdate.exe,在左侧第一列“監視ファイル(娔帇僼偉僀...)”、靠上第一行的位置填写mml文件名,如“work.mml”;在第二列“実行プログラム(幚峴僾儘僌儔...)”、靠上第一行填写“pmd.bat”;点击左下角“監視開始(娔帇奐巒)”,这样就连接了mml文件和播放程序,可以在mml界面编写完音乐后按ctrl+S保存的同时播放音乐。【前面括号内容为非日语环境下运行程序出现的乱码,想要防止乱码出现可使用本章1.5-③提到的LEGUI】
      ⑧点击WatchFileUpdate.exe的“監視開始”,打开对应的mml文件,编写一段乐曲(将在第2章介绍具体编写方式,也可阅读资源包里的“PMDMML.MAN中文翻译内部版本.pdf”,或者观看本章1.3的视频),ctrl+S保存,FMPMD就会自动打开并播放音乐。如果显示“找不到文件fmpmd”,检查你下载的是不是FMPMDE.exe,把文件名中的E删去即可。
      ·1.3 原作者教程
      梶原正裕实录,以下是B站搬运标题,搬运者“芯片音乐Chiptune”,机翻比较生草。
      ①【从入门到秃头】专业音乐驱动程序PMD-MML作曲完整教程 共18P
      (前期介绍安装和简单的乐曲编写,后期以乐理介绍为主)
      ②【东方黑历史】PMD作曲与编曲教程 共8P
      (乐曲编写和修改过程实录)
      ③【PMD】MML原创音乐制作实录 共8P
      (作品欣赏+编码展示)
      ④【东方旧作音乐制作】 PMD专业音乐驱动程序简介与解说 共18P
      (看得最懵逼的一集)
      ·1.4 扩展资料
      ①了解旧作音乐文件的获取与播放方式(我刚写这段时thbwiki还没被黑客攻陷...一定要恢复啊qwq):
      https://thwiki.cc/-/2ddg
      ②了解PC-98平台的PMD播放器及FM音乐的制作:
      https://thwiki.cc/-/1u23?oldid=351086
      ③PC-98平台PMD播放器介绍与测评:
      https://www.bilibili.com/read/cv12684618/
      ④可以下载海量古早游戏音乐文件的网站,这里已经调到了包含东方旧作的界面(倒数第3-7行):
      https://modland.com/pub/modules/PMD/-%20unknown/
      1.5 资源包内容简介(部分)
      ①“98fmplayer-master”文件夹:旧作文件播放器,98fmplayer.exe可以播放.M文件或.M2文件,自己创作的曲目也可以生成M文件让它播放。
      ②“hoot_th”文件夹:音乐播放器,打开里面的hoot.exe,使用↑↓键、回车键和Esc键可以选择音乐来听。
      ③“Locale.Emulator.2.4.0.0”文件夹:日语乱码转换器,打开LEGUI后窗口最小化,右键点击需要运行的程序,选择Locale Emulator - Run in Japanese(Admin)。
      ④“mucom88win200409”文件夹:(1)里面的mucom88win.exe可粘贴“范例与练习作品/范例-mucom88专用范例”并播放,跟PMD音乐没啥关系;(2)FmToneEditor.exe非常有用,可调出自己需要的音色,用在PMD音乐创作上。
      ⑤“MUSIC”文件夹:含东方旧作全部曲目,以及KAJA先生的一些作品。
      ⑥“PMD音乐的PC-98驱动程序及软件”文件夹:如果你想在pc-98模拟器上运行东方音乐文件或你创作的音乐文件,可以打开“[th01-05] 旧五作 (模拟器+汉化版+日文版)”文件夹,用anxdiet.exe打开.hdi文件,在里面新建几个文件夹,把.COM(驱动程序)、.EXE(播放软件)、.M(音乐文件)还有其他各种文件归类拖进去,打开anex86尝试播放。
      这方面说实话我不是非常懂,就以我的hdi文件为例吧:打开anxdiet.exe,把“洩矢呱呱子PmdProject.hdi”拖进去,可以看到我把驱动程序放在了QUDONG文件夹,软件在RUANJIAN文件夹,音乐文件在ZUNMUSIC和MYMUSIC文件夹。打开anex86.exe,按照“anex86使用说明.txt”完成配置,然后点Start,不用管东方旧五作的标题,只用关注左侧偏下的文件路径。
      首先是运行驱动,我需要先输入下面这行内容:
      A>QUDONG¥PMD
      其中的“A>”前面就有,不用输入;“¥”就是Backspace下方的“\”键。按回车键后Waitloop回数只要显示大于0就成功了。
      然后启动软件,可选择的有MSDP、FMDSP、PMDPS、PMDPV、PMK、PMP、VKEY,软件详情可参考本章·1.4-③。前面运行驱动后,我这边再输入以下内容就能打开对应的软件:
      A>RUANJIAN¥MSDP
      A>RUANJIAN¥FMDSP
      A>RUANJIAN¥PMDPS
      A>RUANJIAN¥PMDPV
      A>RUANJIAN¥PMK
      A>RUANJIAN¥PMP
      A>RUANJIAN¥VKEY
      播放方法以FMDSP为例,打开后按↓键调出显示路径,选择有音乐文件的文件夹,继续选择音乐文件,按回车播放即可,返回上一级目录选中“/..”并回车。
      其他事项:用“洩矢呱呱子PmdProject.hdi”玩不了旧五作,如果想玩,可以在anex86里换成汉化版文件夹里的“thow_cn.hdi”。
      ⑦“范例与练习作品”文件夹:范例部分有KAJA先生的范例(部分是我观看本章-1.3视频抄录的)和b站/油管上几首仿旧作曲目的mml文件;练习部分是我练手过程中产生的一些东西。如果你以后想系统地创作自己的曲目,而不是像我这样不求甚解,请一定多参考油管和b站上大神分享的mml文件,学习他们编曲的体系,千万别像我写的Blackbird一大堆乱七八糟的编码堆在那里,后期想改根本无从下手。
      ⑧PMDMML.MAN中文翻译内部版本.pdf:即本资源包“PMDMML(mml操作手册).MAN”的中文翻译版,涵盖从初级的音乐符号到高级的各种指令,我之后介绍具体音乐制作时只会讲很简单的内容,如果你想进阶,这份资料会帮大忙的。最后,感谢74644323的翻译!


      IP属地:北京3楼2024-07-11 21:06
      收起回复
        【先做个测试,看看空格、Tab和空行在这边会不会自动消除】
        ; nm alg fbl
        @031 001 006
        ; ar dr sr rr sl tl ks ml dt ams EGuitar
        031 000 000 008 000 007 000 003 003 000
        031 015 003 006 001 011 000 001 003 000
        031 015 003 009 001 019 000 001 007 000
        031 015 003 008 001 000 000 003 003 000
        A@31v12q1Ml8,1,9,2*1 y$90,0 y$98,0 y$94,0 y$9c,0
        Ao2l8 a1 L [Q8aQ2xx]4[Q8xQ2x]2 [Q8gQ2xx]2 Q8fg4Q2xxxxQ8xQ2xx


        IP属地:北京4楼2024-07-15 12:39
        收起回复
          顶一下


          IP属地:广东来自Android客户端6楼2024-07-21 00:03
          收起回复
            楼主回来辣,这个月休息了几天,现在满血复活继续更第2章~
            上面的第1章写得虽然详细,可惜没有配图,不便于直观理解,这章我会多放些图。
            ·2 音乐制作方法
            ·2.1 IDE选择及字体设置
            IDE在这里指编辑pmd音乐代码的环境。KAJA的教程里用的是MIFES(这里感谢B站“-sF6-六氟化硫-”提供的信息),我下载了MIFES 11试用版,如图所示,其优点是功能多、行列显示清晰、界面不单调,缺点是界面语言非中文且有乱码、正式版600多元,用于pmd制作性价比太低。那么,让我们忽略MIFES,采用前面·1.2-⑥~⑧讲过的mml文档。其实用txt是一样的,不过mml听起来更高级(我在说神马)...

            关于字体设置,由于我们要在文档内输入大量字符,为了使行文规整,需选用所有字符宽度统一的字体,否则像某些字体m比n宽,n比i宽,无法上下对齐,非常影响浏览、检索和修改。
            字体设置方法:打开mml文件,找到上栏,打开格式-字体,我使用的是consolas字体。
            ·2.2 符号讲解-前言
            制作pmd音乐用到的所有字符,在《PMDMML.MAN中文翻译内部版本.pdf》内可分为“符号”和“命令”两种,我在后面的小节会介绍我熟悉的符号和命令,也是比较常用的那些。如果你想向pmd音乐高手的方向努力,请不要拘泥于我这点知识,务必详细阅览《pdf》。
            推荐大家一边看一边亲自实践,同时可以用电脑文档或记录本着重记录有用的内容,因为我为了讲清楚相关知识会非常非常啰嗦,导致文章里的知识点很分散。当然,现在首先要做的是使用WatchFileUpdate.exe将mml文件和播放程序相连接,如图:

            注[1]:之前我在4楼试验过空格、空行和Tab能否在贴吧正常显示,因为我们将频繁使用它们三个,最后的结果是只有空格能显示。后面我放在文章里方便大家复制的简单示例中,空行和Tab将分别用【空行】和【Tab】代替,大家复制后用空行键和Tab键手动替换即可。
            注[2]:制作音乐肯定要用到一些乐理,很惭愧我并没有系统性学习过乐理,这里有我不求甚解的缘故,也有我们那边义务教育音乐课质量低下的锅,总之我会以我自己的理解介绍相关部分,大家当心被带到沟里
            ·2.3 音符符号讲解 c d e f g a b + - r x
            一切准备就绪后,打开mml文件,如图,输入[示例1]的这行内容:
            I【Tab】cdefgab

            其中I(是大写i不是小写L)表示一个音乐通道,之后会再讲。
            按保存快捷键ctrl+s,此时FMPMD2000弹了出来,自动演奏do、re、mi、fa、sol、la、ti(国内称为si)。如图可见,do到ti依次对应钢琴键盘上的白键c、d、e、f、g、a、b。

            那么黑键呢?非常简单,例如第一个黑键在c后面,它可用c+表示,同时它又在d前面,也可用d-表示。依此类推,五个黑键分别可写成c+或d-;d+或e-;f+或g-;g+或a-;a+或b-。
            我们删去之前输入的I【Tab】cdefgab,现在如图输入[示例2]的这三行内容:
            I【Tab】cc+dd+eff+gg+aa+br
            【空行】
            I【Tab】cd-de-efg-ga-ab-b

            第一行最后的r是一个休止符,即在此位置不发声,起到停顿的效果。可以听到,尽管写法不同,但第一行和第三行的演奏结果是一致的。
            你可能会问,白键和黑键的符号长度不同,是否能写得规整些,比如每个音符占两格,写成c c+d d+e f f+g g+a a+b呢?当然可以,除特定组合符号外(比如c和+不能拆开,还有之后讲的一些符号和命令),空格可以在旋律中任意增补,不影响演奏结果,它本身就是在pmd音乐中起到规整行列的作用。
            r:刚才已经提到过,r的位置不发声,它将在音乐制作中频繁用到,来控制音符演奏的时机,比如生日歌的第一段可以如[示例3]表示:
            I【Tab】q2ccdrcrfrerrr
            示例中的q和数字起到削减音符末端部分长度的效果,这样两个c的音就不会粘连在一起。不着急,之后会再讲到q,以及如果你是乐理小白,没看懂示例中r的位置如何控制演奏时机也没关系,后面会讲一下节奏。
            x:发前一个音符的音,比如cddeee等同于cdxexx,个人觉得比较鸡肋。
            ·2.4 音组符号讲解 o < >
            o:如图,完整的钢琴键盘上有7组完整的do-ti,我们如果想演奏特定音组的音符,需在前面用o1-o7表示。

            你可能会疑惑刚才[示例1]至[示例3]并没有设定音组,演奏的是什么位置的音符呢?其实几乎所有未设定的相关符号都会采用默认值,音组的默认值是o4,即图中的小字一组。
            可以复制下面5行的[示例4.1]感受一下用法和效果:
            I【Tab】o3cde
            【空行】
            I【Tab】o4cde
            【空行】
            I【Tab】o5cde
            音乐旋律通常不会局限于一个音组,要来回跨越,这种情况下o符号可以随叫随用,使后面的音符限定在此音组演奏。另外,[示例4.1]写成多行是为了作为示例便于各部分对照,它可以等效写成下面[示例4.2]的一行内容:
            I【Tab】o3cdeo4cdeo5cde
            一般来说,音组的跨越主要发生在相邻音组,那么使用“<”和“>”更方便。
            <:向左侧更低的音组跨越,不要把它当作小于号理解,可以当作←箭头理解。
            >:向右侧更高的音组跨越。
            即便跨越多个音组,也可叠加使用“<”或“>”,比如o3c>>>c。
            下面[示例5]的三行内容对比了o和<>两种方式:
            I【Tab】o3gbo4do3bgbo4do3b o5gbo6do5bgbo6do5b
            【空行】
            I【Tab】o3gb>d<bgb>d<b >>gb>d<bgb>d<b
            两种方式的优缺点很明显:使用o可以直观了解某个音在第几音组,但会使整串编码变得繁冗;使用<>可以来回切换自如,但用多了容易搞不清现在在第几音组。综合考虑,pmd音乐的编写大多用o开头,之后使用<>。
            ·2.5 SSG通道符号及乐器编号讲解 G H I @
            前排提示:由于“@”直接放在贴吧文章里容易引用用户名,因此这里用“【@】”替代“@”,大家注意识别~
            之前每个示例最左侧的I表示一个演奏通道,事实上I只是各种通道符号中的一个,下面简要介绍所有通道符号。
            通道A、B、C、D、E、F属于FM通道,音色相对高级,东方旧作里吸引人的音色大多由FM通道演奏。FM通道的设定略为复杂,我们之后再讲。
            通道G、H、I属于SSG通道,音色相对低级,听起来和超级马里奥早期曲目一样。我在前面的示例里使用I,单纯是因为喜欢用这个字母,用G或H是一样的。可以同时使用这三个SSG通道形成和声,如下面[示例6]的三行内容:
            G【Tab】c d e f g g+a b
            H【Tab】e f g a b b>c d
            I【Tab】g a b>c d d e f
            通道J属于PCM通道,我不太熟悉,略过。
            通道K、R属于节奏通道,节奏范式可用多个R设定,K用来决定不同R的播放顺序,需注意使用K、R通道会占用I通道。这个留到后面鼓点部分细讲,毕竟我写这一小节只是为了引出下一小节要用的【@】6乐器而已。
            【@】:前面所有的示例用的都是同一种音色,听起来未免太单调了。在SSG通道和FM通道中,可以用【@】加上乐器序号定义乐器类型,其中SSG通道有10种设定乐器,觉得不够还可用之后介绍的E命令制作更多SSG通道乐器音色。10种乐器如下:
            【@】0:默认方波音色
            【@】1:合成器-1
            【@】2:合成器-2
            【@】3:合成器-3
            【@】4:钢琴-1
            【@】5:钢琴-2
            【@】6:马林巴
            【@】7:弦乐
            【@】8:铜管-1
            【@】9:铜管-2
            如图,可参考下面[示例7]的五行内容了解每个乐器的音色,演奏效果等同于蓝框里的一行内容。
            G【Tab】【@】0cccr 【@】1cccr 【@】2cccr
            【空行】
            G【Tab】【@】3cccr 【@】4cccr 【@】5cccr
            【空行】
            G【Tab】【@】6cccr 【@】7cccr 【@】8cccr 【@】9cccr

            个人感觉10种乐器听起来都差不多,只有【@】6特征稍强一点。


            IP属地:北京本楼含有高级字体7楼2024-08-10 14:42
            收起回复
              ·2.5 速度与节拍讲解 t l 1、2、4、8、16、32、3、6、12、24、(48、64、96、192). C
              不同乐曲的节奏快慢是有差异的,以th4的“少女綺想曲”和“星の器”为例,跟着音乐打拍子,能感觉出后者节奏稍快。如图,将两首曲子拖进制作鬼畜常用的软件测一下BPM(拍速,即乐曲每分钟的节拍数(四分音符数),数字越大表示音乐节奏越快),分析结果印证了我们的猜测。

              t:定义等同于BPM,想要在pmd音乐制作中改变音乐节奏的快慢,可用t加上数字来规范后面旋律的拍速。
              注[1]:t后面的数字限定在18-255。
              注[2]:只需在一个通道设定或改变t值就会控制所有通道的拍速,但反过来要想只改变一个通道的拍速而保持其他通道拍速不变,那种事情做不到啦~
              注[3]:《pdf》里似乎没提及t后面数字的默认值,也可能是我疏忽了?经过摸索,默认值大约是80。
              如图,下面[示例8]的一行内容对比了一段旋律在不同拍速下的演奏速度:
              I【Tab】t60cdefgab t120cdefgab t240cdefgab

              l:下面讲音符长度的设定,用l加上数字表示。注意l是小写L,不是数字1或大写i。
              这里首先要提到全音符,全音符以我的理解就是单个音符最长的限定演奏时间,用l1表示。全音符长度的二分之一,是二分之一音符,用l2表示。全音符长度的四分之一,当然就是四分之一音符,用l4表示,同时它的长度也是l2的一半。依此类推,很容易理解l8、l16、l32,以及l3、l6、l12、l24的含义:l后面的数字代表它的演奏时间是全音符长度的几分之一,各种音符之间的长度比值也很好计算。
              l的默认值为l4,四分之一音符代表乐曲的一拍,这样你应该能更好理解上面提到的BPM,也就是pmd音乐中的t符号了。同理,每个全音符的时间段代表4个拍子。
              如图,下面[示例9]的十二行内容使用乐器【@】6对比了不同音符的长度,每行的总长度等同于一个全音符,这里为了节省空间我就不在I通道之间空行了。之前示例中的空行作为一种习惯,是为了像·2.1的配图那样在使用多个乐器通道时让每一大段之间有序隔开,不然画面会过于混乱。
              I【Tab】@6l1c
              I【Tab】l2 cc
              I【Tab】l4 cccc
              I【Tab】l8 cccccccc
              I【Tab】l16cccccccccccccccc
              I【Tab】l32cccccccccccccccccccccccccccccccc
              I【Tab】l1 r
              I【Tab】l1 c
              I【Tab】l3 ccc
              I【Tab】l6 cccccc
              I【Tab】l12cccccccccccc
              I【Tab】l24cccccccccccccccccccccccc

              你还可以试试l48和l96,这里地方太小就没把它俩放上去。
              乐曲中的音符长度经常在变化,如果每个音符前都加上l和数字就太麻烦了,有没有其他表示方法呢?其实在音符符号后面加上表示音符长度的数字就可以,比如l2cdl4e可以写成c2d2e4,具体示例会在讲完下面的附点音符以及全音符长度设置后一起给出。
              .:附点音符用“.”表示,它用在单个音符符号后面,用来延长这个音符一半的长度,比如a2.的长度等同于a2a4。你可能会觉得附点音符没什么用啊,前面的例子直接用a2a4写就行,为什么还要专门多设计一种写法呢?对于默认乐器【@】0来说,两种写法的演奏效果确实没区别,因为这个乐器的音没有任何停顿或减弱,除非用后面介绍的Q或q把末尾剪切掉;而我们在实际作曲中用到的大部分乐器都像【@】6这样“点状发音”,此时a2.和a2a4的总长度虽一致,但a2.只发一次音,a2a4会发两次音。
              注[1]:本节讲到的设置都可用于休止符r,例如l2r、r4.等,毕竟停顿也分时间长短。
              注[2]:刚才提到的a2.和a2a4并非完全不能用“点状发音”乐器等效演奏,之后会讲到连音符号。
              C:这个符号用于全音符长度的设置,默认值为C96,意思是一个全音符的长度有96个时间单位,此时可演奏的最短音符是l96,即一个时间单位的长度。C后面数字的设置范围为1-255,数字定好后,要注意乐曲中可用的音符长度必须能被这个数字整除,例如C96可用的音符只有l1、l2、l3、l4、l6、l8、l12、l16、l24、l32、l48、l96,而C192可用的音符比C96多了l64和l192。
              需要注意的是,无论全音符长度设为多少,一个时间单位的长度都是相同的,也就是说C192的l192音符长度等同于C96的l96音符,前者的l4音符长度等于后者的l2音符长度。如果你拿着秒表回头去数[示例8]中音符演奏的速度,会发现和BPM的定义不太相符,比如t60cdefgab按定义本应每隔1秒演奏一个音符,结果演奏速度快了一倍,这是因为pmd音乐的默认全音符长度为C96,实际上大部分人作曲时会设定成C192,此时l4才是真正的一拍子,否则pmd音乐中就默认l2是一拍子了。
              C符号可以与t协同使用,当你想制作音符节奏快到极致的曲子时,就把C和t都调得高高的,这样能往曲子里塞很多发音时间极短的音符来制造速弹效果。
              至此,第二章最重要的小节基本讲完,我们的水平足够写出简单的曲子了!如图,下面[示例10]的十四行内容综合了前面讲过的符号,是th3“永遠の滿月”的一段复刻:
              G【Tab】C96t65【@】0o4
              H【Tab】 【@】6o3
              【空行】
              G【Tab】l4cl8gfl4g>c <b->l8c<b-l4gl8fe-
              H【Tab】l8cdd+g>cdd+g <<a+>cdfa+>cdf
              【空行】
              G【Tab】l4f.l8gl2c l4f.l8gl2d
              H【Tab】<<g+a+>cd+g+a+>cd+ <<gb>cdfb>cd
              【空行】
              G【Tab】c4g8f8g4>c4 <b-4>c4d4<g4
              H【Tab】<c8d8d+8g8>c8d8d+8g8 <<a+8>c8d8f8a+8>c8d8f8
              【空行】
              G【Tab】g4.>c8c2 d4.d+4.f4
              H【Tab】<<g+8a+8>c8d+8g+8a+8>c8d+8 <<a+8>c8d8f8a+8>c8d8f8

              一至二行是G、H通道的参数设定,包括全音符长度、拍数、乐器编号、初始音组,其中C和t因为控制所有通道,在其中一行设置好就行。如果将C96换成C192,相当于每个音的演奏时间都增长一倍,等于整首曲子0.5倍速放慢。
              关于音符长度表示方法的优缺点对比,四至八行使用l加数字,十至十四行使用音符加数字。可以看到,像G通道音符长度经常变化的情况,使用后者更简便,看着也不乱;而像H通道音符长度都相同的情况,前者仅需一个l加数字就完事了,后者显得太麻烦。因此,在一般的音乐创作中,我们可以根据情况灵活切换两种表示音符长度的方法。
              我把曲子分成了8个小段来表示,每个小段的总长都是一个全音符长度。例如计算一下第一小段的总长:G通道1/4+2*1/8+2*1/4=1,H通道8*1/8=1。再计算一下最后一小段G通道的总长来理解附点音符:1/4+1/2*1/4+1/4+1/2*1/4+1/4=1
              如果你是纯乐理小白,看懂了我这小节讲的内容但依然不太清楚示例乐曲的节奏究竟怎么与音符长短相关联,可以这样试试:当一段乐曲演奏时,用手指随着音乐节奏敲出间隔固定的哒哒声,敲击频率别太慢,不要演奏好几个音符才敲一下,要选择一个能与每个音符都同时发声的敲击频率,乐曲中有停顿时也保持敲击。然后,将曲子当作填空游戏,每次敲击都是一个空格,把音符按长度填进去,下图是[示例10]最后两小段的演示,省略了跨越音组的<>符号:

              ·2.6 音符长度剪切符号讲解 Q q
              这里的“剪切”指单纯的裁剪,不要理解成电脑操作里的“剪切-粘贴”了~
              Q:当你用类似【@】0的乐器演奏,但不希望两个相同音高的音粘连在一起时(比如上图G通道的两个c),可以用Q切掉音符末尾的一部分使它们分隔开。Q的表示方法为后面加数字,数字范围0-8,默认值为8,即不剪切音符末尾。
              怎么理解数字范围呢?比如有一个音符要用Q剪切末尾,那么剩余的长度就是音符原长度*数字/8,数字为8时不剪切,数字为4时剪切一半,数字为0时整个音几乎不发声。如图,请参考[示例11]的三行内容简单感受一下:
              I【Tab】Q8cccr Q7cccr Q6cccr
              I【Tab】Q5cccr Q4cccr Q3cccr
              I【Tab】Q2cccr Q1cccr Q0cccr

              q:这个符号也用于音符末尾的剪切,它的剪切是按单位时间来计算的。q后面的数字范围0-255(默认为0),表示音符末尾被剪切掉的时间长度,比如c4音符在C96设置下的长度是96/4=24个时间单位,那么q24c4几乎不发音,q12c4剪切12个单位时间也就是c4一半的长度,q0c4不裁剪,而当这个例子里q后面的数字大于24时,效果和q24c4一样,因为没有更多的单位时间可被剪切。
              Q是按比例裁剪,q是按时长裁剪,如图,下面[示例12]的三行内容演示了它们的剪切效果:
              I【Tab】Q1q0 l1c l2cc l4cccc
              I【Tab】Q8q24 l1c l2cc l4cccc
              I【Tab】Q4q12 l1c l2cc l4cccc

              第一行q设为默认值,只有Q剪切,此时不同音符的发音时间分别被剪切为原先1/8的长度。
              第二行Q设为默认值,只有q剪切,此时每个音符都被剪切掉24个单位时间。我们计算一下三种音符的剩余长度,l1c:96-24=72,也就是发原先3/4长度的音。l2c:96/2=48,48-24=24,发原先一半长度的音。l4c:96/4=24,24-24=0,几乎无声,极短暂的声音提示此处有个音符,否则这个音符写在那里就没意义了。
              第三行先用Q剪切一半的长度,在此基础上再用q剪切掉12个单位时间,三种音符的剩余长度分别为原先的3/8、1/4、0,感兴趣可以验算一下。
              对于一般的pmd音乐创作而言,使用Q就足够了。q在我的介绍中似乎显得无用,其实它有更高级的用法,由于略为复杂我这里就不另作介绍,具体请参阅《pdf》。


              IP属地:北京本楼含有高级字体8楼2024-08-17 13:17
              收起回复
                ·2.7 音量符号讲解 v V ( )
                这几个相比前面的很好懂啦,本小节只介绍它们最基础的用法,对复杂用法感兴趣的话欢迎翻阅《pdf》,哪怕是简单的音量符号只要你用得好也能玩出花来~
                v:后面加数字可以设定不同乐器通道的初始音量,起到协调各乐器音量的效果;也可以改变一段旋律不同音符的音量,展现乐曲的情绪张力。v符号在SSG通道中的数字范围是0-15,在后面讲的FM通道中的数字范围是0-16,默认值在两种通道中均为8。
                V:在SSG通道中,v和V完全一致,不作区分;在FM通道中,使用V符号能更精准地调节音量,v和V就像显微镜的粗准焦螺旋和细准焦螺旋,此时V后面的数字范围是0-127,这里我直接从《pdf》截一张FM通道中v与V的数值对照表:

                ():除了v符号,还可以分别用“(”和“)”将音量调低或调高。()的用法类似前面讲过的<>,使用一次即调低或调高一个v的数值,可连续使用,比如v7c)))c等同于v7cv10c。需注意()是英文括号,别打成中文括号()了,pmd音乐制作中用到的所有符号或命令都是英文字符。
                如图,下面的[示例13]是东方旧作某曲目的一部分,我分成四个小段展示,每个小段的总长为一个全音符,前两段用v符号调节音量,后两段先用v符号设定音量,再用()符号调节:
                GH【Tab】C192【@】2Q7o3t140l16
                【空行】
                G【Tab】v9f r g r a+ r >c r v10f r g r a+ r >c r v11<a+ r g r f r c r v10<a+ r g r f r c+ r
                H【Tab】v7r c r f r g r a+ v8>r c r f r g r a+ v9r >c r <a+ r g r f v9r c r <a+ r g r f
                【空行】
                G【Tab】v9f r g r a+ r >c+ r )f r g r a+ r >c r )<a+ r g r f r c+ r (<g+ r f r c+ r c r
                H【Tab】v7r c+ r f r g r a+ )>r c+ r f r g r a+ )r >c r <a+ r g r f (r c+ r <g+ r f r c+

                第一行进行乐器通道的设定,G和H写在一起是因为它们的设定值相同,这是非常方便的写法,在pmd音乐制作中经常用到,比如可以写ABC、EF、GHI等。音量方面,G通道的音始终比H通道高2个v值,两个通道的音如图所示交错演奏,形成微微摇颤的效果,同时每半个小段的音量配合旋律先升高再降低,循环播放后如波浪般起伏。如果你想听循环效果,在第一行的C192前面加一个L即可,这是全局循环符号。

                那么,听出来是哪首曲子的一部分了吗?答案揭晓,是th5的“魂の休らむ所”~
                ·2.8 循环符号讲解 [] : L
                []:当你想重复演奏几个音符或一整段旋律时,可以把要循环的部分写进方括号[]内,然后在[]后面加上数字表示循环次数,数字为0或不填数字时无限循环。举个简单的例子,[efg]3的演奏效果等同于efgefgefg。
                循环符号内可继续嵌套循环,如图,下面[示例14]第一行的循环部分完全展开即为第二行内容:
                I【Tab】[l4cg[l8>c<b]2l4>c<gfa[l8gg-[l16gg-]4]2l8g<b>c]1r
                I【Tab】l4cgl8>c<b>c<bl4>c<gfal8gg-l16gg-gg-gg-gg-l8gg-l16gg-gg-gg-gg-l8g<b>cr

                嵌套循环最多嵌套32次(一般肯定用不到这么多了),次数是按照[[[[]]]]这种类型计算的,而[[][][]]只算嵌套2次。
                ::在某些情况下,我们不想让循环段落中靠后的几个音在最后一次循环中演奏,这时:符号(英文冒号符号)就派上用场了。将它放在[]内,例如[cde:fg]2,演奏效果为cdefgcde,第二次循环演奏完cde就结束循环。
                需要注意的是,在不带“:”的循环结束后,音符设置l以及音组设置o<>将按循环开始前的设定继续演奏,而在带“:”的循环结束后,相关设置以循环内“:”后面的最后一个音符为基准。听起来有些复杂,总之为了避免相关的困扰,尽量在一个循环结束后重新设定l和o<>即可。
                L:前面已经提到过,L作为全局循环符号可以使后面的全部内容循环演奏,一般用它实现单曲循环,根据我们想达到的效果把它放在开头或中间。L符号只对单个通道起效,想让整首曲子循环需要为每个通道添加。一般而言,为使整首曲子原样循环播放,最好把L符号放在所有相关设定的前面,否则第一次播放时最后的l、o、【@】、q、v等设定会直接应用到后面的循环,不过L符号的这一特点也可巧妙利用,例如I【Tab】【@1】Lcde【@6】fgab会在之后的循环里只用【@】6乐器演奏。
                如图,下面[示例15]的两行内容来自KAJA的视频教程(稍有修改),是我学习pmd音乐制作的过程中播放的第一串编码,当时内心超级激动~ 相信经过这一小节的讲解,你能很容易理解这个示例:
                I【Tab】Lo5v12l16q1
                【空行】
                I【Tab】[c:eg]6[c:fa-]6[c:e-a-]6[<b->df]5b-

                第一行是I通道的相关设定:乐曲从开头部分全局循环(注意L符号放在最前面),初始音组为第5音组,初始音量为12,初始默认音符长度为十六分音符,每个音符剪切1个单位时间的长度。
                第二行以第一个小循环为例,ceg完整循环5次,循环到第六次只演奏c就结束循环,演奏后面的部分。


                IP属地:北京本楼含有高级字体9楼2024-08-23 16:34
                收起回复
                  ·2.9 连音、连奏、滑音、弹音符号讲解 & && {} {{}} 附加一种音符长度表示方法 %
                  即便是最长的音符或停顿在设定上也只有一个全音符的长度,如果你想制作更长的音符或更长的停顿,需要用到连音符号“&”。
                  &:连音符号的用法很简单,例如我们想制作2.75个全音符长度的c音符,直接做加法就行,用&符号连接两个c1、一个c2和一个c4,写成c1&c1&c2&c4,由于合并成了一个音,多余的c符号没有必要显示,我们可将其简写为c1&1&2&4。另外,若设定了Q或q符号,则只对合并后的整体进行一次剪切,而不对被连接的各个音符单独起作用,例如Q4c2&2的演奏效果为c2,因为两个c2合成的c1被剪切掉一半后只剩一个c2;C96q72c2&2的演奏效果为c4,因为合成的c1的96个单位时间被剪切掉72个后只剩24个单位时间,24/96=4,即四分之一音符。
                  &&:这个是连奏符号,它和连音符号的用法相同,但区别是连奏符号只将各个音符象征性地合并在一起,各个音符仍然单独演奏,例如c2&&2发两次音,不像c2&2只发一次音。连奏符号的用处是在设定了Q或q符号的情况下只对被连接的音符中的最后一个进行剪切,其余音符屏蔽了剪切符号的影响,例如C96Q0c2&&2&&2或C96q255c2&&2&&2的演奏效果都等同于C96c2&&2,只有最后一个二分音符c受到影响被全部剪切掉了。
                  {}:滑音在作曲中经常使用,用得好可以增强乐曲的表现力,没用好或者滥用则会显得很滑稽。具体用法是在大括号{}内输入滑音的起始音符和终止音符,然后在{}后面输入代表滑音整体长度的数字,例如{cg}4、{a>a}16、{o2d+o5f+}1&4。
                  以上三个符号理解起来都很容易,连音和连奏我就不再专门写示例了,滑音比较好玩,下面[示例16]的四行内容是我用它模拟的《悯农》,如图:
                  I【Tab】{cf+}4{cf+}4{f+c}4f+<f+>4r2&4
                  I【Tab】{f+c}4f+{cf+}4{f+c}4<f+>4r2&4
                  I【Tab】{cf+}4f+{cf+}4q1f+f+q04r2&4
                  I【Tab】{f+c}4{f+c}4q1f+f+q0<f+>4r2&4

                  一声用f+表示,二声用{cf+}表示,三声暂时没想出更好的表示方法就先用降低一个音组的f+表示,四声用反过来的二声{f+c}表示。每行总长度为两个全音符,每个音(字)的长度为四分音符,行末的休止符用来协调古诗节奏,r2&4也可用r2.代替。第三、四行有两个一声相邻的情况,我用q1将其短暂分隔,然后用q0返回默认状态。
                  {{}}:我这篇文章基本是把《pdf》里的简单内容按自己的认识梳理一遍,但这是唯二《pdf》里没有的内容之一,这个符号比较新,似乎没有名称,我按它的演奏效果单方面将其命名为弹音。使用较旧的配置文件无法播放弹音,有时还会出现之前能播放但后来无法播放的情况,如果出现以上状况,可以下载我的资源包直接使用,或者如图将资源包里选中的这些程序覆盖到原文件夹。

                  弹音的用法可简可繁,先介绍简单用法:在双重大括号{{}}内可放置1至16个音,{{}}后面输入代表整个弹音长度的数字,此时括号内的音会按顺序循环播放,每个音的长度为1个单位时间,累积时间达到括号后设定的音符长度后结束演奏。举个例子,在C96设定下,{{cdef}}8等同于l96cdefcdefcdef,括号内的音符循环三次,累积时间为12个单位时间,12/96即为八分之一音符。
                  KAJA写过一首弹音范例,可以在我发的资源包里打开PMD48文件夹,找到SAMPLE.MML然后播放。如图,下面[示例17]的两行内容是我对SAMPLE.MML中弹音部分的节选、简化和微调,看不懂的地方先不用在意:
                  I【Tab】v15 q0 o4 l8 E1,-2,24,0
                  I【Tab】{{eg>c<}}2. {{eg>c<}},,,2 {{fa>c<}}%108 {{fa->c<}}%60 {{fa->c<}} r {{eg>c<}}%108

                  “E1,-2,24,0”是SSG通道音色的设定,用在这里的作用之一是使每个弹音逐渐降低音量,之后会再具体讲解E命令。“,,,2”是弹音的复杂用法,在讲它之前要先说明“%”是什么。
                  %:这本来是属于·2.5的内容,我以为不会用到它就没讲,不过既然你已经熟悉单位时间的概念,这个就很好懂了。音符长度可与单位时间进行换算,例如在C96设定下,二分音符d2的长度是96/2=48个单位时间,单位时间可用%符号表示,一个单位时间为%1,四十八个单位时间为%48,此时d2可用d%48表示。(既然讲到这了就再提一下$符号,音符后面加$然后接音符长度的16进制形式,例如16的16进制为10,那么c16的长度等同于c$10)。
                  %符号的优势有两个,一是能摆脱C设定下音符长度的限制,制造不和谐节奏,例如把一个C96设定下的二分之一音符长度拆成c%17d%22e%9这三个音,验算可得17+22+9=48,48/96=1/2。%符号的第二个优势是在某些无法用连音符号表示长度的情况下成为一种替代方案,[示例17]正是这种情况。
                  回到[示例17],第一行是一如既往的相关设定,这里只回顾一下l8,它代表在后面没有新的l设定的情况下,所有未标数字的音符默认是l8长度。
                  接着看第二行,{{eg>c<}}2.是二分附点音符长度的弹音,由于弹音符号的特殊性,这里的2.无法用2&4代替。
                  {{eg>c<}},,,2是弹音的复杂用法,设计上其实有四个逗号,通式为“{{音符}}弹音总长度,参数①括号内每个音的长度,参数②不知道,参数③末尾剪切单位时间长度,参数④每次循环后的音量变化”,4个参数的默认值为“%1,1,0,0”,若省略则采用默认值。依次说明一下这4个参数:“参数①括号内每个音的长度”比较好理解,例如前面提到过的C96设定下的{{cdef}}8的完整写法是{{cdef}}8,%1,1,0,0,若改变参数①将其写为{{cdef}}8,%2,1,0,0则括号内每个音的长度为2个单位时间,弹音演奏效果等同于l48cdefcd,需注意设定此参数时不要忘写%符号。“参数②不知道”有0和1两个选项,具体作用我不太清楚,一般不用动它。“参数③末尾剪切单位时间长度”指对整个弹音长度的剪切,数值必须小于弹音总长度,这里再次用C96设定下的{{cdef}}8举例,想获得最大剪切值可设为{{cdef}}8,%1,1,11,0,此时弹音只发出一个c%1音,如果设定成12就完全不发音了,这是不行的。“参数④每次循环后的音量变化”,可设置正负值,正值的效果我感觉不明显,但设置为-1有不错的音量减弱效果。
                  继续看“{{eg>c<}},,,2”,它写成这样单纯是为了设置参数③,在末尾剪切出短暂的停顿,其他几个参数空着会自动采用默认值,最后一个参数连前面的逗号也不写了,同样采用默认值。这个弹音的长度刚开始容易误看成2,现在你应该能知道,它的长度其实是默认的八分音符l8。示例中除了这个弹音外的其他弹音后面都没有逗号,相关参数全部采用了默认设置。
                  {{fa>c<}}%108的长度是108个单位时间,结合默认的C96其实可以看成{{fa>c<}}1&8,只不过后者无法在弹音后面表示。
                  最后,我们可以计算[示例17]的总长度来回顾一下节奏方面的内容:1/4+1/8+108/96+60/96+1/8+1/8+108/96=4个全音符的长度。
                  弹音的用法我觉得有两种:一是它听起来有活力,非常适合用于游戏配乐;二是可以用来仿造和弦,因为pmd音乐的通道太少了,像[示例6]这样的和弦超级奢侈,而弹音的括号内有3个或多个音时,快速的循环演奏能将它们从听觉上糅合到一起,用一个通道勉强模仿出和弦。
                  抱歉弹音部分写得实在太混乱了,希望能让你看懂qwq


                  IP属地:北京本楼含有高级字体10楼2024-08-23 16:37
                  收起回复
                    ·2.10 绝对转调、相对转调符号讲解 _ __
                    转调符号的出场机会较少,但在需要将一段旋律整体升降音高时使用它能省不少精力,简单介绍一下~
                    _:这个是绝对转调符号,例如我们想将cdefg这段旋律整体降低一个音高,可以直接写成<b>d-e-eg-,也可以使用绝对转调符号,在旋律前面加上_符号和表示音高升降的正负数字,写成_-1cdefg,最后还要加上转调终止符号“_0”写成_-1cdefg_0才算真正结束,不然后面其他的旋律也会转调。
                    __:把两个绝对转调符号_写在一起就是相对转调符号__,它们的用法相同,演奏效果的区别在字面上已经体现:绝对转调是无论如何都只以原旋律为基准点升降音高,而相对转调若多次使用,每次都将以上一次的演奏结果为基准点升降音高,请参考[示例18],这里为了节约空间使用循环符号进行多次转调,每循环一次就转一次调:
                    I【Tab】l8 cde [_-1cde]3_0 r4
                    I【Tab】l8 cde [__-1cde]3_0 r4

                    可以听到,第一行旋律转调三次的音高都相同,第二行旋律的音高越来越低,我画的草图辅助展示了示例中两种转调方式的演奏效果。
                    转调符号的优点前面已经提到过,给一段旋律手动升降音高不仅费时费力而且容易出错,使用转调符号则相当方便;缺点是如果在转调结束后忘加_0会引起混乱。
                    在实际应用方面,我最先想到的是恶魔城的“歯车は狂い始める”,作者古代祐三恰好是·1.5-④提到的MUCOM88的开发者,如图,下面的[示例19]运用绝对转调符号展示了这首曲子的四重转调模进(附带前奏):
                    I【Tab】【@3】 t120 o4 q1 v15
                    I【Tab】g-2.f8e-8 b-2.e-8f8 g-2.f8e-8 e-2d2
                    I【Tab】b2.b-8a-8 >d+2&8<g-8b-8>e-8 a-2.b-8a-8 a-2g2<
                    I【Tab】【@】4l8bb-a-2a-b- b4>e-4d-4<b4 b-a-g-2g-a- b-4>d-4<b4b-4
                    I【Tab】 _+2bb-a-2a-b- b4>e-4d-4<b4 b-a-g-2g-a- b-4>d-4<b4b-4
                    I【Tab】 _+5bb-a-2a-b- b4>e-4d-4<b4 b-a-g-2g-a- b-4>d-4<b4b-4
                    I【Tab】 _+7bb-a-2a-b- b4>e-4d-4<b4 b-a-g-2g-a- b-4>d-4<b4b-4_0

                    第一行无需多言,第二、三行是前奏,第四行改用【@】4乐器并将默认音符长度换为l8写下基准旋律,第五至七行分别将此旋律整体升高2、5、7个音高。若要使用相对转调符号写这个示例,可将第五至七行的开头改为__+2、__+3、__+2。示例末尾的_0一定不能忘记,如果在实际作曲中忘写转调终止符号而且没意识到的话,真的会给后面的部分带来困惑的。
                    ·2.11 注释符号讲解 ; ``
                    大家如果了解过编程应该知道注释,前面我介绍的符号都是写给编译程序看的,而注释是写给我们自己看的,会被编译程序自动略过。用pmd作曲需要编写纷繁复杂的内容,在行段中适当添加注释可以直观地提示我们一些相关信息,注释一般用于标注小节、设置FM乐器、当作简易备忘录等。
                    ;:注释符号的用法非常简单,只需在某行的最后或者在单独的一行打一个分号;,然后在后面写上注释内容即可。注意,只要写上了注释符号,这一行在注释符号后面的内容都属于注释,不会被编译,想继续创作旋律需要换行。
                    ``:这个也是注释符号,一般只放在乐器通道中使用,可以将注释内容写在两个`符号中间。有时你会遇到``注释后面的乐曲不播放的情况,可能是第一个`后面的所有内容包括第二个`都被当成注释内容了,遇到这种情况建议不把两个`放在同一行,具体用法请参考《pdf》。
                    如图,下面的[示例20]用一段Bad Apple!!展示了两种注释符号的使用方式:
                    I【Tab】【@】2 o5 l8
                    ;这里是第一种注释符号
                    I【Tab】cde-fg4cb- g4c4gfe-d;这里也是第一种注释符号
                    I【Tab】cde-fg4fe- d<g>de-dc<b>d
                    I【Tab】cde-fg4fb- >c4c4d4e-4`这里是第二种注释符号`
                    I【Tab】cde-fg4fe- f4d4e-4f4

                    如果你觉得标红音符是错音的话可以理解,因为原曲在两个乐器通道分别用o5和o6初始音组演奏这段旋律,这个位置的o6c从听觉上掩盖了o5c,但如果你觉得标蓝音符是错音,那就是受某首歌影响太深啦
                    ·2.12 FM通道符号及相关设置讲解 A B C D E F #FM3Extend s
                    讲完注释符号再讲这个就方便一些了~
                    FM通道有A、B、C、D、E、F六个通道用来编写乐曲,和SSG通道不同的是,FM通道没有默认乐器,必须在起始位置用【@】符号指定乐器编号,编号范围为0-255。
                    那么,现在你已经对使用FM通道的基本方法有了一定的了解(大雾),实践一下这个例子吧:
                    A【Tab】【@】4cdefgab
                    是不是没有声音~ 这是因为FM乐器比SSG乐器复杂,你需要把这个FM乐器的相关参数贴上去,告诉编译器如何演奏,例如像【示例21】这样先把乐器参数放在最前面,然后开启FM通道,输入乐器编号,就可以写旋律然后演奏了:
                    ; nm alg fbl
                    【@】004 000 006=EBass
                    ; ar dr sr rr sl tl ks ml dt ams
                    018 012 001 004 003 035 003 010 004 000
                    031 014 003 005 003 040 000 001 004 000
                    031 011 003 005 003 025 001 000 000 000
                    031 015 004 006 002 000 001 001 003 000
                    【空行】
                    A【Tab】【@】4cdefgab

                    如上图,【示例21】注释部分的nm代表FM乐器编号,对应它下面的【@】004;其他英文注释各代表其下方的乐器参数,它们的具体含义说实话我也不清楚,感兴趣可以查找相关的FM手册。乐器名称用来提示这一乐器的音色,可写可不写,如果写了一定记得在名称前面加上等号,不然会报错。
                    刚才展示的是FM乐器参数相对正规的写法,如果想写得随性些,完全可以去掉注释,不写乐器名称,取消换行,把【示例21】改成这样:
                    【@】004 000 006 018 012 001 004 003 035 003 010 004 000 031 014 003 005 003 040 000 001 004 000 031 011 003 005 003 025 001 000 000 000 031 015 004 006 002 000 001 001 003 000
                    【空行】
                    A【Tab】【@】4cdefgab
                    FM乐器的参数从哪里获得呢?第一种方法是从现成的FM乐器合集文件里复制,可以打开我的资源包的PMD98文件夹,找到EFFEC.MML,里面有256种FM乐器供你挑选,PC88.MML里也有一些乐器可以选择,使用方式是把你想用的乐器从合集文件复制到编曲文档,在FM通道输入对应的乐器编号即可。推荐你完整听一遍所有乐器的音色,例如把EFFEC.MML的内容全部复制到编曲文档中,然后在下面写个A【Tab】【@】0cccc,改一遍乐器编号播放一次(刚试了下,不知道为什么复制多于247个乐器的参数会报错)。
                    第二种方法是自己制作FM乐器,这也是本章唯二《pdf》不涉及的内容之二,需要用到资源包里mucom88win200409文件夹的FmToneEditor.exe。打开程序,界面如图所示:

                    左侧一列是FM乐器参数的全称,OP1至OP4对应参数的四行,Range列提示数值范围。默认乐器已经设置好,你可以根据右侧的指示按“zsxdcvgbhnjm,”试听音色(对应音乐键盘的12个黑白键及下一音组的do),按“+”或“-”升降音组,按“ctrl+PageUp”或“ctrl+PageDown”增减音量。参数修改方面,按“↑↓←→”移动到目标位置,按“Page Up”或“Page Down”改变参数,参数右方对应的线段随之变化,左下侧设置不同的Feedback值和Algorithm值也会使音色改变。
                    制作好乐器后,先按ctrl+c复制参数(复制成功则界面下方显示一行字),然后如下图所示将FM乐器编号移动到与下面两个参数同一行的行首,修改所有“’”为注释符号“;”,删去DT2参数那一列,这个FM乐器就可以使用了。

                    关于FM通道的数量,如果6个FM通道还不够用,可以再添加一到三个通道,在文档最开头输入“#FM3Extend”和空格,空格后面写上表示新通道的字母(L-Z,a-z皆可,除了R),若添加多个通道则字母写到一起,我通常写XYZ。到这里还没结束,新增的轨道需在乐器编号前使用s符号确认用乐器的哪几行参数进行演奏,一至四行分别为slot1、slot2、slot2、slot14,代表它们的数值依次为1、2、4、8,我们将此通道乐器选择的行段slot值之和写在s符号后面即可,一般四行的参数都用来演奏,那么1+2+4+8=15,在乐器编号前写上s15即可,如果选择的行段较少,要么不发音,要么发音不健全。注意,有时添加多个通道会出现异常音色,如果遇到这种状况,还是只添加一个FM通道吧。
                    如图,我在[示例22]用6个FM通道和多添加的3个FM通道演示了自制的乐器,全部通道的默认音符长度为二分音符,X、Y、Z通道使用s符号选择所有行段的参数进行演奏,但Y和Z通道的音色似乎有异常:
                    #FM3Extend XYZ
                    【空行】
                    ;nm AL FB
                    【@】0 3 7
                    ; AR DR SR RR SL TL KS ML DT1 AMS
                    31 31 0 3 0 70 3 15 3 0 ; slot1,数值为1
                    31 25 0 3 3 0 1 0 3 0 ; slot2,数值为2
                    31 31 0 3 0 30 3 15 3 0 ; slot3,数值为4
                    31 25 0 3 3 0 1 0 3 0 ; slot4,数值为8
                    【空行】
                    ABCDEFXYZ【Tab】l2
                    【空行】
                    A【Tab】【@】0c
                    B【Tab】【@】0rc
                    C【Tab】【@】0rrc
                    D【Tab】【@】0rrrc
                    E【Tab】【@】0rrrrc
                    F【Tab】【@】0rrrrrc
                    X【Tab】s15【@】0rrrrrrc
                    Y【Tab】s15【@】0rrrrrrrc
                    Z【Tab】s15【@】0rrrrrrrrc


                    IP属地:北京本楼含有高级字体11楼2024-08-26 23:06
                    收起回复
                      ·2.13 包络命令、LFO命令梗概 E M(包括 MA MB * MW)
                      这两种命令非常有用,但需要说明的是,我对音色合成与处理的相关知识几乎完全不了解,所以本小节的标题用了“梗概”而非“讲解”二字。如果你想深入了解包络命令、LFO命令以及上一小节讲的FM乐器参数,仅《pdf》的内容是不够的,要网上冲浪找找讲这方面的资料。(找到讲得好的请一定推荐给我!)
                      E:这个字母用于设置包络命令,可以制作或调整SSG乐器的声音,有两种通式,一般使用简化式:
                      E参数①,参数②,参数③,参数④
                      参数①为Attack长度(AL),数值范围0~255;
                      参数②为Decay深度(DD),数值范围-15~15;
                      参数③为Sustain速率(SR),数值范围0~255;
                      参数④为Release速率(RR),数值范围0~255。
                      四个参数的用法和具体效果我不太确定,在mml文档里控制变量做了对比,结合参数名称得出存疑的解释:
                      参数①表示乐器开头的敲奏感,数值越大则敲奏感越重,数值为0时没有敲奏感。
                      参数②表示乐器的初始音量(可能以v8为基准),数值越大则初始音量越高。
                      参数③表示乐器略微降低一次音量的单位时间数,数值越小则乐器音量减弱的速率越快,数值为0时不减弱。例如在参数③设为6的条件下演奏SSG乐器的一个音符,则此音符的音量每隔6个单位时间减弱一点。
                      参数④表示尾音长度,数值越大则乐器的尾音拖得越长。
                      因为我不确定上面的解释是否完全正确,这部分就不随便写自制的具体示例及讲解了,只写两个简单使用例:
                      I【Tab】E0,1,1,1cdef
                      I【Tab】E1,2,4,3v10o5l8gab>c<ba
                      关于·2.5介绍的十种乐器,下面给出它们对应的E命令,使用E命令后不用再写【@】符号,你可以验证上面的解释或尝试总结更准确的规律(当然最有效的办法还是找资料),需要制作新音色也可将其作为参考加以改造:
                      【@】0:默认方波音色(E0,0,0,0 )
                      【@】1:合成器-1(E2,-1,0,1)
                      【@】2:合成器-2(E2,-2,0,1)
                      【@】3:合成器-3(E2,-2,0,8)
                      【@】4:钢琴-1(E2,-1,24,1)
                      【@】5:钢琴-2(E2,-2,24,1)
                      【@】6:马林巴(E2,-2,4,1)
                      【@】7:弦乐(E2,1,0,1)
                      【@】8:铜管-1(E1,2,0,1)
                      【@】9:铜管-2(E1,2,24,1)
                      M:这个字母用于设置LFO(Low Frequency Oscillator,低频振荡器)命令,用于制造SSG乐器或FM乐器的颤音、哇音、飘音等效果,让演奏形式变得更丰富。在《pdf》中,介绍LFO的相关设置用了整整一章,这里只简述最基础的内容。
                      有两个LFO可供设置,LFO1用M或MA表示,LFO2用MB表示,LFO命令的通式如下:
                      M参数①,参数②,参数③,参数④*参数5
                      这里的M也可以是MA或MB;
                      参数①为延迟,可以只写数字也可以写l符号加数字,前者用单位时间表示延迟的长度,后者用音符长度表示延迟的长度;
                      参数②为速度;
                      参数③为深度A;
                      参数④为深度B;
                      参数⑤用*符号加数字(0-7)的方式表示LFO的开关及设置,可随M命令通式使用,也可在设置过M命令后单独使用,有三种表示方法:若要单独设置LFO1,可写*加数字或*A加数字;单独设置LFO2可写*B加数字;同时设置LFO1和LFO2可写成“*数字1,数字2”。数字的具体含义如下:
                      0:LFO关闭(默认);
                      1:音高LFO打开,和音符开同步;
                      2:音量LFO打开,和音符开同步;
                      3:音高和音量LFO打开,和音符开同步;
                      4:LFO关闭;
                      5:音高LFO打开,不和音符开同步;
                      6:音量LFO打开,不和音符开同步;
                      7:音高和音量LFO打开,不和音符开同步。
                      前面提到的参数①至参数④,其数值不仅能与参数⑤协同制造出各种效果,还可通过设置不同的LFO波形使效果更加多样化,具体操作是在M命令的通式前写上MW(或MWA、MWB)加数字(0-6),数字表示的波形如下:
                      0:三角波(默认)
                      1:锯齿波
                      2:方波
                      3:随机波
                      4:三角波2
                      5:三角波3
                      6:单次波
                      关于各种LFO波形如何根据参数①至参数④进行演奏,《pdf》中有详尽的讲解,这里就不搬过来了。
                      M命令各参数对音符的具体影响我目前实在没弄懂,做不到根据需求随心所欲地设置参数,下面依然只写几个简单使用例(FM乐器参数设置已省略):
                      G【Tab】Ml4,1,1,2*1cdefg ;此处参数①的l为小写L
                      H【Tab】E2,-2,24,1 MB24,2,1,4*B3cdefg
                      I【Tab】【@】1 MW5Ml16,2,10,1*4cdefg*5cdefg
                      A【Tab】【@】27v10l4o4 MWA3MAl8,10,10,20*A5cdefg
                      除以上内容外,M命令还有MM(软件LFO通道设置)、MX(软件LFO速度设置)、MP(专用上升/下降LFO设置)、MD(LFO深度时间变化设置),以及硬件LFO相关设置,内容庞杂,能很好地改善演奏效果,感兴趣可以查阅《pdf》~
                      ·2.14 变量符号讲解 !
                      这个符号极其实用,可以把它看作一张Spellcard(符卡),每张符卡都有独一无二的名称,里面封装着特定的弹幕(这里可以是一段旋律、乐器设置、鼓点设置等),在乐曲的某一位置写上变量符号及变量的名称,就像亮出符卡释放弹幕一样,将演奏对应的旋律或鼓点。变量符号主要用于封装乐曲中多次重复的旋律片段然后随叫随用,使编曲更加便捷;另外变量符号在设置鼓点方面意义重大。
                      具体用法如下:编写乐曲之前,在单独的一行写一个英文感叹号!加变量名称,变量名称可以是任意符号,例如写成“!a”、“!B”、“!drum”、“!旋律2”等,长度不超过30个半角字符,如需设置多个变量则每行编辑一个。设置好变量名称后,按一下Tab键空出一段距离,就可以写你要封装的内容了。如图,[示例23]的十四行内容是th1“The Legend of KAGE”的前奏,展示了变量符号的使用方式与应用场景,前六行是变量设置,第八行开始正式编曲。先不用管里面的P、w等鼓点符号,这些会在下一小节讲解,我在这里加上鼓点是因为听起来更帅气:
                      !Ga【Tab】E2,-1,9,1 o4v10l8c+f+g+ag+f+c+g+16a16 g+f+c+g+16a16g+f+c+<b>
                      !Gb【Tab】E2,-1,9,1 o4v10l8df+g+ag+f+dg+16a16 g+f+dg+16a16g+f+d<b>
                      !Ha【Tab】E2,-2,4,1 o2v9l16c+f+g+a>c+f+g+a>c+f+g+a>c+f+g+a g+32a32g+f+c+<bg+32a32g+f+c+<g+32a32g+f+c+<b>c+<b>
                      !Hb【Tab】E2,-2,4,1 o2v9l16df+g+a>df+g+a>df+g+a>df+g+a g+32a32g+f+d<g+32a32g+f+d <g+32a32g+f+d f+g+ab
                      !I1【Tab】E1,-3,1,1 v11w0
                      !I2【Tab】E1,-2,4,1 v11w0
                      【空行】
                      GHI【Tab】C192t174
                      I【Tab】P2l16
                      【空行】
                      G【Tab】[!Ga!Gb]3
                      H【Tab】[!Ha!Hb]3
                      I【Tab】r1&1&1&1 l4[!I1c]15 l16[!I2c]4 [!I1c]4 !I2c [!I1c]5 [!I2c[!I1c]7]2 !I2c [!I1c]2 !I2c !I1c !I2c [!I1c]4
                      I【Tab】!I2c [!I1c]5 [!I2c[!I1c]7]2 !I2c !I1c [!I2c]4

                      其中,G、H通道用于演奏旋律,I通道演奏鼓点。这首曲子的前奏由两段旋律交替重复三次构成,我们把要在G通道演奏的两段旋律及其音量、节奏等设置分别用变量符号封装进“!Ga”和“!Gb”,H通道的两段旋律封装进“!Ha”和“!Hb”,之后正式演奏时直接在G、H通道写出变量名并使其循环三次,这种编曲方式非常方便,使用广泛。鼓点方面,我用变量符号封装了“!I1”和“!I2”两种鼓声,在I通道上先停顿4个全音符的时间再开始演奏,这个示例中的鼓点排布得比较混乱,不便于后期勘正,我这么写只是想节省点示例篇幅~


                      IP属地:北京本楼含有高级字体12楼2024-09-19 20:44
                      回复
                        ·2.15 SSG/FM鼓及相关符号讲解 K R P w (附加专用LFO上升/下降设置符号MP 伪回声符号W)
                        鼓点是pmd音乐的重要组成部分,主要有4种演奏方式:
                        ①内部SSG鼓,使用K通道和R通道演奏鼓声;
                        ②噪声鼓,使用P符号和w符号制作鼓声并演奏;
                        ③自制FM鼓,配合M命令(*和MP)、伪回声(W)等演奏鼓声;
                        ④特定FM鼓,例如EFFEC.MML中的【@】43,PC88.MML中的【@】97-104。
                        第四种鼓和其他FM乐器一样正常使用即可,不再特别介绍,本小节讲一下前三种鼓:
                        2.15-①内部SSG鼓:
                        在R通道可使用11+3种内部SSG鼓,你一定会觉得它们非常耳熟,因为东方旧作使用的就是这些鼓,其编号与名称如下:
                        【@】1:低音鼓
                        【@】2:小军鼓1
                        【@】4:低音桶鼓
                        【@】8:中音桶鼓
                        【@】16:高音桶鼓
                        【@】32:鼓边打击
                        【@】64:小军鼓2
                        【@】128:踩镲闭击
                        【@】256:踩镲开击
                        【@】512:吊镲
                        【@】1024:节奏镲
                        除此之外,还有《pdf》未介绍的3种鼓亦可使用,我描述一下它们的演奏效果:
                        【@】2048:沉闷的打击感,声音介于鼓声与鼓边敲击声;
                        【@】4096:使用方波乐器音阶下降模拟的鼓声;
                        【@】8192:“chua”的一声响,听起来像把鼓皮打穿了。
                        为什么要这样设置编号呢?其实在某些情况下,把两种鼓的编号加在一起可以同时演奏两种鼓声,例如【@】513将同时演奏低音鼓和吊镲,用这种方法合成的鼓声成分明确,与·2.12介绍的slot值加和方式一样,是很聪明的设计。关于同时演奏鼓声的条件,《pdf》原文翻译是“在PMD.COM上,【@】1演奏低音鼓。在PMDB2/VA/86上,除上述功能外,同时播放节奏音源的踩镲(【@】1+【@】128)”,可惜我不太了解怎么调试成PMDB2/VA/86等驱动程序,目前将数值相加只能演奏出一种鼓声,或许只有在PC-98模拟器上才能实现?
                        内部SSG鼓的具体用法是先在R通道写上鼓的编号,在编号后面写上音高符号和长度符号。音高通常写一个c就行,用来提示编译程序这个鼓要发声,如果是带音调的鼓声,则鼓声随标注的音高变化,这个会在讲噪声鼓和FM鼓时提到;长度的话可以在音高后面写表示音符长度的数字,也可以在最前面用l符号加数字指定。如果想演奏多组节奏,可在每行添加一个R通道并标明序号,如R0、R1、R2、R3等,再分别设计鼓点。光有R通道是不行的,R通道用来规定节奏范式,而排列节奏范式并播放的任务由K通道完成:在K通道按顺序列出你想播放的R通道,还可用循环符号让特定的R通道多次播放。
                        需要特别注意的是,使用K/R通道演奏鼓点将占用I通道,但它倒也不是名存实亡,在I通道与K/R通道都有内容的情况下,K/R通道的鼓点优先演奏;而当某时刻没有鼓点时,将正常播放I通道的旋律。
                        光读前几段文字比较抽象,如图,[示例24]展示了频繁出现在th4的一组鼓点,在“幺樂団の歴史1”中,这组鼓点的【@】2应该大部分替换成了【@】512,一起听一下:
                        K【Tab】[R0]2 R1
                        R0【Tab】【@】2c16 【@】1c16 【@】1c16
                        R1【Tab】l16 【@】2c r 【@】1c 【@】64c 【@】64c 【@】64c 【@】64c 【@】64c 【@】1c 【@】1c

                        不知道是不是FMPMD的bug,第一个【@】2c经常被吞掉,我这边至少第二次按ctrl+S才能正常播放(不等它播放完就按ctrl+S)。另外,如果你播放[示例24]完全没声音,在FMPMD界面取消勾选“囗 PPS”就没问题了。
                        简单解释下[示例24],R0和R1通道各规定了一组节奏范式,鼓点长度用了两种方法表示(均为十六分音符),每个鼓的编号后面都写了c以保证能够演奏。K通道用来排列R通道,R0的节奏循环2次,接着播放R1的节奏。试试在示例中另起一行加上“I【Tab】l16[c]16”,这样可以在R1的休止符r处听到I通道乐器的声音(如果听不到,可能是电脑声音开太小了)。
                        我刚刚瞎捣鼓的时候发现I通道如果设置了乐器编号或使用E命令演奏音符,那么在I通道音符的有效播放时间内,乐器编号或E命令将以影响I通道乐器演奏效果的方式影响K/R通道SSG鼓的表现形式。还以[示例24]为例,如果另起一行加上“I【Tab】【@】6c1”,则鼓点都变得短促;如果是“I【Tab】E5,5,16,0c1”,则鼓的声音与敲击感将增强;如果是“I【Tab】E0,0,1,0c2”,则示例中只有二分音符长度范围内的鼓会受影响。
                        2.15-②噪声鼓:
                        觉得内部SSG鼓不够用可以自己制作噪声鼓,需要用到变量符号!、E命令、音噪输出符号P、噪声频率符号w,在此基础上还可用q符号、o符号、v符号、%符号、M命令中的MP(上升/下降LFO设置)等进一步修饰。
                        E命令用于设置鼓的打击感、音量、衰减速率和尾音长度,参数用法和设置SSG乐器时完全一致。
                        P:后面加数字可以指定音噪输出模式,P1为音调输出(默认),P2为噪声输出,P3为音调+噪声输出。
                        w:后面的数字范围为0-31,数字越大,噪声频率越低,鼓声越沉闷。
                        q:这里补充一下q符号的完整版格式“q参数①-参数②,参数③”,·2.6介绍的内容只包含参数①,完整版格式的用法概括如下:q的参数①至参数②为随机剪切音符单位时间长度的范围,但若裁剪后剩余的单位时间长度小于参数③则自动取参数③的值为剩余时间长度,即参数③是最小期望剩余长度。
                        %:补充%符号的一个用法,音符后面写“-%”并加上表示单位时间的数字,将使这个音符从末端剪切此单位时间长度,例如C96设置下的a2-%24的演奏效果等同于a4,这与q符号的简单用法相似但不完全一致:q符号无论怎样剪切,原音符的设定长度结束后才会播放下个音符,而经过-%符号剪切的音符停止演奏后,下个音符将立即开始播放。
                        MP:在·2.13偷懒没讲这个,果然还得补上,这里只讲最简单的用法。MP是专用上升/下降LFO设置符号,属于M命令的一部分,一般单独使用,它后面的数值范围为-128至127,我们在设置鼓点时输入负值使鼓的LFO下降,例如可以写MP-80。
                        现在正式讲噪声鼓的使用方式:编曲之前,先用变量符号定义鼓的名称,然后按需求编辑E命令、P符号、w符号等内容,一个噪声鼓就制作好了。编曲时,在任意SSG通道使用变量符号排布鼓点,每个变量符号后面都要加上音高符号和长度符号,这与内部SSG鼓的用法类似,不同之处在于音高和长度可以在编曲时设置,也可在使用变量符号制作鼓声时就设置。如图,我在[示例25]中制作了4种噪声鼓并用它们排布了一组鼓点:
                        !b【Tab】E1,0,8,4 P2 w31 v9 c1
                        !h【Tab】E2,0,4,0 P3 w0 q2 o7 g16
                        !t【Tab】E1,-2,2,0 P1 v10 o3 c%1 P2 w10 v8 c16-%1
                        !s【Tab】E2,0,1,0 P2 q100-99,4 v10 w0 c16 q0
                        【空行】
                        GHI【Tab】L
                        GI【Tab】MP-120
                        H【Tab】MW2 M5,10,1,2*5
                        【空行】
                        G【Tab】!b
                        H【Tab】[!h]16
                        I【Tab】l16 !t r r r !s r r r r !s !t r !s r !s !s

                        示例分为三部分,第一部分是鼓点设置,第二部分是通道设置,第三部分是编曲区域。
                        !b是低音鼓,音量减缓较慢且有尾音,由纯噪声构成,噪声频率低,演奏时间为一个全音符长度。
                        !h是镲,为了做出镲的“叮”声,我使用P3模式同时输出音调和噪声,镲的音高和长度设为o7g16,用q符号剪切末端,整体噪声频率高。
                        !t是桶鼓,为了做出圆润的“嘭”声,我先设置P1模式,输出v10音量下1个单位时间的o3c音符,然后换成P2模式,输出v8音量下缺少1个单位时间的中等频率噪声,使!t的总长度保持为十六分音符。
                        !s是小军鼓,特点是音量大、噪声频率高、演奏时间极短,接下来我要长篇大论地解释在这里使用q符号的考虑:E命令的参数③在参数②为0且v为默认值时将使音量持续衰减8次至无声,也就是说这个鼓声最少也要持续1+8个单位时间,而我想让小军鼓只演奏4个单位时间,同时又让鼓本身占十六分音符的长度,那么在不能通过低音量减少音量衰减次数以缩减演奏时间的情况下,可以用q符号的完整版格式设定一个过高的剪切量(q符号的“-参数②”这里可省略),使鼓声最终只能选择参数③设定的最小期望剩余长度,完成这些设置后补上q0结束剪切...好吧我编不下去了,这其实是个画蛇添足的写法,直接写成E2,0,1,0 P2 v10 w0 c%4 r%2就可以,我主要是想补充介绍下q符号的完整格式,感觉还挺有用的。
                        通道设置方面,所有通道全局循环;G、I通道的MP设定使鼓的LFO深度下降;H通道的镲因为包含音调,我随便设置了M命令使镲的音调发声变化,获得了意想不到的效果。
                        编曲区域就很容易懂了,这里重点提一下I通道的l16,它只对r起作用,因为!t和!s的长度已经设定好了。


                        IP属地:北京本楼含有高级字体13楼2024-09-28 00:44
                        收起回复
                          2.15-③自制FM鼓:
                          使用·2.12讲过的FmToneEditor可以做出更接近真实鼓声的FM鼓,制作FM鼓比想象中容易,因为在不懂参数用法的情况下制作FM乐器本身就有极高概率做出神奇的噪声,此时只需用一些符号稍作调整,比如把音高设为o1或o2,鼓声就初具雏形了。
                          在FmToneEditor里设置好FM鼓的参数后,将参数复制到编曲文档并修整,然后像设置噪声鼓一样用变量符号!封装鼓声,写上鼓的FM编号,配合音量符号v、音组符号o、M命令的开关/设置符号*、LFO升降符号MP、伪回声符号W等使鼓声达到你想要的效果。下面讲讲伪回声符号W的用法,这本来是下个小节的内容,不得不先讲一下了。
                          W:用于制造伪回声,改变鼓的演奏效果,格式为“W参数①,参数②,参数③”。
                          参数①表示回声延迟时间,数值范围为0-255,也可用l符号加数字表示延迟长度。参数①为0时伪回声关闭,因此想停用伪回声效果时别忘了输入W0。
                          参数②表示回声深度,即每次回声的音量变化值,数值范围为-128至127,默认值为-1。
                          参数③是回声模式,数值范围为0-3,其中0表示连续回声/不连音(默认),1表示连续回声/连音,2表示单次回声/不连音,3表示单次回声/连音。
                          这一小节终于快讲完了,话说如果你想创作一首节奏无敌的乐曲,可以把上述3种鼓都用上,注意I通道要空给内部SSG鼓。如图,下面的[示例26]是th7“妖々跋扈”的一小段,包含3种鼓:
                          ; AL FB
                          @】0 1 5
                          ; AR DR SR RR SL TL KS ML DT1 AMS
                          31 20 0 15 15 0 0 1 3 0
                          21 1 15 8 0 0 0 0 7 0
                          31 20 0 5 0 0 0 1 3 0
                          21 1 15 8 0 0 0 0 7 0
                          【空行】
                          !s【Tab】【@】0 MP-80 v10 o1 *1 Wl32,-2,0
                          !b【Tab】E1,0,8,4 P2 w31 v13 c16
                          !x【Tab】E2,0,1,0 P2 q100-99,4 v14 w0 c32 p0
                          【空行】
                          AGHK【Tab】C192
                          【空行】
                          G【Tab】L 【@】2v13o4l32 gaa+>d g>dcd gdcd <a+>d<af
                          H【Tab】L MP-80 l32 !x r !b !x r !x r !x r !b !x !x r r
                          A【Tab】L !sc16 !sc8 !sc32 !sc16&32 !sc8 !sc8
                          【空行】
                          G【Tab】f+ga>c <agf+d gdcd <a+8
                          H【Tab】!x r !b r !x r r !x r !b !x r !b
                          A【Tab】!sc16 !sc16 !sc32 !sc16&32 !sc8 !sc32 !sc16&32
                          【空行】
                          G【Tab】a+ag>d a+a>dc fdgd cd<a+a
                          H【Tab】!x r !b !x r !x r !x r !b !x !x r r
                          A【Tab】!sc8 !sc32 !sc16&32 !sc8 !sc8
                          【空行】
                          G【Tab】gf+c<a >c<af+g a+gda fcda
                          H【Tab】!x r !b r !x r r !x r !b !x r !b
                          A【Tab】!sc16 !sc16 !sc32 !sc16&32 !sc16 !sc32 !sc32 !sc32 !sc32
                          【空行】
                          K【Tab】L [R0]16
                          R0【Tab】l32 【@】128c 【@】128c 【@】256c16

                          最前面是FM鼓的参数。接下来是FM鼓和噪声鼓的设置,其中FM鼓的音组设为o1,伪回声延迟为32分音符长度,每次回声减少2个音量值,回声模式为默认;噪声鼓借用了上个示例的低音鼓和小军鼓。A、G、H、K四个通道的全音符长度设为192个单位时间,且都设置全局循环。
                          G通道用来写旋律,H通道放两种噪声鼓,A通道放FM鼓,K/R通道放内部SSG鼓。FM鼓在用变量符号封装时没写音高和长度,所以A通道的每个FM鼓后面都要加上c16、c8等。H通道的l32依然只对休止符r起作用。


                          IP属地:北京14楼2024-09-28 00:45
                          收起回复
                            ·2.16 声像、装饰音、伪回声、失谐、淡出符号讲解 p S W D F
                            这个小节把剩余的常用符号讲一下~
                            p:手机、电脑、电视等都采用双声道播放声音以增强声音的立体感,PMD音乐的FM通道也是双声道,这里我们称两个声道为左/右声像,用p符号表示,它可以控制FM通道在双侧或某一单侧输出旋律。SSG通道是单声道,设置p符号不会产生效果。
                            p符号的用法很简单,p后面加数字设定声像模式,之后的旋律就都按指示进行输出,p1为左侧声像,p2为右侧声像,p3为双侧声像(默认,也可理解为中心声像)。话说《pdf》上是这么介绍的,但为什么我无论电脑外放还是戴耳机都是p1右p2左,这不科学orz,大家以自己这边的实际情况为准吧。
                            声像的玩法很多,最基础的比如在A通道设置p1,B通道设置p2,以制造身临其境的听觉效果,ZUN的midi乐曲就有很多是这样设计的;也可以A、B通道演奏同种乐器,A通道设置p1后音量逐渐减弱,同时设置p2的B通道音量逐渐增强,就好像声音从一侧移到另一侧;再或者,一个通道中每隔x分之一音符的时间切换一次左右声像,在乐曲节奏很快时听起来很爽。当然,声像的各种设置要戴耳机才能听出最佳效果~
                            S:这是装饰音符号,格式是“S参数①,参数②,参数③”,设置好装饰音的参数后,后面的每个音符在播放时将先不演奏真正的音高,而是在一定时间内从较高或较低音处以音阶升降的方式偏移至正常音高。装饰音不是多复杂的东西,但这部分硬讲的话有些难懂,可以先扫一眼后面的配图,有个大概的印象。
                            参数①代表偏移过程中每个音阶所占的时间,有两种写法,如果用单位时间表示则数值范围为0-255,如果用音符长度表示则写为l加数字。参数①为0时无装饰音效果,因此当不再需要装饰音时,别忘了在旋律末尾写一个S0,这很重要。
                            参数②代表从哪个音高开始偏移到正常音高,数值范围为-127至128,负数表示从低音向上偏移,正数表示从高音向下偏移,默认值为-1。同样的,参数②也表示偏移过程中的音阶数量,与参数①相乘得出偏移过程的总时长,若偏移时长等于或超过音符本体,则装饰音无效,例如“Sl8,5,1 c4c2c1”(l8的l是小写L,不是数字1),由于偏移过程中5个l8的长度超过了c4、c2,所以只有c1能播放装饰音,c4和c2无装饰音。
                            参数③是连音标记,用处是在q符号存在的情况下,按需求剪切长度(这里没提Q符号是因为试验过程中出现了与理论不符的情况,也可能我对Q符号剪切机制的认识还不到位,总之后面的示例先不用它)。以C96设置下的“S3,2,参数③ c8”为例,当参数③使用默认值1时,对音高偏移过程的全部音阶启用连音效果,示例等同于“d%3 & c+%3 & c%6”,若在此情况下使用剪切符号,则像·2.9介绍的那样,以连音整体为基础进行剪切;如果参数③设为0,示例等同于“d%3 c+%3 c%6”,这时剪切符号将对各个音阶分别起作用。
                            下图展示了九个小示例,方便更直观地理解装饰音,第九个示例是装饰音在乐曲创作中最常用的形式,即在极短时间内偏移一或多个音阶至正常音高。每个示例的蓝色部分为正常音高,红色部分为偏移过程中音阶的音高,示例的全音符长度均设为默认的96个时间单位,根据图像和前几段的讲解弄懂这些示例应该没问题的。

                            W:用于制造旋律或鼓点的伪回声效果,格式为“W参数①,%参数②,参数③”。需注意回声限定在音符长度范围内,而不是音符演奏结束后才出现回声。
                            参数①表示每隔多久出现一次回声,和装饰音S一样有两种写法:用单位时间表示则数值范围为0-255,也可用l符号加数字表示。参数①为0时伪回声关闭,因此想停用伪回声效果时别忘了输入W0。
                            %参数②表示每次回声的音量变化值V,数值范围为-128至127,默认值为-1,也就是每次回声的音量减弱一个V值。如果参数②前面不写%符号,则音量变化用v值表示。
                            参数③是回声模式,数值范围为0-3,其中0表示连续回声/不连音(默认),1表示连续回声/连音,2表示单次回声/不连音,3表示单次回声/连音。
                            以C96设置下的“Wl16,-2,参数③ c4”为例,在c4音符范围内,默认情况下每隔十六分音符长度出现一次回声,即除了原声外有3次回声,由于参数②前没有%符号,每次回声的音量值v依次减弱2。在这个示例中:
                            参数③为0时,呈现连续回声,原声及各回声之间不以连音符号相接,示例等同于“c%6 (( c%6 (( c%6 (( c%6”,发出不断减弱的“当~当~当~当~”声。【对“(”符号还有印象吗?这是音量值v的减弱符号。如果你使用在参数②前加%符号的写法,那么用刚才的方式表示伪回声要这么写:参数②为负时,在“(”符号后加上%符号和参数②的绝对值;参数②为正时,在“)”符号后加上%符号和参数②的值】。
                            参数③为1时,示例等同于“c%6 & (( c%6 & (( c%6 & (( c%6 ”,呈现连续回声,原声及回声之间被连音符号连接,由于被连接的各部分不涉及音高的变化,因此只发一声“当~”,但音量值v依旧每隔十六分音符长度减弱2。
                            参数③为2时,只有一次回声,原声和回声不被连音符号连接,示例等同于“c%6 (( c%18”,发出“当~当~”声,且音量只降低一次。
                            参数③为3时,同样只有一次回声,但原声和回声以连音符号相接,发出一声“当~”,音量只降低一次,示例等同于“c%6 & (( c%18”。
                            再举一个例子,C96设置下的“W6,%5,0 c4 W0”等同于“c%6 )%5 c%6 )%5 c%6 )%5 c%6”,每隔6个单位时间回声一次,每次增大5个音量值V,最后结束伪回声效果。若这个示例中的参数①等于或大于24,也就是回声时间等于音符本体或更长,则无法发出伪回声。
                            D:这是失谐符号,用来调整音符的频移值,使后面旋律的音高发生微妙变化。D符号数值范围为-32768至32767,默认值为D0(不失谐),想结束失谐效果需在结尾输入D0。
                            失谐符号的用法也不少:可以在旋律相同的两个通道设置差异很小的D值(比如一个D0一个D1),声音的穿透力将增强;也可在前一个例子的基础上延迟某一通道的演奏时间,比如加上r16,使旋律增添跳动感;还可以在单个乐器通道设置较大的D值(比如D100),旋律听起来会有些诡异。如图,下面[示例27] 的四段内容分别展示了两个通道失谐值相同、失谐值不同、失谐值不同且有延迟的演奏效果,以及单个通道失谐值较大时的表现:
                            H【Tab】D0 cdefgab>c<
                            I【Tab】D0 cdefgab>c<
                            【空行】
                            H【Tab】D0 cdefgab>c<
                            I【Tab】D1 cdefgab>c< D0
                            【空行】
                            H【Tab】D0 cdefgab>c<
                            I【Tab】D1 r16 cdefgab>c< D0
                            【空行】
                            H【Tab】D100 cdefgab>c<

                            F:这是淡出符号,通常放在乐曲接近尾声处,使后面的旋律逐渐减弱至无声,数值范围为0-127,数值越大,淡出速度越快。F符号有整体控制功能,用在任意通道都可使整首乐曲淡出。
                            如图,下面的[示例28]复刻了th2“End of Daylight”的前奏,前面讲过的声像、装饰音、伪回声、失谐、淡出符号全部汇总于此,在图中分别用红、蓝、绿、紫、青色标注:
                            【@】012 004 007 021 004 002 004 002 040 000 012 003 000 024 012 004 006 002 000 000 004 007 001 021 004 002 004 002 035 000 006 007 000 024 012 004 006 002 000 000 002 003 001
                            【空行】
                            【@】100 004 000 031 000 000 000 000 022 000 008 003 000 031 010 000 007 001 000 000 008 003 000 031 000 000 000 000 022 000 008 007 000 014 010 000 007 001 000 000 008 007 000
                            【空行】
                            AGHI【Tab】t142
                            【空行】
                            A【Tab】【@】12 o6 l1 v12 Wl2,-1,3 c <f g+ a+ f&1&1&1
                            B【Tab】【@】100 o4 l16 v10 r1&1&1 p1 [a+]4 D4 [{a+g+}2&4]2 D0 [a+]4 r1&1&1
                            C【Tab】【@】100 l1 v5 [r]8
                            I【Tab】【@】0 o3 l1 v11 q1 f&1&1&1 c+&1&1&1
                            【空行】
                            A【Tab】f <a+> g+ a+ f <a+&1&2> c2
                            B【Tab】o2 l8 v7 p2 [fa+>c<]9 >f a+ >c< f a+> [fa+>c<]9 >f a+ >c< f a+
                            C【Tab】[r]8
                            I【Tab】d+&1&1&1 c&1 c&1
                            【空行】
                            A【Tab】f a+ f >c c+&2 d+2 <a+&1>
                            B【Tab】o4 v7 r1&1&1 p3 S1,-11,1 [[a+]4 [a+r]2 [r]6]2 S0 r1&2
                            C【Tab】[r]8
                            I【Tab】f&1&1&1 c+&1&1&1
                            【空行】
                            A【Tab】c+&2 d+2 <a+> F5 f2 d+2 <a+&1&1&1 W0
                            B【Tab】o2 l2 p2 v4[{g>g<}]4 v5[{g>g<}]4 v6[{g>b<}]4 v7[{g>b<}]3
                            C【Tab】o2 l2 p1 v7[{g>g<}]4 v6[{g>g<}]4 v5[{g>b<}]4 v4[{g>b<}]3
                            I【Tab】d+&1&1&1 f&1&1&1

                            两个FM乐器的参数形式做了简化以节省画面空间。A通道是主旋律,使用单次连音伪回声效果,在二分音符长度的时间过去后音量值v减弱1。B通道以不同方式演奏四段效果音,第一段的两声鸟叫本来怎么也调不到合适的音高,正好借助失谐符号达到满意效果,以单侧声像演奏;第二段效果音换到另一声像;第三段效果音使用装饰音制造类似滑音的效果;第四段与C通道相互配合,模仿效果音从一侧缓慢移动到另一侧的过程。I通道是简单的底音。最后整首示例在淡出符号的作用下逐渐减弱音量。


                            IP属地:北京本楼含有高级字体15楼2024-10-26 01:22
                            回复
                              ·2.17 全体控制命令讲解 #
                              全体控制命令主要用于标注乐曲信息和设置乐曲相关数值,它们对全部通道起作用,少部分实现特殊功的除外。《pdf》用一整章介绍了27种命令,这里介绍其中9种,如果想了解其他不常用的(包括我不会用的),欢迎翻阅《pdf》,建议关注一下#Option,感觉比较有用,但我实在弄不大懂。
                              全体控制命令通常写到mml文档的开头,在#符号后面写上命令名称,按Tab键空出距离,然后输入具体内容即可,例如“#Composer【Tab】洩矢呱呱子”。如需使用多个命令,则类似·2.14介绍的变量符号“!”那样各占一行依次设置。
                              2.17-① #Filename
                              在此命令后面输入“文件名.M”或“文件名.M2”,会在播放乐曲时生成.M或.M2文件,如果只写了文件扩展名,则文件名默认与mml文档相同。生成的文件可以用1.5-①提到的98fmplayer播放,也可以像1.5-⑥介绍的那样在PC-98模拟器上播放。
                              2.17-② #Title
                              输入乐曲名称。
                              2.17-③ #Composer
                              输入作曲者的名字。
                              2.17-④ #Arranger
                              输入编曲者的名字。
                              2.17-⑤ #Memo
                              输入备注。
                              如图,以ZUN的.M文件为例,分别用98fmplayer和PC-98模拟器进行播放,可在下侧找到用前面讲的5个命令设置的乐曲信息:


                              2.17-⑥ #Tempo
                              用于设置乐曲的拍速,后面输入BPM数值,范围为18-255,效果等同于·2.5介绍的t符号。
                              2.17-⑦ #Zenlen
                              用于设置全音符长度,后面输入单位时间数量,范围为1-255,效果等同于·2.5介绍的C符号。
                              2.17-⑧ #FM3Extend
                              后面输入字母可额外扩增一至三个FM通道,具体已在·2.12介绍过。
                              2.17-⑨ #Include
                              这个命令不一定放在开头,可多次使用。在此命令后面输入位于同一文件夹的其他mml文档的完整文件名,例如“work.mml”,即可在这一位置插入此mml文档的乐曲内容并播放,非常方便。注意文件名若为中文会报错,另外插入的mml文件大小不能超过61KB。
                              在一个文档内可以多次使用#Include命令插入内容,也可以嵌套插入(例如在b.mml中插入a.mml,再在c.mml中插入b.mml),不过要注意,如果新插入的内容包含其他轨道,或者原内容各轨道末端未对齐,空余的位置将被新内容占据,导致轨道相互错开、各播各的(如后面的示意图所示),所以要及时新建轨道、用休止符r填补空缺。

                              ·2.18 跳过编译、停止编译符号讲解 " /
                              用简短的一小节收个尾,内容虽少,但编写乐曲绝对离不开这两个符号。
                              ":作曲总是要一边写一边听来确认内容无误的,随着内容不断增加,每次都从开头播放非常浪费时间,使用"符号可以跳过无需播放的部分。具体用法是在想跳过的内容首尾处各放一个"符号,例如cd"efg"ab实际播放只能听到cdab。此符号只影响音符,所以放心把v、l、【@】、o等符号囊括进"符号里面,不用担心它们被“跳过”后不对正常播放的内容起效。
                              /:编曲过程中,如果只想让个别通道演奏,可以用/符号停止编译其他通道,用法是在要屏蔽的通道内容最前端放一个/ 符号,例如I【Tab】/cdefg,那么I通道就停止编译了。乐曲中若有全局循环符号L,需暂时将其去掉,否则无法使用/符号。
                              [示例29]复刻了th3“Maple Dream...”的前奏,如图,H通道使用/符号完全停止编译,I通道后面的部分用"符号跳过,你可以去掉这些符号听完整版前奏,也可以随便改改它们的位置~
                              GHI【Tab】t138
                              【空行】
                              G【Tab】【@】1 o4 l4 [g+ r g+ >c+< b >c+8< f+8 r f+ g+ r g+ >e d+ e8< b8 r >c+]12
                              H【Tab】/【@】6 o4 l8 [c+ g+ c+ d+ e g+ e d+ c+ g+ f+ g+ e g+ d+ g+]24
                              I【Tab】【@】8 o2 l1 [r]8 c+&1 r&1 c+&1 r&2 "v6 {g+<a}2 a&1 b&1> c+&1 c+ c+2 d+2 e&1 f+&1 c+&1 c+&1 【@】7 o5 l4 [rc+]32"

                              至此,第二章终于讲完,我们的水平足够写出很复杂的曲子了,恭喜!
                              尽管如此,碍于我的水平有限,《pdf》中仍有不少内容没讲,还是那句话,如果你对创作pmd音乐感兴趣,请一定仔细翻翻《pdf》,肯定会有收获的~


                              IP属地:北京本楼含有高级字体16楼2024-10-28 22:53
                              收起回复