前言
总觉得音乐很神奇,喜欢音乐,所以看到matlab可以制作音乐顿时精神了,也算是学习的乐趣了。matlab播放音乐是由sound(Y,fs,bits)函数完成的,该函数的3个参数代表输入信号、采样率、比特率。先说采样率fs的设置,人耳能够听到的声音范围是20~20000Hz。根据采样定理fs只需要大于40000即可。此处采样率的设置采用了MP3的标准,即fs=44.1k.再说输入信号Y,Y一般是一个正弦波,如Asin(2piwt)。其中A控制着声音的大小,w控制着声音的高低,t的范围控制着声音的长短,所以理论上利用这个公式可以发出任何声音,只是不能控制音色和音质。比特率采用默认值即可,该参数省略。
摸索
Fs=8192;
x=linspace(0,2*pi,Fs);%播放声音默认采样率8192 1000-38400
y=sin(x);
plot(x,y);
%sound(y,Fs);%识别不了 想办法增加周期
% y=sin(2*x);%1s内两次震动 音乐中标准A 440
y=sin(440*x);
plot(x,y);
sound(y,Fs);
%%
Fs1=8192;
Fs2=20000;
x1=linspace(0,2*pi,Fs1);
x2=linspace(0,2*pi,Fs2);
y1=sin(440*x1);
y2=sin(440*x2);
sound(y1,Fs);%采样率影响
sound(y2,Fs);
%%
Fs=8192;
x=linspace(0,2*pi,Fs);
y1=sin(440*x);
y2=sin(500*x);
y3=sin(650*x);
sound(y3,Fs);
sound(y3,Fs);%频率影响
%%
%十二平均率表 主音 全音 半音 跨度8阶
%十二平均律,亦称“十二等程律”,世界上通用的一组音(八度)分成十二个半音音程的律制,各相邻两律之间的振动数之比完全相等。十二平均律在交响乐队和键盘乐器中得到广泛使用,钢琴即是根据十二平均律来定音的。-——来源百度百科
%A-F 523,587,659,698,783,880,988
freqs=[523,587,659,698,783,880,988];
y1=sin(freqs(1)*x);
y2=sin(freqs(2)*x);
y3=sin(freqs(3)*x);
y4=sin(freqs(4)*x);
y5=sin(freqs(5)*x);
y=[y1,y2,y3,y4,y5];
sound(y,Fs);
小星星
Fs=8192;
x=linspace(0,2*pi,Fs); %音与音的分隔 (声音大小一样只是频率不一样)
x2=linspace(0,2*pi*2,Fs*2);
freqs=[523,587,659,698,783,880,988];
y1=sin(freqs(1)*x).*(1-x/(2*pi));
y2=sin(freqs(1)*x).*(1-x/(2*pi));
y3=sin(freqs(5)*x).*(1-x/(2*pi));
y4=sin(freqs(5)*x).*(1-x/(2*pi));
y5=sin(freqs(6)*x).*(1-x/(2*pi));
y6=sin(freqs(6)*x).*(1-x/(2*pi));
y7=sin(freqs(5)*x2).*(1-x2/(2*pi));
y=[y1,y2,y3,y4,y5,y6,y7];
plot(y);
sound(y,Fs);
整合
function y=gen_wave(tone,rythm)
Fs=8192;
freqs=[523,587,659,698,783,880,988];
x=linspace(0,2*pi*rythm,floor(Fs*rythm));
y=sin(freqs(tone)*x).*(1-x/(rythm*2*pi));
end
Fs=8192;
y1=gen_wave(1,0.5);%半拍
y2=gen_wave(1,0.5);
y3=gen_wave(5,0.5);
y4=gen_wave(5,0.5);
y5=gen_wave(6,0.5);
y6=gen_wave(6,0.5);
y7=gen_wave(5,1);
y8=gen_wave(4,0.5);%半拍
y9=gen_wave(4,0.5);
y10=gen_wave(3,0.5);
y11=gen_wave(3,0.5);
y12=gen_wave(2,0.5);
y13=gen_wave(2,0.5);
y14=gen_wave(1,1);
x1=gen_wave(5,0.5);%半拍
x2=gen_wave(5,0.5);
x3=gen_wave(4,0.5);
x4=gen_wave(4,0.5);
x5=gen_wave(3,0.5);
x6=gen_wave(3,0.5);
x7=gen_wave(2,1);
%
x8=gen_wave(5,0.5);%半拍
x9=gen_wave(5,0.5);
x10=gen_wave(4,0.5);
x11=gen_wave(4,0.5);
x12=gen_wave(3,0.5);
x13=gen_wave(3,0.5);
x14=gen_wave(2,1);
%
f1=gen_wave(1,0.5);%半拍
f2=gen_wave(1,0.5);
f3=gen_wave(5,0.5);
f4=gen_wave(5,0.5);
f5=gen_wave(6,0.5);
f6=gen_wave(6,0.5);
f7=gen_wave(5,1);
f8=gen_wave(4,0.5);%半拍
f9=gen_wave(4,0.5);
f10=gen_wave(3,0.5);
f11=gen_wave(3,0.5);
f12=gen_wave(2,0.5);
f13=gen_wave(2,0.5);
f14=gen_wave(1,1);
y=[y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14];
sound(y,Fs);