问题标签 [supercollider]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 运行 Overtone 和 SuperCollider 失败
我无法使用 supercollider 服务器获得泛音,我正在遵循https://github.com/overtone/overtone/wiki/Getting-Started上的入门指南,我通过 qjackctl 运行了 Jack 音频服务器,然后我运行 SuperColliderscsynth -u 8888
产生以下输出:
然后在 clojure repl 我连接到 SC 服务器:
然后当我运行时(definst foo [] (saw 220))
出现以下错误:
FAILURE IN SERVER /g_new Group 31 not found
如果我尝试
使用 sclang 运行,(demo (sin-osc))
我也会得到错误,并且 scsynth 也会输出:FAILURE IN SERVER /s_new Group 7 not found
它确实会发出声音。我正在使用 Linux 4.9.27 实时 Manjaro 内核和 HDA Intel PCH 声卡运行 Manjaro Linux。
macos - 超级对撞机作为 midi patchbay
我如何使用 Supercollider (3.3) 作为 midi patchbay
我获取源和目标
MIDIClient.init;
MIDIEndPoint("USB Axiom 25", "Anschluss 1")
并连接一个源。
MIDIIn.connect(device: 3);
我选择一个目的地,给它一个变量
m = MIDIOut.newByName("FluidSynth virtual port (28209)", "FluidSynth virtual port (28209)");
并通过点击发送 midi 事件。
m.noteOn(1, 60, 60);
m.noteOff(1, 60, 60);
但是如何通过超级对撞机从源直接发送到目的地呢?
supercollider - 为什么 EnvGen 在每次循环迭代时都会重新启动以及如何防止这种行为?
如何在循环中使用 EnvGen,使其不会在循环的每次迭代中重新启动?
我需要它:分段合成。我想要例如第一个和第二个巴生之间 50 毫秒的 xfade,然后是第二个和第三个巴生之间的 50 毫秒 xfade,然后是第三个和第四个巴生之间的 50 毫秒 xfade,依此类推,我希望这个串联作为一个整体被一个包络调制.
不幸的是,EnvGen 似乎在播放连续巴生对的循环的每次迭代中都从头开始重新启动。我想要一个poiiiiinnnnnnnnnng,但无论我尝试什么,我得到的都是popopopopopopopopopo。
2019年编辑:
好的,既然没有人会回答“如何实现目标”的问题,我现在将这个问题降级为“为什么这种特殊方法不起作用”,也改变了标题。
在我粘贴一些代码之前,先解释一下:这是一个非常简化的示例。虽然我最初的愿望是使用包络调制复杂的分段生成的声音,但这个简化的示例仅从 SinOsc 的输出中“剪裁”了 100ms 段,只是为了人为地创建“分段生成”情况。
在这个程序中发生的情况是,EnvGen 似乎在每次循环迭代时重新启动:包络从 t=0 重新开始。我希望得到一个 1 秒长的呈指数衰减的声音,就像拨弦一样。由于信封在每次循环迭代开始时重新启动,我得到的是一系列 100 毫秒的“ping”。
我该如何防止这种情况发生?
这是代码:
(这个问题,我最初挣扎了几个月但没有成功,实际上导致我把学习 SuperCollider 的努力搁置了两年,现在我要从上次中断的地方继续。)
supercollider - 创建按钮的函数
我正在尝试创建一个函数来创建一个按钮(所以保持“干净”的代码)。
这是代码:
错误是:错误:未定义变量“createButtonFunc”。为什么?
对不起,我是初学者。
谢谢!
sound-synthesis - 在 SuperCollider 中设置 FFT 链的各个 bin
我正在研究图像到声音的项目,并尝试在SuperCollider中实现加法合成。我想使用逆 DFFT 对(数百个)正弦波求和,而不是SinOsc
为每个正弦波创建一个合成器。
所有 SuperCollider 文档都说,它消耗了由(并由函数转换)IFFT
产生的称为“FFT 链”的东西:FFT
PV_*
但是对于我的应用,我不需要FFT 阶段,因为我已经知道我的信号在频域中是如何表示的。我想要的是:
“频域信号”是一个 numpy 数组序列,表示我在 Python 应用程序中已经拥有的频域信号。所以,我需要将此信息传递给 SuperCollider。
据我了解, FFT 链意味着某种数据流,但我不明白如何手动将数据写入其中。
我也尝试过使用静音 FFT 链(例如 get FTT
of Silence.ar
),但我也不知道如何手动设置单个频率箱。
supercollider - 使用 sample Buffer 控制 Env 的幅度和释放
我有一个非常短的示例文件,它在以下循环中通过合成器播放。
我希望样本的幅度和持续时间与单独振荡器的 Env 的幅度和释放相匹配。
(很快,一个实时输入将取代示例文件,如果这有助于澄清我所采用的路径。)
问题 #1
以下 Env + SinOsc 尝试无效:
虽然使用 Pulse(无 Env)的类似练习有效:
问题 #2
我不确定如何访问缓冲区长度,以用作 Env 的版本。
supercollider - 在 Supercollider 中循环缓冲区数组
我正在尝试遍历缓冲区数组,每个缓冲区都包含从磁盘读取的声音样本,但我在让 SynthDef 将其指针重置为缓冲区时遇到问题。
我做了以下事情:
假设我有一个声音文件文件夹,并且我已将它们全部读入一个名为“~buffers”的缓冲区数组中
我只想按顺序浏览数组,背靠背播放样本并在最后一个之后停止。
我定义了一个简单的 SynthDef,然后把调用它的 Synth 放到一个 Routine 中:
/li>
它没有按预期工作——合成器总是播放相同的声音,第一个声音,尽管持续时间对应于不同的样本。
我认为问题可能是我的 \playbuffer SynthDef 中的函数(至少根据帮助文件)没有在循环内使用不同的 bufnum 参数重新评估。
事实上,如果我使用 Buffer.play 动态创建 synthDef 和 Synth,我可以遍历缓冲区。用此代码替换我的例程有效:
但是:它非常粗糙,因为现在我无法操纵缓冲区输出,只能通过 Buffer.play 的 mul 参数更改幅度。我想做的是在我自己的代码中复制 Buffer.play 的行为——动态创建 SynthDef 和 Synth。但我没有运气。事实上我不知道从哪里开始,可能是因为我没有完全掌握 SuperCollider 的服务器对功能的处理。我应该制作一个合成器功能并在例程的循环中使用它吗?或者我应该在循环内移动 SynthDef 的定义(这似乎是等价的)?我尝试了后者,但仍然播放相同的声音。
也许我走错了路——我对 SuperCollider 很陌生。
command-line - 如何在 SuperCollider 的命令行 REPL 中进行多行输入?
正如标题所说,SuperCollider 的命令行 REPL 中如何进行多行输入?例如,在 Haskell 中,您使用 :{ 和 :} 在 ghci 中打开和关闭多行条目。
javascript - Javascript Web 音频多通道平移算法
我最近找到了一份工作,为我学校的一个新虚拟现实教室编程音频系统。我的第一个任务是为具有任意数量扬声器的音响系统提供平移算法。因此,如果有 20 个扬声器,它需要能够在 20 个扬声器的一维阵列中平移声音,其中平移旋钮的最小值将在第 1 个扬声器中,最大值将在第 20 个扬声器中,并且随着您逐渐增加旋钮,它应该让音频连续通过每个扬声器。
我让它在 SuperCollider ( http://doc.sccode.org/Classes/PanX.html ) 中工作,但他们需要音频系统在 Javascript 中。我应该使用任何 API 或 npm 包吗?我一直在考虑只使用通道分切器和网络音频 api ( https://developer.mozilla.org/en-US/docs/Web/API/ChannelSplitterNode )并修改所有通道的增益相对于平移旋钮的位置,但这感觉像是一种幼稚的方法。有没有人在 javascript 中找到任何提供用于处理任意数量频道的工具的包或 api?我已经看过但似乎找不到任何东西。我也在 javascript 中找到了 Ambisonics 工具,但系统不会设置球形扬声器,所以这并不理想。
谢谢!肖恩
audio - Ubuntu + SuperCollider,如何杀死 scsynth
我刚开始使用 SuperCollider(64 位 ubuntu 16.04 上的 3.6.6 版)
当我启动我的服务器(默认服务器)时,所有其他流媒体停止工作(youtube、spotify 等)
即使我退出后它们仍然不起作用我尝试了 s.quit;, s.freeAll;, 'stop', s.killAll; 关闭程序等(这些以各种顺序进行的各种组合)。
此外,我尝试了 ps ax | grep scsynth并杀死了该 pid,但该进程不断重生(即使我没有杀死它,如果我运行ps ax | grep scsynth两次,我会得到一个新的 pid)
有什么想法可以释放 SC 从我的流媒体平台中获取的他们需要的东西(也许是 Jack,也许是其他人,我不确定)?