SuperCollider在耳机上听不到声音
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SuperCollider在耳机上听不到声音相关的知识,希望对你有一定的参考价值。
我刚开始学习使用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:class Meta_ServerOptions(0x21113c0) name:Symbol'prListDevices' primitiveName:符号'_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错误= 线程:handleError 0x35fcfd8 arg this = arg错误= 对象:抛出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 = ^^前面的错误转储用于错误:原始“无”失败。 失败。 接收者:没有 开机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:class Meta_ServerOptions(0x21113c0) name:Symbol'prListDevices' primitiveName:符号'_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错误= 线程:handleError 0x3470ab8 arg this = arg错误= 对象:抛出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 = ^^前面的错误转储用于错误:原始“无”失败。 失败。 接收者:没有
我是supercollider的新手,我很难弄清楚错误的原因。请建议我如何解决这个问题。
提前致谢。
我有同样的问题。我使用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的补丁包,看看你看到了什么。希望这可以帮助。
我遇到了类似的问题(根本没有来自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
,看看你的系统是否按照你想要的方式设置!
经过这个问题无数次挣扎之后,我设法让它与之合作:
- 将您的用户添加到
audio
linux组。 - 使用
cadence
启动插孔
可能有用的额外资源:https://wiki.archlinux.org/index.php/JACK_Audio_Connection_Kit
首先:大长的错误消息说“A primitive was not bound
”是令人不愉快的,但在这种情况下,它只是意味着你键入了错误的命令。我不知道你从哪里获得ServerOptions.devices
命令,但这是错的。也许这条消息是为了告诉你输入更合理的s.options.device
,但这不是你需要做的。忘掉那个并忘记那个长错误信息。
其次:您在启动服务器时看到的消息是好的,它告诉您服务器已启动并连接到插孔。 SuperCollider很高兴。如果您听到扬声器发出的声音,而不是耳机的声音(我认为当您将耳机插入耳机时就意味着!),这不是一个超级碰撞问题,而只是关于设置耳机音量的标准操作系统问题。
看来你正在使用linux,所以在终端中运行命令alsamixer
,这是检查耳机输出是否静音的好方法。如果您不熟悉,请使用man alsamixer
了解如何使用它。
以上是关于SuperCollider在耳机上听不到声音的主要内容,如果未能解决你的问题,请参考以下文章