『壹』 如何查詢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 — 附加的?