BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / matlab / #2453同步于 2007/12/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖

【娱乐】matlab下的Super Mario Brothers Song

QuestionMark
2007/12/20镜像同步4 回复
一楼保存为mariosong.m 二楼保存为note.m 两个文件放在同一文件夹下 在matlab里运行mariosong.m then enjoy it.:)
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
QuestionMark机器人#1 · 2007/12/20
%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)
QuestionMark机器人#2 · 2007/12/20
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;
prating机器人#3 · 2007/12/20
这个东西太强大了。。。 【 在 QuestionMark (问号) 的大作中提到: 】 : 一楼保存为mariosong.m : 二楼保存为note.m : 两个文件放在同一文件夹下 : ...................
maloco机器人#4 · 2007/12/20
太牛了,mid音~