2015-10-26 1 views
3

Как вы планируете рисовать волновой файл на Matlab во время воспроизведения wavfile. Я хотел бы рассчитать амплитуду и время. Я попытался попытаться это с моим следующим кодом ниже:Как нарисовать wav-файл во время его воспроизведения

[y,Fs] = audioread('test.wav'); 
sound(y,Fs); 
clear y Fs 
+0

Ваша попытка не нарисовать ничего. Это просто чтение в файле, воспроизведение его и очистка памяти, необходимой для чтения в звуке. Правильно ли я понимаю вас, что вы хотите, чтобы амплитуда wav-файла была построена по мере воспроизведения звука? Это будет очень сложно, особенно потому, что вы не можете синхронизировать, где сейчас воспроизводится звук, где вы должны обновлять и рисовать фигуру. Это не может быть сделано ИМХО. – rayryeng

+0

@rayryeng, есть ли способ реализовать это с небольшой задержкой, поэтому, хотя он не полностью синхронизирован, что ближайший способ я могу достичь этого? – Techno04335

ответ

2

Использование sound вы не имеете реальный шанс сделать это, но с помощью audioplayer класса вы можете сделать это:

function syncPlayerDemo() 
%some example music 
load handel; 
%set up audio player 
player = audioplayer(y, Fs); 
[samples,channels]=size(y); 
%calculate timeline 
t=linspace(0,1/Fs*(samples-1),samples); 
%initialize full plot, update will only move the visible area using xlim 
h=plot(t,y); 
%set up callback to update every <TimerPeriod> s 
[email protected]; 
player.TimerPeriod=0.1; 
player.playblocking() 
end 

function timerFcn(source,data) 
%an area of length <area> s will be visible 
area=1; 
position=(source.CurrentSample-1)/source.SampleRate; 
%move visible area, current position is in the center 
set(gca,'XLim',[position-area/2,position+area/2]); 
%used a waitbar for testing, might be commented in 
%waitbar(source.CurrentSample/source.TotalSamples); 
end 

Качество этого графика может быть дополнительно увеличено с использованием графика, который автоматически перемещается в сторону, используя timerFcn только для повторной синхронизации.

+0

Реализуя код, который вы мне дали, я в конечном итоге получил сюжет. но он, похоже, не обновляется по мере воспроизведения трека. – Techno04335

+0

Какую версию Matlab вы используете? – Daniel

+0

Версия Matlab, которую я использую, - R2013B – Techno04335