2009-11-16 7 views
33

Lors de la lecture d'un son en utilisant par exemple:Comment arrêter le son dans MATLAB?

sound(x,fs); 

Je parfois par accident jouer le mauvais. Si x est de longueur substantielle, j'essaie actuellement d'attendre que le son soit terminé. Des suggestions sur comment "annuler" la lecture? J'ai déjà essayé

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

Mais cela n'a pas fonctionné. J'utilise Windows en passant.

MISE À JOUR:
La solution suivante proposée par kigurai semble faire l'affaire:

sound(x,fs); % Start the audio 

maintenant tuer audio par

clear playsnd 
+0

Je suppose que vous avez essayé ctrl-c mais cela n'a pas fonctionné? – Shaka

+10

Merci! 'clear playsnd' n'a pas fonctionné pour moi dans R2013a, cependant,' son clair 'a fait, donc encore apprécier l'indice :) – Born2Smile

+0

'clair son' est bon, mais' tout effacer 'est un surensemble de tous les clair et donc aussi fonctionne – alexey

Répondre

25

jamais utilisé "son()" mais quand je J'ai joué de l'audio en utilisant wavplay (..., ..., 'async') Je peux arrêter le son en émettant

clear playsnd 

Peut-être que cela fonctionne aussi bien avec sound()? Remarque: C'est lors de la lecture asynchrone. Pour la lecture synchrone, je suppose que CTRL-C devrait le casser, mais j'ai eu des problèmes avec wavplay() la dernière fois que j'ai essayé cela.

+1

Juste essayé ceci: a commencé l'audio en utilisant "son()" et émettant des jeux clairs et arrête l'audio. Agréable! –

+3

si vous avez joué beaucoup de sons consécutifs cela ne fera que stopper le dernier –

+0

N'a pas fonctionné est 2017a :-( –

28

Mathworks dit (et cela vaut pour sound ainsi),

Il n'y a pas de fonction dans MATLAB que peut suspendre ou arrêter la lecture audio une fois initiée par wavplay. Au lieu d'utiliser WAVPLAY, une alternative est de créer un objet AUDIOPLAYER. Ce type d'objet a des méthodes qui permettent de mettre en pause, de reprendre et d'arrêter la lecture audio . Par exemple:

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

Merde, j'étais 8 sec trop tard;) – Gacek

+1

Lol, c'est hilarant comment tout le monde semble avoir réveillé à répondu à cette question vers environ 1000 EST :) – Jacob

+0

Juste au moment où j'ai appuyé sur le bouton pour poster ma réponse, j'ai reçu la bannière orange disant que d'autres réponses étaient postées. = D – gnovice

7

Utilisez l'objet audioplayer au lieu - il vous donne le plein contrôle sur ce que vous faites avec le son. I.e.:

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

Audioplayer a beaucoup d'autres choses utiles: http://www.mathworks.com/help/techdoc/ref/audioplayer.html

48

Essayez cette commande fonctionne vraiment !!

son clair

+2

La réponse la plus simple, et cela fonctionne simplement – roim

+3

Cela a fonctionné pour moi alors que "clear playsnd" n'a pas fonctionné. – Asy

+0

Ceci. J'aime!!! –

Questions connexes