我知道我表面上在从事一系列基于文本的游戏,但是在编程时,我经常碰到一些很酷的事情,以至于我放弃正在做的事情,对自己说:“我必须尝试一下。 ”“上周五是其中一次。我的队列比我晚了三个星期,展示了他们的项目,让我着迷的是一个可以根据用户输入即时创建音乐的程序。 当我问到对其进行编程的人时,他们向我介绍了一个名为Sonic Pi的程序,该程序是用Ruby创建的,并使用类似Ruby的命令和语法实时创建音乐。
这是一个巨大的启示,因为我最喜欢编码的是音乐。 自八岁起我就一直在演奏一种乐器或其他乐器-先是小提琴,然后是小号,然后是低音提琴,最后是吉他。 在整个中学和高中期间,我一直是一个不羞怯的乐队怪胎,并且在我可用的几乎所有合奏中演奏:乐团,音乐会乐队,爵士乐队,游行乐队,鼓舞乐队,甚至是新泽西青年交响乐团,在我仅15岁的时候,我就被公认为是全州五个最好的高中贝斯手之一。 我在整个大学期间都曾参加过乐队演出,其中大多数都很糟糕(主要是由于我的室友,他是我见过的最勤奋,才华最低的音乐家)。 音乐是我生命中的重要角色,因为我是狂热的演唱者,偶尔的DJ和业余电子音乐家。
因此,不用说,我对通过代码制作音乐的前景非常感兴趣,并给了Sonic Pi一个机会。
该程序似乎令人生畏,但实际上非常易于使用,并附带了非常有用的教程。 可以通过“弹奏”方法创建单个音符,该方法以两种格式之一将一个音符作为参数—用1到88之间的数字表示(即“弹奏60”),它对应于该音符在钢琴上的位置。键盘或音乐符号(即“弹奏C4”,表示钢琴第4个八度音阶中的C)。 从理论上讲,如果他们愿意对数字输入进行一些反复试验,就可以在没有任何音乐理论知识的情况下制作音乐。 数字输入还可以通过提供“播放”小数作为参数来创建标准键盘上找不到的音符,例如“播放50.25”来创建四分音(从音乐的角度来看,我不除非您是中国戏曲迷,否则建议您这么做。
我们还可以告诉Sonic Pi同时演奏多个音符,以创建和弦,例如在钢琴或吉他上可以找到的和弦。 下面是一个简单的E强力和弦,仅包含两个音符:
该程序还允许我们将这些效果应用到这些音符,类似于您通过录音棚操纵或效果踏板找到的音符。 作为Rubyists,这样做的语法对于我们来说应该非常熟悉,因为它涉及将注释放入具有预期效果的块中,如下所示:
摇滚! 某些效果在程序中被特别地命名(例如,“ nrbpf”是什么?),并且缺少许多标准的效果(对不起,音乐家讲话进入:有回音,但没有适当的延迟,例如,没有合唱,也没有移相器),但是有足够的空间为使用Sonic Pi的任何人提供相当不错的武器库。
Sonic Pi还附带了一系列令人印象深刻的样本,其中包括世界各地生产者使用的一些基岩经典样本:“ bass_drop”应该非常不言自明,“ tr808”是有史以来最受欢迎的鼓机的声音。 ,“ loop_amen”是著名的“ Amen,Brother”鼓点,从NWA到Bjork,每个人都在使用。
我也坚信Sonic Pi在开发过程中一定会从印度人那里得到很多意见,因为它具有大量(非常酷)的tabla样本选择。 也可以导入样本,这对于制作自己的声音非常方便。 但是,样本真正闪耀的地方是循环,我们可以通过将块中的注释传递给“ loop”命令来创建循环,就像在标准Ruby中那样:
甚至有可能使用嵌套循环和迭代来创建一些非常复杂的鼓声,例如,将’2.times do:drum_heavy_kick’和’2.times do:drum_snare_hard’放入’4.times do:drum_cymbal_closed以创建标准的摇滚节奏。 (我不知道为什么将踩-简单地称为“ cy”。但是,由于样本很体面,所以我可能会用它拍打陷阱的节奏。)这样,当我们演奏和弦和旋律。
在创建旋律时,我已经介绍了如何更早地创建音符,但是我们缺少休息和持续音符。 要记住的绝对必要的一件事是程序的结构使其拍子在4/4拍号上运行,节奏由用户通过’BPM’参数控制。 (这是电子音乐的标准,因为除了最有才华的DJ以外,几乎所有人都不可能使用标准时间来进行混音。)因此,所有音符的持续时间或休止符都与四分音符有关。 以上面的屏幕快照中的“ sleep”方法为例,“ sleep”代表四分之一的休息,“ sleep 0.5”代表八分之一的休息,“ sleep 2”代表半个休息,依此类推。 它和note方法中可选的’sustain’参数,用于确定音符的持续时间(四分音符的默认值为1,但第16个音符可以使用’sustain .25’,整音符可以使用’sustain 4’等) ,这些工具既可以让我们增加节奏的复杂性,又可以创造出并非简单的四分音符的旋律。
前述方法和参数实际上是制作音乐的全部。 还有许多其他方式可以操作音符,例如将音量的“ amp”(幅度的缩写),“ release”和“ cutoff”参数传递给他们以确定起音和淡出等等,它们可以产生一些使用时声音很酷。 例如,我整理的第一件事情是基本的酸房子节拍,只使用了已经提到的方法:
实际上,增加复杂性只是在添加多层轨道之前添加其他循环即可。
不过,关于Sonic Pi的真正有趣的是,人们可以在循环时更改代码,并且可以在播放中更新循环,从而将Ruby变成一种可以像键盘一样可以现场演奏的乐器。 。 虽然我永远不会只使用香草版本(我想要一个更大的样本库以及音序器)来实现此目的,但是通过允许我们使用代码来创作音乐,它仍然带来了许多有趣的可能性。