daniele@160
|
1 function plot(obj)
|
daniele@160
|
2
|
daniele@160
|
3 %% Plot the time domain signal
|
daniele@160
|
4 s = obj.s;
|
daniele@160
|
5 fs = obj.fs;
|
daniele@160
|
6 figure, plot((1:length(s))/fs,s);
|
daniele@160
|
7 title('Audio signal')
|
daniele@160
|
8 xlabel('time (s)');
|
daniele@160
|
9 axis tight
|
daniele@160
|
10
|
daniele@160
|
11 player = audioplayer(s,fs);
|
daniele@160
|
12 set(player,'StartFcn',@plotTransportBar);
|
daniele@160
|
13 set(player,'TimerFcn',@updateTransportBar);
|
daniele@160
|
14 set(player,'StopFcn',@deleteTransportBar);
|
daniele@160
|
15
|
daniele@160
|
16 %% Add playbaack controls
|
daniele@160
|
17 playButtonH = uicontrol(gcf,'Style','pushbutton','String','play','Units',...
|
daniele@160
|
18 'Normalized','Position',[0.02 + 0.39 0 0.1 0.05]);
|
daniele@160
|
19 stopButtonH = uicontrol(gcf,'Style','pushbutton','String','stop','Units',...
|
daniele@160
|
20 'Normalized','Position',[0.12 + 0.39 0 0.1 0.05]);
|
daniele@160
|
21
|
daniele@160
|
22 set(playButtonH,'Callback',@play_callback);
|
daniele@160
|
23 set(stopButtonH,'Callback',@stop_callback);
|
daniele@160
|
24
|
daniele@160
|
25 function play_callback(~,~)
|
daniele@160
|
26 if strcmpi(get(playButtonH,'String'),'play')
|
daniele@160
|
27 play(player,player.CurrentSample);
|
daniele@160
|
28 set(playButtonH,'String','pause');
|
daniele@160
|
29 else
|
daniele@160
|
30 pause(player)
|
daniele@160
|
31 set(playButtonH,'String','play');
|
daniele@160
|
32 end
|
daniele@160
|
33 end
|
daniele@160
|
34
|
daniele@160
|
35 function stop_callback(~,~)
|
daniele@160
|
36 stop(player);
|
daniele@160
|
37 end
|
daniele@160
|
38
|
daniele@160
|
39 %% Transport Bar functions
|
daniele@160
|
40 function plotTransportBar(~,~)
|
daniele@160
|
41 global tbH
|
daniele@160
|
42 xLim = get(gca,'Xlim');
|
daniele@160
|
43 yLim = get(gca,'YLim');
|
daniele@160
|
44 tbH = line([xLim(1) xLim(1)],yLim,'Color','k');
|
daniele@160
|
45 end
|
daniele@160
|
46
|
daniele@160
|
47 function updateTransportBar(hObject,~)
|
daniele@160
|
48 global tbH
|
daniele@160
|
49 currentSample = hObject.CurrentSample;
|
daniele@160
|
50 pos = currentSample/fs;
|
daniele@160
|
51 set(tbH,'XData',[pos pos]);
|
daniele@160
|
52 end
|
daniele@160
|
53
|
daniele@160
|
54 function deleteTransportBar(~,~)
|
daniele@160
|
55 global tbH
|
daniele@160
|
56 delete(tbH);
|
daniele@160
|
57 end
|
daniele@160
|
58 end
|