daniele@160: function plot(obj) daniele@160: daniele@160: %% Plot the time domain signal daniele@160: s = obj.s; daniele@160: fs = obj.fs; daniele@160: figure, plot((1:length(s))/fs,s); daniele@160: title('Audio signal') daniele@160: xlabel('time (s)'); daniele@160: axis tight daniele@160: daniele@160: player = audioplayer(s,fs); daniele@160: set(player,'StartFcn',@plotTransportBar); daniele@160: set(player,'TimerFcn',@updateTransportBar); daniele@160: set(player,'StopFcn',@deleteTransportBar); daniele@160: daniele@160: %% Add playbaack controls daniele@160: playButtonH = uicontrol(gcf,'Style','pushbutton','String','play','Units',... daniele@160: 'Normalized','Position',[0.02 + 0.39 0 0.1 0.05]); daniele@160: stopButtonH = uicontrol(gcf,'Style','pushbutton','String','stop','Units',... daniele@160: 'Normalized','Position',[0.12 + 0.39 0 0.1 0.05]); daniele@160: daniele@160: set(playButtonH,'Callback',@play_callback); daniele@160: set(stopButtonH,'Callback',@stop_callback); daniele@160: daniele@160: function play_callback(~,~) daniele@160: if strcmpi(get(playButtonH,'String'),'play') daniele@160: play(player,player.CurrentSample); daniele@160: set(playButtonH,'String','pause'); daniele@160: else daniele@160: pause(player) daniele@160: set(playButtonH,'String','play'); daniele@160: end daniele@160: end daniele@160: daniele@160: function stop_callback(~,~) daniele@160: stop(player); daniele@160: end daniele@160: daniele@160: %% Transport Bar functions daniele@160: function plotTransportBar(~,~) daniele@160: global tbH daniele@160: xLim = get(gca,'Xlim'); daniele@160: yLim = get(gca,'YLim'); daniele@160: tbH = line([xLim(1) xLim(1)],yLim,'Color','k'); daniele@160: end daniele@160: daniele@160: function updateTransportBar(hObject,~) daniele@160: global tbH daniele@160: currentSample = hObject.CurrentSample; daniele@160: pos = currentSample/fs; daniele@160: set(tbH,'XData',[pos pos]); daniele@160: end daniele@160: daniele@160: function deleteTransportBar(~,~) daniele@160: global tbH daniele@160: delete(tbH); daniele@160: end daniele@160: end