view 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 source
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