2010-09-22 140 views
3

好的,我在開始使用這個時遇到了問題。我試圖使用soundsc功能八度,但我不斷收到此錯誤:在Windows 8上使用soundsc在Octave中

error: sound.m: No command line utility found for sound playing 

我已搜索周圍的一些在網絡上,但無法找到該怎麼做。下面是對文件的源代碼,我就包含錯誤的網找到了一個鏈接:http://octave-audio.sourcearchive.com/documentation/1.1.3/sound_8m-source.html

我認爲這個錯誤來自這裏:

## What do we use for playing? 
    global sound_play_utility; 
    if ~isempty(sound_play_utility), 
    ## User specified command 
    elseif (file_in_path(EXEC_PATH, "ofsndplay")) 
    ## Mac 
    sound_play_utility = "ofsndplay -" 
    elseif (file_in_path(EXEC_PATH, "play")) 
    ## Linux (sox) 
    sound_play_utility = "play -t AU -"; 
    else 
    error("sound.m: No command line utility found for sound playing"); 
    endif 

我只是這麼碰巧使用的是Windows 7,所以我想我必須以某種方式指定我的自我?更改源代碼?我不知道我應該做些什麼才能使其發揮作用!誰能告訴我?

回答

3

您鏈接到該文件包括在頂部,其中包括以下文件:

## This function writes the audio data through a pipe to the program 
## "play" from the sox distribution. 

所以,你需要安裝sox,對於初學者。這將包括play.exe。然後,您必須將Octave中的全局變量sound_play_utility的值設置爲反映您安裝的位置sox,或確保file_in_path(EXEC_PATH)的東西可以找到play.exe。從您發佈的代碼片段中查找幾行,看起來文件將該變量傳遞給popen,該代碼將啓動一個新進程。我從來沒有在Windows機器上的Octave上做過這樣的事情,所以我無法幫助您瞭解確切的細節。

1

通過查看代碼,您基本上可以看到您所要做的事情。 Octave模塊首先檢查您是否將全球sound_play_utility設置爲您想用來播放聲音的實用程序。這真的是你的選擇,實際上,Windows上的任何音頻播放器都應該可以工作(mplayer,foobar,Winamp,無論如何)。

只有當該變量爲空時,其他檢查纔會失敗,因此只需導出一個全局並將其設置爲已安裝的播放器的路徑即可。

+0

我認爲,雖然我不確定,但代碼期望將音頻數據傳遞到管道,而不是文件(請參閱'fwrite'行)。我不知道Winamp等能否處理這個問題。但是,我也不知道'sox'在Windows上是否會像預期的那樣運行。 – mtrw 2010-09-22 00:29:16

+0

我只是在談論播放音頻。對於這個模塊提供的其他東西,是的,你需要安裝sox。你應該考慮upvoting /接受mtrw的答案,在這方面已經死了。 – 2010-09-22 00:33:35

6

我不知道這是否適用於Windows 7也一樣,但這是我如何設法soundsc,SOx和倍頻程在Windows XP上運行: 假設您已經倍頻程已經安裝,

  1. 下載併爲Win32安裝sox:http://sox.sourceforge.net/
  2. 轉到安裝了sox的目錄(例如C:\ sox-14-3-1),複製「sox.exe」並將副本重命名爲「play 」。重要提示:您必須刪除「.exe」文件擴展名!確保你已經在資源管理器中設置了顯示文件擴展名的設置。
  3. 用命令行參數啓動Octave --exec -path C:\ sox-14-3-1(或者您選擇安裝sox的任何路徑)。 (如果您使用的是qtoctave作爲GUI,您可以在「八度」參數中的設置中的「八度」選項卡中進行設置)

現在八度應該找到「播放」 。

您可以用下面的代碼試試吧,這應該產生一些醜陋的嗶嗶聲;-)

% Sampling theorem - mirror frequency 
% s3s11_1.m * mw * 11/17/2007 
FS = 8000; % sampling frequency in Hz 
t = 0:1/FS:1; % normalized time 
x = []; 
for k = 1:7 
x = [x sin(2*pi*k*1e3*t)]; % signal 1...7 kHz 
end 
soundsc(x,FS) % sound 

希望有所幫助:-)。

+1

它對我有用 – 2010-10-13 18:49:35

+0

也爲我工作 - 非常感謝! – HanClinto 2011-10-04 20:51:31

1

我不相信所有的音頻播放器都能正常工作。他們必須能夠通過管道播放AU文件到標準輸入。這裏是Octave命令,我用它來啓用VLC播放。您可能需要調整VLC_PROGRAM變量中VLC程序的路徑。

VLC_PROGRAM="c:/Program Files (x86)/VideoLan/VLC/vlc"; 
VLC_OPTIONS="-q --play-and-exit -";  
sound_play_utility=["cmd /c \"" VLC_PROGRAM "\" " VLC_OPTIONS];  
clear VLC_PROGRAM VLC_OPTIONS; 

我建議你.octaverc啓動文件放置這些命令,使您的聲音播放器將自動配置啓動倍頻每次。