これは リクルートライフスタイル Advent Calendar 2018 の13日目の記事です。
バックエンドエンジニアをやっている@pchatsuです。
今回は、個人的趣味の話で恐縮ですが、Rubyで書けるプログラマブルなシーケンサ&ライブパフォーマンスツールSonic Piについて書きます。
難しい技術の話は出てこないので、アドベントカレンダー折返し地点の箸休めにどうぞ。
Sonic Piとは何か
簡単にいうと、Rubyのコードで作曲やライブ演奏ができるソフトウェアです。
百聞は一見に如かず。以下の動画を見てみてください。
Daft PunkのAround the worldをSonic Piでプログラミングした動画になります。
https://www.youtube.com/watch?v=7W4yTXsTavQ
また
https://vimeo.com/132813228
こんな感じでライブ演奏の楽器としても使えます。
実行環境は
https://sonic-pi.net からダウンロードできます。
チュートリアルについて
すでにいろいろな方が記事を書いているようです。ドットインストールもありました。
- https://qiita.com/santa_sukitoku/items/6585a84eeb01d2b8d3a3
- https://dotinstall.com/lessons/basic_sonicpi
Sonic Piをダウンロードすると同梱されているチュートリアルがかなりよくできていて、さらに日本語翻訳も充実しているので、まず最初にやることをおすすめします。
チュートリアルを終えたら...
本家チュートリアルでも口酸っぱく言われているように
間違いはない、あるのはただ可能性だけ
とあるように完全に自由なのですが、今回は個人的におすすめの楽しみ方を紹介したいと思います。
## メロディーを楽しむ
私の音楽理論の知識はほぼ関ジャム完全燃SHOWという番組から仕入れているので、専門家には程遠いですが、
簡単な約束事だけでそれっぽい曲やメロディーに聞こえるパターンがあるのでやってみましょう。
沖縄音階
C E F G B C
ドミファソシド と弾くと沖縄っぽい響きになります。
これを利用して、ランダムにメロディーを決めてやると、沖縄風BGMを作曲することができます。
use_bpm 90
live_loop :melody do
use_synth :pluck
okinawan_scale = [:C4, :E4, :F4, :G, :B, :C5]
play okinawan_scale.choose
sleep 1
play okinawan_scale.choose
sleep 0.5
play okinawan_scale.choose
sleep 0.5
play okinawan_scale.choose
sleep 1
play okinawan_scale.choose
sleep 1
end
live_loop :drums do
drumline
end
define :drumline do
sample :bd_fat, amp: 3
sleep 0.5
sample :drum_cymbal_closed, amp: 0.7
sleep 0.5
sample :bd_fat, amp: 3
sample :sn_zome, amp: 0.7
sleep 0.5
sample :drum_cymbal_closed, amp: 0.7
sleep 0.5
end
## リズムを楽しむ
ループが主体のジャンルである、HOUSE, EDM, HipHopはSonic Piと相性がよく、簡単にそれっぽい雰囲気になるので、チュートリアルから次に進むのによいお題だと思います。
さきほど例にあげた、Daft PunkのAround the worldのコードを写経してドラムとベースを抜き出して見ましょう。
先程の演奏動画のコードは
https://github.com/luiscript/SonicPi-Music/blob/master/songs/Daft%20Punk%20-%20Around%20the%20world.rb
にアップされています。
4つ打ち
use_bpm 128
live_loop :base do
funkyBaseline
end
live_loop :drum do
drumline
end
define :funkyBaseline do
with_fx :lpf, cutoff: 80 do
play_pattern_timed [:e2, :d3, :e3, :e2, :d3, :e2, :d3, :e2, :d3, :e3, :c2, :c3, :c2, :c3, :c2, :b1, :b1, :a2, :b2, :g2],
[0.5, 0.5, 0.5, 0.5, 0.5, 0.25, 0.5, 0.25, 0.25, 0.25, 0.5, 0.5, 0.25, 0.25, 0.5, 0.25, 0.5, 0.25, 0.5, 0.5],
release: 0.0 , sustain: 0.3
end
end
# 何かうわものを追加していく
live_loop :melody do
4.times do
play sample :guit_e_slide
sleep 8
end
end
define :drumline do
sample :bd_fat, amp: 3
sleep 0.5
sample :drum_cymbal_closed, amp: 0.7
sleep 0.5
sample :bd_fat, amp: 3
sample :sn_zome, amp: 0.7
sleep 0.5
sample :drum_cymbal_closed, amp: 0.7
sleep 0.5
end
このコードにうわもののシンセを好きに足してあげるだけで、なんちゃって4つ打ちEDMとして遊べます。
余談ですが、EDMのテンポは、コンピュータで扱いやすいからなのか、BPM=128が基本になっていておもしろいです。
HipHop
個人的に一番好きなジャンルです。
アーメンブレイクという一番オーソドックスなビートのループは
use_bpm 90
live_loop :beat do
sample :loop_amen, beat_stretch: 4
sleep 4
end
live_loop :scratch do
sleep 15
2.times do
sample :vinyl_scratch, beat_stretch: 0.5
sleep 0.5
end
end
で簡単に書けるので、これもいろいろと音を重ねていって楽しめます。
あるいは、先程使ったDaft Punkのドラムを改変して、ちょっとHipHopっぽくして見るのも良かったです。
スネアのタイミングを少しずらしていって、心地よいと感じるグルーブ感を探ってみるというのをやってみたのですが、これがなかなかおもしろかったのでおすすめです。
use_bpm 90
live_loop :base do
funkyBaseline
end
live_loop :drum do
drumline
end
define :funkyBaseline do
with_fx :lpf, cutoff: 80 do
play_pattern_timed [:e2, :d3, :e3, :e2, :d3, :e2, :d3, :e2, :d3, :e3, :c2, :c3, :c2, :c3, :c2, :b1, :b1, :a2, :b2, :g2],
[0.5, 0.5, 0.5, 0.5, 0.5, 0.25, 0.5, 0.25, 0.25, 0.25, 0.5, 0.5, 0.25, 0.25, 0.5, 0.25, 0.5, 0.25, 0.5, 0.5],
release: 0.0 , sustain: 0.3
end
end
define :drumline do
laid_back = 0.01
sample :drum_cymbal_closed, amp: 0.7
sample :bd_fat, amp: 4
sleep 0.5
sample :drum_cymbal_closed, amp: 0.7
sleep 0.25
sample :bd_fat, amp: 4
sleep 0.25
sample :drum_cymbal_closed, amp: 0.7
# スネアを少しジャストからずらす
sleep laid_back
sample :sn_zome, amp: 0.7
sleep 0.5 - laid_back
sample :drum_cymbal_closed, amp: 0.7
sleep 0.5
sample :drum_cymbal_closed, amp: 0.7
sleep 0.5
sample :drum_cymbal_closed, amp: 0.7
sleep 0.25
sample :bd_fat, amp: 4
sleep 0.25
sample :drum_cymbal_closed, amp: 0.7
# スネアを少しジャストからずらす
sleep laid_back
sample :sn_zome, amp: 0.7
sleep 0.5 - laid_back
sample :drum_cymbal_closed, amp: 0.7
sleep 0.5
end
まとめ
今回はSonic Piの紹介と、チュートリアル後のおすすめの楽しみ方を紹介しました。
本当に簡単なので、ぜひ実際に鳴らして遊んで見てください!