2017-02-03 2 views
0

Ich versuche, einen Ton kontinuierlich zu spielen, wenn eine bestimmte Zeit verstrichen ist. Unten ist mein Code. Der Sound wird jedoch anstatt eines kontinuierlichen Sounds wie in einer While-Schleife abgespielt. Das Ablegen außerhalb der while-Schleife funktioniert nicht, da die Zeit innerhalb der while-Schleife erhöht wird. Wie gehe ich vor? Bitte helfen Sie! Ich bin seit 2 Tagen in diesem stecken geblieben. Dies ist ein Problem mit meiner Bestellung meiner Codierung, also hat es nichts damit zu tun, dass der Ton richtig gespielt wird oder nicht.Ich kann den Ton nicht stoppen, wenn ich ihn in der Schleife wiederhole

Danke!

t = 0; 

pahandle = PsychPortAudio('Open', [], 1, 1, 48000, 2); 

myBeep = MakeBeep(500, 0.5, 48000); 

PsychPortAudio('RunMode', pahandle, 1); 
PsychPortAudio('FillBuffer', pahandle, [myBeep; myBeep]); 

while t < 20 
    t = t + 1; 

    if ~KbCheck && t >= 5 
     PsychPortAudio('Start', pahandle, 0, 0, 1); 

    elseif KbCheck 
     PsychPortAudio('Stop', pahandle, 1, 1); 
     break 
    elseif t > 20 
     PsychPortAudio('Stop', pahandle, 1, 1); 
     break 
    end 
end 

PsychPortAudio('Close', pahandle); 

Antwort

0

Ich fand die Antwort auf meine eigene Frage und es ist wirklich ziemlich einfach. Fügen Sie einfach eine neue Variable hinzu, um zu steuern, ob der Sound gerade spielt oder nicht. Ich habe es getan, indem ich IsPlaying zu allen if-Anweisungen hinzugefügt habe.

t = 0; 
IsPlaying = 0; 

pahandle = PsychPortAudio('Open', [], 1, 1, 48000, 2); 

myBeep = MakeBeep(500, 0.5, 48000); 

PsychPortAudio('RunMode', pahandle, 1); 
PsychPortAudio('FillBuffer', pahandle, [myBeep; myBeep]); 

while t < 20 
t = t + 1; 

if ~KbCheck && t >= 5 && IsPlaying == 0 
    PsychPortAudio('Start', pahandle, 0, 0, 1); 
    IsPlaying = 1; 

elseif KbCheck 
    PsychPortAudio('Stop', pahandle, 1, 1); 
    IsPlaying = 0; 
    break 
elseif t > 20 
    PsychPortAudio('Stop', pahandle, 1, 1); 
    IsPlaying = 0; 
    break 
end 
end 

PsychPortAudio('Close', pahandle); 
Verwandte Themen