play audio within a function MATLAB 2019a

5 Ansichten (letzte 30 Tage)
Af
Af am 29 Okt. 2019
Kommentiert: Walter Roberson am 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

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 29 Okt. 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 Kommentare
Sujas
Sujas am 17 Jan. 2023
Bearbeitet: Sujas am 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 am 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by