返回信息流一楼保存为mariosong.m
二楼保存为note.m
两个文件放在同一文件夹下
在matlab里运行mariosong.m
then enjoy it.:)
这是一条镜像帖。来源:北邮人论坛 / matlab / #2453同步于 2007/12/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
【娱乐】matlab下的Super Mario Brothers Song
QuestionMark
2007/12/20镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
%mysong.m : mario brother's theme song.. programming: James Humes
%transcription: Stewart Bozarth
warning off
t = 0.17;
% whole song
keyst = [ 56 56 0 56 0 52 56 0 59 0 0 47 0 0 52 0 47 0 44 0 0 49 0 51 0 50 49 0 47 0 56 0 59 0 61 0 57 59 0 56 0 52 54 51 0 52 0 47 0 44 0 0 49 0 51 0 50 49 0 47 0 56 0 59 0 61 0 57 59 0 56 0 52 54 51 0 0 59 58 57 55 0 56 0 48 49 52 0 49 52 54 0 59 58 57 55 0 56 0 64 0 64 64 0 0 0 59 58 57 55 0 56 0 48 49 52 0 49 52 54 0 55 0 0 54 0 52 0 0 0 0 59 58 57 55 0 56 0 48 49 52 0 49 52 54 0 59 58 57 55 0 56 0 64 0 64 64 0 0 0 59 58 57 55 0 56 0 48 49 52 0 49 52 54 0 55 0 0 54 0 52 0 0 0 52 52 0 52 0 52 54 0 56 52 0 49 47 0 0 52 52 0 52 0 52 54 56 0 0 52 52 0 52 0 52 54 0 56 52 0 49 47 0 0 56 56 0 56 0 52 56 0 59 0 0 47 0 0 56 52 0 47 0 48 0 49 57 0 57 49 0 0 51 0 61 0 61 0 61 0 59 0 57 0 56 52 0 49 47 0 0 56 52 0 47 0 48 0 49 57 0 57 49 0 0 47 57 0 57 57 0 56 0 54 0 52 0 0 0 52 0 47 0 44 0 49 51 49 48 50 48 47];
tdur = [ t t t t t t t t t t 2*t t t 2*t t 2*t t 2*t t t t t t t t t t t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t t t t t t t t t t t 2*t t 2*t t 2*t t t t t t t t t t t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t t t t t t t t t t t 2*t 2*t t t t t t t t t t t t t t t 2*t t t t t t t t t t t t t 2*t 2*t t t t t t t t t t t t t t t 2*t t t t t 2*t t t 2*t 4*t 2*t t t t t t t t t t t t t t t 2*t t t t t t t t t t t t t 2*t 2*t t t t t t t t t t t t t t t 2*t t t t t 2*t t t 2*t 4*t t t t t t t t t t t t t t t 2*t t t t t t t t t 4*t 4*t t t t t t t t t t t t t t t 2*t t t t t t t t t t t 2*t t t 2*t t t t t 2*t t t t t t t t t 2*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t t t t t t t 2*t t t t t 2*t t t t t t t t t 2*t t t t t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t t t 2*t 4*t t 2*t t 2*t t t (4/3)*t (4/3)*t (4/3)*t (4/3)*t (4/3)*t (4/3)*t (8*t) ];
keysb = [ 30 30 0 30 0 30 30 0 47 0 0 35 0 0 35 0 32 0 28 0 0 33 0 35 0 34 33 0 32 0 40 0 44 0 45 0 42 44 0 40 0 37 39 35 0 35 0 32 0 28 0 0 33 0 35 0 34 33 0 32 0 40 0 44 0 45 0 42 44 0 40 0 37 39 35 0 28 0 35 0 40 0 33 0 40 40 40 33 0 28 0 32 0 35 40 0 57 0 57 57 0 35 0 28 0 35 0 40 0 33 0 40 40 40 33 0 0 36 0 0 38 0 40 0 35 35 0 28 0 28 0 35 0 40 0 33 0 40 40 40 33 0 28 0 32 0 35 40 0 57 0 57 57 0 35 0 28 0 35 0 40 0 33 0 40 40 40 33 0 0 36 0 0 38 0 40 0 35 35 0 28 0 24 0 31 0 36 0 35 0 28 0 23 0 24 0 31 0 36 0 35 0 28 0 23 0 24 0 31 0 36 0 35 0 28 0 23 0 30 30 0 30 0 30 30 0 47 0 0 35 0 0 28 0 34 35 0 40 0 33 0 33 0 40 40 33 0 30 0 33 35 0 39 0 35 0 35 0 40 40 35 0 28 0 34 35 0 40 0 33 0 33 0 40 40 33 0 35 0 35 35 0 37 0 39 0 40 0 35 0 28 0 0 35 0 32 0 28 0 33 29 28 ];
bdur = [ t t t t t t t t t t 2*t t t 2*t t 2*t t 2*t t t t t t t t t t t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t t t t t t t t t t t 2*t t 2*t t 2*t t t t t t t t t t t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t t t t t t t t t t t 2*t t 2*t t 2*t t t t 2*t t t t t t t 2*t t 2*t t t t t t t t t t t t 2*t t 2*t t t t 2*t t t t t t 2*t t t t t 2*t t 2*t t t t t t t 2*t t 2*t t t t 2*t t t t t t t 2*t t 2*t t t t t t t t t t t t 2*t t 2*t t t t 2*t t t t t t 2*t t t t t 2*t t 2*t t t t t t t 2*t t 2*t t t t 2*t t 2*t t t t 2*t t 2*t t t t 2*t t 2*t t t t 2*t t 2*t t t t 2*t t 2*t t t t t t t t t t t t t 2*t t t 2*t t 2*t t t t t t t t t t t t t t t 2*t t t t t t t t t t t t t t t 2*t t t t t t t t t t t t t t t 2*t t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t t t t t t t 2*t t 2*t t 2*t t t 4*t 4*t 8*t ];
keysa = [ 46 46 0 46 0 46 46 0 51 0 0 47 0 0 44 0 40 0 35 0 0 40 0 42 0 41 40 0 40 0 47 0 51 0 52 0 49 51 0 49 0 56 45 42 0 44 0 40 0 35 0 0 40 0 42 0 41 40 0 40 0 47 0 51 0 52 0 49 51 0 49 0 56 45 42 0 0 56 55 54 51 0 52 0 44 45 47 0 40 44 45 0 56 55 54 51 0 52 0 59 0 59 59 0 0 0 56 55 54 51 0 52 0 44 45 47 0 40 44 45 0 48 0 0 45 0 44 0 0 0 0 56 55 54 51 0 52 0 44 45 47 0 40 44 45 0 56 55 54 51 0 52 0 59 0 59 59 0 0 0 56 55 54 51 0 52 0 44 45 47 0 40 44 45 0 48 0 0 45 0 44 0 0 0 48 48 0 48 0 48 50 0 47 44 0 44 40 0 0 48 48 0 48 0 48 50 47 0 0 48 48 0 48 0 48 50 0 47 44 0 44 40 0 0 46 46 0 46 0 46 46 0 51 0 0 47 0 0 52 49 0 44 0 44 0 45 52 0 52 45 0 0 47 0 57 0 57 0 57 0 56 0 54 0 52 49 0 45 44 0 0 52 49 0 44 0 44 0 45 52 0 52 45 0 0 47 54 0 54 54 0 52 0 51 0 47 44 0 44 40 0 0 44 0 40 0 35 0 45 45 44 42 44 ];
adur = [ t t t t t t t t t t 2*t t t 2*t t 2*t t 2*t t t t t t t t t t t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t t t t t t t t t t t 2*t t 2*t t 2*t t t t t t t t t t t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t t t t t t t t t t t 2*t 2*t t t t t t t t t t t t t t t 2*t t t t t t t t t t t t t 2*t 2*t t t t t t t t t t t t t t t 2*t t t t t 2*t t t 2*t 4*t 2*t t t t t t t t t t t t t t t 2*t t t t t t t t t t t t t 2*t 2*t t t t t t t t t t t t t t t 2*t t t t t 2*t t t 2*t 4*t t t t t t t t t t t t t t t 2*t t t t t t t t t 4*t 4*t t t t t t t t t t t t t t t 2*t t t t t t t t t t t 2*t t t 2*t t t t t 2*t t t t t t t t t 2*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t t t t t t t 2*t t t t t 2*t t t t t t t t t 2*t t t t t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t (2/3)*t t t t t t t 2*t t 2*t t 2*t t t 4*t 4*t t t 6*t ];
keysd = [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 0 0 0 0 0 ];
ddur = [ t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t t/2 t/2 t t t ];
fs = 11025;
xt = zeros(1, sum(tdur)*fs+1);
xb = zeros(1, sum(bdur)*fs+1);
xa = zeros(1, sum(adur)*fs+1);
xd = zeros(1, sum(ddur)*fs+1);
n1=1;
for kk = 1:length(keyst)
keynum=keyst(kk);
tone=note(keyst(kk), tdur(kk));
n2=n1 + length(tone)-1;
xt(n1:n2) = xt(n1:n2) + tone;
n1 = n2;
end
n1 = 1;
for kk = 1:length(keysb)
keynum=keysb(kk);
tone=note(keysb(kk), bdur(kk));
n2=n1 +length(tone)-1;
xb(n1:n2) = xb(n1:n2) + tone;
n1=n2;
end
n1=1;
for kk = 1:length(keysa)
keynum=keysa(kk);
tone=note(keysa(kk), adur(kk));
n2=n1 +length(tone)-1;
xa(n1:n2) = xa(n1:n2) + tone;
n1=n2;
end
n1=1;
for kk = 1:length(keysd)
keynum=keysd(kk);
tone=note(keysd(kk), ddur(kk));
n2=n1 + length(tone)-1;
xd(n1:n2) = xd(n1:n2) + tone;
n1 = n2;
end
%the "mixing board"
xx=xa+xb+xt+xd;
soundsc(xx, fs)
function tone=note(keynum, dur)
fs=11025;
tt = 0:(1/fs):dur;
% This generates white noise for whatever duration specified.. good snare
% sound with the right envelope, but matlab developed timing problems with this. I'll probably
% try to get these running sometime after lab
if keynum == 2
tone=rand(1,length(tt));
return;
end
%generates rests
if keynum == 0
%for kk = 1:length(tt)
tone([1:length(tt)]) = 0;
%end
return;
end
%adding these octaves rounded out the sound.
freq=440*2^((keynum-49)/12);
freq3=freq*3;
freq5=freq*5;
freq9=freq*9;
freq7=freq*7;
tone1 = .75*sin(2*pi*freq*tt);
tone3 = .65*sin(2*pi*freq3*tt);
tone5=.5*sin(2*pi*freq5*tt);
tone9 = .222*sin(2*pi*freq9*tt);
tone7 = .12*sin(2*pi*freq7*tt);
tone12= 1*sin(2*pi*freq*12*tt);
tone=tone1+tone3+tone5+tone7+tone9;%+tone12;
这个东西太强大了。。。
【 在 QuestionMark (问号) 的大作中提到: 】
: 一楼保存为mariosong.m
: 二楼保存为note.m
: 两个文件放在同一文件夹下
: ...................