年夜學結業課程設計
基于MATLAB的音樂旌旗燈號合當作與處置
摘 要
本設計共有三部門:1.簡單的音樂合當作;2.用傅里葉變換闡發音樂;3.基于傅里葉級數的音樂合當作。本設計采用MATLAB軟件仿真來實現。起首,經由過程對音樂旌旗燈號的采樣、抽取、調制、解調等多種處置過程的理論闡發和MATLAB求得這段音樂的基頻、諧波分量、等數據;然后,經由過程對樂理的研究,按照闡發中求得的數據編寫法式,進行基于傅里葉闡發的音樂合當作設計,并設計了圖形用戶界面;最后加強軟件編程實現能力息爭決現實問題的能力。
1簡單的合當作音樂
1.1 樂理常識介紹
樂音的根基特征可以用基波頻率、諧波頻譜和包絡波形3個方面來描述。
基波頻率:每個指心猿意馬調子的唱名都對應固心猿意馬的基波旌旗燈號頻率。所謂唱名是指常日讀曲譜唱出的1(do)、2(re)、3(mi)… … ,每個唱名并未固心猿意馬基波頻率。當指心猿意馬樂曲的調子時才知道此時唱名對應的頻率值。如C調“ 1”的基波頻率為261.63HZ,F調“1”的基波頻率為349.23HZ,F調“ 5”的基波頻率為523.25HZ。
諧波頻譜:在這七個音符中有一個紀律,就是3(mi)到4(fa),7(si)到高音1(do)是半音。在吉他上是相鄰的兩個品為半音,好比一弦1品是3(mi),那么一弦2品就是4(fa);在吉他上隔一品是全音,好比一弦1品是1(do),那么一弦3品就是2(re),中心隔了1品。包絡波形:分歧類型的樂器,包絡外形也不不異。在音樂合當作嘗試中,為簡化編程描述,凡是把復雜的包絡函數用少量直線近似。于是,樂音波形的包絡呈拆線。有時為了包管在樂音的鄰接處旌旗燈號幅度為零,也可以用指數衰減的包絡來暗示,這也是最簡單的法子。
1.2 操縱MATLAB實現音樂合當作
本設計采用揚基杜德爾小曲作
按照《揚基杜德爾》第一末節的簡譜和十二平均律計較出該末節每個樂音的頻率,在MATLAB中生當作幅度為1,抽樣頻率為8kHz的正弦旌旗燈號暗示這些樂音,用sound播放合當作的音樂。而在MATLAB中暗示樂音所用的抽樣頻率為fs=8000Hz,也就是所1s鐘內有8000個點,抽樣點數的幾多就可暗示出每個樂音的持續時候的長短。用一個行標的目的量來存儲這段音樂對應的抽樣點,在用sound函數播放即可。
下為在MATLAB中編寫法式
clc
clear
fs=44100;
t=0:1/fs:0.5;
c3_2=key(48, 2, fs);
d3_2=key(50, 2, fs);
e3_2=key(52, 2, fs);
f3_2=key(53, 2, fs);
g3_2=key(55, 2, fs);
a3_2=key(57, 2, fs);
b3_2=key(59, 2, fs);
c3_4=key(48, 4, fs);
d3_4=key(50,4, fs);
e3_4=key(52, 4, fs);
f3_4=key(53, 4, fs);
g3_4=key(55, 4, fs);
a3_4=key(57, 4, fs);
b3_4=key(59, 4, fs);
c3_8=key(48, 8, fs);
d3_8=key(50,8, fs);
e3_8=key(52, 8, fs);
f3_8=key(53, 8, fs);
g3_8=key(55, 8, fs);
a3_8=key(57, 8, fs);
b3_8=key(59, 8, fs);
c3_16=key(48, 16, fs);
d3_16=key(50,16, fs);
e3_16=key(52, 16, fs);
f3_16=key(53, 16, fs);
g3_16=key(55,16, fs);
a3_16=key(57, 16, fs);
b3_16=key(59, 16, fs);
c4_2=key(60, 2, fs);
d4_2=key(62, 2, fs);
e4_2=key(64, 2, fs);
f4_2=key(65, 2, fs);
g4_2=key(67, 2, fs);
a4_2=key(69, 2, fs);
b4_2=key(71, 2, fs);
c4_4=key(60, 4, fs);
d4_4=key(62, 4, fs);
e4_4=key(64, 4, fs);
f4_4=key(65, 4, fs);
g4_4=key(67, 4, fs);
a4_4=key(69, 4, fs);
b4_4=key(71, 4, fs);
c4_8=key(60, 8, fs);
d4_8=key(62, 8, fs);
e4_8=key(64, 8, fs);
f4_8=key(65, 8, fs);
g4_8=key(67, 8, fs);
a4_8=key(69, 8, fs);
b4_8=key(71, 8, fs);
c4_16=key(60, 16, fs);
d4_16=key(62,16, fs);
e4_16=key(64, 16, fs);
f4_16=key(65, 16, fs);
g4_16=key(67, 16, fs);
a4_16=key(69, 16, fs);
b4_16=key(71, 16, fs);
part1=[g3_4 c4_8 c4_8 d4_8 e4_8 c4_8 e4_8 d4_8 b3_8];
part2=[c4_8 c4_8 d4_8 e4_8 c4_4 b3_8 g3_8 ];
part3=[c4_8 c4_8 d4_8 e4_8 f4_8 e4_8 d4_8 c4_8 b3_8 g3_8 a3_8 b3_8 c4_4 c4_4];
part4=[a3_8 b3_16 a3_8 g3_8 a3_8 b3_8 c4_4];
part5=[g3_8 a3_16 g3_8 f3_8 e3_8 f3_8 g3_4];
part6=[a3_8 b3_16 a3_8 g3_8 a3_8 b3_8 c4_4];
part7=[g3_8 c4_8 b3_8 d4_8 c4_4 c4_4];
para1=[part1 part2 part3 ];
para2=[part4 part5 ];
para3=[part6 part7 ];
legend=[para1 para2 para3];
sound(legend,fs)
將該法式在MATLAB中運行,我們可以聽出音色一般,需要改良。
1.2 除噪音,加包絡
下面經由過程加包絡來消噪音。最簡單的包絡為指數衰減。最簡單的指數衰減是對每個音乘以因子,在嘗試中起首加的是的衰減,這種衰減方式利用的是不異速度的衰減,可是發現噪音并沒有完全消弭,播放的音樂結果不是很好,感受音樂升沉性不強。于是采用分歧速度的衰減,按照樂音持續時候的長短來確定衰減的快慢,樂音持續時候越長,衰減的越慢,持續時候越短,衰減的越快。更科學的包絡如下圖所示,每個樂音都顛末沖激、衰減、持續、消逝四個階段。
由上圖可以看出這個包絡是四段直線段組成的,是以只要確定了每段線段的端點,即可用端點數據寫出直線方程,因為直線方程可以用通式寫出(我用的是斜截式),是以這段包絡可以用簡單的輪回來完當作。例如認為包絡線上的數據如下圖所示:
據此在MATLAB中編寫如下法式:
clear;clc;
fs=8000; %抽樣頻率
part1=[fre(55) fre(60) fre(60) fre(62) fre(64) fre(60) fre(64) fre(62) fre(59)];
part2=[fre(60) fre(60) fre(62) fre(64) fre(60) fre(59) fre(55)];
part3=[fre(60) fre(60) fre(62) fre(64) fre(65) fre(64) fre(62) fre(60) fre(59) fre(55) fre(57) fre(59) fre(60) fre(60)];
part4=[fre(57) fre(59) fre(57) fre(55) fre(57) fre(59) fre(60)];
part5=[fre(55) fre(57) fre(55) fre(53) fre(52) fre(53) fre(55)];
part6=[fre(57) fre(59) fre(57) fre(55) fre(57) fre(59) fre(60)];
part7=[fre(55) fre(60) fre(59) fre(62) fre(60) fre(60)];
para1=[part1 part2 part3 ];
para2=[part4 part5 ];
para3=[part6 part7 ];
f=[para1 para2 para3]; %各個樂音對應的頻率
part1time=[0.5 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25];
part2time=[0.25 0.25 0.25 0.25 0.5 0.25 0.25];
part3time=[0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.5 0.5];
part4time=[0.25 0.125 0.25 0.25 0.25 0.25 0.5];
part5time=[0.25 0.125 0.25 0.25 0.25 0.25 0.5];
part6time=[0.25 0.125 0.25 0.25 0.25 0.25 0.5];
part7time=[0.25 0.25 0.25 0.25 0.5 0.5];
para1time=[part1time part2time part3time ];
para2time=[part4time part5time ];
para3time=[part6time part7time ];
time=fs*[para1time para2time para3time];%各個樂音的抽樣點數
N=length(time); %這段音樂的總抽樣點數
east=zeros(1,N); %用east標的目的量來儲存抽樣點
n=1;
for num=1:N %操縱輪回發生抽樣數據,num暗示樂音編號
t=1/fs:1/fs:time(num)/fs; %發生第num個樂音的抽樣點
baoluo=zeros(1,time(num)); %P為存儲包絡數據的標的目的量
for j=1:time(num)
if(j<0.2*time(num))
y=7.5*j/time(num);
else
if(j<0.333*time(num))
y=-15/4*j/time(num)+9/4;
else
if(j<0.666*time(num))
y=1;
else
y=-3*j/time(num)+3;
end
end
end
baoluo(j)=y;
end
east(n:n+time(num)-1)=sin(2*pi*f(num)*t).*baoluo(1:time(num));
%給第num個樂音加上包絡
n=n+time(num);
end
sound(east,8000) %播放音樂
plot(east)
此處操縱函數fre
function f = fre(p)
f=440*2^((p-69)/12);
運行獲得的圖像為:
下圖是兩個樂音交代處的局部放年夜圖,可以看到知道前一個樂音衰減到零時,后一個樂音才起頭從零增添,所以可以說消弭了噪音。
1.3 改編法式,實現1.2中樂曲的升八度
升高一個八度就是將每個樂音的頻率都提高一倍,變為本來的2倍;降低一個八度即每個樂音的頻率都減小一倍,變為本來的1/2。是以將存儲樂音頻率的標的目的量每個元素改變為2或1/2倍即可。
查表獲得下列MATLAB法式
clc
clear
fs=44100;
t=0:1/fs:0.5;
c4_2=key(60, 2, fs);
d4_2=key(62, 2, fs);
e4_2=key(64, 2, fs);
f4_2=key(65, 2, fs);
g4_2=key(67, 2, fs);
a4_2=key(69, 2, fs);
b4_2=key(71, 2, fs);
c4_4=key(60, 4, fs);
d4_4=key(62, 4, fs);
e4_4=key(64, 4, fs);
f4_4=key(65, 4, fs);
g4_4=key(67, 4, fs);
a4_4=key(69, 4, fs);
b4_4=key(71, 4, fs);
c4_8=key(60, 8, fs);
d4_8=key(62, 8, fs);
e4_8=key(64, 8, fs);
f4_8=key(65, 8, fs);
g4_8=key(67, 8, fs);
a4_8=key(69, 8, fs);
b4_8=key(71, 8, fs);
c4_16=key(60, 16, fs);
d4_16=key(62,16, fs);
e4_16=key(64, 16, fs);
f4_16=key(65, 16, fs);
g4_16=key(67, 16, fs);
a4_16=key(69, 16, fs);
b4_16=key(71, 16, fs);
c5_2=key(72, 2, fs);
d5_2=key(74, 2, fs);
e5_2=key(76, 2, fs);
f5_2=key(77, 2, fs);
g5_2=key(79, 2, fs);
a5_2=key(81, 2, fs);
b5_2=key(83, 2, fs);
c5_4=key(72, 4, fs);
d5_4=key(74, 4, fs);
e5_4=key(76, 4, fs);
f5_4=key(77, 4, fs);
g5_4=key(79, 4, fs);
a5_4=key(81, 4, fs);
b5_4=key(83, 4, fs);
c5_8=key(72, 8, fs);
d5_8=key(74, 8, fs);
e5_8=key(76, 8, fs);
f5_8=key(77, 8, fs);
g5_8=key(79, 8, fs);
a5_8=key(81, 8, fs);
b5_8=key(83, 8, fs);
c5_16=key(72, 16, fs);
d5_16=key(74,16, fs);
e5_16=key(76, 16, fs);
f5_16=key(77, 16, fs);
g5_16=key(79, 16, fs);
a5_16=key(81, 16, fs);
b5_16=key(83, 16, fs);
part1=[g4_4 c5_8 c5_8 d5_8 e5_8 c5_8 e5_8 d5_8 b4_8];
part2=[c5_8 c5_8 d5_8 e5_8 c5_4 b4_8 g4_8 ];
part3=[c5_8 c5_8 d5_8 e5_8 f5_8 e5_8 d5_8 c5_8 b4_8 g4_8 a4_8 b4_8 c5_4 c5_4];
part4=[a4_8 b4_16 a4_8 g4_8 a4_8 b4_8 c5_4];
part5=[g4_8 a4_16 g4_8 f4_8 e4_8 f4_8 g4_4];
part6=[a4_8 b4_16 a4_8 g4_8 a4_8 b4_8 c5_4];
part7=[g4_8 c5_8 b4_8 d5_8 c5_4 c5_4];
para1=[part1 part2 part3 ];
para2=[part4 part5 ];
para3=[part6 part7 ];
legend=[para1 para2 para3];
sound(legend,fs)
1.4 在1.2的音樂中插手諧波
我們在1.2的音樂平分別加上二、三、四次諧波,其基波幅度為1,高次諧波幅度別離為0.2、0.3、0.1。應該將法式改為:
clear;clc;
fs=8000; %抽樣頻率
part1=[fre(55) fre(60) fre(60) fre(62) fre(64) fre(60) fre(64) fre(62) fre(59)];
part2=[fre(60) fre(60) fre(62) fre(64) fre(60) fre(59) fre(55)];
part3=[fre(60) fre(60) fre(62) fre(64) fre(65) fre(64) fre(62) fre(60) fre(59) fre(55) fre(57) fre(59) fre(60) fre(60)];
part4=[fre(57) fre(59) fre(57) fre(55) fre(57) fre(59) fre(60)];
part5=[fre(55) fre(57) fre(55) fre(53) fre(52) fre(53) fre(55)];
part6=[fre(57) fre(59) fre(57) fre(55) fre(57) fre(59) fre(60)];
part7=[fre(55) fre(60) fre(59) fre(62) fre(60) fre(60)];
para1=[part1 part2 part3 ];
para2=[part4 part5 ];
para3=[part6 part7 ];
f=[para1 para2 para3]; %各個樂音對應的頻率
part1time=[0.5 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25];
part2time=[0.25 0.25 0.25 0.25 0.5 0.25 0.25];
part3time=[0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.5 0.5];
part4time=[0.25 0.125 0.25 0.25 0.25 0.25 0.5];
part5time=[0.25 0.125 0.25 0.25 0.25 0.25 0.5];
part6time=[0.25 0.125 0.25 0.25 0.25 0.25 0.5];
part7time=[0.25 0.25 0.25 0.25 0.5 0.5];
para1time=[part1time part2time part3time ];
para2time=[part4time part5time ];
para3time=[part6time part7time ];
time=fs*[para1time para2time para3time];%各個樂音的抽樣點數
N=length(time); %這段音樂的總抽樣點數
east=zeros(1,N); %用east標的目的量來儲存抽樣點
n=1;
for num=1:N %操縱輪回發生抽樣數據,num暗示樂音編號
t=1/fs:1/fs:time(num)/fs; %發生第num個樂音的抽樣點
baoluo=zeros(1,time(num)); %P為存儲包絡數據的標的目的量
for j=1:time(num)
if(j<0.2*time(num))
y=7.5*j/time(num);
else
if(j<0.333*time(num))
y=-15/4*j/time(num)+9/4;
else
if(j<0.666*time(num))
y=1;
else
y=-3*j/time(num)+3;
end
end
end
baoluo(j)=y;
end
h=[1 0.2 0.3 0.1];
xiebo=zeros(1,length(t));
for i=1:length(n)
xiebo=xiebo+h(i)*sin(2*i*pi*f(num)*t);
end
east(n:n+time(num)-1)=xiebo.*baoluo(1:time(num));
n=n+time(num);
end
sound(east,8000) %播放音樂
plot(east) %圖像
插手諧波后音色獲得較著好轉
運行獲得的圖像為:
2.用傅里葉變換闡發音樂
2.1 闡發can.wav的調子和節奏
我們對can進行傅里葉變換闡發其基波協調波,獲得can的幅值譜,頻譜圖上的第一個凸起的波峰對應的頻率即為can的基頻,可編寫了如下法式:
clear;clc;
[y,Fs]= audioread('can.wav');
fs=8000;
NFFT = 2^nextpow2(length(y));
Y = fft(y,NFFT)/length(y);
g = fs/2*linspace(0,1,NFFT/2+1);
plot(g,2*abs(Y(1:NFFT/2+1)))
運行后獲得的成果為
經由過程增添can的周期性顯示出離散化水平高的幅值譜,即讓can在時域反復多次后在進行傅里葉變換。
操縱repmat函數將can在時域內反復。法式可點竄為:
clear;clc;
WAV= audioread('can.wav');
fs=8000;
wave2proc =repmat(WAV,20,1); %將 can反復20次
NFFT = 2^nextpow2(length(WAV));
Y = fft(WAV,NFFT)/length(WAV);
g = fs/2*linspace(0,1,NFFT/2+1);
plot(g,2*abs(Y(1:NFFT/2+1)))
由圖讀出can的基頻為329.1Hz,幅值為2.451,高次諧波幅值別離為:
2.2 按照快速傅里葉變換合當作音樂
將法式中的波形幅度矩陣
m=[1 0.3 0.2 0.1]
改為
m=[2.0912 4.0597 4.7156 7.5215 5.6484 4.9845 3.4894 2.4568];
即可
法式如下
clear;clc;
fs=8000; %抽樣頻率
part1=[fre(67) fre(72) fre(72) fre(74) fre(76) fre(72) fre(76) fre(74) fre(71)];
part2=[fre(72) fre(72) fre(74) fre(76) fre(72) fre(71) fre(67)];
part3=[fre(72) fre(72) fre(74) fre(76) fre(77) fre(76) fre(74) fre(72) fre(71) fre(67) fre(69) fre(71) fre(72) fre(72)];
part4=[fre(69) fre(71) fre(69) fre(67) fre(69) fre(71) fre(72)];
part5=[fre(67) fre(69) fre(67) fre(65) fre(64) fre(65) fre(67)];
part6=[fre(69) fre(71) fre(69) fre(67) fre(69) fre(71) fre(72)];
part7=[fre(67) fre(72) fre(71) fre(74) fre(72) fre(72)];
para1=[part1 part2 part3 ];
para2=[part4 part5 ];
para3=[part6 part7 ];
f=[para1 para2 para3]; %各個樂音對應的頻率
part1time=[0.5 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25];
part2time=[0.25 0.25 0.25 0.25 0.5 0.25 0.25];
part3time=[0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.5 0.5];
part4time=[0.25 0.125 0.25 0.25 0.25 0.25 0.5];
part5time=[0.25 0.125 0.25 0.25 0.25 0.25 0.5];
part6time=[0.25 0.125 0.25 0.25 0.25 0.25 0.5];
part7time=[0.25 0.25 0.25 0.25 0.5 0.5];
para1time=[part1time part2time part3time ];
para2time=[part4time part5time ];
para3time=[part6time part7time ];
time=fs*[para1time para2time para3time];%各個樂音的抽樣點數
N=length(time); %這段音樂的總抽樣點數
east=zeros(1,N); %用east標的目的量來儲存抽樣點
n=1;
for num=1:N %操縱輪回發生抽樣數據,num暗示樂音編號
t=1/fs:1/fs:time(num)/fs; %發生第num個樂音的抽樣點
baoluo=zeros(1,time(num)); %P為存儲包絡數據的標的目的量
for j=1:time(num)
if(j<0.2*time(num))
y=7.5*j/time(num);
else
if(j<0.333*time(num))
y=-15/4*j/time(num)+9/4;
else
if(j<0.666*time(num))
y=1;
else
y=-3*j/time(num)+3;
end
end
end
baoluo(j)=y;
end
h=[2.0912 4.0597 4.7156 7.5215 5.6484 4.9845 3.4894 2.4568];
xiebo=zeros(1,length(t));
for i=1:length(n)
xiebo=xiebo+h(i)*sin(2*i*pi*f(num)*t);
end
east(n:n+time(num)-1)=xiebo.*baoluo(1:time(num));
n=n+time(num);
end
sound(east,8000) %播放音樂
plot(east) %圖像
第三部門 音樂旌旗燈號的處置
3.1 插手延時和混響
選擇一段語音旌旗燈號作為闡發對象,并對其進行頻譜闡發,在時域頂用數字旌旗燈號處置方式給旌旗燈號插手3種混響,再闡發其頻譜,并與原始旌旗燈號進行比力。
設計思緒
1、操縱Windows下的灌音機或其他軟件,錄制一段語音旌旗燈號,時候節制在3s擺布,并對錄制的旌旗燈號進行采樣
2、語音旌旗燈號的頻譜闡發,畫出采樣后的時域波形和頻譜圖
3、將旌旗燈號插手延時和混響,再闡發當時域波形和頻譜圖,并與原始旌旗燈號頻譜進行比力
所以按照設計思緒進行嘗試
1、讀取3s的語音旌旗燈號并畫出時域波形和頻譜圖
x1=audioread('good.wav');
[x,fs]=audioread('good.wav');
x=x(:,1); %取單聲道
sound(x,fs);
X=fft(x,640000); %gaidong
magX=abs(X);
angX=angle(X);
figure(1);
subplot(2,1,1);plot(x);title('yuanshi boxing');
subplot(2,1,2);plot(X);title('yuanshi pinpu');
獲得的波形和頻譜圖為
2、對語音旌旗燈號進行采樣并畫出采樣后旌旗燈號的時域波和頻譜圖
[x,fs]=audioread('good.wav');
x=x(:,1);
sound(5*x,fs);
n1=0:2000;
N=size(x,1);
Y=fft(x,320000);
figure(2);
subplot(2,1,1);plot(x);title('caiyang boxing');
subplot(2,1,2);plot(n1(1:1000),Y(1:1000));title('caiyang pinpu');
獲得的采樣波形和頻譜為
3、對采樣后的旌旗燈號延時,并畫出延時后的時域波形和頻譜圖
z1=[zeros(10000,1);x]; %對旌旗燈號進行延時
z2=[zeros(20000,1);x];
z3=[zeros(30000,1);x];
Z1=fft(z1,160000);
Z2=fft(z2,160000);
Z3=fft(z3,160000);
figure(3);
subplot(3,1,1);plot(z1); title('延時后的時域圖1'); %畫出延時后的旌旗燈號時域圖
subplot(3,1,2);plot(z2); title('延時后的時域圖2');
subplot(3,1,3);plot(z3); title('延時后的時域圖3');
figure(4)
subplot(3,1,1);plot(n1(1:1000),Z1(1:1000));title('延時后的頻譜圖1'); %延時后的旌旗燈號頻譜圖
subplot(3,1,2);plot(n1(1:1000),Z2(1:1000));title('延時后的頻譜圖2');
subplot(3,1,3);plot(n1(1:1000),Z3(1:1000));title('延時后的頻譜圖3');
獲得延時的時域圖和頻譜圖為
4、對旌旗燈號進行混響,并畫出混響后的時域波形和頻譜圖
z1=[zeros(10000,1);x]; %對旌旗燈號進行延時
z2=[zeros(20000,1);x];
z3=[zeros(30000,1);x];
x1=[x;zeros(10000,1)]; %使語音旌旗燈號與延時后旌旗燈號劃一長度
x2=[x;zeros(20000,1)];
x3=[x;zeros(30000,1)];
y1=plus(x1,z1); %旌旗燈號的混響
y2=plus(x2,z2);
y3=plus(x3,z3);
sound(y1,fs);
sound(y2,fs);
sound(y3,fs);
figure(5);
subplot(3,1,1);plot(y1); title('混響的時域圖1'); %混響時域圖
subplot(3,1,2);plot(y2); title('混響的時域圖2');
subplot(3,1,3);plot(y3); title('混響的時域圖3');
Y1=fft(y1,160000); %對混響旌旗燈號FFT變換
Y2=fft(y2,160000);
Y3=fft(y3,160000);
figure(6);
subplot(3,1,1);plot(n1(1:1000),Y1(1:1000)); title('混響的頻譜圖1'); %混響頻譜圖
subplot(3,1,2);plot(n1(1:1000),Y2(1:1000)); title('混響的頻譜圖2');
subplot(3,1,3);plot(n1(1:1000),Y3(1:1000)); title('混響的頻譜圖3');
獲得的混響后的時域波形和頻譜圖為
3.2 平衡處置
設計思緒:設計三個混響器作為平衡處置的東西
(1)無限反響混響器
a=0.05; %a取小于等于1
Bz=[0,0,0,0,0,0,0,0,0,0,1]; %分子的系數
Az=[1,0,0,0,0,0,0,0,0,0,-a]; %分母的系數
yy1=filter(Bz,Az,z1); %濾波器進行濾波
YY1=fft(yy1,320000); %經無限反響濾波器后的旌旗燈號做32000點的FFT變換
(2)多重反響混響器
a=0.05; %a取小于等于1
N=5
Bz1=[1,0,0,0,0,0,0,0,0,0,-0.5^N] %分子的系數
Az1=[1,0,0,0,0,0,0,0,0,0,-0.5]; %分母的系數
yy2=filter(Bz1,Az1,z1); %濾波器進行濾波
YY2=fft(yy2,320000); %經多重反響濾波器后的旌旗燈號做32000點的FFT變換
(3)全通布局的混響器
a=0.05; %a取小于等于1
Bz1=[a,0,0,0,0,0,0,0,0,0,1]; %分子的系數
Az1=[1,0,0,0,0,0,0,0,0,0,a]; %分母的系數
yy3=filter(Bz1,Az1,z1); %濾波器進行濾波
YY3=fft(yy3,320000); %經全通布局的混響器后的旌旗燈號做32000點的FFT變
最后輸作聲音
sound(yy1,fs);
sound(yy2,fs);
sound(yy3,fs);
(4)畫出經混響器處置后旌旗燈號的時域波形和頻譜圖
figure(8);
subplot(2,1,1);
plot(yy1);
title('無限個反響濾波器時域圖'); %無限反響濾波器時域波形
subplot(2,1,2);
plot(n1(1:1000),YY1(1:1000));
title('無限個反響濾波器頻譜圖 '); %無限反響濾波器頻譜圖
figure(9)
subplot(2,1,1);
plot(yy2);
title('多重反響濾波器的時域圖') %多重反響濾波器的混響器時域波形
subplot(2,1,2);
plot(n1(1:1000),YY2(1:1000));
title('多重反響濾波器的頻譜圖') %多重反響濾波器的頻譜圖
figure(10)
subplot(2,1,1);
plot(yy3);
title('全通布局濾波器的時域圖') %全通布局的混響器時域波形
subplot(2,1,2);
plot(n1(1:1000),YY3(1:1000));
title('全通布局濾波器的頻譜圖') %全通布局的混響器頻譜圖
獲得的波形為
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!