nes=>mml音乐宏编程

2018-07-19 13:40:02 -0400
nes=>mml音乐宏编程 - 歌曲谱

nes=>mml音乐宏编程

2018-07-20 01:40:02 +0800
百度文库




MCK,MML 初学者 指南 共享文档
2011-04-17 11页 4.3分
用App免费查看
///////////////////////////////////////////////////////////////////
//// MCK/MML 初学者 指南 ///////////////////////////////////////
//// by nullsleep ////////// product 8 bitpeoples /////////////
//// 版本 1.0 /////////// Research & Development /////////////
///////////////////////////////////////////////////////////////////
*****************************************************************************
** OBJECTIVE — 目的 ******************************************************
*****************************************************************************
此文档是有关使用 MCK/MML 设计 NES 乐曲过程中涉及的每件事和
所需规则 , 命令的参考文档 。它概要地介绍了必需的方法和步骤 ,
如何开始构建 MCK/MML 工作区域 , NES 每个声音通道的程序规则 。
包括大部分共通和常用的 MML 命令及作用 ,
以及制作一个 NSF 文件可能出现的问题和处理方法 。
感谢 : Izumi, Manbow-J, Norix, Virt, Memblers, 和在 MCK 2ch 的每个人
*******************************************************************************
** MCK/MML WORKSPACE SETUP — MCK/MML 工作区设置 ****************************
*******************************************************************************
下载以下文件
-------------------------------------------------------------------------------
mck_0228.zip
mckc025.zip
dmcconv005.zip
mckc-e.txt
- 当前可探访的网址 :
http://www.geocities.co.jp/Playtown-Denei/9628/
mkit251_dos.zip
- 当前可探访的网址 :
http://www.magicengine.com/mkit/download.html
Organize MCK/MML Workspace — 构建 MCK/MML 工作区
-------------------------------------------------------------------------------
创建一个名为 'workspace' 的文件夹 , 并解压mck_0228.zip 内的全部的文件到此文件夹 。
接着 , 解压 mckc025.zip 内的全部的文件到此文件夹 。现在从 mkit251_dos.zip 内提取
名为 nesasm.exe 的文件到 'workspace' 文件夹 。其他 magickit 的文件不是必需的 。
从 mckc zip 提取 'source' 文件夹 ,到 'workspace' 。最后 , 在 'workspace' 内创建一个
新的名为 'DMCconv' 的文件夹 , 并解压 dmcconv005.zip 文件到此文件夹 。
Create and Modify Files — 创建和修改文件
-------------------------------------------------------------------------------
在你的 'workspace' 文件夹内 , 创建 个新的名为 songdata.mml 的文本文件 。
你将使用 MML ( music macro language ) — ( 音乐宏语言 )在这个文本文件内谱写你的乐曲 。
但是首先, 还有一些事必须设置好 。打开 make_nsf.txt 找到文件最后名为 . include 的语句 。
然后在最后的一行 , 添加以下语句 :
.include "songdata.h"
在 make_nsf.txt 文件里你也可以看到下面这些语句 :
.org $800E
db "Song Name"
db
$00
.org $802E
db "Artist"
db $00
.org $804E
db "Maker"
db $00
这是 NSF 的标题部分 , 用它来识别乐曲 。应该明显看出这个 org 语句是 hex values ( 十六位 值 )
它对每部分的空间是有限的 , 最大长度为 31 个字符 。看到在下文后你应该适当地修改这些标题区 ,
注意保持在 31 个字符限定内 :
.org $800E
db "My First NES Chip ( 曲目名称 )"
db $00
.org $802E
db "Nullsleep ( 曲作者 )"
db $00
.org $804E
db "2003 Jeremiah Johnson ( 时间 发行人 )"
db $00
*******************************************************************************
** GENERATING THE NSF FILE — 制作 NSF 文件 *****************************
*******************************************************************************
创建另一个新的文本文件 , 打开并输入 :
mckc_e songdata.mml
del nesmusic.nsf
nesasm -raw make_nsf.txt
ren make_nsf.nes nesmusic.nsf
保存文件后退出 , 再命名它为 build.bat 这是个简单的批处理文件 ,
它将运行全部命令从 MML 数据里生成一个 NSF 文件 。
首先它利用 mckc 在 songdata.h 里转换 songdata.mml 导入大块的数据 ,
之后 nesasm 将连同 MCK 声音驱动程序代码一起 , 汇编进一个 NSF 文件 。
至此每件事都应该设置妥当了 , 现在你将开始起程 !设计 MML !
*******************************************************************************
** BASIC SONG SETUP — 基本歌曲设置 ***************************************
*******************************************************************************
Header Credits — 标题声明
-------------------------------------------------------------------------------
在你的首选的文本编辑程序内打开 songdata.mml , 第一件事是你应该
在文件的起始行加入识别注释 , 曲作者你自己和歌曲的标题 。
例如 :
#TITLE My First NES Chip ( 标题 )
#COMPOSER Nullsleep ( 曲作者 )
#PROGRAMER 2003 Jeremiah Johnson ( 发行人 )
这是可选的步骤, 但还是推荐使用它 , 尤其是你的 MML 文件是公开发布的版本 。
此外还要注意的是 , 在 MCK 内不要错误拼写 #PROGRAMER 。
Channel Layout — 通道布局
-------------------------------------------------------------------------------
NES 有 5 个( 通道 ) channels 共同工作 , 在 MML 里它们的定义项如下 :
A this is the first pulse channel A 第一脉冲通道
B this is the second pulse channel B 第二脉冲通道
C this is the triangle channel C 三角波形通道
D this is the noise channel D 噪波通道
E this is the dpcm channe E
dpcm 通道
这份指南将包括每个通道的程序规则 , ( 脉冲通道 )pulse channel A+B 它们的运作方式是相同的 。
Tempo Settings —( 音乐 )速率设定
-------------------------------------------------------------------------------
Tempo 设定可单独作用于每个 channel , 或许通常你需要所有的 channel
在播放时都有相同的速度保持每个件事同步 。
设置 tempo 于全部的 channel 如下 :
ABCDE t150
这是在 MML 里的表示法 , 为 channels A , B , C , D , E,
设置 tempo 值是每分 150( 拍 )beats 。 tempo 的有效值是 1 -至- 255 。
Volume Settings — 音量设定
-------------------------------------------------------------------------------
( 脉冲波型通道 )pulse wave channels (A+B) 和 ( 噪波通道 )noise channel ( D )
在 NES 里有( 音量 ) Volume 控制 ,( 三角波型通道) triangle wave channel ( C )
和 ( DPCM 通道 ) DPCM channel ( E ) 只能设置 ON or OFF ( 开启或断开 )。
pulse 和 noise channels , 在这里有 2 种 Volume 设置方式 。
第一个是设定恒量 volume , 使用方法如下 :
A v15
设置 channel A 音量至 15 , 那是可用的最高音量 。然而 , 大部分案例
使用 ( 音量层 ) volume envelope , 相比设置恒量 volume , 或许是更好的选择 。
设置基本的 volume envelopes 很简单 。但是如果既不设定恒量 volume 也不设定
volume envelopes 来定义 pulse channels (A+B) 或 noise channel ( D ) ,
那在这些通道上你将听不到任何声音输出 。这有个简单的 volume envelopes 例子 :
@v0 = { 10 9 8 7 6 5 4 3 2 }
volume envelope 取值在 0 -至-15 之间 。最高的 volume 为 15 , 0 为静止 。
这个 volume envelope 起始在高音量很快地衰减到一个低的音量 , 最后的值是延续声音 ,
直到另一个 note ( 注释 )开始播放 。你可以轻易地修改 volume envelope 或设置更多 ,
更深层的例子将在下面提供 , 包括在 envelope 内设置 ( 循环点 ) loop points 。
*******************************************************************************
** PULSE WAVE CHANNELS (A+B) — 脉冲波型通道 ( A+B ) ***********************
*******************************************************************************
Initialization — 设定初值
-------------------------------------------------------------------------------
下一步是单独地设置每个 pulse channels ( 脉冲通道 ) 通道的属性和需求 ,
例如 note length ( 注释 长度 ), octave ( 八度音阶 ), duty cycle (循环周波 ) ,
和 ( 音量层 ) volume envelope 。这是个可用的 pulse wave channels 设置 :
A l8 o4 @01 @v0
解译到 channel A , 设置缺省 note 长度值为 8 个 notes ,设置 octave
为 4th octave ,
设置 duty cycle 为 01 (25% duty cycle ) , 使用 volume envelope 0 (上面有详细说明 )。
下面是 duty cycle 设定说明 。
Duty Cycle Explanation — Duty Cycle 说明
-------------------------------------------------------------------------------
你可以认为 pulse wave( 脉冲波型 )相当于一个 square wave ( 方型波型 )变量宽度 。
square wave 宽度确定在 50% ( 波型中部 )。但是 pulse waves 有更多灵活性 ,
所谓灵活性就是 pulse wave 的 duty cycle ( 或音色 ) 。
下面是在 NES 的 pulse wave channels 上 4 种可存在的 duty cycle 设定 。
_
00 | | | 12.5% thin raspy sound 细薄的刺耳声音
| |_____________|
___
01 | | | 25% thick fat sound 浓厚 , 丰满的声音
| |___________|
_______
02 | | | 50% smooth clear sound 平滑的 , 明亮的声音
| |_______|
___________
03 | | | 75% same as 25% but phase-inverted 类似 25% 但是 相位 - 反向的
| |___|
Programming the Pulse Channel — 设计脉冲通道
-------------------------------------------------------------------------------
现在 Pulse Channel ( A ) 已完成了设置 , 在这里有个简短的
note sequence ( 注释序列 )可以执行它 。
A c d e f g4 a16 b16 >c c d e f g4 a16 b16 >c<<
如果你了解标准的音乐表示法 , 那所见的应该有几分熟悉 。
另外 , 要使用 ( 升调和降调 )sharps 和 flats , 可在任一个 note 值后加 + 或 - ( 分别地 )。
在一个 octave 内的 notes :
c+ d+ f+ g+ a+
| # # | # # # | 其它:
| # # | # # # | r = rest ( 休止符 )
| # # | # # # | w = wait (休止上一个 note , 但不静止 )
|__|__|__|__|__|__|__|
c d e f g a b
Channel A 缺省 note 长度值是 8 notes , 上面的旋律是播放 c b e f notes
每个为 8 分之一长度 , 然后是 g4 播放 g 为 4 分之一长度 , 接着是 a16 b16
播放 a note 和 b note 每个 16 分之一长度 。下个是 > 字符 ,
它是上升 octave ( 八度音阶 )的转换开关 , ( 现在我们是在 5 th octave )
于是在 5 th octave 播放 c ( 八分音符 ) note 8 。 现在数值再次重复 ,
最后在结束前下降 2 octaves( 到 channel 初始设定的 4 th octave ) 。
还有 , 关于 note 持续时间 , 可使用 dotted notes ( 点 注释 ) ,
应该再次复习那些标准的音乐符号的知识 。note 加 " 点 "
增加它的值一半的持续时间 。 以下例子可帮助说明 :
c8. = c note played for an eighth plus a sixteenth
c note 播放一个 8 分之一 加 16 分之一
d4. = d note played for a quarter plus an eighth d note 播放一个 4 分之一 加 8 分之一
e4.. = e note played for a quarter plus an eighth plus a sixteenth e note 播放一个 4 分之一 加 8 分之一 加 16
f2.. = f note played for a half plus a quarter plus an eighth f note 播放一个 2 分之一 加 4 分之一 加 8
现在 , 回到上面第一个 pulse wave channel (A) 的实例程序在 上 ,
注意此 sequence ( 序列 )将只播放一次 。
可以用括号使全部 sequence 或一小部分循环 , 括号后为循环次数 。
表示在下面 :
A [c d e f g4 a16 b16 >c c d e f g4 a16 b16 >c<<]2
这将 loop ( 循环 )整个 sequence 两次 。它确保你的 MML 代码整洁 ,
并约去一些没必要的输入 。 让 sequence 觉得有更多的活力 ,
另外 volume envelope 能设置 2 项 , 并且可以来回转变 。 完成像这样 :
#TITLE My First NES Chip
#COMPOSER Nullsleep
#PROGRAMER 2003 Jeremiah Johnson
@v0 = { 10 9 8 7 6 5 4 3 2 }
@v1 = { 15 15 14 14 13 13 12 12 11 11 10 10 9 9 8 8 7 7 6 6 }
ABCDE t150
A l8 o4 @01 @v0
A [c d e f @v1 g4 @v0 a16 b16 >c c d e f @v1 g4 @v0 a16 b16 >c<<]2
volume envelope 开关将在 4 分之一 notes 轻微强调 , 因为 volume 初始设置更高 ,
新的 volume envelope 减缓了衰减速率 。
所有这些设置也同样应用于第 2 个 pulse channel (B) 。
*******************************************************************************
** TRIANGLE WAVE CHANNEL (C) — 三角波形通道 (C) **************************
*******************************************************************************
Initialization — 初始设定
-------------------------------------------------------------------------------
除了 volume envelope 和 duty cycle 参数外 , triangle wave channel ( C ) 的运作
类似 pulse wave channels 。triangle channel 没有 volume 控制 ,
它只能选择 ON or OFF , 因此 volume envelopes 是不可用的 。同样 ,
duty cycle 设定只是应用在 pulse channels 上 , 用在 triangle channel 上将被忽略 。
这是值得注意的地方 , 初始设置 triangle wave channe 是相当地简单的 :
C l4 o3 q6
解译到 channel C 缺省 note 长度值 向 4 分之一 notes , 设定 octave 为 3rd octave ,
最后设定 q6 。 对于此项设置可能会困惑 , 在 channel C 上它可以轻微地切断播放 notes 。
q 的取值范围是 1 -至- 8 。 Notes 分成 8 个均等的部分 , 在切断 note 播放之前取值是 ?/8 。
例如 , 设置 q6 将剪切 6/8ths note 在之后播放 。
它会加强 basslines 的节奏感 , 如果 notes 允许声音连续 。
Programming the Triangle Channel — 设计三角波形通道
已读45%
点击加载更多
使用文库App可享受
免费下载此文档 多端同步便捷下载 发送个人邮箱
用App免费下载
分享收藏下载
打开文库App,免费阅读此文档
相关推荐文档
MCK - 管理流程手册[模板工具] 用App查看
mck_problem_solving_test_practice
hastba0001.mck_1b
MCK数显表(最后样本)(1)
McK_Wissen_Wow03
MCK助剂应用指南
(市场解决问题的方法及途径)mck-solution
Mck-战略规划-成长阶梯规划实施讨论
MCK培训-绘制图表
suggestions from Mck
查看

百度文库熊掌号
百度文库优质内容精选
百度搜索
农村投资好..
凉菜培训班
安卓app下载
安卓软件免费下载
找女朋友
农村致富项目
安卓手机软件下载
安卓手机下载
下载原文档,方便随时阅读 下载文档 bing译成英译成中读

你哈

«更新      更旧»

----管理----
编辑或删除
发表评论:
署名:歌曲谱

返回首页

最新 | 订阅 | 管理 | English | N
bing译成英译成中

读bing译成英译成中

你哈

«Newer      Older»
Comment:
Name:

Back to home

Subscribe | Register | Login | N