使用Supercollider的SynthDef合成器音色
最近在逛in_thread论坛的时候发现,一些sonic pi的玩家已经不满足于sonic pi内置的合成器引擎了,纷纷求助技术大佬调用外部合成器的方法。我也曾试过用OSC联通Live。但实际运行程序时,笔记本已经不堪重负了。所以看到sonic pi允许调用supercollider的合成器预制文件synthdef时,预感这应该是一个能减轻CPU负担的方式。
这次工作流程是从SC保存一个合成器预制文件,然后在sonic pi里找到这个预制,并使用这个音色演奏音乐。这篇笔记参考yuppa.org/fms_music17/的课程笔记,作者是sonic pi与sc双修的强人。稍后我也想学习一遍他写的教案(虽然不会日语)。
开始动手
简单来说,SynthDef是supercollider定义合成器的一套模板。
使用writeDefFile可以导出synthdef文件,比如像这样:
(
SynthDef.new("Your synth name",{var outArray;
OutArray = [SinOsc.ar(440,0,0.2),SinOsc.ar(442,0,0,0.2)];
Out.ar(0,outArray)
}).writeDefFile("C:/Users/Administrator/Documents")
)
自定义参数后,可以用writeDefFile输出一个二进制文件(填上要保存的路径就OK),这个文件不能被预览,文件名后缀是scsyndef。如果用Notepad打开,里面全是给机器看的乱码,并没有可供修改的脚本。
输出的文件名是你给synthDef自定义的名称
接下来,我们来到sonic pi最右上角的Preferences,在Audio选项卡页面勾选Enable external synth and Fx。打开这个开关,你就能调用之前输出的文件了。
接下来我们试试看piTest.scsyndef听起来怎么样。load_synthdefs 需要填入刚才输出文件所在的地址,use_synth 填入文件名,之后就可以当做内置合成器直接使用了。
load_synthdefs "C:/Users/Administrator/Desktop/sonic pi"#directory
use_synth :piTest #file name
live_loop :live do
with_fx :flanger do
use_random_seed 8
32. times do
3. times do
ns =(scale :C1,:mixolydian,num_octaves: 8)
play ns.choose, attack: 0.0, release: 2.0, amp: 1.5
end
sleep 0.25
end
end
end