2009-11-16 23 views
33

Al reproducir un sonido utilizando por ejemplo:¿Cómo detener el sonido en MATLAB?

sound(x,fs); 

a veces por accidente jugar el equivocado. Si x es de longitud considerable, actualmente trato de esperar hasta que el sonido se haya completado. ¿Alguna sugerencia sobre cómo "abortar" la reproducción? Ya lo intenté

sound(mute,fs); % Mute is a short vector containing all zeroes 

Pero eso no funcionó. Estoy usando Windows por cierto.

ACTUALIZACIÓN:
La siguiente solución propuesta por kigurai parece hacer el truco:

sound(x,fs); % Start the audio 

Ahora matan audio

clear playsnd 
+0

Supongo que ha intentado ctrl-c pero eso no funcionó? – Shaka

+10

Gracias! 'clear playsnd' no funcionó para mí en R2013a, sin embargo,' clear sound' sí, así que todavía aprecio la sugerencia :) – Born2Smile

+0

'clear sound' es bueno, pero' clear all' es un superconjunto de todos los clears y por lo tanto también funciona – alexey

Respuesta

25

nunca utilizado "sonido()" pero cuando he reproducido audio usando wavplay (..., ..., 'async') Puedo detener el sonido emitiendo

clear playsnd 

¿Quizás también funciona con sonido()? Nota: Esto es cuando se juega de forma asincrónica. Para la reproducción sincrónica, supongo que CTRL-C debería romperla, pero tuve problemas con wavplay() la última vez que lo intenté.

+1

Acabo de probar esto: se inició el audio con "sonido()" y se emitieron mensajes claros para detener el audio. ¡Bonito! –

+3

si tocaste muchos sonidos consecutivos, solo detendrá el último –

+0

No funcionó es 2017a :-( –

28

Mathworks dice (y esto se aplica a sound también),

No hay una función en MATLAB que puede pausar o detener la reproducción de audio, una vez iniciada por wavplay. En lugar de usar WAVPLAY, una alternativa es crear un objeto AUDIOPLAYER. Este tipo de objeto tiene métodos que permiten pausar, reanudar y detener la reproducción de audio . Por ejemplo:

player = audioplayer(Y, Fs) 

% start the playback 
play(player); 

% pause the playback 
pause(player); 

% resume the playback 
resume(player) 

% stop the playback 
stop(player) 
+0

Maldición, llegué 8 segundos tarde;) – Gacek

+1

Jaja, es gracioso cómo todo el mundo parece haberse despertado al responder esta pregunta alrededor de 1000 EST :) – Jacob

+0

Justo cuando presioné el botón para publicar mi respuesta, recibí el cartel naranja que decía que se habían publicado otras respuestas. = D – gnovice

7

utilizar el objeto audioplayer lugar - le da el control total de lo que haces con el sonido. Es decir:

player = audioplayer(x, fs); 
play(player) % start the player 
stop(player) % stop whenever you like... 

de Audioplayer tiene muchas otras cosas útiles: http://www.mathworks.com/help/techdoc/ref/audioplayer.html

48

probar este comando funciona Definitivamente !!

sonido claro

+2

La respuesta más simple, y simplemente funciona – roim

+3

Esto funcionó para mí, mientras que "claro" no lo hizo. – Asy

+0

Esto. ¡¡¡Me gusta!!! –

Cuestiones relacionadas