LoginSignup
7
5

More than 3 years have passed since last update.

Sonic Pi 入門(作成した曲の動画付き)

Last updated at Posted at 2019-05-29

社内勉強会で Sonic Pi をテーマにして発表する。
メモ兼、この記事を発表資料としちゃおう(雑だけど)

作成した曲

発表当日は録画方法が不明だったので、別日に調べて録画/録音した
(2019/06/02)

動画のコード


# Rerezzed
# Coded by Sam Aaron

use_debug false
use_random_seed 799089
notes = (scale :e1, :minor_pentatonic, num_octaves: 2).shuffle

live_loop :rerezzed do
  tick_reset
  t = 0.04
  sleep -t
  with_fx :bitcrusher do
    s = synth :dsaw, note: :e3, sustain: 8, note_slide: t, release: 0, amp: 0, cutoff: 110
    s2 = synth :dsaw, note: :e3, sustain: 4, note_slide: t, release: 0, amp: 0, cutoff: 70
    64.times do
      sleep 0.125
      control s, note: notes.tick
      control s2, note: (octs :e3, 4).tick
    end
  end
  sleep t
end

live_loop :industry do
  sample :loop_industrial, beat_stretch: 1, lpf: 120, amp: 0
  sleep 1
end

live_loop :drive do
  sample :bd_haus, amp: 0
  sleep 0.5
end

Sonic Piについて

  • ライブでコードを書いて音楽を作ることができる
  • 学校でプログラミングの概念を学習するために設計された
  • プロのアーティストやDJに適した非常に強力でパフォーマンスに対応したライブコーディング機器に進化
  • 完全なオープンソースプログラミング環境

公式HP

Sonic Pi - The Live Coding Music Synth for Everyone
https://sonic-pi.net

Github

samaaron/sonic-pi: The Live Coding Music Synth for Everyone
https://github.com/samaaron/sonic-pi

コードの半分以上がRuby、どうやらRuby製?

コーディング

ここからさっそくSoinc Piで音を鳴らしていく

Sonic Piを起動する

単音

まずいちばんシンプルな単音を鳴らす
以下をSonic Piに貼り付けてRun
もしくは⌘R

# ピアノ鍵盤の70番目を再生
play 70

これはPiano鍵盤の82番目の音が再生される

和音

# 同時再生
play 72
play 75
play 79 

順番に再生

# 上から順に再生
play 72
sleep 1
play 75
sleep 1
play 79 

音色を変える

# シンセ音
use_synth :saw
play 38
sleep 0.25
play 50
sleep 0.25
play 62
sleep 0.25 

関数

# fooという関数を定義、関数名は何でも良い
define :foo do
  use_synth :saw
  play 38
  sleep 0.25
  play 50
  sleep 0.25
  play 62
  sleep 0.25
end

ループ

define :foo do
  use_synth :saw
  play 38
  sleep 0.25
  play 50
  sleep 0.25
  play 62
  sleep 0.25
end

# ループ
loop do
  foo
end

サンプル

音を1から作るのは大変、パラメータの調整めんどい!

そんな場合、Sonic Piには多くの内蔵サンプルが用意されている。
それを使うと色んな音、フレーズが簡単に使用できる。

sampleコマンド

sampleコマンドの後に:を入力するとサンプル候補が表示される。

例えばこれ

# ドラムのカッコいいリズム
sample :loop_amen

サンプル音源もパラメータで色々設定できる

# rateで再生スピードを1.3倍に上げる
sample :loop_amen, rate: 1.3

load_exampleコマンド

実装例のようなコードを読み込んで展開する。
だいたいシンプルなワンフレーズ

# メロディ、ドラム付きのフレーズ
load_example :rerezzed

パラメータ説明

自分が使用したパラメータをメモで残す。

use_random_seed
乱数の系列、数値のみ
フレーズをランダムで自動生成するときに使える
デフォルトでは0

lpf
MIDIノートの内蔵ローパスフィルター(lpf)のカットオフ値。
デフォルト100

amp
音の音量を設定できる。0だと音が消える
デフォルトは1

cutoff
音の周波数をカットするとか?値を小さくすると音がこもる。
デフォルトは100

その他

音響プログラミング言語 というジャンルもあるらしい
SuperCollider
https://github.com/supercollider/supercollider

7
5
0

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
7
5