ide - 耳机上听不到 SuperCollider 的声音

标签 ide programming-languages supercollider

我刚刚开始使用 super 对撞机学习音频编程。 当我播放声音时,我可以在扬声器上听到它,但在耳机上听不到。

我在启动服务器时收到以下消息 -

booting 57110
localhost
JackDriver: client name is 'SuperCollider'
SC_AudioDriver: sample rate = 48000.000000, driver's block size = 1024
JackDriver: connected system:capture_1 to SuperCollider:in_1
JackDriver: connected system:capture_2 to SuperCollider:in_2
JackDriver: connected SuperCollider:out_1 to system:playback_1
JackDriver: connected SuperCollider:out_2 to system:playback_2
SuperCollider 3 server ready.
JackDriver: max output latency 42.7 ms
Receiving notification messages from server localhost
Shared memory server interface initialized

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

ServerOptions.devices;

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

ERROR: A primitive was not bound. 0 676
Instance of Method { (0x21199c0, gc=01, fmt=00, flg=11, set=04)
instance variables [15]
raw1 : Float 0.000000 00000000 0080000C
raw2 : Float 0.000000 00000300 03020003
code : instance of Int8Array (0x2119cc0, size=4, set=2)
selectors : nil
constants : nil
prototypeFrame : instance of Array (0x2119c00, size=3, set=2)
context : nil
argNames : instance of SymbolArray (0x2119b40, size=3, set=2)
varNames : nil
sourceCode : nil
ownerClass : class Meta_ServerOptions (0x21113c0)
name : Symbol 'prListDevices'
primitiveName : Symbol '_ListAudioDevices'
filenameSymbol : Symbol '/usr/share/SuperCollider/SCClassLibrary/Common/Control/Server.sc'
charPos : Integer 4025
}
ERROR: Primitive 'none' failed.
Failed.
RECEIVER:
nil
CALL STACK:
MethodError:reportError 0x3601498
arg this =
Nil:handleError 0x1f730f8
arg this = nil
arg error =
Thread:handleError 0x35fcfd8
arg this =
arg error =
Object:throw 0x3980c58
arg this =
Object:primitiveFailed 0x33395a8
arg this = nil
Interpreter:interpretPrintCmdLine 0x3d061e8
arg this =
var res = nil
var func =
var code = "ServerOptions.devices;"
var doc = nil
var ideClass =
Process:interpretPrintCmdLine 0x3443c08
arg this =
^^ The preceding error dump is for ERROR: Primitive 'none' failed.
Failed.
RECEIVER: nil
booting 57110
localhost
JackDriver: client name is 'SuperCollider'
SC_AudioDriver: sample rate = 48000.000000, driver's block size = 1024
JackDriver: connected system:capture_1 to SuperCollider:in_1
JackDriver: connected system:capture_2 to SuperCollider:in_2
JackDriver: connected SuperCollider:out_1 to system:playback_1
JackDriver: connected SuperCollider:out_2 to system:playback_2
SuperCollider 3 server ready.
JackDriver: max output latency 42.7 ms
Receiving notification messages from server localhost
Shared memory server interface initialized
ERROR: A primitive was not bound. 0 676
Instance of Method { (0x21199c0, gc=01, fmt=00, flg=11, set=04)
instance variables [15]
raw1 : Float 0.000000 00000000 0080000C
raw2 : Float 0.000000 00000300 03020003
code : instance of Int8Array (0x2119cc0, size=4, set=2)
selectors : nil
constants : nil
prototypeFrame : instance of Array (0x2119c00, size=3, set=2)
context : nil
argNames : instance of SymbolArray (0x2119b40, size=3, set=2)
varNames : nil
sourceCode : nil
ownerClass : class Meta_ServerOptions (0x21113c0)
name : Symbol 'prListDevices'
primitiveName : Symbol '_ListAudioDevices'
filenameSymbol : Symbol '/usr/share/SuperCollider/SCClassLibrary/Common/Control/Server.sc'
charPos : Integer 4025
}
ERROR: Primitive 'none' failed.
Failed.
RECEIVER:
nil
CALL STACK:
MethodError:reportError 0x35be518
arg this =
Nil:handleError 0x1ee0b78
arg this = nil
arg error =
Thread:handleError 0x3470ab8
arg this =
arg error =
Object:throw 0x3636a78
arg this =
Object:primitiveFailed 0x3cd86c8
arg this = nil
Interpreter:interpretPrintCmdLine 0x3d44b98
arg this =
var res = nil
var func =
var code = "ServerOptions.devices;"
var doc = nil
var ideClass =
Process:interpretPrintCmdLine 0x37c8708
arg this =
^^ The preceding error dump is for ERROR: Primitive 'none' failed.
Failed.
RECEIVER: nil

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

提前致谢。

最佳答案

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

来自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来查看您的系统是否按照您想要的方式设置!

关于ide - 耳机上听不到 SuperCollider 的声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25044345/

相关文章:

clojure - 使用 Overtone 从磁盘读取声音文件?

intellij-idea - Intellij中打开项目和导入项目有什么区别?

c++ - 从 DLL 调用 MATLAB

ide - 你用什么来实现 Ext JS 配置对象的智能感知?

javascript - 强制 NetBeans 为假定特定类型的 JavaScript 变量提供代码完成

c++ - C++ 是同时具有指针和引用的单一语言吗?

programming-languages - "or"操作符无需再次重复左手条件

python - 在 python 中使用 super 对撞机

programming-languages - 我需要一个用于时间计算的 DSL

python - SuperCollider 不启动 DotFox