Mercurial > hg > smallbox
diff util/classes/@audio/plot.m @ 166:1495bdfa13e9 danieleb
Updated grassmanian function (restored old computation of the dictionary) and added functions to the audio class
author | Daniele Barchiesi <daniele.barchiesi@eecs.qmul.ac.uk> |
---|---|
date | Mon, 19 Sep 2011 14:53:23 +0100 |
parents | e3035d45d014 |
children | f8bc99a5470c |
line wrap: on
line diff
--- a/util/classes/@audio/plot.m Wed Aug 31 13:52:23 2011 +0100 +++ b/util/classes/@audio/plot.m Mon Sep 19 14:53:23 2011 +0100 @@ -1,58 +1,95 @@ function plot(obj) +figure, +playbackPanelH = uipanel(gcf,'Units','Normalized','Position',[.3 0 .4 .1]); + +buttWidth = 1/6; +centers = linspace(0,1,7)-buttWidth/2; +rewButtonH = uicontrol(playbackPanelH,'Style','pushbutton','String','<<','Units',... + 'Normalized','Position',[centers(2) 0.2 buttWidth 0.6]); +ffButtonH = uicontrol(playbackPanelH,'Style','togglebutton','String','>>','Units',... + 'Normalized','Position',[centers(3) 0.2 buttWidth 0.6]); +stopButtonH = uicontrol(playbackPanelH,'Style','pushbutton','String','stop','Units',... + 'Normalized','Position',[centers(4) 0.2 buttWidth 0.6]); +playButtonH = uicontrol(playbackPanelH,'Style','togglebutton','String','play','Units',... + 'Normalized','Position',[centers(5) 0.2 buttWidth 0.6]); +pauseButtonH = uicontrol(playbackPanelH,'Style','togglebutton','String','||','Units',... + 'Normalized','Position',[centers(6) 0.2 buttWidth 0.6]); + +waveformPanelH = uipanel(gcf,'Units','Normalized','Position',[.02 .12 .96 .86]); +waveformAxesH = axes('Parent',waveformPanelH); + %% Plot the time domain signal s = obj.s; fs = obj.fs; -figure, plot((1:length(s))/fs,s); +plot((1:length(s))/fs,s); title('Audio signal') xlabel('time (s)'); axis tight player = audioplayer(s,fs); +set(player,'TimerPeriod',0.1); 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]); - +%% Add playback controls set(playButtonH,'Callback',@play_callback); set(stopButtonH,'Callback',@stop_callback); +set(pauseButtonH,'Callback',@pause_callback); +set(rewButtonH,'Callback',@rew_callback); +set(ffButtonH,'Callback',@ff_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 play_callback(~,~) + set(player,'SampleRate',fs); + play(player,player.CurrentSample); + set(pauseButtonH,'Value',0); + set(ffButtonH,'Value',0); + end - function stop_callback(~,~) - stop(player); - end + function pause_callback(~,~) + pause(player); + set(playButtonH,'Value',0); + set(ffButtonH,'Value',0); + end + + function stop_callback(~,~) + stop(player); + set(playButtonH,'Value',0); + set(pauseButtonH,'Value',0); + set(ffButtonH,'Value',0); + end + + function ff_callback(~,~) + set(player,'SampleRate',1.5*fs); + set(pauseButtonH,'Value',0); + set(playButtonH,'Value',0); + end + + function rew_callback(~,~) + stop(player); + play(player); + set(pauseButtonH,'Value',0); + set(playButtonH,'Value',1); + 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 plotTransportBar(~,~) + global tbH + xLim = get(gca,'Xlim'); + yLim = get(gca,'YLim'); + tbH = line([xLim(1) xLim(1)],yLim,'Color','k'); + end - function deleteTransportBar(~,~) - global tbH - delete(tbH); - 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