How can I ensure that when I click the play button more than once in my MATLAB GUI

Technical Source
2 min readMar 18, 2024

--

March 18, 2024

How can I ensure that when I click the play button more than once in my MATLAB GUI, the audio is played only once, regardless of how many times I press the play button?

I am making an audio equalizer in MATLAB guide. When I press the ‘play’ button more than once, it plays the audio signal as many times as I’ve pressed the button. What I want is that when I press the play button more than once, it should only play the audio signal once.

The code for play button is given below:

%      PLAY BUTTON
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
audiofile = handles.fullpathname; % the input audio file is stored in "audiofile" variable.
[x, fs] = audioread(audiofile);
guidata(hObject, handles);
handles.CP=1;
% Storing the value of slider in respective variables.
slider_1 = get(handles.slider1, 'Value');
slider_2 = get(handles.slider2, 'Value');
slider_3 = get(handles.slider3, 'Value');
slider_4 = get(handles.slider4, 'Value');
slider_6 = get(handles.slider6, 'Value');
% Applying different filters on these variables.
filter1 = BPF63(x, slider_1);
filter2 = BPF250(x, slider_2);
filter3 = BPF1000(x, slider_3);
filter4 = BPF4000(x, slider_4);
filter6 = BPF16000(x, slider_6);
%Adding all these variables to make the new signal.
total = filter1 + filter2 + filter3 + filter4 + filter6;
sound(total,fs);
%Plotting the signals
plot(handles.axes1, 1:length(x),x);
grid on;
fourier = fft(x);
plot(handles.axes3, 1:length(fourier), abs(fourier));
grid on;
plot(handles.axes4, 1:length(total), total);
grid on;
total_fourier = fft(total);
plot(handles.axes5, 1:length(total_fourier), abs(total_fourier))
grid on;
end

NOTE:-

Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help , Finance Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.

I am guessing this is done through the app designer?

A simple solution to this would be to disable the button after it is pressed, use the pause() function to stop any further matlab executions before the audiofile has played in its entierty, and then enabling it again.

A version of a matlab app doing this could look like

% Button pushed function: PlayButton
function PlayButtonPushed(app, event)
%Disable the button
set(app.PlayButton,'Enable','off');

%Read and play the audio
[x,fs] = audioread(app.FilePathEditField.Value);
sound(x,fs);

%you can add any of your plots etc either before
%or after the pause depending on desired effect

SEE COMPLETE ANSWER CLICK THE LINK

--

--

Technical Source

Simple! That is me, a simple person. I am passionate about knowledge and reading. That’s why I have decided to write and share a bit of my life and thoughts to.