2013-04-25 2 views
2

저는 몇 분마다 소리를 반복 재생하기 위해 MATLAB 프로그램을 만들려고합니다. 지금은 시스템에서 몇 가지 버그를 잡기 위해 매 2 초마다 재생하도록 설정했습니다. 내 프로그램이 사운드를 재생하려고 할 때 그러나, 나는이 오류가 :Matlab에서 소리를 계속 반복 재생 하시겠습니까?

??? Error using ==> 
audioplayer.audioplayer>audioplayer.resume at 710 
A given audio device may only be opened once. 

Error in ==> audioplayer.play at 88 
    obj.resume(); 

Error in ==> 
     audiorecorder.audiorecorder>audiorecorder.play at 
     779 
     play(player, varargin{:}) 

Error in ==> Voice at 17 
    play(voice); 

내 코드는 지금까지 있습니다 :

clc; 
clear all; 
clear main; 

%File to play my voice to tell me to keep studying 


    voice = audiorecorder; 
    disp('Start speaking.'); 
    recordblocking(voice, 3); 
    disp('DONE'); 


while i ~= 100; 
pause(1); 
play(voice); 
i = 0; 
end 

기본적으로 내 질문은 내 같은 소리를 서면으로 유지하는 방법이 파일을 다른 이름으로 바꾼 다음 새 파일을 계속 재생합니까? 나는 행렬 만들기에 대해서 생각한 다음, "for"루프를 사용하여 새로운 파일을 재생 한 다음이를 트래버스하고 사운드 파일을 매트릭스로 만드는 방법을 모릅니다. 내가 "재생"대신에 사용할 수있는 다른 명령이있어 계속 연주하게 할 수 있습니까?

편집 : 실제로 수업 시간에 이것에 대해 배운 적이 있기 때문에, 지금에 더 많은 연구를 수행하지만, 그냥 내 사운드를 포함하는 새로운 파일을 생성하는 가장 좋은 것입니다 다음 repeadetly 파일에 액세스?

답변

2

게시 한 코드와 관련하여 나는 이전의 루프에서 여전히 재생되는 동안 play(voice)을 시도하기 때문에 소리보다 짧다고 의심되는 pause(1)만이 문제라고 생각합니다. play 대신 playblocking을 사용하십시오. 사운드가 끝날 때까지 루프를 중지해야합니다.

+0

! 정말 고마워요. – user2250690

0

"주어진 오디오 장치를 한 번만 열 수 있습니다"라는 의미는 ...
다른 프로그램이나 함수가 "audioplayer"를 호출하면 코드를 실행할 때입니다.
시스템에 문제가 있으므로 루프를 재생하기 전에 "audioplayer"의 "Running"속성을 확인하는 코드가 필요합니다. , 예 : .....
.....
A = get (hplay, 'Running');
경우 (STRCMP (A, '오프')
...... 플레이어 코드 .... 그 것이었다