Octave 在Windows 7上以八度音阶使用soundsc
好吧,我在开始这件事时遇到了麻烦。我试图在八度音阶中使用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
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;