MIDI输出:活用手边合成器
如果你手边正好有合成器,电子琴,并且配有USB连接线,可以试着用sonic pi程序控制鼓机或合成器的音序。这样可以对sonic pi本身有限的音源做补充。如果你的合成器不带音序器,sonic pi程序正好可以补足。我认为,如果你习惯程序写法,sonic pi甚至会成为非常好用的音序器。
以控制OP-Z为例
我在实际操作时使用op-z合成器,这台设备同时包含鼓机与合成器,共8个轨道。所以,测试的结果在一定程度上能体现大部分鼓机合成器被程序操控时展现的性能。
首先将设备USB线接入电脑,点击sonic pi 最右侧按钮 [Prefs],找到IO选项卡,MIDI端口会自动显示接入设备的列表,如果你的设备没有被查找到,点击[重置MIDI]。这一步应该没有任何难度。
当你的设备名称成功显示在设备列表里的时候,可以在合成器键盘上随意演奏,编辑器右侧[标记]一栏会显示实时的MIDI信号,它以‘/midi/’开头,之后是你的设备名称。请记住你的设备名称,之后你需要将这个名称原样填入端口port。
最后开始编写程序向合成器发送MIDI信号,我使用的格式,没有涉及note_on/ note_off的写法,这样看起来更清爽。
use_bpm 125
live_loop :kick do
midi :C4, sustain: 0.5, port: "op-z", channel: 1
sleep 1
end
live_loop :snare do
midi :Bb3, port:"op-z",channel: 2
sleep 2
end
live_loop :perc do
seq = [:A3,:B3,:Bb3]
t=[0.25,0.25,0.125]
midi seq.look, port: "op-z",channel: 4
sleep 2.770
end
Live loop 每一个轨道依次对应op-z的每个轨道。
Live loop内演奏的指令很重要,请认真填写下面的参数:
- Midi 需要填写音名或midi数
- Port 填写接入设备名称
- Channel 填写轨道序号,以op-z为例,8轨的序号依次为1-8
- ADSR参数请根据需要设置,不过我个人认为音色部分还是在设备上直接设置比较好。
其余音序与时值的写法与之前介绍的鼓机写法(第一章第四节-第五节)基本相似。
就这样,我使用sonic pi 控制op-z前4轨鼓组。
需要注意的问题
虽然sonic pi程序能正确执行,但设备上有一些问题需要注意:
由于小型合成器键盘按键数量有限,很多设备都具备8度上下移动的功能。在写程序时,首先要确保sonic pi发送的midi note正好就在当前键盘8度范围内,不然声音会变得奇怪。
单根USB线控制3或3个以上轨道时,信号会出现拥堵。这是我在控制四轨道鼓组时发现的问题,可能这样的测试就会达到MIDI信号经过USB线传输的上限。
所以比较保险的做法还是一根USB线只控制一个轨道,如果没有问题再添加下一个轨道。这可能和你编写的pattern有很大关系,如果pattern本身没有太多轨道重叠的部分,你可能也是安全的。
我手头没有USB Hub ,所以没有相关测试。但是鉴于上述现象,情况可能不乐观。
一些建议
经过这个测试,我认为 一根USB连接一台设备内一个轨道最简单保险。
如果哪个轨道更适合被程序控制,我个人觉得贝斯或者percussion会更有趣,也值得使用程序的方式操纵音序。用程序控制velocity与节奏输出,自由设置随机trigger与LFO,可在一定程度上超越op-z原生音序器。
之后,在设备上调整音色,控制实时效果,应该能达到目前最理想的效果。
我想一些不带键盘的桌面合成器应该适合这样的系统。