フットスイッチ 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 が連携します!