2014-04-25 2 views
0

Octave에서 wav 파일을 재생해야합니다. 내가 playaudio ("sample", "wav") 함수를 호출 할 때.옥타브에서 playaudio() 함수가 작동하지 않습니다.

오류 : 호출 :

오류 : playaudio가 확장을

오류를 부여 지원하지 않습니다 /usr/share/octave/3.2.4/m/audio/playaudio.m 나는이 오류 70 행 7 열에서

어떻게이 문제를 해결할 수 있습니까? 어떻게하면 playaudio 지원 wav를 만들 수 있습니까? 체재.

+0

은 어쩌면 당신은 [이 질문/답변] 찾을 수 (http://stackoverflow.com/questions/5130942/reading-and-playing-sound-in-octave-on- fedora12) 도움이 될 것입니다. 먼저 ['wavread'] (http://www.gnu.org/software/octave/doc/interpreter/Audio-Processing.html#XREFwavread)를 사용해야합니다. – Schorsch

답변

1

playaudio 기능의 소스 코드는 매우 간단합니다 : 당신이 볼 수 있듯이, 그것은 단순히 PulseAudio 사운드 서버를 사용하는 모든 리눅스 시스템에서 사용할 수있는 paplay 유틸리티를 사용하여 시스템 호출을하고있어

if (any (strcmp (ext, {"lin", "raw"}))) 
    [status, out] = system (sprintf ('cat "%s" > /dev/dsp', name)); 
    if (status != 0) 
    system (sprintf ('paplay --raw "%s"', name)); 
    endif 
elseif (any (strcmp (ext, {"mu", "au" "snd", "ul"}))) 
    [status, out] = system (sprintf ('cat "%s" > /dev/audio', name)); 
    if (status != 0) 
    system (sprintf ('paplay "%s"', name)); 
    endif 
else 
    error ("playaudio: unsupported extension '%s'", ext); 
endif 

. 당신이 playaudio.m 파일을 직접 편집 할 수있는 권한이있는 경우, 그냥 같이 목록에 "WAV"확장자를 추가

elseif (any (strcmp (ext, {"mu", "au" "snd", "ul", "wav"}))) 

이 상자 밖으로 작동합니다.

이 패치는 GNU Octave 버그 추적 시스템에 제출할 것입니다. 문제를 신고 해 주셔서 감사합니다.


패치 제출 : https://savannah.gnu.org/patch/index.php?8441

+0

@jason 파일을 편집 할 수있는 권한이 없으면 파일을 프로젝트 디렉터리에 복사하고 수정 한 다음 수정본을 사용할 수있게되면 나중에 제거하십시오. 또는 직접'system' 호출을 직접 사용할 수도 있습니다. – juliohm

관련 문제