みかづきブログ・カスタム

基本的にはちょちょいのほいです。

osc.jsを使ってZIG SIMからOSCで送られてくるセンサ値を受け取る 📱

www.npmjs.com

ZIG SIMから送られてくる値は、ZIG indicatorで確認したいところですが、残念ながらOSCを受け取ることはできないので、Node.jsを書いて、さささっとターミナル上で確認します。

zig-project.com

ソースコード

package.json

{
  "name": "osc-develop",
  "version": "1.0.0",
  "main": "index.mjs",
  "dependencies": {
    "osc": "^2.4.5"
  }
}

index.mjs

import osc from 'osc';

const udpPort = new osc.UDPPort({
  localAddress: 'XXX.XXX.XXX.XXX', // ZIG SIMapurino Settingで確認できるIP Addressを記入する
  localPort: XXXX, // ZIG SIMapurino Settingで確認できるPortNumberを記入する
  broadcast: true,
  metadata: true
});

// 受信したメッセージを表示
udpPort.on('message', (message, taimeTag, info) => {
  console.log(message);
  console.log(taimeTag);
  console.log(info);
});

udpPort.open();

これで、OSCで送られてきたメッセージをターミナル上で確認できます。

ちなみに、ZIG SIMではOSCの受信はできないですが、OSCでメッセージを送信する際は、

import osc from 'osc';

const udpPort = new osc.UDPPort({
  localAddress: 'XXX.XXX.XXX.XXX',
  localPort: XXXX,
  remoteAddress: 'YYY.YYY.YYY.YYY', // 送信先のIPアドレスを記入する
  remotePort: YYYY, // 送信先のポート番号を記入する
  broadcast: true,
  metadata: true
});

// 受信したメッセージを表示
udpPort.on('message', (message, taimeTag, info) => {
  console.log(message);
  console.log(taimeTag);
  console.log(info);
});

// 1秒ごとにタイムスタンプを送信
udpPort.on('ready', () => {
  setInterval(() => {
    udpPort.send({
      address: '/ZZZ', // 送信先のアドレスを記入する
      args: [
        {
          type: 'i',
          value: performance.now()
        }
      ]
    });
  }, 1000);
});

udpPort.open();

こんな感じです。