MATLAB: Play audio within a function MATLAB 2019a

audioplay

Hi,
I cannot play an audio within a function. for example, if I run the following code in the command window, it works (plays the audio):
DtFl=load(DspFl);
x=DtFl.x; Fs=DtFl.Fs;
Ply = audioplayer(50*x, Fs);
play(Ply)
but if I put the "play" function within another function, nothing happens (no audio play)
function TstAudioPlay
clc; clear
DspFl='E:\WorkrelatedData\VAGSound\Cntrl1Chn2Dt.mat';
DtFl=load(DspFl);
x=DtFl.x; Fs=DtFl.Fs;
runaudio(x,Fs)
function runaudio(x,Fs)
Ply = audioplayer(50*x, Fs);
play(Ply)
the peculiar thing is that if I put a break point before the "play" function and debud the code, the audio plays well.
Any suggestion?
B

Best Answer

You are using play(), which is non-blocking. The audio is started and then the play() call returns. The play() call is the last thing in the function, so the function exits, tearing down the workspace variables, including removing the audioplayer object you constructed inside the function.
You can either use playblocking() or you can construct the audio player object in a location that does not get destroyed when the callbacks return.