我刚刚开始使用supercollider学习音频编程。 当我播放声音时,我能够在扬声器上听到它而不是耳机。
我在启动服务器时收到以下消息 -
启动57110
本地主机
JackDriver:客户名称是' SuperCollider'
SC_AudioDriver:采样率= 48000.000000,驱动程序的块大小= 1024
JackDriver:连接系统:capture_1到SuperCollider:in_1
JackDriver:连接系统:capture_2到SuperCollider:in_2
JackDriver:连接SuperCollider:out_1到系统:playback_1
JackDriver:连接SuperCollider:out_2到系统:playback_2
SuperCollider 3服务器准备好了。
JackDriver:最大输出延迟42.7 ms
从服务器localhost接收通知消息
共享内存服务器接口已初始化
我经历了一些论坛,他们建议寻找输出设备选项并设置它们,我做了一个 -
ServerOptions.devices;
查找设备列表,但我在帖子窗口中收到以下错误 -
错误:原语没有绑定。 0 676
方法实例{(0x21199c0,gc = 01,fmt = 00,flg = 11,set = 04)
实例变量[15]
raw1:Float 0.000000 00000000 0080000C
raw2:Float 0.000000 00000300 03020003
代码:Int8Array的实例(0x2119cc0,size = 4,set = 2)
选择者:零 常数:无 prototypeFrame:Array的实例(0x2119c00,size = 3,set = 2)
上下文:无 argNames:SymbolArray的实例(0x2119b40,size = 3,set = 2)
varNames:无 sourceCode:nil
ownerClass:类Meta_ServerOptions(0x21113c0)
name:Symbol' prListDevices'
primitiveName:Symbol' _ListAudioDevices'
filenameSymbol:Symbol' /usr/share/SuperCollider/SCClassLibrary/Common/Control/Server.sc'
charPos:整数4025
}
错误:原始'无'失败。
失败。
接收器:
零
CALL STACK:
MethodError:reportError 0x3601498
arg this =
无:handleError 0x1f730f8
arg this = nil
arg error =
线程:handleError 0x35fcfd8
arg this =
arg error =
对象:抛出0x3980c58
arg this =
对象:primitiveFailed 0x33395a8
arg this = nil
译员:interpretPrintCmdLine 0x3d061e8
arg this =
var res = nil
var func =
var code =" ServerOptions.devices;"
var doc = nil
var ideClass =
处理:interpretPrintCmdLine 0x3443c08
arg this =
^^前面的错误转储是针对ERROR:Primitive' none'失败。
失败。
接收人:零 启动57110
本地主机
JackDriver:客户名称是' SuperCollider'
SC_AudioDriver:采样率= 48000.000000,驱动程序的块大小= 1024
JackDriver:连接系统:capture_1到SuperCollider:in_1
JackDriver:连接系统:capture_2到SuperCollider:in_2
JackDriver:连接SuperCollider:out_1到系统:playback_1
JackDriver:连接SuperCollider:out_2到系统:playback_2
SuperCollider 3服务器准备好了。
JackDriver:最大输出延迟42.7 ms
从服务器localhost接收通知消息
共享内存服务器接口初始化
错误:原语没有约束。 0 676
方法实例{(0x21199c0,gc = 01,fmt = 00,flg = 11,set = 04)
实例变量[15]
raw1:Float 0.000000 00000000 0080000C
raw2:Float 0.000000 00000300 03020003
代码:Int8Array的实例(0x2119cc0,size = 4,set = 2)
选择者:零 常数:无 prototypeFrame:Array的实例(0x2119c00,size = 3,set = 2)
上下文:无 argNames:SymbolArray的实例(0x2119b40,size = 3,set = 2)
varNames:无 sourceCode:nil
ownerClass:类Meta_ServerOptions(0x21113c0)
name:Symbol' prListDevices'
primitiveName:Symbol' _ListAudioDevices'
filenameSymbol:Symbol' /usr/share/SuperCollider/SCClassLibrary/Common/Control/Server.sc'
charPos:整数4025
}
错误:原始'无'失败。
失败。
接收器:
零
CALL STACK:
MethodError:reportError 0x35be518
arg this =
无:handleError 0x1ee0b78
arg this = nil
arg error =
线程:handleError 0x3470ab8
arg this =
arg error =
对象:抛出0x3636a78
arg this =
对象:primitiveFailed 0x3cd86c8
arg this = nil
译员:interpretPrintCmdLine 0x3d44b98
arg this =
var res = nil
var func =
var code =" ServerOptions.devices;"
var doc = nil
var ideClass =
过程:interpretPrintCmdLine 0x37c8708
arg this =
^^前面的错误转储是针对ERROR:Primitive' none'失败。
失败。
接收者:没有
我是supercollider的新手,我很难找出错误的原因。请建议我如何解决这个问题。
先谢谢。
答案 0 :(得分:1)
我遇到了同样的问题。我使用KXStudio的Catia发现了解决方案。见Catia Catia是一个JACK Patchbay。 (其他补丁可用。例如QJackctl和Patchage)。在我的系统(戴尔Studio笔记本电脑上的Ubuntu 14.04)上,SuperCollider将其前4个输出映射到4个系统播放。前2个系统播放是扬声器,系统播放3和4是耳机。通过将out1和out2从SC重新映射到playback_3和playback_4,我通过耳机听到它。所以,抓住JACK的补丁包,看看你看到了什么。 希望这会有所帮助。
答案 1 :(得分:1)
我遇到了类似的问题(根本没有来自supercollider的输出,只是完全和完全沉默),这篇文章最终使我找到了正确的解决方案。我认为这对你和其他人都有帮助。
从the ServerOptions documentation开始,我发现我可以配置SC如何与环境变量进行对话。
就我而言,我开始使用相关的环境变量scsynth,如:
SC_JACK_DEFAULT_INPUTS="system:capture_1" SC_JACK_DEFAULT_OUTPUTS="system" scsynth -u 57110 &
似乎这也可以在sclang中完成,如下所示:
"SC_JACK_DEFAULT_INPUTS".setenv("system:capture_1");
"SC_JACK_DEFAULT_OUTPUTS".setenv("system");
在你的情况下,你连接错误的输出,你可能想要像这样开始scsynth:
SC_JACK_DEFAULT_OUTPUTS="system:playback_3,system:playback_4" scsynth -u 57110 &
另一种让您玩这些连接并找到适合您的方法的替代方法是使用jack_lsp,jack_connect和jack_disconnect命令。
要查看您的插孔服务器的所有输入/输出以及当前连接,请运行
jack_lsp -c
从您的帖子中,我认为您会看到类似
的内容system:capture_1
SuperCollider:in_1
system:capture_2
SuperCollider:in_2
system:playback_1
SuperCollider:out_1
system:playback_2
SuperCollider:out_2
system:playback_3
system:playback_4
SuperCollider:out_1
system:playback_1
SuperCollider:out_2
system:playback_2
要将SuperCollider输出到耳机和扬声器,你可以将out_1和out_2连接到playback_3和playback_4(假设那些是你的耳机),如下所示:
jack_connect SuperCollider:out_1 system:playback_3
jack_connect SuperCollider:out_2 system:playback_4
要断开与扬声器的连接,您可以
jack_disconnect SuperCollider:out_1 system:playback_1
jack_disconnect SuperCollider:out_2 system:playback_2
再次运行jack_lsp -c
以查看您的系统是否按照您的要求进行设置!
答案 2 :(得分:1)
在这个问题上无数次挣扎之后,我设法让它与之合作:
if( pipe(pipe_fd) == -1)
{
perror("Error in creating the pipe \n");
exit(-1);
}
pid_t pid;
pid = fork();
char message[BUFFER_SIZE] = "Greetings";
char read_message[BUFFER_SIZE];
if(pid==-1)
{
perror("Error in creating the child! \n");
exit(-1);
}
linux组。audio
启动插孔可能有用的其他资源:https://wiki.archlinux.org/index.php/JACK_Audio_Connection_Kit
答案 3 :(得分:0)
首先:大长的错误消息说" A primitive was not bound
"是令人不愉快的,但在这种情况下,它只是意味着你键入了错误的命令。我不知道你从哪里获得了这个命令ServerOptions.devices
,但这是错的。也许该消息旨在告诉您键入s.options.device
哪个更明智,但它不是您需要做的。忘掉那个并忘记那个长错误信息。
其次:启动服务器时看到的消息很好,它告诉您服务器已启动并连接到插孔。 SuperCollider很高兴。如果您听到扬声器发出的声音,而不是耳机的声音(我认为当您将耳机插入耳机时就意味着!),这不是一个超级碰撞问题,而只是关于设置耳机音量的标准操作系统问题。
您似乎正在使用Linux,因此请在终端中运行命令alsamixer
,这是检查耳机输出是否静音的好方法。如果您不熟悉,请使用man alsamixer
了解如何使用它。