I am trying to create a lamp that turns green while the audio is playing and red after the audio is played. I wrote the following function
function PlayxnButtonPushed(app, event)
if(app.wav_flag == 1 && app.yn_flag ==0)
app.playingxnLamp.Color = 'g';
app.player = audioplayer(app.x, app.fs);
play(app.player,app.fs);
while( strcmp(app.player.running,'on') )
app.xn_flag = 1; % Waiting for sound to finish here
end
end
app.xn_flag = 0;
app.playingxnLamp.Color = 'r';
end
But it creates huge lag that I have to terminate the program using task manager.
Any idea how to fix this?
Thank you

 Réponse acceptée

Steven Lord
Steven Lord le 27 Avr 2021

1 vote

Instead of calling play on your audioplayer object you should call playblocking.

2 commentaires

Adham Elkhouly
Adham Elkhouly le 27 Avr 2021
Thank you
it intially worked but now I get an error that says Invalid or deleted object.
if(app.wav_flag == 1 && app.yn_flag ==0)
app.playingxnLamp.Color = 'g';
app.player = audioplayer(app.x, app.fs);
app.xn_flag = 1;
playblocking(app.player,app.fs);
app.playingxnLamp.Color = 'r'; %<-- here
end

Connectez-vous pour commenter.

Plus de réponses (1)

Walter Roberson
Walter Roberson le 27 Avr 2021

1 vote

Use a stopFcn callback https://www.mathworks.com/help/matlab/ref/audioplayer.html#mw_ce25e74d-6a00-44d6-9ae9-9a6e6335962c

Produits

Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by