LoginSignup
21
14

More than 5 years have passed since last update.

RubyでHipHopする ~ Sonic Piのチュートリアル後の遊び方 ~

Posted at

これは リクルートライフスタイル 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 からダウンロードできます。

チュートリアルについて

すでにいろいろな方が記事を書いているようです。ドットインストールもありました。

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の紹介と、チュートリアル後のおすすめの楽しみ方を紹介しました。
本当に簡単なので、ぜひ実際に鳴らして遊んで見てください!

21
14
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
14