Wait for sound to finish and then execute

12 ビュー (過去 30 日間)
Adham Elkhouly
Adham Elkhouly 2021 年 4 月 27 日
コメント済み: Adham Elkhouly 2021 年 4 月 27 日
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

採用された回答

Steven Lord
Steven Lord 2021 年 4 月 27 日
Instead of calling play on your audioplayer object you should call playblocking.
  2 件のコメント
Adham Elkhouly
Adham Elkhouly 2021 年 4 月 27 日
Thank you
Adham Elkhouly
Adham Elkhouly 2021 年 4 月 27 日
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

サインインしてコメントする。

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2021 年 4 月 27 日
Use a stopFcn callback https://www.mathworks.com/help/matlab/ref/audioplayer.html#mw_ce25e74d-6a00-44d6-9ae9-9a6e6335962c
  1 件のコメント
Adham Elkhouly
Adham Elkhouly 2021 年 4 月 27 日
Thank you

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeAudio and Video Data についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by