之前看到了一篇介绍Sonic Pi的文章,大意就是说通过Coding来完成编曲的工作,觉得很有意思,于是去官网看了一下。Slogan很吓人,直接是“future of music”,在Github开源。
下完了以后和想象中的有些许差距。Qt界面一贯的诡异感有些猝不及防,看了窗口下面的tutorial摸索了一下发现也不仅仅只是会Coding就行了,还是得会一些基本的音乐制作知识,比如attack、release这些术语,还有音乐合成器之类的玩意。直接通过Coding可以调整这些参数,不过前提是得明白每一个是个什么意思。
总而言之玩了一圈下来,目前感觉噱头大于实际。因为通过Coding来调整相应音符(或者音轨还是什么玩意儿的)的参数可能在一些专业的音乐制作软件中远不及什么属性栏直接修改来的快一些。所以说到底不过是写程序的人们自娱自乐罢了。
好像也可以导出MIDI音轨之类的,不禁让我想起以前famicom等8位机时代的程序员,又要会游戏开发,又要会图形(精灵)绘制,还要会一手MIDI音乐编写,确实是技多不压身啊。虽然这个软件不能直接还原当时程序员们的工作,不过也能感受感受一下氛围罢了。
反正玩了一个多小时我的水平也就是类似于用Arduino的蜂鸣器放电子屁音的水准,局限也就在这了,贴一个Bad Apple的代码,有兴趣的可以自己修改看看。
顺带一提,我还蛮喜欢这个live_loop全局循环的功能的。
# Coded by Mundanity Fan
load_sample :drum_heavy_kick
live_loop :drums do
sample :drum_heavy_kick, rate: 0.8
sleep 0.5
sample :drum_heavy_kick, rate: 0.8
sleep 0.5
sample :drum_heavy_kick, rate: 0.8
sleep 0.5
sample :drum_heavy_kick, rate: 0.75
sleep 0.125
sample :drum_heavy_kick, rate: 0.75
sleep 0.125
sample :drum_heavy_kick, rate: 0.75
sleep 0.125
sample :drum_heavy_kick, rate: 0.75
sleep 0.125
sample :drum_heavy_kick, rate: 0.8
sleep 0.5
sample :drum_heavy_kick, rate: 0.8
sleep 0.5
sample :drum_heavy_kick, rate: 0.8
sleep 0.5
sample :drum_heavy_kick, rate: 0.75
sleep 0.25
sample :drum_heavy_kick, rate: 0.75
sleep 0.25
end
define :starter do
use_synth :blade
play :A3
sleep 0.5
sleep 0.125
play :A3
sleep 0.125
play :G3
sleep 0.125
play :A3
sleep 0.125
play :A3
sleep 0.5
sleep 0.125
play :A3
sleep 0.125
play :G3
sleep 0.125
play :A3
sleep 0.125
play :A3
sleep 0.5
sleep 0.125
play :A3
sleep 0.125
play :G3
sleep 0.125
play :A3
sleep 0.125
play :A3
sleep 0.25
play :A3
sleep 0.125
play :C4
sleep 0.125
play :D4
sleep 0.25
play :C4
sleep 0.125
play :D4
sleep 0.125
play :A3
sleep 0.5
sleep 0.125
play :A3
sleep 0.125
play :G3
sleep 0.125
play :A3
sleep 0.125
play :A3
sleep 0.5
sleep 0.125
play :A3
sleep 0.125
play :G3
sleep 0.125
play :A3
sleep 0.125
play :A3
sleep 0.5
sleep 0.125
play :A3
sleep 0.125
play :G3
sleep 0.125
play :A3
sleep 0.125
play :D4
sleep 0.25
play :C4
sleep 0.125
play :D4
sleep 0.125
play :C4
sleep 0.25
play :A3
sleep 0.125
play :C4
sleep 0.125
end
define :part1_1 do
use_synth :piano
play :A4
sleep 0.25
play :B4
sleep 0.25
play :C5
sleep 0.25
play :D5
sleep 0.25
play :E5
sleep 0.5
play :A5
sleep 0.25
play :G5
sleep 0.25
play :E5
sleep 0.5
play :A4
sleep 0.5
play :E5
sleep 0.25
play :D5
sleep 0.25
play :C5
sleep 0.25
play :B4
sleep 0.25
play :A4
sleep 0.25
play :B4
sleep 0.25
play :C5
sleep 0.25
play :D5
sleep 0.25
play :E5
sleep 0.5
play :D5
sleep 0.25
play :C5
sleep 0.25
play :B4
sleep 0.25
play :A4
sleep 0.25
play :B4
sleep 0.25
play :C5
sleep 0.25
play :B4
sleep 0.25
play :A4
sleep 0.25
play :G4
sleep 0.25
play :B4
sleep 0.25
end
define :part1_2 do
use_synth :piano
play :A4
sleep 0.25
play :B4
sleep 0.25
play :C5
sleep 0.25
play :D5
sleep 0.25
play :E5
sleep 0.5
play :A5
sleep 0.25
play :G5
sleep 0.25
play :E5
sleep 0.5
play :A4
sleep 0.5
play :E5
sleep 0.25
play :D5
sleep 0.25
play :C5
sleep 0.25
play :B4
sleep 0.25
play :A4
sleep 0.25
play :B4
sleep 0.25
play :C5
sleep 0.25
play :D5
sleep 0.25
play :E5
sleep 0.5
play :D5
sleep 0.25
play :C5
sleep 0.25
play :B4
sleep 0.5
play :C5
sleep 0.5
play :D5
sleep 0.5
play :E5
sleep 0.5
end
define :part2_1 do
use_synth :piano
play :G5
sleep 0.25
play :A5
sleep 0.25
play :E5
sleep 0.25
play :D5
sleep 0.25
play :E5
sleep 0.5
play :D5
sleep 0.25
play :E5
sleep 0.25
play :G5
sleep 0.25
play :A5
sleep 0.25
play :E5
sleep 0.25
play :D5
sleep 0.25
play :E5
sleep 0.5
play :D5
sleep 0.25
play :E5
sleep 0.25
play :D5
sleep 0.25
play :C5
sleep 0.25
play :B4
sleep 0.25
play :G4
sleep 0.25
play :A4
sleep 0.5
play :G4
sleep 0.25
play :A4
sleep 0.25
play :B4
sleep 0.25
play :C5
sleep 0.25
play :D5
sleep 0.25
play :E5
sleep 0.25
play :A4
sleep 0.5
play :E5
sleep 0.25
play :G5
sleep 0.25
end
define :part2_2 do
use_synth :piano
play :G5
sleep 0.25
play :A5
sleep 0.25
play :E5
sleep 0.25
play :D5
sleep 0.25
play :E5
sleep 0.5
play :D5
sleep 0.25
play :E5
sleep 0.25
play :G5
sleep 0.25
play :A5
sleep 0.25
play :E5
sleep 0.25
play :D5
sleep 0.25
play :E5
sleep 0.5
play :A5
sleep 0.25
play :B5
sleep 0.25
play :C6
sleep 0.25
play :B5
sleep 0.25
play :A5
sleep 0.25
play :G5
sleep 0.25
play :E5
sleep 0.5
play :D5
sleep 0.25
play :E5
sleep 0.25
play :D5
sleep 0.25
play :C5
sleep 0.25
play :B4
sleep 0.25
play :G4
sleep 0.25
play :A4
sleep 0.5
play :E5
sleep 0.25
play :G5
sleep 0.25
end
define :part2_3 do
use_synth :piano
play :G5
sleep 0.25
play :A5
sleep 0.25
play :E5
sleep 0.25
play :D5
sleep 0.25
play :E5
sleep 0.5
play :D5
sleep 0.25
play :E5
sleep 0.25
play :G5
sleep 0.25
play :A5
sleep 0.25
play :E5
sleep 0.25
play :D5
sleep 0.25
play :E5
sleep 0.5
play :A5
sleep 0.25
play :B5
sleep 0.25
play :C6
sleep 0.25
play :B5
sleep 0.25
play :A5
sleep 0.25
play :G5
sleep 0.25
play :E5
sleep 0.5
play :D5
sleep 0.25
play :E5
sleep 0.25
play :D5
sleep 0.25
play :C5
sleep 0.25
play :B4
sleep 0.25
play :G4
sleep 0.25
play :A4
sleep 0.5
sleep 0.25
sleep 0.25
end
define :end_1 do
play :A4
sleep 0.25
play :A4
sleep 0.125
play :A4
sleep 0.25
play :A4
sleep 0.25
play :A4
sleep 0.25
play :A4
sleep 0.125
play :A4
sleep 0.25
play :A4
sleep 0.25
end
define :end_2 do
play :A4
sleep 0.25
play :A4
sleep 0.125
play :A4
sleep 0.25
play :A4
sleep 0.25
play :A4
sleep 0.25
play :A4
sleep 0.125
play :A4
sleep 0.25
sleep 0.25
end
sleep 16
starter
starter
starter
starter
part1_1
part1_2
part2_1
part2_1
part2_1
part2_2
part2_1
part2_1
part2_1
part2_3
end_1
end_1
end_1
end_2
[Sonic Pi] Bad Apple!!
https://Mundnaity.moe/post/Sonic-Pi_Bad-Apple!!