How to reset or close sound() player?

4 次查看(过去 30 天)
I have a script with two calls to the soundsc() function in Matlab. The first plays an array of samples, the second plays a modified array for comparison. However, only the first is played. I assume I need to close or reset the soundsc() player between subsequent calls, but can't find anything on how to do that. I tried
clear playsnd
clear sound
but neither works.
Anyone know what I'm doing wrong? Thanks.
  1 个评论
Jan
Jan 2017-1-18
编辑:Jan 2017-1-18
Please post the relevant code. There is no need to "clear" a builtin command. There must be another reason for the observed behavior.

请先登录,再进行评论。

采纳的回答

J. McCabe
J. McCabe 2017-1-20
After some research I figured the answer to the question. Apparently,subsequent calls to 'sound' or 'soundsc' are executed asynchronously, which means if you have
sound(x)
sound(y)
in your script, both will be executed virtually simultaneously. One way to get around that is to insert a 'pause()' after the first call, and set the pause value at > the time it takes to play the first 'sound()':
sound(x)
pause(5)
sound(y)

更多回答(1 个)

Jan
Jan 2017-1-18
Perhaps the modern audioplayer can help you.
  1 个评论
J. McCabe
J. McCabe 2017-1-18
Thanks, I appreciate the help. The reason I like the soundsc() function over the audioplayer is it automatically scales the magnitude between -1 to +1, and also it seems (IMO at least) a bit more messy to have to instantiate an audioplayer if I'm just playing some sine waves. What I ended up doing is just
z = horzcat(x,y);
soundsc(z,3600);
That seems to work fine. BTW, I did try to set up two audioplayers for the signals and play sequentially, but it still only played one signal. The horzcat played both. Wierd...

请先登录,再进行评论。

标签

Community Treasure Hunt

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

Start Hunting!

Translated by