问题描述
我在 supercollider 上为每个乐器创建了单独的组,以便我可以将 FX(如回声)应用到组中,并且只影响一个乐器,而不是该 sc 服务器上播放的所有乐器。
在节点树上,echo synthdef 正确出现在所需组(框)中,并且 FX 应用于该组中的仪器,但也错误地将 echo 应用于同一服务器上其他组中的节点。>
我注意到它会影响所有较高数量的组,而不是较低数量的组。将 FX(回声)应用于第 1 组或第 2 组也会将相同的 FX 应用于第 3、4、5、6、7、8 组等,但将 FX 应用于第 8 组似乎不会影响第 1、2、3 组,4,5,6,& 7。
我已经在以下系统/版本上测试过这个......
-
ubuntu (Linux) 上的超级对撞机版本 (1:3.10.0+repack-1ubuntu2) Optiplex-3010 5.4.0-70-generic #78-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux)
-
Linux raspBerrypi 上的超级对撞机版本 (1:3.10.0+repack-1+rpi1) 4.19.75-v7l+ #1270 SMP armv7l GNU/Linux
-
Linux 上的超级对撞机版本 (1:3.8.0~repack-2) 5.0.0-32-generic #34~18.04.2-Ubuntu SMP 2019 i686 i686 i686 GNU/Linux
这是一个已知的错误吗?我可以对超级对撞机代码进行任何手动更改来解决这个问题吗?如果没有,那么每个仪器都必须是单独的 RPi4,这会导致每个 RPi 的利用率不足并显着增加项目成本。
致所有 SCcoders,
菲尔
请求的代码:
(SynthDef(\echo,{|in,out,length = 1,fb = 0.6,sep = 1|
var input = In.ar(in,2);
var Feedback = LocalIn.ar(2);
var output = LeakDC.ar(Feedback*fb + input);
LocalOut.ar(DelayC.ar(output,length,sep));
ReplaceOut.ar(out,output);
}).writeDefFile("/home/phil/Supercollider/syndef");)
我通过 TCP/IP 通过 OSC 发起回声,但基本上它会被调用:
/s_new s 'echo' i 1028 i 0 i 8 //in this case 1028 is the node for track 8
//and 8 is the SC group
并调整:
/n_set i 1028 s 'fb' f 0.7
解决方法
没有看到任何代码,这很难回答,但我想知道您是否使用公共汽车?您的乐器组应该输出到回声总线,该总线应该输出到您希望声音接下来的位置 - 另一个 FX 总线或 0。
您想绘制组的框图,连接输入和输出。请记住,任何 FX 组都可以从多个位置接收输入,但只有一个输出。这意味着您最终可能会多次运行同一个 FX 合成器,例如,如果您想要在 A 组和 B 组上回声,但随后又希望 B 组进入压缩器。
确保声明每条总线,给它一个好的变量名,并记住在合成器创建时将其作为参数传递。