ElectronでOSC通信


ElectronでOSC通信(送受信)を実装する必要だったので実装内容のメモ。

開発環境

Windows 10
Electron 3.0.2

実装内容

  1. OSC通信には、node-oscを使用。
  2. OSC通信行うには、メインプロセス側で通信を行う必要がある。(レンダープロセスから直接OSC通信はできない)
  3. レンダープロセスでOSC信号を受け渡しするには、メインプロセスとレンダープラセス間を通信するIPC通信を利用する必要がある。
  4. IPC通信とOSC通信を値の橋渡しは、メインプロセスでおこなう。

通信の流れ

Electron ( メインプロセス ← IPC通信 → レンダープロセス )
    ↑
OSC通信 
    ↓ 
外部アプリ

実装サンプル

ElectronでOSC通信を行うサンプル。
サンプルコード Github
アプリの使い方 README
windows版 / mac版

  1. 上記のアプリのpackageフォルダ内にアプリデータあるので、OSに合わせたアプリを設置。
  2. IP/Portの設定ファイルの更新
  3. アプリを立ち上げると、最初に受信ログ部分に設定ファイル内容が出力されます。
  4. あとは、IP/PORTがつながっていれば、相互にメッセージが送受信できます。 ※ OSC通信では、アドレスとint型のパラメーターしか渡していません。 アプリに応じて受け渡しする値を調整する際は、下記Dev環境をカスタムして使用してください。

実装コード概要

メインプロセス

送信

レンダープロセスから受け取った値を、 文字列をバッファに変換して送信しています。

受信

最初にレンダープロセスからIPC通信を行い、
レンダープロセスとメインプロセスが相互に通信できるように設定する。
OSC通信で送られてきた、バッファオブジェクトを文字列に変換し、
IPC通信でそのままレンダープロセスに送る。

レンダープロセス

レンダープロセスでは、IPC通信を介してOSC通信を送受信しています。

送信メッセージ

テキストエリアに入力した文字列をICP通信でメインプロセスに送られます。

OSC受信ログ

メインプロセス側で行ったOSC通信のメッセージを
IPC通信を介して受け取りテキストエリアに出力しています。

その他

サンプルはOSC通信で扱う値は、アドレスと数値のみですがアプリに応じて値を変えて最適化すれば扱いやすくなります。