Open Sound Control (OSC) について
OSC とは
簡単に言うと「コンピュータやシンセサイザー、マルチメディア・ツール等の間で、ネットワーク上でリアルタイムにコミュニケーションを図る為の通信プロトコル」です。
通信速度や転送データの柔軟性を向上させた MIDI の後継的規格として開発されました。
Wikipedia の OSC 欄に詳しく書いてあるので参照してください。
ただ現時点で初心者目線で感じたのは、やはり「音楽用途としては、MIDI の方が普及していてわかりやすい」と思いました。
実際、MIDI と役割的にかぶる事が多くて、「これなら MIDI を使った方が簡単」と思う部分もあるので、適材適所でチョイスするのがいいでしょう。
しかし OSC は、音楽用途だけじゃなく、映像系や Web 系ツール、プログラミング言語等とも連携が取れるので、マルチメディア全体での連携ツールと考えると MIDI より遥かに可能性を感じます。
また、OSC はネットワークを使用するので、MIDI の様に専用機器を買ったりする必要が無い分、廉価で済むという利点もあります。
ちなみに、OSC メッセージを送信する側を OSC クライアント、受信する側を OSC サーバーと言います。
OSC 受信設定
環境設定パネルの OSC タブを開きます。
そして上段にある "Enable Server" をオンにするだけで、Renoise OSC サーバーが起動し、受信可能状態になります。

Enable Server
ここをオンにする事で Renoise OSC サーバーが起動します。
OSC サーバーを起動すると、ネットワーク・ポートをリスニング状態にするという事なので、セキュリティに関しては注意をする必要があります。
外部から Renoise を操れるという事は、外部からコンピューターも操れるようになるという事です。
受信メッセージの表示欄
外部から OSC メッセージを受信すると、ここに表示されます。
上の図で、/song/bpm with 1 arguments と表示されていますが、この "arguments"(直訳すると"引数、変数")はパラメーターの値だと思ってください。
その値が間違った形式で書かれていた場合、コマンドの後に (REJECTED)(直訳すると"拒絶された")と表示されます。
Protocol
Renoise のサーバーが使うプロトコルの選択
- Udp・・・転送速度が早く安定しているが、メッセージを確実に伝える信頼性が劣る
- Tcp・・・メッセージを確実に伝える信頼性は高いが、転送速度が劣る
Port
Renoise サーバーがリスニングするポート番号の設定。
マンションに例えると部屋番号のような物だそうです。
一般的には1024より大きい番号を使います。
また、現在使用しているコンピューター以外のクライアントとコミュニケーションする場合、ここで設定したポート番号がファイヤーウォールでブロックされていない事を確認してください。
Renoise OSC コマンド
環境設定パネルの OSC タブの下段に OSC コマンド表があります。
各コマンドを選択すると、下部に簡単な説明が表示されます。

このコマンド表のわかりにくい部分を少し説明します。
XXX
トラックやエフェクターの並び順をここに指定します。
現在選択中のものを指定したい場合は、-1 を使います。
例) /renoise/song/track/3/device/-1/bypass 1
(トラック3で現在選択しているエフェクターのバイパスをオンにする)
(number)・・・数字
コマンドの値に数字を指定せよ、という意味。
数値の指定の仕方はコマンドによって違うので、コマンド表の下部に出る説明を見てください。
現在選択中のものを指定したい場合は、-1 を使います。
例) /renoise/song/bpm 110 (BPMを110に設定)
例) /renoise/song/track/-1/device/-1/set_parameter_by_index 3 0.9
(選択中のトラック、選択中のデバイスの、3つ目のパラメーターを 90% にする)
例) /renoise/trigger/note_on -1 -1 48 127
(選択中のインストゥルメント、選択中のトラック上で、C-4 をベロシティ値 127 で鳴らす)
(boolean)・・・オン/オフ
コマンドの値にオン又はオフを指定せよ、という意味。オンは 1 (true)、オフは 0 (false) で指定します。
例) /renoise/song/edit/mode 1 (エディット・モードをオン)
特殊なコマンド
/renoise/evaluate(string)
"string" は「文字列」。OSC メッセージは Lua スクリプト・コードも含めて送信出来るそうで、その Lua コードをここに記載せよ、という意味。
Lua スクリプトの知識がある人なら、まさに「何でも出来る」コマンド。
例)/renoise/evaluate "renoise.song().transport.bpm = 234"
(このコマンドは、クライアントによっては正しく送信出来ない場合があるそうです。PD では少し工夫が必要です。下で説明します)
/renoise/trigger/midi(number)
このコマンドの (number) は、他とは違って非常に特殊です。
MIDI の仕様書等に書いてある MIDI チャンネル・メッセージ(チャンネル・イベント)を16進法で逆の順番で並べ、それを10進法に変換した数字を指定するんだそうです。
例)/renoise/trigger/midi 8323504
(例えば、CC でモジュレーションを効かせたい場合、B0[コントロールチェンジ], 01[モジュレーション], 7f[数値] とすると 7F01B0 -> 8323504 となります。
このコマンドは複雑なので開発者自身もあまりお勧めしていません)
使用例
TouchOSC で Renoise をコントロールする
やはりこういう使い方が一番興味が沸くのではないでしょうか?
もし iPad, iPod Touch, iPhone のどれかをお持ちなら、TouchOSC というアプリ(有料)を使えば画面上に表示されたツマミやスライダーで Renoise をコントロールする事が出来ます。
TouchOSC の凄い所は、ツマミやスライダーを自由にレイアウトできるエディターがある事です。
エディターだけなら Mac, Windows, Linux 版が既に存在しますので、一度試してみるとその使いやすさがわかると思います。
それで、ネット上で調べてみたのですが、どうやら Renoise と TouchOSC を接続する方法は3通りあるようです。
-
Renoise のスクリプト・ツール "Duplex" のテンプレートをつかって TouchOSC のコマンドを受信する
- 利点・・・誰でもすぐに使える。
- 欠点・・・Duplex のテンプレートの多くのボタンが未アサイン状態。アサインするにはスクリプトの知識が多少必要。
-
TouchOSC から直接 Renoise OSC コマンドを飛ばせるようにする
- 利点・・・自分専用のレイアウトで Renoise をコントロール可能。
- 欠点・・・TouchOSC エディターを使って、Renoise OSC コマンドを送信出来るような自分専用のテンプレートを作る必要あり。
-
OSC を MIDI に変換出来るソフトを仲介させて、TouchOSC のコマンドを MIDI 信号に変えて Renoise で受信する
- 利点・・・Renoise の強力な MIDI マッピング機能を活かせるので、パラメーターのアサインが簡単。
- 欠点・・・Mac なら OSCulator、Windows なら PureData + MIDI Yoke という仲介ソフトが必要。
(OSCulator や PureData用の各種テンプレートは TouchOSC サイトにあります)。Linux はどうすればいいのかわかりません。
TouchOSC と同じような機能を持つ "iOSC" という国産のアプリ(有料)もありました。
こちらはアプリ本体で OSC メッセージのカスタマイズが可能なので、上の2の方法で Renoise をコントロール出来ると思います。
他にも OSC を扱えるアプリは日々増えています。そういうのを探してみるのも楽しいと思いますよ。
Pure Data を使って OSC コマンドを送ってみる
やはり OSC 初心者にとっては、実際にコマンドを送ってみないと一体どういう物なのか分かり辛いと思います。
そこで、比較的簡単に OSC メッセージを送信出来るフリーソフト "Pure Data (Pd-Extended)" を紹介します。
Pure Data には Windows, Mac, Linux 版があるので Renoise ユーザーには最適です。
私も実際にこのソフトを使って、このページの上で説明した各 OSC メッセージを検証しました。
以下、簡単な使い方の説明です。
-
まず、Pure Data をインストールしてください。
次に ■このファイル■ をダウンロード&解凍して、中に入っている "test-renoise-osc.pd" というファイルを開いてください。
(このファイルは掲示板で uprime22 さんから頂きました。感謝!)
-
左上にある [connect localhost XXXX] のポート番号を、Renoise OSC サーバーのポート番号と同じにします。
エディット・モード(Ctrl + E)にすれば、数値を編集できます。
-
ポート番号を合わせたら、エディット・モードを解除(再び Ctrl + E)して、[connect localhost XXXX] をクリックします。
それで Renoise サーバーと接続されます。
-
試しに右上の [send /renoise/transport/start] をクリックしてみてください。Renoise の再生が始まります。
[send /renoise/transport/stop] をクリックすると再生が止まります。
-
Renoise に何かインストゥルメントをロードして、右下の "chord-test" と書かれたボタンを押すと和音が鳴ります。再度押すと音が止まります。
-
自分で OSC メッセージを新たに入力したい場合:
メニューの Put -> Message でメッセージ・ボックスを出します。(この時点でエディット・モードになります)
そのメッセージ・ボックスの下側の結線ポートにマウスを持っていくと丸い印が出ますので、それをドラッグで引っ張って左下の [sendOSC] の上側の結線ポートに繋ぎます。
メッセージ・ボックス内に [send /renoise/....] から始まる OSC メッセージを入力します。
エディット・モードを解除(Ctrl + E)し、そのボックスをクリックすれば OSC メッセージが送信されます。
上のように [sendOSC] を使ってメッセージを送る方法はシンプルで良いのですが、例えば /renoise/evaluate(Lua スクリプトのコードを送信する OSC コマンド)を使う場合等は [sendOSC] では正しく送信出来ません。
"renoise.song().transport.bpm = 234" という Lua コードを送ろうとすると、コードに含まれる "スペース" が引数の区切りと誤認され、結局3つの引数付きメッセージとして送信されてしまいます。
そんな場合は、[sendOSC] の代わりに、[packOSC] と [udpsend] というオブジェクトを使います。
詳しい説明は省きますが、こちらの方法では Type Tag 等を指定でき、より正確にメッセージ内容を送信出来ます。
-
下図が /renoise/evaluate コマンドを使った例です。
他にも、パターン・フォローのオン/オフや、エフェクターのスライダーを動かすコマンドの例もあります。
■このファイル■ をダウンロード・解凍して Pure Data で開いてください。
そして実際に Renoise と繋いで数値やスライダーを動かしてみてください。
-
さらに詳しい使い方は Pure Data のマニュアルの OSC 解説ページを参照してください。
トップへ戻る