簡體   English   中英

如何使MATLAB更快地播放數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM