『壹』 如何查询matlab中有哪些函数
Matlab函数大全
信源函数
randerr 产生比特误差样本
randint 产生均匀分布的随机整数矩阵
randsrc 根据给定的数字表产生随机矩阵
wgn 产生高斯白噪声
信号分析函数
biterr 计算比特误差数和比特误差率
eyediagram 绘制眼图
scatterplot 绘制分布图
symerr 计算符号误差数和符号误差率
信源编码
compand mu律/A律 压缩/扩张
dpcmdeco DPCM(差分脉冲编码调制)解码
dpcmenco DPCM编码
dpcmopt 优化DPCM参数
lloyds Lloyd法则优化量化器参数
quantiz 给出量化后的级和输出值
误差控制编码
bchpoly 给出二进制BCH码的性能参数和产生多项式
convenc 产生卷积码
cyclgen 产生循环码的奇偶校验阵和生成矩阵
cyclpoly 产生循环码的生成多项式
decode 分组码解码器
encode 分组码编码器
gen2par 将奇偶校验阵和生成矩阵互相转换
gfweight 计算线性分组码的最小距离
hammgen 产生汉明码的奇偶校验阵和生成矩阵
rsdecof 对Reed-Solomon编码的ASCII文件解码
rsencof 用Reed-Solomon码对ASCII文件编码
rspoly 给出Reed-Solomon码的生成多项式
syndtable 产生伴随解码表
vitdec 用Viterbi法则解卷积码
(误差控制编码的低级函数)
bchdeco BCH解码器
bchenco BCH编码器
rsdeco Reed-Solomon解码器
rsdecode 用指数形式进行Reed-Solomon解码
rsenco Reed-Solomon编码器
rsencode 用指数形式进行Reed-Solomon编码
调制与解调
ademod 模拟通带解调器
ademodce 模拟基带解调器
amod 模拟通带调制器
amodce 模拟基带调制器
apkconst 绘制圆形的复合ASK-PSK星座图
ddemod 数字通带解调器
ddemodce 数字基带解调器
demodmap 解调后的模拟信号星座图反映射到数字信号
dmod 数字通带调制器
dmodce 数字基带调制器
modmap 把数字信号映射到模拟信号星座图(以供调制)
qaskdeco 从方形的QASK星座图反映射到数字信号
qaskenco 把数字信号映射到方形的QASK星座图
专用滤波器
hank2sys 把一个Hankel矩阵转换成一个线性系统模型
hilbiir 设计一个希尔伯特变换IIR滤波器
rcosflt 升余弦滤波器
rcosine 设计一个升余弦滤波器
(专用滤波器的低级函数)
rcosfir 设计一个升余弦FIR滤波器
rcosiir 设计一个升余弦IIR滤波器
信道函数
awgn 添加高斯白噪声
伽罗域计算
gfadd 伽罗域上的多项式加法
gfconv 伽罗域上的多项式乘法
gfcosets 生成伽罗域的分圆陪集
gfdeconv 伽罗域上的多项式除法
gfdiv 伽罗域上的元素除法
gffilter 在质伽罗域上用多项式过滤数据
gflineq 在至伽罗域上求Ax=b的一个特解
gfminpol 求伽罗域上元素的最小多项式
gfmul 伽罗域上的元素乘法
gfplus GF(2^m)上的元素加法
gfpretty 以通常方式显示多项式
gfprimck 检测多项式是否是基本多项式
gfprimdf 给出伽罗域的MATLAB默认的基本多项式
gfprimfd 给出伽罗域的基本多项式
gfrank 伽罗域上矩阵求秩
gfrepcov GF(2)上多项式的表达方式转换
gfroots 质伽罗域上的多项式求根
gfsub 伽罗域上的多项式减法
gftrunc 使多项式的表达最简化
gftuple 简化或转换伽罗域上元素的形式
工具函数
bi2de 把二进制向量转换成十进制数
de2bi 把十进制数转换成二进制向量
erf 误差函数
erfc 余误差函数
istrellis 检测输入是否MATLAB的trellis结构(structure)
marcumq 通用Marcum Q 函数
oct2dec 八进制数转十进制数
poly2trellis 把卷积码多项式转换成MATLAB的trellis描述
vec2mat 把向量转换成矩阵
--------------------------------------------------
A a
abs 绝对值、模、字符的ASCII码值
acos 反余弦
acosh 反双曲余弦
acot 反余切
acoth 反双曲余切
acsc 反余割
acsch 反双曲余割
align 启动图形对象几何位置排列工具
all 所有元素非零为真
angle 相角
ans 表达式计算结果的缺省变量名
any 所有元素非全零为真
area 面域图
argnames 函数M文件宗量名
asec 反正割
asech 反双曲正割
asin 反正弦
asinh 反双曲正弦
assignin 向变量赋值
atan 反正切
atan2 四象限反正切
atanh 反双曲正切
autumn 红黄调秋色图阵
axes 创建轴对象的低层指令
axis 控制轴刻度和风格的高层指令
B b
bar 二维直方图
bar3 三维直方图
bar3h 三维水平直方图
barh 二维水平直方图
base2dec X进制转换为十进制
bin2dec 二进制转换为十进制
blanks 创建空格串
bone 蓝色调黑白色图阵
box 框状坐标轴
break while 或for 环中断指令
brighten 亮度控制
C c
capture (3版以前)捕获当前图形
cart2pol 直角坐标变为极或柱坐标
cart2sph 直角坐标变为球坐标
cat 串接成高维数组
caxis 色标尺刻度
cd 指定当前目录
cdedit 启动用户菜单、控件回调函数设计工具
cdf2rdf 复数特征值对角阵转为实数块对角阵
ceil 向正无穷取整
cell 创建元胞数组
cell2struct 元胞数组转换为构架数组
celldisp 显示元胞数组内容
cellplot 元胞数组内部结构图示
char 把数值、符号、内联类转换为字符对象
chi2cdf 分布累计概率函数
chi2inv 分布逆累计概率函数
chi2pdf 分布概率密度函数
chi2rnd 分布随机数发生器
chol Cholesky分解
clabel 等位线标识
cla 清除当前轴
class 获知对象类别或创建对象
clc 清除指令窗
clear 清除内存变量和函数
clf 清除图对象
clock 时钟
colorcube 三浓淡多彩交叉色图矩阵
colordef 设置色彩缺省值
colormap 色图
colspace 列空间的基
close 关闭指定窗口
colperm 列排序置换向量
comet 彗星状轨迹图
comet3 三维彗星轨迹图
compass 射线图
compose 求复合函数
cond (逆)条件数
condeig 计算特征值、特征向量同时给出条件数
condest 范 -1条件数估计
conj 复数共轭
contour 等位线
contourf 填色等位线
contour3 三维等位线
contourslice 四维切片等位线图
conv 多项式乘、卷积
cool 青紫调冷色图
copper 古铜调色图
cos 余弦
cosh 双曲余弦
cot 余切
coth 双曲余切
cplxpair 复数共轭成对排列
csc 余割
csch 双曲余割
cumsum 元素累计和
cumtrapz 累计梯形积分
cylinder 创建圆柱
D d
dblquad 二重数值积分
deal 分配宗量
deblank 删去串尾部的空格符
dec2base 十进制转换为X进制
dec2bin 十进制转换为二进制
dec2hex 十进制转换为十六进制
deconv 多项式除、解卷
delaunay Delaunay 三角剖分
del2 离散Laplacian差分
demo Matlab演示
det 行列式
diag 矩阵对角元素提取、创建对角阵
diary Matlab指令窗文本内容记录
diff 数值差分、符号微分
digits 符号计算中设置符号数值的精度
dir 目录列表
disp 显示数组
display 显示对象内容的重载函数
dlinmod 离散系统的线性化模型
dmperm 矩阵Dulmage-Mendelsohn 分解
dos 执行DOS 指令并返回结果
double 把其他类型对象转换为双精度数值
drawnow 更新事件队列强迫Matlab刷新屏幕
dsolve 符号计算解微分方程
E e
echo M文件被执行指令的显示
edit 启动M文件编辑器
eig 求特征值和特征向量
eigs 求指定的几个特征值
end 控制流FOR等结构体的结尾元素下标
eps 浮点相对精度
error 显示出错信息并中断执行
errortrap 错误发生后程序是否继续执行的控制
erf 误差函数
erfc 误差补函数
erfcx 刻度误差补函数
erfinv 逆误差函数
errorbar 带误差限的曲线图
etreeplot 画消去树
eval 串演算指令
evalin 跨空间串演算指令
exist 检查变量或函数是否已定义
exit 退出Matlab环境
exp 指数函数
expand 符号计算中的展开操作
expint 指数积分函数
expm 常用矩阵指数函数
expm1 Pade法求矩阵指数
expm2 Taylor法求矩阵指数
expm3 特征值分解法求矩阵指数
eye 单位阵
ezcontour 画等位线的简捷指令
ezcontourf 画填色等位线的简捷指令
ezgraph3 画表面图的通用简捷指令
ezmesh 画网线图的简捷指令
ezmeshc 画带等位线的网线图的简捷指令
ezplot 画二维曲线的简捷指令
ezplot3 画三维曲线的简捷指令
ezpolar 画极坐标图的简捷指令
ezsurf 画表面图的简捷指令
ezsurfc 画带等位线的表面图的简捷指令
F f
factor 符号计算的因式分解
feather 羽毛图
feedback 反馈连接
feval 执行由串指定的函数
fft 离散Fourier变换
fft2 二维离散Fourier变换
fftn 高维离散Fourier变换
fftshift 直流分量对中的谱
fieldnames 构架域名
figure 创建图形窗
fill3 三维多边形填色图
find 寻找非零元素下标
findobj 寻找具有指定属性的对象图柄
findstr 寻找短串的起始字符下标
findsym 机器确定内存中的符号变量
finverse 符号计算中求反函数
fix 向零取整
flag 红白蓝黑交错色图阵
fliplr 矩阵的左右翻转
flipud 矩阵的上下翻转
flipdim 矩阵沿指定维翻转
floor 向负无穷取整
flops 浮点运算次数
flow Matlab提供的演示数据
fmin 求单变量非线性函数极小值点(旧版)
fminbnd 求单变量非线性函数极小值点
fmins 单纯形法求多变量函数极小值点(旧版)
fminunc 拟牛顿法求多变量函数极小值点
fminsearch 单纯形法求多变量函数极小值点
fnder 对样条函数求导
fnint 利用样条函数求积分
fnval 计算样条函数区间内任意一点的值
fnplt 绘制样条函数图形
fopen 打开外部文件
for 构成for环用
format 设置输出格式
fourier Fourier 变换
fplot 返函绘图指令
fprintf 设置显示格式
fread 从文件读二进制数据
fsolve 求多元函数的零点
full 把稀疏矩阵转换为非稀疏阵
funm 计算一般矩阵函数
funtool 函数计算器图形用户界面
fzero 求单变量非线性函数的零点
G g
gamma 函数
gammainc 不完全 函数
gammaln 函数的对数
gca 获得当前轴句柄
gcbo 获得正执行"回调"的对象句柄
gcf 获得当前图对象句柄
gco 获得当前对象句柄
geomean 几何平均值
get 获知对象属性
getfield 获知构架数组的域
getframe 获取影片的帧画面
ginput 从图形窗获取数据
global 定义全局变量
gplot 依图论法则画图
gradient 近似梯度
gray 黑白灰度
grid 画分格线
griddata 规则化数据和曲面拟合
gtext 由鼠标放置注释文字
guide 启动图形用户界面交互设计工具
H h
harmmean 调和平均值
help 在线帮助
helpwin 交互式在线帮助
helpdesk 打开超文本形式用户指南
hex2dec 十六进制转换为十进制
hex2num 十六进制转换为浮点数
hidden 透视和消隐开关
hilb Hilbert矩阵
hist 频数计算或频数直方图
histc 端点定位频数直方图
histfit 带正态拟合的频数直方图
hold 当前图上重画的切换开关
horner 分解成嵌套形式
hot 黑红黄白色图
hsv 饱和色图
I i
if-else-elseif 条件分支结构
ifft 离散Fourier反变换
ifft2 二维离散Fourier反变换
ifftn 高维离散Fourier反变换
ifftshift 直流分量对中的谱的反操作
ifourier Fourier反变换
i, j 缺省的"虚单元"变量
ilaplace Laplace反变换
imag 复数虚部
image 显示图象
imagesc 显示亮度图象
imfinfo 获取图形文件信息
imread 从文件读取图象
imwrite 把imwrite 把图象写成文件
ind2sub 单下标转变为多下标
inf 无穷大
info MathWorks公司网点地址
inline 构造内联函数对象
inmem 列出内存中的函数名
input 提示用户输入
inputname 输入宗量名
int 符号积分
int2str 把整数数组转换为串数组
interp1 一维插值
interp2 二维插值
interp3 三维插值
interpn N维插值
interpft 利用FFT插值
intro Matlab自带的入门引导
inv 求矩阵逆
invhilb Hilbert矩阵的准确逆
ipermute 广义反转置
isa 检测是否给定类的对象
ischar 若是字符串则为真
isequal 若两数组相同则为真
isempty 若是空阵则为真
isfinite 若全部元素都有限则为真
isfield 若是构架域则为真
isglobal 若是全局变量则为真
ishandle 若是图形句柄则为真
ishold 若当前图形处于保留状态则为真
isieee 若计算机执行IEEE规则则为真
isinf 若是无穷数据则为真
isletter 若是英文字母则为真
islogical 若是逻辑数组则为真
ismember 检查是否属于指定集
isnan 若是非数则为真
isnumeric 若是数值数组则为真
isobject 若是对象则为真
isprime 若是质数则为真
isreal 若是实数则为真
isspace 若是空格则为真
issparse 若是稀疏矩阵则为真
isstruct 若是构架则为真
isstudent 若是Matlab学生版则为真
iztrans 符号计算Z反变换
J j , K k
jacobian 符号计算中求Jacobian 矩阵
jet 蓝头红尾饱和色
jordan 符号计算中获得 Jordan标准型
keyboard 键盘获得控制权
kron Kronecker乘法规则产生的数组
L l
laplace Laplace变换
lasterr 显示最新出错信息
lastwarn 显示最新警告信息
leastsq 解非线性最小二乘问题(旧版)
legend 图形图例
lighting 照明模式
line 创建线对象
lines 采用plot 画线色
linmod 获连续系统的线性化模型
linmod2 获连续系统的线性化精良模型
linspace 线性等分向量
ln 矩阵自然对数
load 从MAT文件读取变量
log 自然对数
log10 常用对数
log2 底为2的对数
loglog 双对数刻度图形
logm 矩阵对数
logspace 对数分度向量
lookfor 按关键字搜索M文件
lower 转换为小写字母
lsqnonlin 解非线性最小二乘问题
lu LU分解
M m
mad 平均绝对值偏差
magic 魔方阵
maple &nb, sp; 运作 Maple格式指令
mat2str 把数值数组转换成输入形态串数组
material 材料反射模式
max 找向量中最大元素
mbuild 产生EXE文件编译环境的预设置指令
mcc 创建MEX或EXE文件的编译指令
mean 求向量元素的平均值
median 求中位数
menuedit 启动设计用户菜单的交互式编辑工具
mesh 网线图
meshz 垂帘网线图
meshgrid 产生"格点"矩阵
methods 获知对指定类定义的所有方法函数
mex 产生MEX文件编译环境的预设置指令
mfunlis 能被mfun计算的MAPLE经典函数列表
mhelp 引出 Maple的在线帮助
min 找向量中最小元素
mkdir 创建目录
mkpp 逐段多项式数据的明晰化
mod 模运算
more 指令窗中内容的分页显示
movie 放映影片动画
moviein 影片帧画面的内存预置
mtaylor 符号计算多变量Taylor级数展开
N n
ndims 求数组维数
NaN 非数(预定义)变量
nargchk 输入宗量数验证
nargin 函数输入宗量数
nargout 函数输出宗量数
ndgrid 产生高维格点矩阵
newplot 准备新的缺省图、轴
nextpow2 取最接近的较大2次幂
nnz 矩阵的非零元素总数
nonzeros 矩阵的非零元素
norm 矩阵或向量范数
normcdf 正态分布累计概率密度函数
normest 估计矩阵2范数
norminv 正态分布逆累计概率密度函数
normpdf 正态分布概率密度函数
normrnd 正态随机数发生器
notebook 启动Matlab和Word的集成环境
null 零空间
num2str 把非整数数组转换为串
numden 获取最小公分母和相应的分子表达式
nzmax 指定存放非零元素所需内存
O o
ode1 非Stiff 微分方程变步长解算器
ode15s Stiff 微分方程变步长解算器
ode23t 适度Stiff 微分方程解算器
ode23tb Stiff 微分方程解算器
ode45 非Stiff 微分方程变步长解算器
odefile ODE 文件模板
odeget 获知ODE 选项设置参数
odephas2 ODE 输出函数的二维相平面图
odephas3 ODE 输出函数的三维相空间图
odeplot ODE 输出函数的时间轨迹图
odeprint 在Matlab指令窗显示结果
odeset 创建或改写 ODE选项构架参数值
ones 全1数组
optimset 创建或改写优化泛函指令的选项参数值
orient 设定图形的排放方式
orth 值空间正交化
P p
pack 收集Matlab内存碎块扩大内存
pagedlg 调出图形排版对话框
patch 创建块对象
path 设置Matlab搜索路径的指令
pathtool 搜索路径管理器
pause 暂停
pcode 创建预解译P码文件
pcolor 伪彩图
peaks Matlab提供的典型三维曲面
permute 广义转置
pi (预定义变量)圆周率
pie 二维饼图
pie3 三维饼图
pink 粉红色图矩阵
pinv 伪逆
plot 平面线图
plot3 三维线图
plotmatrix 矩阵的散点图
plotyy 双纵坐标图
poissinv 泊松分布逆累计概率分布函数
poissrnd 泊松分布随机数发生器
pol2cart 极或柱坐标变为直角坐标
polar 极坐标图
poly 矩阵的特征多项式、根集对应的多项式
poly2str 以习惯方式显示多项式
poly2sym 双精度多项式系数转变为向量符号多项式
polyder 多项式导数
polyfit 数据的多项式拟合
polyval 计算多项式的值
polyvalm 计算矩阵多项式
pow2 2的幂
ppval 计算分段多项式
pretty 以习惯方式显示符号表达式
print 打印图形或SIMULINK模型
printsys 以习惯方式显示有理分式
prism 光谱色图矩阵
procread 向MAPLE输送计算程序
profile 函数文件性能评估器
propedit 图形对象属性编辑器
pwd 显示当前工作目录
Q q
quad 低阶法计算数值积分
quad8 高阶法计算数值积分(QUADL)
quit 推出Matlab 环境
quiver 二维方向箭头图
quiver3 三维方向箭头图
R r
rand 产生均匀分布随机数
randn 产生正态分布随机数
randperm 随机置换向量
range 样本极差
rank 矩阵的秩
rats 有理输出
rcond 矩阵倒条件数估计
real 复数的实部
reallog 在实数域内计算自然对数
realpow 在实数域内计算乘方
realsqrt 在实数域内计算平方根
realmax 最大正浮点数
realmin 最小正浮点数
rectangle 画"长方框"
rem 求余数
repmat 铺放模块数组
reshape 改变数组维数、大小
resie 部分分式展开
return 返回
ribbon 把二维曲线画成三维彩带图
rmfield 删去构架的域
roots 求多项式的根
rose 数扇形图
rot90 矩阵旋转90度
rotate 指定的原点和方向旋转
rotate3d 启动三维图形视角的交互设置功能
round 向最近整数圆整
rref 简化矩阵为梯形形式
rsf2csf 实数块对角阵转为复数特征值对角阵
rsums Riemann和S s
save 把内存变量保存为文件
scatter 散点图
scatter3 三维散点图
sec 正割
sech 双曲正割
semilogx X轴对数刻度坐标图
semilogy Y轴对数刻度坐标图
series 串联连接
set 设置图形对象属性
setfield 设置构架数组的域
setstr 将ASCII码转换为字符的旧版指令
sign 根据符号取值函数
signum 符号计算中的符号取值函数
sim 运行SIMULINK模型
simget 获取SIMULINK模型设置的仿真参数
simple 寻找最短形式的符号解
simplify 符号计算中进行简化操作
simset 对SIMULINK模型的仿真参数进行设置
simulink 启动SIMULINK模块库浏览器
sin 正弦
sinh 双曲正弦
size 矩阵的大小
『贰』 fc文件用什么播放
用电脑模拟再用录音软件录下来.
nes保存的音频个不是midi吧!好像是6504吧。
找了一个提取好的合集。3399个FC游戏MIDI收集包
《NES模拟器设计详细资料》(Nes emulator info)[ISO]
从NES ROM中提取NSF格式音乐完全指南
///////////////////////////////////////////////////////////////////
//// MCK/MML 初学者 指南 ///////////////////////////////////////
//// by nullsleep ////////// proct 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
- 当前可探访的网址 :
mkit251_dos.zip
- 当前可探访的网址 :
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 =
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 ( 八度音阶 ), ty cycle (循环周波 ) ,
和 ( 音量层 ) volume envelope 。这是个可用的 pulse wave channels 设置 :
A l8 o4 @01 @v0
解译到 channel A , 设置缺省 note 长度值为 8 个 notes ,设置 octave 为 4th octave ,
设置 ty cycle 为 01 (25% ty cycle ) , 使用 volume envelope 0 (上面有详细说明 )。
下面是 ty cycle 设定说明 。
Duty Cycle Explanation — Duty Cycle 说明
-------------------------------------------------------------------------------
你可以认为 pulse wave( 脉冲波型 )相当于一个 square wave ( 方型波型 )变量宽度 。
square wave 宽度确定在 50% ( 波型中部 )。但是 pulse waves 有更多灵活性 ,
所谓灵活性就是 pulse wave 的 ty cycle ( 或音色 ) 。
下面是在 NES 的 pulse wave channels 上 4 种可存在的 ty 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 =
@v1 =
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 和 ty cycle 参数外 , triangle wave channel ( C ) 的运作
类似 pulse wave channels 。triangle channel 没有 volume 控制 ,
它只能选择 ON or OFF , 因此 volume envelopes 是不可用的 。同样 ,
ty 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 — 设计三角波形通道
-------------------------------------------------------------------------------
这是在 triangle channel 上 bassline sequence ( 序列 )的小例子 :
C c e g8 g8 a16 b16 >c8 c e g8 g8 a16 b16 >c8<<
加入到 MML 的末端 , 4 次 ( 循环 ) loop 。先听见它同 pulse wave channel (A)
一起播放 , 然后听到它的单独演奏 。
#TITLE My First NES Chip
#COMPOSER Nullsleep
#PROGRAMER 2003 Jeremiah Johnson
@v0 =
@v1 =
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
C l4 o3 q6
C [c e g8 g8 a16 b16 >c8 c e g8 g8 a16 b16 >c8<<]4
*******************************************************************************
** NOISE CHANNEL (D) — 噪波通道(D) ************************************
*******************************************************************************
Noise Channel Explanation - 噪波通道说明
-------------------------------------------------------------------------------
noise channel (D) 是个多用途的通道 。 它可模拟海滩波浪声 , 火箭引擎轰鸣声 ,
黑暗地牢内烈焰的声音 , 等等... 补充打击乐器并稍微增强你的( 鼓 ) drum 采样 。
如同 pulse wave channels , volume envelopes 可用 noise channel 上 ,
并且是获得优等音色的重要角色 。此外它有 2 种工作方式 : ( 标准的 ) normal 和
( 循环噪波 ) looped noise 。looped noise 设置会很有趣的 , 听上去带些金属音色 。
noise channel 的 pitch 范围是非常有限的 , 并在每个 octave 上循环 。
使用 octave 变化没必要的 。c note 象是 (高 pitch ) high pitch ,
梢微地往下的是 e , f , g , a , 和最后的 b note 象是( 低 pitch ) lowest pitched 。
Initialization — 设定初值
-------------------------------------------------------------------------------
在这里是一组 简单的 volume envelopes 可用于 noise channel 上的
一些基本打击乐器 :
@v2 =
@v3 =
channel 初始的 volume envelopes 设置应该是 :
D l4 o1 @0 @v2
解译到 channel D , 缺省 note length 值为 4 分之一 notes ,
设定 octave 为 1st octave , 设定噪波模式为 normal( @1 用
于开启 looped noise ), 使用 volume envelope 2 。
Programming the Noise Channel — 设计噪波通道
-------------------------------------------------------------------------------
这是个简短的鼓音噪波序列 :
D @v2 b @v3 e @v2 b @v3 e @v2 b @v3 e @v2 b @v3 e8 @v2 b8
添加到 MML 的末端 , 4 次 loop 。
#TITLE My First NES Chip
#COMPOSER Nullsleep
#PROGRAMER 2003 Jeremiah Johnson
@v0 =
@v1 =
@v2 =
@v3 =
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
C l4 o3 q6
C [c e g8 g8 a16 b16 >c8 c e g8 g8 a16 b16 >c8<<]4
D l4 o1 @0 @v2
D [@v2 b @v3 e @v2 b @v3 e @v2 b @v3 e @v2 b @v3 e8 @v2 b8]4
*******************************************************************************
** DPCM CHANNEL (E) **********************************************************
*******************************************************************************
DPCM Channel Explanation DPCM 通道说明
-------------------------------------------------------------------------------
DPCM 通道, 或 delta molation channel (DMC) , 是 NES 用来重放( 采样 )sample 的通道 。
它可应用于规划( 鼓 ) drums , sampled( 低音 ) basslines , 或( 连续的歌声 ) even vocal samples 。
DPCM 的操作简单易懂 , 只有少量参数必须调整 。同 triangle wave channel 一样没有音量控制 ,
DPCM 通道只能选 ON or OFF 。 NES 默认使用它的自带的 1-bit sample ( 采样 )格式 ,
你也可以转换自己的 samples 。 方法在下一部分描述 。
Creating DPCM Samples — 创建 DPCM 采样
-------------------------------------------------------------------------------
DMCconv 程序将你的 . wav 采样转换至 .bin 供 MCK 使用 。
DMCconv 文件虽然不是在英语的 , 然而它的操作很简单所以应用不是问题 。
下面说明它的用法:
用法 : DMCconv wavefile outfile
选项
-r? DMC 采样等级 ( 0-F ) ( 缺省值 : F 33.14KHz )
0: 4.18KHz 1: 4.71KHz 2: 5.26KHz 3: 5.59KHz
4: 6.26KHz 5: 7.05KHz 6: 7.92KHz 7: 8.36KHz
8: 9.42KHz 9:11.18KHz A:12.60KHz B:13.98KHz
C:16.88KHz D:21.30KHz E:24.86KHz F:33.14KHz
-v? 音量 ( 缺省值 : 100 )
-n 不校正音量 ( 缺省值 : Adjust )
-b 存储体填充大小 ( 缺省值 : No padding )
例如 : DMCconv kick.wav kick.dmc
转换 kick.wav 文件至 kickdrum sample , 可用 NES 默认设置 。
Initialization and Programming the DPCM Channel — 设定初值和规划 DPCM 通道
-------------------------------------------------------------------------------
转换全部所需的采样 , 在 'workspace' 文件夹内创建目录 'samples'
将采样文件放到此目录下 。设置如下 :
@DPCM0 =
@DPCM2 =
E o0 l4
第一个(采样 ) sample , kick.dmc , 它将映射到 @DPCM0 上 , 相当于 octave 0 上的 c note 。
然后你将注意到第二个 sample , snare.dmc , 映射到 @DPCM2 相当于 octave 0 上的 d note ...
跳过 @DPCM1 是避免映射 samples sharps/flats 失控 , 保持 MML 有更强的易读性 。实例 ,
哪个是下列更易识别的 kick 和 snare 鼓声?
E c d c d c d c d8 c8
或
E c c+ c c+ c c+ c c+8 c8
显然应该是第一项拥有更强的易读性 , 增强可读性有利于设计更深层次 , 复杂冗长的
drum sequences 。 Looping 它并添加它到 MML 程序的末端 , 像这样 :
#TITLE My First NES Chip
#COMPOSER Nullsleep
#PROGRAMER 2003 Jeremiah Johnson
@v0 =
@v1 =
@v2 =
@v3 =
@DPCM0 =
@DPCM2 =
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
C l4 o3 q6
C [c e g8 g8 a16 b16 >c8 c e g8 g8 a16 b16 >c8<<]4
D l4 o1 @0 @v2
D [@v2 b @v3 e @v2 b @v3 e @v2 b @v3 e @v2 b @v3 e8 @v2 b8]4
E o0 l4
E [c d c d c d c d8 c8]4
*******************************************************************************
** ADDITIONAL MACROS — 附加的?