通信 OSC OSC 通信関係の記事です。 概要 現在は【古い-転載記事】の情報となっています。 OSC (OpenSound Control) OSC 主たる目的として電子工作との連携のための通信としてOSCを使うための記事です。 OSCはMIDI(1982年実装)の代替えを意図して設計開発されたUDPベース(他のプロトコルでも実装)のシンプルなURLベースの通信プロトコルです。音楽/映像とかの舞台関連とかのアプリケーション/機器類などで使用されています。 参考記事 OSC http://opensoundcontrol.org/introduction-osc Open Sound Control 1.0仕様 http://veritas-vos-liberabit.com/trans/OSC/OSC-spec-1_0.html 日本語Wikiから https://ja.wikipedia.org/wiki/OpenSound_Control 各種対応アプリケーションなど (2018-04-07 現在) Max 7 REAKTOR 6 VDMX5 VEZÉR openFrameworks Pure Data Quartz Composer TouchDesigner TouchOSC OSCulator LEMUR その他... 作成日時 2018-04-01 16:32 更新日時 2018-04-07 23:40 覚え書き程度 今回、電子工作のために採用したアプリケーション 【TouchOSC】  iOS/AndroidでOSCのUIを提供するアプリです。  多くのPC用OSCアプリが対応しています。 【OSCulator】有料  OSCのルーチングを実行するアプリで開発用途で使用予定です。 【TouchDesigner】商用は有料  今回はVersion 099 でmacOSにも対応したのでテストしてみました。 テストしたが採用しなかったアプリケーション 【Pure Data】  老舗のOSC対応アプリですが、現在はUI的にもバージョンアップの状況からしても古い感じです。当初は使用したいと実際にいろいろとテストしましたが、手間がかかった割にはやれることが限られたりWeb上の資料が既に開発中止となっている感じの拡張版だったりとなかなか直ぐに利用するには難しい感じでした。まだまだ、多くのユーザーに支えられているようなのでまた使うか検討する事になるかもです。 【Max 7】有料  UI的にも活動的にもアプリ的にもいい感じです。  TouchDesignerのテスト前にはこちらを使用しようと考えていました。 【OSC Data Monitor 2011】  2017版はHigh Sierraでは、壊れているメッセージで動作しない。  使用するなら2011版を使用します。 OSC関連Install 【古い-転載記事】 概要 OSC関連Install OSCを利用する際に使用するアプリケーションのインストールに関する記述です。 【TouchOSC】有料  iOS/AndroidでOSCのUIを提供するアプリです。  今回はiOS版のみを対象にしています。 【OSCulator】有料  OSCのメッセージのルーチングなどを実行するアプリで開発用途にします。 【TouchDesigner】商用は有料  macOSにも対応したビジュアルプログラミング環境です。  本来は電子工作としてでは無く舞台(DJ/VJ)などでの機器などの制御に使われているアプリケーションです。 【インストール環境】 iPhone X : iOS 11.2.6 (15D100) iPad Pro : iOS 11.2.6 (15D100) Mac Pro (Late 2013) : macOS Higth Sierra Ver 10.13.3 (17D102) MacBook Pro(13-inch,2016,Four Thunderbolt 3Ports) : macOS Higth Sierra Ver 10.134 (17E199) 作成日時 2018-04-01 20:30 更新日時 2018-04-07 23:26 TouchOSC インストール OSCのUIを簡単に作成出るアプリケーションです。 有料: AppleのAppStroreで600円  このアプリケーションはもう一つの無料で提供されるレイアウトを作成するPC用の画面作成のアプリケーションと一緒に使用されます。このアプリケーションはOSCを利用しているビジュアルプログラミング環境のアプリケーションでは定番で使用されている感じのアプリケーションです。他にも似たようなOSのUIを作成するアプリケーションがありますが、TouchOSCはシンプルな作りで非常に扱いやすので多くの指示を得ているのかと感じでいます。 TouchOSC 開発元 h e x l e r https://hexler.net TouchOSC https://hexler.net/software/touchosc   TouchOSC  : OSC UIアプリ iOS/Android 有料アプリ   TouchOSC Editor  : PC用TouchOSC画面編集アプリ macOS/Windows/Linux用   TouchOSC Bridge  : TouchOSCとMIDI連携用PCアプリ   macOS/Windows用 1.AppStoreからTouchOSCを購入しインストールします。 2.TouchOSC Editor  TouchOSC 開発元 h e x l e rからTouchOSC Editorをダウンロードしファイル(zip)を展開してアプリケーションフォルダにコピーします。 3.アプリケーション「TouchOSC Editor」を起動し動作を確認します。 OSCulator インストール OSCのメッセージをルーチングしてくれて、かつ値をグラフでリアルタイム表示してくれる便利ツールです。 実用的にも開発時にも便利な定番ツールのようです。 ライセンスを購入していないと一定期間毎にライセンス要求画面が出て処理が停止します。  OSCulator 開発元 Wildora https://osculator.net 有料アプリ 約2,200円 1.アプリケーションをダウンロード OSCulator 開発元 Wildora https://osculator.net   からダウンロードします。 ダウンロードしたdmgファイルを開きます。 アプリケーションをアプリケーションフォルダーへコピーします。 起動を確認します。 一定時間稼働(20分程度)するとライセンス購入のダイアログが出て動作を停止します。 そして、一定時間後(10秒程度)にダイアログを閉じるボタン「Not Yet」がアクティブとなりボタンを押すと再度稼働します。この動作は購入しライセンスが認証されるまで続きます。 ライセンスを購入後の画面。 ライセンス購入後はライセンスの購入催促画面での中断は無くなり連続使用が可能となります。 TouchDesigner インストール OSC開発で使用するビジュアルプログラミング環境のTouchDesignerのインストール方法です。 このアプリケーションは商用では有料となります。 macOS用のTouchDesignerが099(2017年)から使えるようになったのでダウンロードしインストールします。 細かいインストール方法などは、他のサイトを参考にしてください。ここでは、最低限の覚え書き程度です。 1.ダウンロード TouchDesignerの開発元であるDerivativeからmacOS版099をダウンロードします。 バーションは「099」ではなく、年度+ビルド番号?で表示されるようです。したがって、たまにチェックして新しいバージョンを確認しましょう。 https://www.derivative.ca macOS版099 ダウンロード   2.macOS版099 のインストール ダウンロードしたdmgファイルを開きます。 ライセンスを確認します。 アプリケーションをアプリケーションフォルダにコピーします。 3.起動とユーザー登録 ユーザー登録は必須です。 登録しないと使えません。 アプリケーションを起動します。 Finderの認証画面。 アプリケーションの起動中の画面です。 既にユーザー登録を済ませている方は「Username/Password」に入力してアプリを起動します。 新しいユーザーなら「Not registerd yet?」をクリックしてWebページからユーザー登録を開始します。 補足: ユーザー登録/ログインしない場合にもアプリは起動しますが、グレー表示になり操作はできません。 「Not registerd yet?」をクリック後のユーザー登録用のWeb画面 必要事項を入力して「submit」すると電子メールに確認のメールが届くのでアクティベーションを実行します。 新しいユーザーでログインで入力するとKey Managerで非営利のキーが生成できるようになるので「Create Key」をクリックします。 完了すると次の画面のように完了画面が表示されます。 ウィンドウ右上の「×」をクリックしてKey Managerを閉じます。 初期画面が表示されます。 以上で、インストール編は完了です。 それぞれのインストールに関しては、多くの方が記載されているのでこの辺で。。。 TouchOSC確認 【古い-転載記事】 1.概要 TouchOSC確認 TouchOSCの動作確認を最小限の構成で行いました。   動作確認を行った環境は図のようにiPadとiPhone間でOSCにより通信を行うというシンプルな物です。TouchOSC Editorで作成した同一のLayoutをデバイスに転送して他方と通信します。   【インストール環境】         iPhone X :        iOS 11.2.6 (15D100)         iPad Pro :        iOS 11.2.6 (15D100)         Mac Pro (Late 2013) :    macOS Higth Sierra Ver 10.13.3 (17D102)         MacBook Pro(13-inch,2016,Four Thunderbolt 3Ports) :    macOS Higth Sierra Ver 10.13.4 (17E199)           TouchOSC ver1.9.9         TouchOSC Editor ver1.8.4 -OSX   作成日時 2018-04-03 13:30 更新日時 2018-04-05 16:16 概要 テスト用Layoutの作成 テスト用Layoutのデバイスへの転送 続先情報の変更 新しいレイアウトの表示 設定画面を表示 iPad画面でもiPhone同様に同期と設定を実施します。 動作の確認 いろんなUI 最後に 1.概要   TouchOSC EditorでシンプルなLayoutを作成します。今回は「fader」が1つある簡単なLayoutを作って2つのデバイスに同期させデバイス間で通信させてみます。 2.テスト用Layoutの作成 TouchOSC Editorを起動します。 何も無いLayoutが表示されます。   左側の確認 「Layoyt」 デバイスのSize選択と縦/横の方法などの基本的な設定エリアです。   「Page」 複数のLayoutをサクりたい時のページ情報と通信プロトコルの設定です。TouchOSC EditorはOSCしか使用する予定が無いので「OSC」になっていることを確認します。 UI「Fader」の作成   多くのmacOSアプリでは操作できる事はメニューにありますが、TouchOSC Editorでは何も無くポップアップメニュー(コマンド+クリック)で作成したいUIの一覧が表示されます。 今回は「Fader H」を選択します。   そして位置と大きさを適当に設定して「Save」ボタンを押します。 保存は必ず「Save」ボタン です。 キー操作はできない ようです。   TouchOSCでは保存ファイル名が使用するLayout名になります。 .追加された「Fader」を確認確認します。 今回は作成時のデフォルトのまま使用します。 Name:     fader1 OSC:     auto Value Range:    0~1 3.テスト用Layoutのデバイスへの転送 Wi-Fiで接続に関して 補足:  ->    単にTouchOSC Editerのネットワークでの認識スピードの問題だった様です。 私の環境では何故か? PC(mac)->有線->Wi-Fiルーター->デバイス経由に接続されている場合にはTouchOSC EditerのPCがデバイス側のTouchOSC側で見えなく同期が出来状態となります。PC側のWi-FiをONとしないといけないようです。この時に実際の転送がどちらのネットワーク経由(有線経由なのか無線経由なのか)で行われているかは未確認です。   「Sync」ボタンを押します。 ダイアログが出ますので指示に従ってください。内容はこんな感じです。   転送したいデバイスをWiFiネットワークに接続(PCと同一ネットワーク) TouchOSCを起動し「LAYOUT > Add」で「Add Layout」へ移動 FOUND HOTSTSにEditorのPCガ見えるので選択 これでiOSデバイスへ自動的に新しいLayoutが転送されます。 転送したいデバイスのTouchOSCを起動します。 起動時の画面 LAYOUTをタップします。 (現在選択されているLayout名(画面キャプチャでは LogicTouch)をタップします。) 「Layout」画面   現在選択されているLayoutがチェックされています。既に何個かサンプルのLayoutが転送されています。   「Add」をタップします。 「Add Layout画面」   FOUND HOSTSにTouchOSC EditerのHOST名が見えるので選択します。 選択すると自動的に新しいレイアウトがダウンロードされて1つ前の「Layout」画面に戻ります。すでに同一名称のLayoutが存在する場合には置き換えても良いかの確認ダイアログボックスが出来るので確認します。 「Layout」画面   今回作成した新しいLayoutが一覧から選択し「TouchOSC」画面へ移動します。 4.接続先情報の変更 今回は2台のデバイス(iPad/iPhone)を1対1で接続するので相手側OSCアドレスとポート番号を指定します。 CONNECTIONのOSCをクリックしてOSCの接続画面を表示します。この画面は現在の接続先のIPアドレスが表示されています。 他の接続方法(TouchOSC Brodge/Core MIDI)は今回は使用しません。 (デフォルトのままで特に設定はしません) 「TouchOSC」画面   CONNECTIONのOSCをタップします。 「OSC」画面   OSC接続先情報の変更を行います。 Host:                相手側のIPアドレスなど Port (outgoing):    OSCの出力ポート番号    (iPad側のincoming) Port (incoming):    OSCの入力ポート番号    (iPad側のoutgoing) Local IP address:    現在のデバイスのIPアドレス 相手先のIPアドレスとポート番号を設定します。 相手に応じて変更します。   変更が完了したら「TouchOSC」画面に戻ります。   5.新しいレイアウトの表示 設定が完了したら「TouchOSC」の画面右上の「Done」をタップしてレイアウトを表示します。 新しいレイアウト   直ぐにOSCでの通信が出来るようになっています。   6.設定画面を表示 画面右上の○をタップします。 「TouchOSC」の画面が表示されます。 7.iPad画面でもiPhone同様に同期と設定を実施します。 Host:                相手側のIPアドレスなど Port (outgoing):    OSCの出力ポート番号    (iPhone側のincoming) Port (incoming):    OSCの入力ポート番号    (iPhone側のoutgoing) Local IP address:    現在のデバイスのIPアドレス 設定前の例 設定後の例   Hostは相手側のアドレスです。 2つのPおrt番号は他方とin/outが逆になります。 新しいLayout 8.動作の確認 Test-OSC.touchosc.zip 接続情報が正しいなら次の動画の様に動作が確認出来ます。 今回作成したEditorでのLayout Test-OSC.touchosc.zip zip ( 圧縮 ) ファイル 509 Bytes ダウンロード Test-OSC.touchosc.zip 9.いろんなUI 「Test-OSC.touchosc」を複製していろいろなUIを設定してみました。 PaPageも追加してみました。 いろんなUIの動作確認 今回作成したEditorでのLayout Test-OSC2.touchosc.zip zip ( 圧縮 ) ファイル 840 Bytes Test-OSC2.touchosc.zip 最後に 以上、TouchOSCでの動作確認を行ってきました。   TouchOSCのUIはシンプルな物で構成されています。 OSCulator確認 【古い-転載記事】 1.概要 OSCulator確認 OSCulatorの動作確認を最小限の構成で行いました。   動作確認を行った環境は図のようにiPadとiPhone間へOSCCulatorによる処理(iPad側からの全ての送信メッセージを渡す)を追加した通信を行うというシンプルな物です。TouchOSC確認で使用したTouchOSCのLayoutのOSCメッセージ先を変更して行います。   【インストール環境】         iPhone X :        iOS 11.2.6 (15D100)         iPad Pro :        iOS 11.2.6 (15D100)         Mac Pro (Late 2013) :    macOS Higth Sierra Ver 10.13.3 (17D102)         MacBook Pro(13-inch,2016,Four Thunderbolt 3Ports) :    macOS Higth Sierra Ver 10.13.4 (17E199)           TouchOSC ver1.9.9         OSCulator ver3.1.2 -OSX   作成日時 2018-04-05 15:44 更新日時 2018-04-07 23:54 テスト用のTouchOSC レイアウト 1つのUIだけの物 Test-OSC.touchosc.zip zip ( 圧縮 ) ファイル 509 Bytes Test-OSC.touchosc.zip テスト用のTouchOSC レイアウト2 いろいろなUIの物 Test-OSC2.touchosc zip ( 圧縮 ) ファイル 703 Bytes Test-OSC2.touchosc.zip 概要 OSCulatorの設定と確認 QuickView 最後に 1.概要   テスト用のTouchOSC用レイアウト(Test-OSC/Test-OSC2)のOSC設定を図(IPおよびPortとは環境に応じて変更)のように変更します。 ・iPadのTouchOS out Portを 8001に変更 ・iPadのTouchOS Hostを PC* 192.168.1.80に変更 この設定で、iPhoneからのOSC送信メッセージはiPadへ届きUIが変化し、逆にHostのIPアドレスとPort番号を変更したiPadからのOSCメッセージは届かないので変化しない状態となります。 2.OSCulatorの設定と確認 OSCulatorの起動 受信設定 入力ポートを 8001 に設定します。 Start Routing iPad側のfader1を操作します。 Monitorにメッセージが表示されます。   iPad側の操作はMonitorにはOSCCulatorのMonitorには表示されますがiPhone側には表示されない状態です。 Routing設定 ウインドウ右上の歯車アイコンをクリックします。 送信先の設定 「OSC Routes」でTagetsの空き(画面では2つ目)をクリックして、ポート8001に入ってきたOSCメッセージの送り出し先のIPアドレスとポート番号を設定(今回はiPhone向けに変更)します。   IPアドレスとPort番号をオリジナルのOSCメッセージから変更します。 Routesの追加 「+」ボタンをクリックします。 入力されたURLは「osc.udp://」が自動的に追加されてTagetsに保存されます。  補足: OSC URLの指定とRoutesは直接関係ないが説明の都合上 追加された「Routes」を編集開始 #  > 「D」 Routesの編集 OSCメッセージの書き換えに関する設定を実施します。 今回は、メッセージのルート変更のみなので特に書き換えは行わず、また引数も全てそのまま渡す。 EventTypeとValuesの設定 Routes設定画面を閉じて最初の画面に戻りを画面のように設定します。     ・Event type    ->    OSC Message     ・Value            ->    D   これで、OSCメッセージがルーチングされた事になりました。   iPad側のfader1を操作するとMessag受信され同時にiPhone側のfader1が更新されるようになります。iPadとiPhoneをTouchOSCで直接接続した「 TouchOSC確認 」と同じ動作になっています。   3.QuickView ルーチングされているOSCメッセージをリアルタイムで表示する機能です。 表示したいメッセージを選択し「QuickView」ICONをクリックするとその値がリアルタイムでグラフ表示されるようになります。Monitorと同様にデバッグなどで利用予定です。 テストで使用した設定ファイル TEST.osc3.zip zip ( 圧縮 ) ファイル 6.1 KB TEST.osc3.zip 最後に 以上、OSCulatorでの動作確認を行ってきました。   OSCulatorはOSCメッセージを簡単に安定(既に使用されている方の感想)にルーチングしてくれます。 TouchDesigner確認 【古い-転載記事】 1.概要 TouchDesigner確認 TouchDesignerの動作確認を最小限の構成で行いました。   OSCのメッセージをビジュアル的にかっこよく表示したり、逆にOSCメッセーをを受信し加工し表示したりするツールとしてビジュアルプログラミングツール(macOSで動作)のTouchDesignerの動作確認です。TouchDesignerはWindows版では以前から有りましたが、macOS版が2017年に「TouchDesigner099」としてリリースされました。OSCのビジュアルプログラミングツールとしてTouchDesigner以外の同様なツール(PureData/Max 7)も候補にしていましたが一番ビジュアルプログラミングしているTouchDesignerを使用する事にしました。 また、TouchDesignerが使用するスクリプト言語としてPythonを使用しているのも選択した要因の1つです。   今回、動作確認を行った環境は図のようにiPhoneのTouchOSCとOSCで通信しました。   【インストール環境】 iPhone X :        iOS 11.2.6 (15D100) Mac Pro (Late 2013) :    macOS Higth Sierra Ver 10.13.3 (17D102)   TouchOSC ver1.9.9 TouchOSC Editor ver1.8.4 -OSX TouchDesigner099 -OSX  (2017.16620)   作成日時 2018-04-05 20:47 更新日時 2018-04-08 12:02 概要 TouchDesinerのテスト作成 TouchOSCのレイアウト作成 TouchOSCの設定を変更 TouchOSCへメッセージを送信 TouchOSCへメッセージを送信 TouchOSCからメッセージを受信 受信動画 最後に 1.概要   TouchOSCとTouchDesigner099を使用して簡単な連携を行い動作を確認します。 2.TouchDesinerのテスト作成 TouchDesinerの起動 起動すると最初のテンプレートで書類が作成され表示されます。   最初に作成された内容を次のように修正し保存します。 noise1を残して他を全て削除 osc out を追加 > noise1の出力を接続 保存 noise1の設定 OSCのメッセージフォーマットに従ってnoise1の「Channel」>「Channel Names」を変更します。 今回は「1/rotary1」を設定します。 (TouchOSC レイアウトに合わせる) oscout1の設定 接続先の情報を設定します。   Network Address:    192.168.1.138 (TouchOSCが動作するIPアドレス) network Port:        8000 (TouchOSCの入力ポート番号) 環境に合わせてIP/入力ポート番号は変更します。 設定結果 設定後の画面です。 (この時点でiOSデバイス上のTouchOSCが動作してOSCのメッセージが受信出来るUIが有ると動作します。)   動き的にはノイズをOSCメッセージとして指定するIPのポート番号へメッセージ「1/rotary1」で送ります。 ここまでのTouchDesignerの書類 Test-OSC-TD.toe.zip zip ( 圧縮 ) ファイル 4.0 KB Test-OSC-TD.toe.zip   3.TouchOSCのレイアウト作成 TouchOSC Editorを起動 レイアウトを編集して次の3つのUIを定義します。     /1/fader1 /1/led1 /1/rotary1 レイアウトを保存してiOSデバイスに転送します。 4.TouchOSCの設定を変更 OSC設定で TouchDesignerの動作するPCのアドレスとPortを指定します。 転送したLAYOUTを選択します。 テスト用のTouchOSC レイアウト Test-OSC-TD.touchosc.zip zip ( 圧縮 ) ファイル 607 Bytes Test-OSC-TD.touchosc.zip 5.TouchOSCへメッセージを送信 TouchOSCとTouchDegsignerが動作して設定が正しいなら以下のように連携が行われます。   TouchDegsignerの出力がTouchOSCのrotray1に反映されます。 使用した「TouchDesiner書類」 (説明途中のダウンロードファイルと同じ) Test-OSC-TD.toe.zip zip ( 圧縮 ) ファイル 4.0 KB Test-OSC-TD.toe.zip 使用した「TouchOSC Editor書類」 (説明途中のダウンロードファイルと同じ) Test-OSC-TD.touchosc.zip zip ( 圧縮 ) ファイル 607 Bytes Test-OSC-TD.touchosc.zip 6.TouchOSCへメッセージを送信 TouchDegsignerにボタンを追加してTouchOSCへ送信します。   TouchDegsignerを次のように編集します。   ボタン用のオペレータとして3つを追加。 button rename oscout   それぞれを接続して設定します。 buttonの設定 今回は特に設定は無いが、デフォルトはトグルボタンとして設定されています。 ボタンとして動作させるためにbuttonの右下の「星」印をクリックします。 これで設定モードではなくボタンとして動作するようになります。 renameの設定 OSCのメッセージフォーマットに従うようにbutton出力をrenameします。 補足: noiseの場合にはチャンネル名を変更出来ましたがbuttonは出来無いようなのでrenameを使用しました。 oscout2の設定 接続先の情報を設定します。   Network Address:    192.168.1.138 TouchOSCの動作するiOSデバイス network Port:        8000     TouchOSCの入力ポート番号   環境に合わせて変更します。 設定結果 一通り設定が完了したらbutton関係のTouchDesignerの画面は次のようになります。 「Button」をクリックするとiOSデバイスのTouchOSCのled1がオン/オフされるようになります。   注意 : Buttonの右下の「+」を確認の事。 Buttonを追加した版 ここまでのTouchDesignerの書類 Test-OSC-TD-2.toe.zip zip ( 圧縮 ) ファイル 4.8 KB Test-OSC-TD-2.toe.zip 7.TouchOSCからメッセージを受信 TouchOSCからTouchDegsignerへ値(fade1)を送ります いままでは、TouchDegsignerの値をOSCメッセージとして送って表示していたが次は逆のパターンです。   CHOPオペレータとして3つを追加します。   oscin        OSCのメッセージ受信 select        受信メッセージの選択用 trail            値の表示用   3つの接続して設定します。 oscin設定 OSC in のポート番号を設定します。 TouchDesignerのOSC Inへは指定されたポート番号のOSCメッセージが全て入るようになります。 全てのメッセージが一度OSD inに入るので特定のメッセージを分離して処理する必要が生じます。 select設定 Channel Namesから選択したいOSCメッセージを選択します。   受信メッセージが未だ無いときには、メッセージの一覧は表示されなので直接入力します。 trail設定 今回はトレース設定はデフォルトのままです。 入力を追加版 ここまでのTouchDesigner書類 Test-OSC-TD-3.toe.zip zip ( 圧縮 ) ファイル 4.9 KB Test-OSC-TD-3.toe.zip 8.受信動画 faderを入力したときの動作例です。 最後に 以上、TouchDesignerの動作確認を行ってきました。   TouchDesignerはOSCメッセージを簡単に送受信と操作/表示できます。 電子工作のデータを表示したり制御するにはオーバースペック?と感じますが、単に文字列を出したり、光ったりするよりは多彩な表現をもたらします。