joiceliu 发表于 2007-11-28 21:32

乐音信号发生器的程序总是有错误

一个乐音信号发生器的程序,总是有错误,请高人指点
程序如下:

function []=audio(tempo,nbit);
%
% Usage:audio(tempo);
if nargin<1;tempo=140;end;
if nargin<2;nbit=8;end;
v=version;
if strcmp(v(1),'5');
    Ns=['stereo,' int2str(nbit) 'bits'];
else;
    Ns='mono';
end;
Ns=['Musetto(a french song)                  BBI2000' blanks(20) Ns];
figure('Name',Ns,'Num','Off');
fa=440;fs=fa*10;
fb=493.88;fc=523.25;
fd=587.33;fe=659.26;
ff=698.45;
T=60/tempo; dt=1/fs; t1=0: dt: T-dt; n=length(t1);
t2=linspace(0,2*T,2*n);t3=linspace(0,3*T,3*n);
La=sin(pi*fa*t1).*exp(-t1);La3=sin(pi*fa*t3).*exp(-3*t3);
Do=.6*sin(pi*fc*t1).*exp(-t1);
Re=.6*sin(pi*fd*t1).*exp(-t1);
Mi=.6*sin(pi*fe*t1).*exp(-t1);
Fa=.6*sin(pi*ff*t1).*exp(-t1);
la=sin(2*pi*fa*t1).*exp(-t1); la3=sin(2*pi*fa*t3) .*exp(-t3);
si=sin(2*pi*fb*t1).*exp(-t1);
do=sin(2*pi*fc*t1).*exp(-t1);
do2=sin(2*pi*fc*t2).*exp(-t2);do3=sin(2*pi*fc*t3).*exp(-t3);
re=sin(2*pi*fd*t1).*exp(-t1);
si=sin(2*pi*fb*t1).*exp(-t1);
mi=sin(2*pi*fe*t1).*exp(-t1);mi2=sin(2*pi*fe*t2).*exp(-t2);
fa=sin(2*pi*ff*t1).*exp(-t1);
y1=;
y1=; t=dt*(0: length(y1) -1);
y2=;y2=;
if strcmp(v(1),'5');
    ym=max(abs(y1));y1=y1/ym;
    ym=max(abs(y2));y2=y2/ym;
    y=;sound(y,fs,nbit);
    wavwrite(y*.99,fs,nbit,'d:\audio');
    ubplot(211),plot(t,y1,'b');
    title('left channel');xlable('t(s)');
elseif strcmp(v(1),'4');
    y=y1+.75*y2;ym=min(y);y=y-ym;
    ym=max(y);k=fix(y/ym*255);
    sound(k,fs);whitebg('w');
    wavwrite(k,fs,'d:\audio');
    plot(t,k,'b');grid;zoom xon;xlable('t(s)');
end;

eight 发表于 2007-11-28 22:18

原帖由 joiceliu 于 2007-11-28 21:32 发表 http://www.chinavib.com/forum/images/common/back.gif
一个乐音信号发生器的程序,总是有错误,请高人指点
程序如下:

function []=audio(tempo,nbit);
%
% Usage:audio(tempo);
if nargin
新手请先认真阅读所有置顶帖,然后再审视一下你的帖子
页: [1]
查看完整版本: 乐音信号发生器的程序总是有错误