[英]How to make MATLAB play an array faster?
我正在使用音頻處理器,可以改變音高並在播放歌曲時為其添加顫音。 請注意,盡管聲音不是實時的(例如,來自麥克風),但我要添加的效果必須實時制作。
我發現最好的解決方法是將聲音文件分成小元素,然后按順序將效果應用於每個元素。
所以我寫了這個來分割音頻文件:
%Load Sound File
[fsample Fs] = wavread ('C:\Users\Ogulcan\Desktop\Bitirme Projesi\Codes\kravitz.wav');
%length of the sample
t=length(fsample);
%number of samples
ns=10;
%Defining the array:
A=[];
%Create the vectors and place them into the array 'A':
for i=1:ns-1
v=fsample(i*t/ns:(i+1)*t/ns);
A=[A;v];
end
這段代碼可以將聲音分成10個樣本,但是當我嘗試循環播放它們時,會有一個很小但明顯的延遲。 現在,我打算為更大的樣本數量執行此操作。
誰能幫我解決這個速度問題? 除了MATLAB以外,我真的不懂其他語言,也沒有所需的軟件,因此,如果您能向我展示在MATLAB中執行此操作的方法,我將不勝感激。
您可以使用以下更簡單的代碼段替換整個循環:
A = fsample(1:end-rem(length(fsample),ns)); % ensure data has ns full samples
A = reshape(A,[],ns)';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.