1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🚀 RubyでSonic Piを使ってライブコーディングする方法

1
Posted at

RubyでSonic Piを使ってライブコーディングする方法

Sonic Pi は「音楽ライブコーディング」を楽しむために作られたツールで、
Ruby 風の DSL(ドメイン固有言語) で音を生成できます。

本記事では以下をまとめます。

  • Sonic Pi の基本構造
  • Ruby との違い・Rubyプログラマ として知っておくべきポイント
  • 実際のライブコーディング例
  • エフェクト、サンプル、シンセ、ループの使い方
  • 実践的 Tips

Sonic Pi とは?

Sonic Pi は Sam Aaron によって開発された「コードで音楽を作る」ツールです。

特徴:

  • Ruby に似た文法の DSL
  • リアルタイムに再実行できる「ライブコーディング」機能
  • 低レイテンシなオーディオエンジン(SuperCollider)
  • シンセ・エフェクト・サンプルが標準搭載
  • 無料 / マルチプラットフォーム

Ruby と Sonic Pi の関係

Sonic Pi は Ruby をベースにした DSL を採用しています。

ただし以下に注意:

Ruby Sonic Pi
一般的なプログラミング言語 音楽生成専用 DSL
putsclass など一般 Ruby が使える ほとんど使えない
変数は普通に使える 状態管理が制限される
while ループ live_loop を使うのが正しい

つまり Sonic Pi は「Ruby の要素を多く持ちつつも Ruby そのものではない」ツールです。
しかし Ruby の基礎知識があればすぐ使いこなせるようになります。

インストール

Sonic Pi 公式サイトからダウンロードするだけです。
Sonic Pi 公式サイト

まずは音を鳴らしてみる

play 60
sleep 1
play 67
sleep 1
play 72

これはド・ソ・ド(高いド)。

live_loop を使ったライブコーディング

ライブコーディングの要となる live_loop。

実行中のループを コード編集 → Run で即反映できます。

live_loop :beat do
  sample :bd_haus
  sleep 0.5
end

書き換えれば BPM 変更もリアルタイム。

ベース + ドラムを重ねる例

use_bpm 100

live_loop :drum do
  sample :bd_haus, amp: 1.4
  sleep 0.5
end

live_loop :bass do
  use_synth :fm
  play :e2, release: 0.2, cutoff: 80
  sleep 0.5
end

エフェクトを使う

live_loop :melody do
  use_synth :prophet

  with_fx :echo, phase: 0.25, decay: 4 do
    play choose([:e4, :g4, :b4, :e5])
    sleep 0.5
  end
end

サンプルを使う

sample :ambi_choir, rate: 0.5
sample :loop_amen, beat_stretch: 1, amp: 1.2

# ライブコーディング実践:4トラック全体例
use_bpm 120

live_loop :kick do
  sample :bd_haus, amp: 1.3
  sleep 0.5
end

live_loop :hihat do
  sleep 0.25
  sample :drum_cymbal_closed, amp: 0.6, rate: 1.5
end

live_loop :bass do
  use_synth :fm
  play [:e2, :e2, :g2, :e2].tick, release: 0.25
  sleep 0.5
end

live_loop :lead do
  use_synth :blade
  play choose([:e4, :g4, :b4, :d5]), release: 0.4, cutoff: 90
  sleep 0.5
end

ライブで使えるテクニック集

✓ パラメータを後からいじる(control)

live_loop :sine do
  synth :sine, note: :e4, sustain: 4, amp: 0.5
  sleep 4
end

BPM と拍を sync で揃える

live_loop :kick do
  sleep 0.5
end

live_loop :melody do
  sync :kick
  play :e4
  sleep 0.5
end

MIDI 連携

midi :e3, sustain: 0.5

まとめ

Sonic Pi は Ruby に似た DSL で扱えるため、

  • プログラミングを覚えたい人
  • 音楽をコードで遊びたい人
  • ライブコーディングパフォーマンスをしたい人

にとても向いています。

Ruby の基本がわかれば、誰でもその日から「音で遊べる」ようになります。
あなたも快適なSonic Pi ライフを謳歌してください!

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?