Professional Documents
Culture Documents
% Properties That Correspond To App Components: Classdef
% Properties That Correspond To App Components: Classdef
AppBase
function draw_bar(app)
half_space = floor(app.fs*app.play_speed*app.fragment_size/2);
left = app.player.CurrentSample - half_space;
if left<1
left = 1;
end
right = app.player.CurrentSample + half_space;
if right>app.total_frame
right = app.total_frame;
end
X = app.audio_data(left:right,:);
% merge the left and right channels
X = sum(X, 2);
L = length(X);
Y = fft(X);
tmp = abs(Y/L);
P1 = 2*tmp(1:floor(L/2)+1);
freq = app.fs*app.play_speed*(0:(L/2))/L;
P2 = P1(freq<2500&freq>20);
freq2 = freq(freq<2500&freq>20);
window = floor(length(freq2)/32);
XData = smooth(freq2, window);
YData = smooth(P2, window);
XData = XData(1:window:end);
YData = YData(1:window:end);
% Component initialization
methods (Access = private)
% Create addMenu
app.addMenu = uimenu(app.UIFigure);
app.addMenu.Text = 'add';
% Create add_file
app.add_file = uimenu(app.addMenu);
app.add_file.MenuSelectedFcn = createCallbackFcn(app,
@add_fileMenuSelected, true);
app.add_file.Text = 'document';
% Create add_folder
app.add_folder = uimenu(app.addMenu);
app.add_folder.MenuSelectedFcn = createCallbackFcn(app,
@add_folderMenuSelected, true);
app.add_folder.Text = 'folder';
% Create play_and_pause
app.play_and_pause = uibutton(app.UIFigure, 'push');
app.play_and_pause.ButtonPushedFcn = createCallbackFcn(app,
@play_and_pauseButtonPushed, true);
app.play_and_pause.Position = [47 63 100 24];
app.play_and_pause.Text = 'play/pause';
% Create process
app.process = uislider(app.UIFigure);
app.process.Limits = [0 1];
app.process.MajorTicks = [];
app.process.MajorTickLabels = {''};
app.process.ValueChangedFcn = createCallbackFcn(app, @processValueChanged,
true);
app.process.MinorTicks = [];
app.process.Position = [33 135 378 3];
% Create UIAxes
app.UIAxes = uiaxes(app.UIFigure);
title(app.UIAxes, '')
xlabel(app.UIAxes, '')
ylabel(app.UIAxes, '')
app.UIAxes.Box = 'on';
app.UIAxes.XTick = [];
app.UIAxes.XTickLabel = {};
app.UIAxes.YTick = [];
app.UIAxes.YTickLabel = {};
app.UIAxes.Position = [7 152 429 185];
% Create Tree
app.Tree = uitree(app.UIFigure);
app.Tree.SelectionChangedFcn = createCallbackFcn(app,
@TreeSelectionChanged, true);
app.Tree.Position = [463 25 235 312];
% Create speedLabel
app.speedLabel = uilabel(app.UIFigure);
app.speedLabel.HorizontalAlignment = 'right';
app.speedLabel.Position = [259 64 38 22];
app.speedLabel.Text = 'speed';
% Create PLAYSPEED
app.PLAYSPEED = uidropdown(app.UIFigure);
app.PLAYSPEED.Items = {'0.5', '0.75', '1', '1.25', '1.5', '2'};
app.PLAYSPEED.ValueChangedFcn = createCallbackFcn(app,
@PLAYSPEEDValueChanged, true);
app.PLAYSPEED.Position = [312 64 100 22];
app.PLAYSPEED.Value = '1';
% Construct app
function app = musicPlayer
if nargout == 0
clear app
end
end