【问题标题】:SuperCollider not audible on headphone耳机上听不到 SuperCollider
【发布时间】:2017-12-25 23:43:13
【问题描述】:

我刚刚开始学习使用 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 连接到 system:playback_1
JackDriver:将 SuperCollider:out_2 连接到 system:playback_2
SuperCollider 3 服务器已准备就绪。
JackDriver:最大输出延迟 42.7 毫秒
从服务器 localhost 接收通知消息
共享内存服务器接口初始化

我浏览了一些论坛,他们建议寻找输出设备选项并设置它们,我做了一个 -

ServerOptions.devices;

要查找设备列表,但我在帖子窗口中收到以下错误 -

错误:未绑定原语。 0 676
方法实例 { (0x21199c0, gc=01, fmt=00, flg=11, set=04)
实例变量 [15]
raw1 : 浮点数 0.000000 00000000 0080000C
raw2 : 浮点数 0.000000 00000300 03020003
代码:Int8Array 实例 (0x2119cc0, size=4, set=2)
选择器:无
常量:无
prototypeFrame : 数组实例 (0x2119c00, size=3, set=2)
上下文:无
argNames : SymbolArray 的实例 (0x2119b40, size=3, set=2)
变量名称:无
源代码:无
ownerClass : 类 Meta_ServerOptions (0x21113c0)
名称:符号“prListDevices”
原始名称:符号“_ListAudioDevices”
文件名符号:符号'/usr/share/SuperCollider/SCClassLibrary/Common/Control/Server.sc'
charPos : 整数 4025
}
错误:原始“无”失败。
失败。
接收方:

调用堆栈:
方法错误:报告错误 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 code = "ServerOptions.devices;"
var doc = nil
var ideClass =
进程:解释PrintCmdLine 0x3443c08
arg this =
^^ 前面的错误转储是针对 ERROR: Primitive 'none' failed.
失败。
接收方:无
开机 57110
本地主机
JackDriver:客户端名称是“SuperCollider”
SC_AudioDriver:采样率 = 48000.000000,驱动程序块大小 = 1024
JackDriver:连接系统:capture_1 到 SuperCollider:in_1
JackDriver:连接系统:capture_2 到 SuperCollider:in_2
JackDriver:将 SuperCollider:out_1 连接到 system:playback_1
JackDriver:将 SuperCollider:out_2 连接到 system:playback_2
SuperCollider 3 服务器已准备就绪。
JackDriver:最大输出延迟 42.7 毫秒
从服务器 localhost 接收通知消息
共享内存服务器接口已初始化
错误:未绑定原语。 0 676
方法实例 { (0x21199c0, gc=01, fmt=00, flg=11, set=04)
实例变量 [15]
raw1 : 浮点数 0.000000 00000000 0080000C
raw2 : 浮点数 0.000000 00000300 03020003
代码:Int8Array 实例 (0x2119cc0, size=4, set=2)
选择器:无
常量:无
prototypeFrame : 数组实例 (0x2119c00, size=3, set=2)
上下文:无
argNames : SymbolArray 的实例 (0x2119b40, size=3, set=2)
变量名称:无
源代码:无
ownerClass : 类 Meta_ServerOptions (0x21113c0)
名称:符号“prListDevices”
原始名称:符号“_ListAudioDevices”
文件名符号:符号'/usr/share/SuperCollider/SCClassLibrary/Common/Control/Server.sc'
charPos : 整数 4025
}
错误:原始“无”失败。
失败。
接收方:

调用堆栈:
方法错误:报告错误 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 code = "ServerOptions.devices;"
var doc = nil
var ideClass =
进程:解释PrintCmdLine 0x37c8708
arg this =
^^ 前面的错误转储是针对 ERROR: Primitive 'none' failed.
失败。
接收方:无

我是 supercollider 的新手,我很难找出错误的原因。请建议我如何解决这个问题。

提前致谢。

【问题讨论】:

  • 这看起来不像是一个编程问题。您可能会在 SuperUser 或技术特定论坛上做得更好。
  • 任何适合的 Stackexchange 论坛?不太喜欢其他论坛,这个地方舒服多了:)
  • 请看下面的答案。这是配置问题,不是编程问题。
  • 下面的答案不正确,我的耳机配置正确并且处于工作状态,请看我对下面答案的回复。这肯定不是硬件配置问题。可能是软件配置问题,可以通过程序来完成(我用的是SuperCollider IDE)。

标签: ide programming-languages supercollider


【解决方案1】:

我遇到了类似的问题(超级对撞机根本没有输出,只是完全完全沉默),这篇文章最终引导我找到了正确的解决方案。我认为这会对您和其他人有所帮助。

来自the ServerOptions documentation,我发现我可以通过环境变量配置 SC 如何与 jack 对话。

就我而言,我使用相关的环境变量启动 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 服务器的所有输入/输出以及当前连接,请运行

   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】:

    我遇到了同样的问题。我通过使用来自 KXStudio 的 Catia 发现了解决方案。见Catia Catia 是 JACK Patchbay。 (其他 patchbay 可用。QJackctl 和 Patchage 是示例)。在我的系统(戴尔 Studio 笔记本电脑上的 Ubuntu 14.04)上,SuperCollider 将其前 4 个输出映射到 4 个系统回放。前 2 个系统回放是扬声器,系统回放 3 和 4 是耳机。通过将 out1 和 out2 从 SC 重新映射到播放_3 和播放_4,我可以通过耳机听到它。所以,为 JACK 找一个接线盒,看看你看到了什么。 希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      在解决这个问题无数次之后,我设法让它工作:

      1. 将您的用户添加到audio linux 组。
      2. 使用cadence启动jack

      其他可能有用的资源:@​​987654321@

      【讨论】:

        【解决方案4】:

        首先:说“A primitive was not bound”的大而长的错误消息令人不快,但在这种情况下,它只是意味着您输入了错误的命令。我不知道你从哪里得到那个命令ServerOptions.devices,但这是错误的。也许该消息旨在告诉您输入s.options.device,这更明智,但这不是您需要做的。忘记这一点,忘记那长长的错误消息。

        其次:你在启动服务器时看到的消息是好的,它告诉你服务器已经启动并连接到插孔。超级对撞机很高兴。如果您从扬声器中听到声音而不是从耳机中听到声音(我认为您的意思是当您插入耳机时!),这不是超级对撞机问题,而只是关于设置耳机音量的标准操作系统问题。

        看来您使用的是 linux,所以在终端中运行命令alsamixer,这是检查耳机输出是否静音的好方法。如果您不熟悉,请使用man alsamixer 了解如何使用它。

        【讨论】:

        • 请注意,我可以在耳机中听到其他声音,例如播放音乐或视频时,但我特别无法听到 SuperCollider 的声音。另请注意,ServerOptions.devices 和 s.options.devices 是相同的。
        • 不是s.options.devices——应该是s.options.device
        • 恐怕很难进一步诊断,但我仍然认为耳机问题不是 SuperCollider 特有的。为了验证这一点,找到另一个使用插孔的音频软件并检查是否可以输出到耳机。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-26
        • 2018-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多