2016-10-30 1 views
1

Ich habe diesen einfachen Code-Schnipsel, die ich auf eine Schaltfläche angeschlossen habe, so hat er zwei Töne gleichzeitig spielen, das ist tut:Kann man einstellen, welcher Sound während der Wiedergabe von zwei Sounds stoppt?

[testSound1,Fs1] = audioread('testAudio1.wav'); 
sound(testSound1,Fs1); 
[testSound2,Fs2] = audioread('testAudio2.wav'); 
sound(testSound2,Fs2); 

Der Ton spielt, wie beabsichtigt, wenn ich die Taste drücken, aber jetzt würde ich möchte auch gerne einen Stop-Button implementieren. Das Problem ist, dass dieser Stop-Button nur den ersten Ton testAudio1.wav stoppen soll, während der zweite noch spielen soll. Ich habe versucht clear sound, aber dieses hält beides an. Ich würde etwas wie stop(this) benötigen. Könnte das irgendwie gemacht werden?

Hilfe wird sehr geschätzt!

Antwort

1

sound spielt standardmäßig das gesamte Signal ab und das Löschen stoppt beide gleichzeitig. Da Sie audioread verwenden, konstruieren Sie ein Objekt audioplayer für beide Signale separat, und verwenden Sie dann die Methode play, um beide Sounds abzuspielen. Sie können auch die stop Methode verwenden zu stoppen entweder ein:

% Set up audioplayers for both sounds 
sound1 = audioplayer(testSound1, Fs1); 
sound2 = audioplayer(testSound2, Fs2); 

% Play the sounds 
play(sound1); 
play(sound2); 

% Do something... 
% ... 
% ... 

% Stop the sounds 
stop(sound1); 
stop(sound2); 

Beachten Sie, dass die oben ist nur ein Beispiel. Um einen Ton wiederzugeben, verwenden Sie die Methode play, und um einen Ton zu stoppen, verwenden Sie die Methode stop. Für Ihren Fall möchten Sie nur den ersten Ton stoppen, also tun Sie einfach stop(sound1); und nicht stop(sound2);.

+1

Funktioniert wie vorgesehen, vielen Dank für Ihre Hilfe! :) –

+0

@ L. Du bist sehr willkommen. Viel Glück! – rayryeng

Verwandte Themen