フットスイッチ BOSS FS-1-WL を Windows Node-RED か MIDI データを取得し obniz と連携するメモ

フットスイッチ BOSS FS-1-WL を Windows Node-RED か MIDI データを取得し obniz と連携するメモです。

この記事は Node-RED Advent Calendar 2022 の 14 日目の記事です。

このように動きます

フットスイッチ BOSS FS-1-WL が Windows に有線 MIDI デバイスでつながっているのですが Windows の Node-RED 経由で obniz ノードで obniz のディスプレイに、押されたキーの番号と押されたキーのタイプ LEFT , CENTER , RIGHT 表示されます。

フットスイッチ BOSS FS-1-WL を Windows につなぐ

image

USB Type B がフットスイッチ側で PC 側は Type A のケーブルでつなぎます。特に追加のドライバは必要なく認識されます。

Windows の Node-RED では node-red-contrib-midi ノードはすんなり入る

このツイートの通り Windows では問題なく使えます。

image

node-red-contrib-midiノードは私の Windows 10 Node.js 16 の Node-RED では、無事インストールできました。

Mac でつないで連携する場合は、豊田さんの 【Node-RED 2022】フットスイッチ「BOSS FS-1-WL」を有線接続 + MIDIモードで Node-RED で使う – Qiita の記事が分かりやすいです。

node-red-contrib-obniz ノードも入れる

obniz を動かすために node-red-contrib-obniz ノードもインストールします。

image

Node-RED のフロー

image

Node-RED のフローはこのようになっています。かなりシンプルです。MQTT のようなリアルタイムのプロトコルを使わず、obniz ノードで直接操作しています。

image

midi in ノードのプロパティでは FS-1-WL が認識されています。

image

選択しておきます。

image

認識されてフットスイッチを押してみると、debug ノードにはこのようなデータが来ます。配列 1 番目の値が 80 が左、81 が中央、82 が右が押された情報です。

image

押された時だけ判定する switch ノードで判定しています。

image

配列 2 番目の値が 127 の時は押された、0 の時がボタンを離したのようなので、2 番目の情報である msg.payload[1] を 127 だけ通すようにしています。

image

そして押された時だけデータが流れてくるので obniz function ノードでキー番号&タイプ表示します。

image

コードの obniz の参照が赤の波線出てますが気にしなくて大丈夫です。動作します。

// キー番号取得
let key = msg.payload[0];
// ディスプレイ表示
obniz.display.clear();
obniz.display.print("[MIDI KEY]\n");
obniz.display.print(msg.payload[0] + "\n");
obniz.display.print("[TYPE]\n");
// ボタンのタイプの表示
if (key == 80){
    obniz.display.print("LEFT");
} else if (key == 81){
    obniz.display.print("CENTER");
} else if (key == 82) {
    obniz.display.print("RIGHT");
}

このように、キー番号取得しての表示と、ボタンのタイプを出しています。

image

実際にはこのように動作します。

image

また、obniz function での初期化処理では midi + obniz と出す処理を作っています。

動かしてみる

image

これを動かすと、冒頭のツイートのように、良い感じのレスポンスで フットスイッチ BOSS FS-1-WL と obniz が連携します!