通过Function设计工具
这一年来,我在用sonic pi写代码时,都没有用到编写函数的功能,毕竟这不是高度工业化的代码。
不熟悉技术与工程上的事,并不会影响你玩sonic pi。但是玩了一段时间,你会发现自己每次都会写出功能类似的一段代码。作为一个乐意偷懒的人你当然不想重复劳动了。所以这个时候学习function写法最合适不过。
事实上,你时时刻刻都在使用别人编写的function。你调用的每个指令,都是作者封装好的function。DAW加载的插件,也是由function堆积起来的完整软件,只是功能更复杂。造工具的人本身就很懒,为了有时间玩才会钻研造轮子的方法,而掉进造轮子的兔洞而忘记为什么玩耍的人也是有的。较为成熟的工具常常被打磨得如同乐高积木一样,到使用时按需组装即可成型。
今天介绍的方法就 是教你学习这种聪明的偷懒方法。至于做出的功能模块好不好用,怎么用,都由你说了算。不过一般工具,也是经历作者自用到推荐给别人用的过程,所以不用管其他的事,你先动手写个function就对了。
Function的一般写法
假设你现在写了一段非常重复的代码,用了很多次复制粘贴,比如像这样:
play 50
sleep 1
play 55
sleep 0.5
sleep 1
2.times do
play 50
sleep 1
play 55
sleep 0.5
end
那么现在你可以使用function了,将其命名为:foo。
define 与 end 中间复制粘贴会被重复使用的内容。
define :foo do
play 50
sleep 1
play 55
sleep 0.5
end
foo
sleep 1
2.times do
foo
end
在后面执行的部分,重复的内容都用foo代替,你就可以尽情偷懒了。而且调用foo以后,代码立刻变得清爽很多。
应用与建议
除了音色预制(参见第二章第一节:音色预制),一些MIDI插件也能轻松做出来。效果应该能媲美Live里的MIDI插件。自己设定公式,应该是编程环境带给用户最大的自由。
不过在写好funtion同时,也一定记得做好笔记。音色预制可以不用记录,但是像MIDI插件则有必要为他们编写完整文档。因为一个星期或是一个月后,你大概率会读不懂自己写的代码。
为了能在日后重复使用之前好不容易做好的工具,请用简单易读的文档提升工具的复用机会吧。
以别人能看懂文档为标准,为自己写好的function编写说明。
格式可参考sonic pi官方文档,有必要记录的内容如下:
- function 作用概述
- 传入的参数说明与其格式(是纯数值还是文本)
- 输出结果
- 一段示例程序,复制粘贴后可直接运行
刚开始时,文档可以以注释的形式写在function旁边。
等到function数量越来越多时,就有必要在wiki里记录(wiki是一种文档工具)。