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
Neeta Dsouza answered .
2025-11-20
% 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
%Wait for audio to finish
pause(length(x)/fs);
%Re-enable the button
set(app.PlayButton,'Enable','on')
end