Octave 在Windows 7上以八度音阶使用soundsc

Octave 在Windows 7上以八度音阶使用soundsc,octave,Octave,好吧,我在开始这件事时遇到了麻烦。我试图在八度音阶中使用soundsc函数,但我一直遇到以下错误: error: sound.m: No command line utility found for sound playing 我在网上搜索了一些,但找不到该怎么办。以下是我在网上找到的包含错误的文件的源代码链接: 我认为错误来自这里: ## What do we use for playing? global sound_play_utility; if ~isempty(soun

好吧,我在开始这件事时遇到了麻烦。我试图在八度音阶中使用soundsc函数,但我一直遇到以下错误:

error: sound.m: No command line utility found for sound playing
我在网上搜索了一些,但找不到该怎么办。以下是我在网上找到的包含错误的文件的源代码链接:

我认为错误来自这里:

  ## 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

我只是碰巧在使用Windows7,所以我想我必须自己指定路径?更改源代码?我不知道我该怎么做才能让它工作!有人能告诉我吗?

您链接到的文件顶部包含文档,其中包括以下内容:

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

因此,首先,您需要安装。这将包括
play.exe
。然后,您必须以八度设置全局变量
sound\u play\u实用程序
的值,以反映您安装的
sox
,或者确保
文件在路径(EXEC\u path)
中可以找到
play.exe
。从您发布的代码片段往下看几行,该文件似乎将该变量传递给了
popen
,该变量本应启动一个新进程。在Windows机器上,我从未在Octave上做过类似的事情,因此我无法帮助您了解确切的细节。

您只需查看代码就可以基本了解您需要做什么。倍频程模块首先检查是否将全局
声音播放实用程序设置为要用于播放声音的实用程序。这真的是你的选择,实际上,Windows上的任何音频播放器都应该工作(mplayer、foobar、Winamp等等)


只有当这个变量为空时,其他检查才会失败,所以只需导出一个全局变量并将其设置为您安装的播放器的路径

我不知道这是否也适用于Windows 7,但这就是我如何在Windows XP上运行soundsc、sox和octave的原因: 假设您已经安装了octave

  • 下载并安装适用于Win32的sox:
  • 转到安装了sox的目录(例如C:\sox-14-3-1),制作一个副本“sox.exe”,并将副本重命名为“play”。重要提示:您必须删除“.exe”文件扩展名!确保已在资源管理器中设置显示文件扩展名的设置
  • 使用命令行参数启动倍频程——exec路径C:\sox-14-3-1(或您选择安装sox的任何路径)。(如果使用qtoctave作为GUI,也可以在“Octave参数”下设置的“Octave”选项卡中的设置中进行设置)
  • 现在octave应该找到“play”可执行文件来播放声音

    您可以使用以下代码进行尝试,这将产生一些难听的蜂鸣音;-)


    希望有帮助:-)。

    我不相信所有的音频播放器都能工作。他们必须能够通过标准输入的管道播放AU文件。这里是八度音阶命令,我用来通过VLC播放。您可能需要在
    VLC\u程序
    变量中调整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
    启动文件中,以便每次启动Octave时自动配置声音播放器。

    我认为,虽然我不确定,但代码希望将音频数据传递到管道,而不是作为文件(请参阅
    fwrite
    行)。我不知道Winamp等能否处理好。但是,我也不知道sox在Windows上是否会像预期的那样运行。我刚才说的是播放音频。对于本模块提供的任何其他内容,是的,您需要安装sox。你应该考虑接受/接受MTRW的回答,这在这方面已经不复存在了。
    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;