oscによるソフトウェア連携

47
OSCによるソフトウェア連携

Upload: ryo-kanda

Post on 02-Jul-2015

1.803 views

Category:

Education


5 download

DESCRIPTION

OSCの基本的な使い方。openFrameworksワークショップ at 八王子セミナーハウス

TRANSCRIPT

Page 1: OSCによるソフトウェア連携

OSCによるソフトウェア連携

Page 2: OSCによるソフトウェア連携

2つ以上のソフトウェアが連携

Page 3: OSCによるソフトウェア連携

連携の利点

• 得意なところを分ける

→ openFrameworkが映像/解析

→ Maxが音

• コントローラーと受け手側

→ クライアントとサーバー

→ 便利な方法でパラメータを動的に

Page 4: OSCによるソフトウェア連携

どうやるの

Page 5: OSCによるソフトウェア連携

OSCを使おう!

Page 6: OSCによるソフトウェア連携

OSC

• Open Sound Control

• CNMATが開発した通信プロトコル

→ http://cnmat.berkeley.edu/

• MIDIに変わる方式

→ 電子楽器のコントロール

→ 便利過ぎてウケる

→ ソフトウェア連携のド定番に

Page 7: OSCによるソフトウェア連携

色々な環境で

• openFrameworks

• Max6

• Processing

• Pure data

• VDMX

• vvvv

• node.js

Page 8: OSCによるソフトウェア連携

無線でももちろん

• iPhoneとかでも使えます

→ ネイティブだとvvosc

→ iOS版のopenFrameworksでも

→ アプリではTouch OSCなど

Page 9: OSCによるソフトウェア連携

OSC=通信プロトコル

• ネットワーク通信のルール

• TCP/IPとかUDP

Page 10: OSCによるソフトウェア連携

TCP/IP

• 相手に届いたか確かめる

→ 相手から届いたよ、って返事が来る

→ 届かなかったら再送

• データが欠けない

• 遅い

→ ネトゲ等で使われる

Page 11: OSCによるソフトウェア連携

UDP

• 一方的に送りつける

→ 相手に確認しない

• 速い

• データが欠けるかも

→ リアルタイムで何かするのに有効

→ OSCもUDP利用が多い

Page 12: OSCによるソフトウェア連携

openFrameworksでの利用

• ofxOscを使う

Page 13: OSCによるソフトウェア連携

ofxOscの注意点

• Project Generatorで入れるのを忘れる

→ 辛みの時間がやってくる

Page 14: OSCによるソフトウェア連携

ofxOscの注意点

• そのままaddonsに突っ込むとパスでエラー

Page 15: OSCによるソフトウェア連携

ofxOscの注意点

• そのままaddonsに突っ込むとパスでエラー

Page 16: OSCによるソフトウェア連携

ofxOscの注意点

• 手で通すの辛み

Page 17: OSCによるソフトウェア連携

楽な方法

• OFPluginを使う (Xcode専用)

• https://github.com/admsyn/OFPlugin

→ oFのaddonをサクッと追加

→ 詳しくはリンク先で

Page 18: OSCによるソフトウェア連携

書いてみましょう

Page 19: OSCによるソフトウェア連携

通信先を指定

• IPアドレスとPort番号

• IPアドレス

→ ネットワーク上での番地

→ 外線番号

• Port番号

→ ソフトウェアの番地

→ 内線番号

→ 基本的に被っちゃダメ!

Page 20: OSCによるソフトウェア連携

localhost

• コンピュータ内部で通信しますよ

• localhost

• 127.0.0.1

→ 同じ意味

Page 21: OSCによるソフトウェア連携

他のPCに送る場合• 相手のIPアドレスを確認

Page 22: OSCによるソフトウェア連携

OSCのプロトコル

• URLライクな記述

• /sound/param 440 0.1 “mod”

• 2つのパート

→ OSCメッセージ

→ OSC引数

Page 23: OSCによるソフトウェア連携

OSCメッセージ

• OSCの情報をラベリング

• 階層構造

• /sound/a/freq

• /sound/b/freq

• わかりやすいように自分でデザイン

Page 24: OSCによるソフトウェア連携

OSC引数(arg)

• 実際の値

• int32, float, stringなど様々な型

• 一度に複数送信可

• /sound/param 440 0.1 “mod”

Page 25: OSCによるソフトウェア連携

型を間違えない

• 例 : m.getArgAsInt32(0)にfloatを突っ込む

→ 警告が出る

→ 凄い数突っ込むと警告でフリーズ

• m.getArgType()を使って型チェックする

• IDEから走らせない

Page 26: OSCによるソフトウェア連携

ネットワーク越しでの注意点

• 複数のOSCメッセージを同時に送ると危険

→ 欠けることがある

• 一つにまとめる

• ちょっとズラす

Page 27: OSCによるソフトウェア連携

他のソフトウェアと連携させる

Page 28: OSCによるソフトウェア連携

Pure Data

• フリー!

• ビジュアルプログラミング環境

• 音楽用ソフト

• GUIを作りやすい

Page 29: OSCによるソフトウェア連携

Pure Data超速入門

• オブジェクトと呼ばれる箱

→ 色々な機能

• 結線 = パッチング

• ビジュアルプログラミング環境

• 作ったプログラムをパッチと呼ぶ

Page 30: OSCによるソフトウェア連携

新規パッチ

Page 31: OSCによるソフトウェア連携

配置して繋ぐ

Page 32: OSCによるソフトウェア連携

オブジェクト

• ~がついているのはオーディオ関係

• osc~はオシレータ(oscとややこしい)

• dac~は音の出力

Page 33: OSCによるソフトウェア連携

打ち間違えると

• 赤の点線に

• pdウィンドウにエラーメッセージ

Page 34: OSCによるソフトウェア連携

音を出してみる

• DSPオンかDSPのチェックボックス

• 音量注意

Page 35: OSCによるソフトウェア連携

ナンバーボックス

• マウスでグリグリ

• Shiftを押しながらで小数点単位で動く

Page 36: OSCによるソフトウェア連携

編集モード

• パッチング時とプレイ時で切り替え

Page 37: OSCによるソフトウェア連携

ナンバーボックス

• マウスでグリグリ

• Shiftを押しながらで小数点単位で動く

Page 38: OSCによるソフトウェア連携

メッセージ

• 文字列を扱う

• $1と書くと変数になる

Page 39: OSCによるソフトウェア連携

printオブジェクト

• メッセージの内容をデバッグ

• ~がついてないので音のオブジェクトではない

Page 40: OSCによるソフトウェア連携

2つ以上の変数

• $1,$2…と変数の数は増やせる

• bondoで2つのナンバーを同期

• packでまとめてからメッセージに繋ぐ

Page 41: OSCによるソフトウェア連携

まとめ

• ~系オブジェクトで音

• ナンバーボックスで数字をグリグリ

• メッセージ + $1

→ OSCメッセージの形式に

→ OSCのオブジェクトに突っ込む

Page 42: OSCによるソフトウェア連携

Pure DataでOSCを受ける

• dumpOSC = ofxOscReceiver

• ポート番号を指定

Page 43: OSCによるソフトウェア連携

OSCメッセージを処理

• OSCRoute → m.getAddress()

• unpack → m.getArgAsFloat(0)

→ このケースの対応関係

Page 44: OSCによるソフトウェア連携

Pure DataでOSCを送る

• sendOSC → ofxOscSender

• メッセージでipアドレスとポート番号を指定

Page 45: OSCによるソフトウェア連携

Pure DataでOSCを送る

• loadbang

→ パッチ読み込み時に実行

→ 読み込み時に処理したいものに繋ぐ

Page 46: OSCによるソフトウェア連携

オーディオと連動

• adc~でマイク入力を取得

• peakamp~で音量を数字に

• * は乗算

Page 47: OSCによるソフトウェア連携

簡単なオーディオビジュアル

• pdでoFのパラメータをいじる

• oFで映像生成と解析

• 結果でpdの音を変える