2009-11-16 20 views
33

Podczas odtwarzania dźwięku przy użyciu np:Jak zatrzymać dźwięk w MATLAB?

sound(x,fs); 

czasami przez przypadek grać niewłaściwy. Jeśli x ma znaczną długość, obecnie staram się czekać, aż dźwięk się skończy. Wszelkie sugestie, jak "przerwać" odtwarzanie? Wypróbowałem już:

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

Ale to nie zadziałało. Używam systemu Windows przy okazji.

UPDATE:
następujące rozwiązanie proponowane przez kigurai wydaje rade:

sound(x,fs); % Start the audio 

teraz zabić dźwięku przez

clear playsnd 
+0

Zakładam, że próbowałeś ctrl-c, ale to nie zadziałało? – Shaka

+10

Dzięki! 'clear playsnd' nie działa dla mnie w R2013a, jednak' clear sound' zrobił, więc nadal doceniam podpowiedź :) – Born2Smile

+0

'clear sound' jest dobre, ale' clear all' jest nadzbiorem wszystkich clears, a więc również działa – alexey

Odpowiedz

25

Nigdy nie używany "dźwięku()", ale kiedy odtwarzam dźwięk za pomocą wavplay (..., ..., "async") Mogę zatrzymać dźwięk wydając

clear playsnd 

Może to również działa z dźwiękiem()? Uwaga: To jest podczas odtwarzania asynchronicznego. Do synchronicznego odtwarzania przyjmuję, że CTRL-C powinien go złamać, ale miałem problemy z wavplay() ostatnim razem, gdy próbowałem tego.

+1

Po prostu wypróbowałem to: uruchomiono dźwięk za pomocą "sound()" i wydawanie czystego playndu zatrzymało dźwięk. Miły! –

+3

jeśli grałeś wiele kolejnych dźwięków, to zatrzymasz tylko ostatnią –

+0

Nie działa to 2017a :-( –

28

Mathworks mówi (i dotyczy to sound również),

Nie ma funkcji w programie MATLAB że może wstrzymać lub zatrzymać odtwarzanie dźwięku raz zainicjowane przez wavplay. Zamiast korzystania z WAVPLAY , alternatywą jest utworzenie obiektu AUDIOPLAYER o numerze . Ten typ obiektu ma metody umożliwiające zatrzymanie, wznowienie i zatrzymanie odtwarzania dźwięku. Na przykład:

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

Cholera, byłem o 8 sekund za późno;) – Gacek

+1

Lol, to zabawne, jak wszyscy się obudzili odpowiedzieli na to pytanie na około 1000 EST :) – Jacob

+0

Tak jak kliknąłem przycisk, aby opublikować odpowiedź, otrzymałem pomarańczowy baner, w którym napisano, że inne odpowiedzi zostały opublikowane. = D – gnovice

7

korzystania z przedmiotu AudioPlayer zamiast - to daje pełną kontrolę nad tym, co zrobić z dźwiękiem. Tj:

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

odtwarzacze audio ma wiele innych przydatnych rzeczy: http://www.mathworks.com/help/techdoc/ref/audioplayer.html

48

Spróbuj tego polecenia Zdecydowanie działa !!

czysty dźwięk

+2

Najprostsza odpowiedź, i działa po prostu – roim

+3

To zadziałało dla mnie, podczas gdy "wyraźny spektakl" nie zadziałał. – Asy

+0

To. Lubię!!! –