play audio within a function MATLAB 2019a

1 vue (au cours des 30 derniers jours)
Af
Af le 29 Oct 2019
Commenté : Walter Roberson le 17 Jan 2023
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

Réponse acceptée

Walter Roberson
Walter Roberson le 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 commentaires
Sujas
Sujas le 17 Jan 2023
Modifié(e) : Sujas le 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
Walter Roberson le 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.

Connectez-vous pour commenter.

Plus de réponses (0)

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by