フットスイッチ 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 Node-RED 経由で obniz と連携できました~。やったー。 #nodered #noderedjp #obniz #MIDI #BOSS pic.twitter.com/6aEUE6z96j
— Tanaka Seigo (@1ft_seabass) December 13, 2022
フットスイッチ BOSS FS-1-WL が Windows に有線 MIDI デバイスでつながっているのですが Windows の Node-RED 経由で obniz ノードで obniz のディスプレイに、押されたキーの番号と押されたキーのタイプ LEFT , CENTER , RIGHT 表示されます。
フットスイッチ BOSS FS-1-WL を Windows につなぐ

USB Type B がフットスイッチ側で PC 側は Type A のケーブルでつなぎます。特に追加のドライバは必要なく認識されます。
Windows の Node-RED では node-red-contrib-midi ノードはすんなり入る
@youtoy 豊田さんと「フットペダルだから頑丈なボタンとして機能して Bluetooth と USB で接続できて HID と MIDI でデータが取得できてハックしやすそう」と盛り上がった BOSS FS-1-WL が USB 接続で Node-RED の node-red-contrib-midi ノードが認識してデータ取得できた! #nodered #noderedjp pic.twitter.com/J3cAbnmN0p
— Tanaka Seigo (@1ft_seabass) December 3, 2022
このツイートの通り Windows では問題なく使えます。

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 ノードもインストールします。

Node-RED のフロー

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

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

選択しておきます。

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

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

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

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

コードの 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");
}
このように、キー番号取得しての表示と、ボタンのタイプを出しています。

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

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

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