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