Я работаю над звуковым процессором, который, как предполагается, меняет высоту тона и добавляет вибрато к песне во время ее воспроизведения. Обратите внимание, что, хотя звук не живой (например, из микрофона), эффекты, которые я хочу добавить, должны выполняться в реальном времени.Как сделать MATLAB быстрее?
Я нашел, что лучший способ приблизиться к нему - это деление звукового файла на маленькие элементы и применение эффектов по каждому из них по порядку.
Так что я написал это, чтобы разделить аудиофайл:
%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.
Matlab интерпретируется язык так зацикливания медленно. Это может быть причиной. Однако можете ли вы опубликовать код, который вы используете для воспроизведения образцов? –
Я не думаю, что это связано со скоростью петель. Я думаю, что это проблема с 'wavplay' /' audioplayer' при попытке воспроизвести два образца назад. –
@ EitanT прав: вы не можете сделать это правильно, просто используя петлю и основные функции звука MATLAB. Я считаю, что [Psychtoolbox] (http://psychtoolbox.org/) имеет звуковые функции, которые позволяют вам писать более прямо в аудиопоток, что должно позволить вам делать то, что вы хотите. – wakjah