play audio within a function MATLAB 2019a
1 view (last 30 days)
Show older comments
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
0 Comments
Accepted Answer
Walter Roberson
on 29 Oct 2019
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.
2 Comments
Sujas
on 17 Jan 2023
Edited: Sujas
on 17 Jan 2023
But There is a little problem with that,
The function only continues only after the sound is completely done but what is we want to do something simultaneously with sound like while making games.
That's Why Simply Use:
sound(y,Fs)
It will from function also without blocking the whole code!
Walter Roberson
on 17 Jan 2023
if you construct the audioplayer object in a location that does not get destroyed when the function returns then you can use play() without waiting for the function to return.
More Answers (0)
See Also
Categories
Find more on Audio and Video Data in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!