Mercurial > hg > smallbox
diff util/classes/@audio/plot.m @ 160:e3035d45d014 danieleb
Added support classes
author | Daniele Barchiesi <daniele.barchiesi@eecs.qmul.ac.uk> |
---|---|
date | Wed, 31 Aug 2011 10:53:10 +0100 |
parents | |
children | 1495bdfa13e9 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/util/classes/@audio/plot.m Wed Aug 31 10:53:10 2011 +0100 @@ -0,0 +1,58 @@ +function plot(obj) + +%% Plot the time domain signal +s = obj.s; +fs = obj.fs; +figure, plot((1:length(s))/fs,s); +title('Audio signal') +xlabel('time (s)'); +axis tight + +player = audioplayer(s,fs); +set(player,'StartFcn',@plotTransportBar); +set(player,'TimerFcn',@updateTransportBar); +set(player,'StopFcn',@deleteTransportBar); + +%% Add playbaack controls +playButtonH = uicontrol(gcf,'Style','pushbutton','String','play','Units',... + 'Normalized','Position',[0.02 + 0.39 0 0.1 0.05]); +stopButtonH = uicontrol(gcf,'Style','pushbutton','String','stop','Units',... + 'Normalized','Position',[0.12 + 0.39 0 0.1 0.05]); + +set(playButtonH,'Callback',@play_callback); +set(stopButtonH,'Callback',@stop_callback); + + function play_callback(~,~) + if strcmpi(get(playButtonH,'String'),'play') + play(player,player.CurrentSample); + set(playButtonH,'String','pause'); + else + pause(player) + set(playButtonH,'String','play'); + end + end + + function stop_callback(~,~) + stop(player); + end + +%% Transport Bar functions + function plotTransportBar(~,~) + global tbH + xLim = get(gca,'Xlim'); + yLim = get(gca,'YLim'); + tbH = line([xLim(1) xLim(1)],yLim,'Color','k'); + end + + function updateTransportBar(hObject,~) + global tbH + currentSample = hObject.CurrentSample; + pos = currentSample/fs; + set(tbH,'XData',[pos pos]); + end + + function deleteTransportBar(~,~) + global tbH + delete(tbH); + end +end