|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
一个乐音信号发生器的程序,总是有错误,请高人指点
程序如下:
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=[la la do2 do mi2 re do3 re mi re do2 si la3];
y1=[y1 la3 * exp (-3 *t3)]; t=dt*(0: length(y1) -1);
y2=[La Do Mi];y2=[y2 y2 y2 y2 La Re Fa La Re Mi y2 La3];
if strcmp(v(1),'5');
ym=max(abs(y1));y1=y1/ym;
ym=max(abs(y2));y2=y2/ym;
y=[y1 '.75*y2'];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; |
|