【Node-RED 2022】フットスイッチ「BOSS FS-1-WL」を有線接続 ＋ MIDIモードで Node-RED で使う

## はじめに
この記事は、[Node-RED Advent Calendar 2022](https://qiita.com/advent-calendar/2022/node-red) の 13日目の記事です。

内容は、以下の記事でも扱った「[BOSS FS-1-WL（フットスイッチ）](https://www.boss.info/jp/products/fs-1-wl/)」 の話です。

●【今年のベストバイガジェット 2022】大垣でのメーカーフェア出展でも大活躍した「BOSS FS-1-WL（無線フットスイッチ）」 - Qiita
　https://qiita.com/youtoy/items/715dd56fa756e18e87e6

https://twitter.com/youtoy/status/1598815513555390464

それと、Node-RED で MIDI を扱う話の組み合わせになります。MIDI の話題については、過去に以下の記事を書いたこともある話です。

●p5.js Web Editor上で「Web MIDI API」を使って USB MIDIコントローラー（nanoKONTROL2）の入力を JavaScript で処理する - Qiita
　https://qiita.com/youtoy/items/3abc6be12d9729157189
●Node-RED（enebular）でダッシュボード・リアルタイム通信を利用する【ハンズオン資料】 - Qiita
　https://qiita.com/youtoy/items/61e4a6c9061d68f09e3b

それと「FS-1-WL の MIDIモード ＋ Node-RED」という内容は、[@1ft_seabass さん](https://twitter.com/1ft_seabass) が 12/3 に試されたとツイートされてたりもする内容です。

https://twitter.com/1ft_seabass/status/1598914223782100992

これを自分もシンプルにやってみた、という流れを記事化しています。

## 今回使うもの
### ノード
今回は、前に Node-RED で MIDIコントローラーを使った時にも利用した以下のノードを使います。

●node-red-contrib-midi (node) - Node-RED
　https://flows.nodered.org/node/node-red-contrib-midi
![node-red-contrib-midi](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/8c1b1956-b8c8-2952-e35d-2785bad7e3cb.png)

Node-RED のノードを追加する画面で、「midi」というキーワードでフィルタをかけ、上記のノードを選びます。
![ノードの検索](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/6ed3b447-f229-2b6a-cba0-9d5ed9debf35.png)
以下の表示が出たら、追加完了です。
![追加完了](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/28c6f09d-3660-ae28-5598-16be3c815c1e.png)

ノードで、以下の 2つが追加されたことを確認できました。
![MIDI用のノード2つ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/ed329273-b5a1-6d11-d11b-ca59555626fd.png)

このあたりは、過去の記事でも書いていた、以下のお試しの際にも進めた流れと全く同じです。

https://twitter.com/youtoy/status/1295363204344713217

### デバイス
利用するデバイスは、冒頭にも書いた [BOSS FS-1-WL](https://www.boss.info/jp/products/fs-1-wl/) というフットスイッチです。

こちらは、PC との接続では有線と無線（USB による接続と Bluetooth接続）が選択でき、動作するモードで HID か MIDI かを選べます（物理スイッチによる切り替え）。

なお、USB による有線接続の場合は、MIDIモードのみしか使えないらしいです（※ [@1ft_seabass さん](https://twitter.com/1ft_seabass)から情報をもらって、初めて気づいた内容でした）。
今回は、有線接続での MIDIモードを使います。USB接続の場合、USB から給電されるかなと思ってたのですが、電池駆動が必要そうだったのがこのとき気になりました（後で、きちんと説明書を見て確認してみようかと）。

https://twitter.com/youtoy/status/1602385101413023744

なお、このデバイスを HIDモードにした状態で iPad との間で Bluetooth接続をして、それを展示イベントの作品に使った話があり、それについて以下の記事で少し触れています（FS-1-WL を HIDモードで使った際に用いた、専用アプリの話なども）。

●【今年のベストバイガジェット 2022】大垣でのメーカーフェア出展でも大活躍した「BOSS FS-1-WL（無線フットスイッチ）」 - Qiita
　https://qiita.com/youtoy/items/715dd56fa756e18e87e6

### 実装環境
今回の実装環境は、ローカルの PC で動かしている Node-RED です。
ちなみに、以下の記事でも書いたのですが、Node.js でローカルインストールして、それを npxコマンドで呼び出すという構成にしていたりします。

●Node-RED で Teachable Machine を試す（Node-RED のセットアップ後にノードを追加してサンプルを動かす） - Qiita
　https://qiita.com/youtoy/items/102c9ab8b5f25d542056
![Node-RED を動かす](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/30d06639-c419-5c6e-26fc-bce76b0130e1.png)

## 簡単なお試し
それでは、実際に BOSS FS-1-WL を Node-RED で使ってみます。

### p5.js のプログラムで動作確認
USBケーブルで、BOSS FS-1-WL を PC に接続して、前に記事を書いた時に作った p5.js（JavaScript）のプログラムを使って、軽く動作確認をしてみました。

https://twitter.com/youtoy/status/1602386629309890560

無事、USB で接続した BOSS の FS-1-WL が、USB接続の MIDIデバイスとして認識されているようです。

### Node-RED で使う
それでは PC で Node-RED を起動して試していきます（※ 上で書いていた MIDI用のノード「node-red-contrib-midi」は追加済み）。

以下のように、MIDI用のノードの「midi in」のプロパティを開いてみたところ、「FS-1-WL USB-MIDI」という表示が出ていました。無事に FS-1-WL がが MIDIデバイスとして Node-RED でも認識されたようです。
そして、冒頭に書いていた [@1ft_seabass さん](https://twitter.com/1ft_seabass) が行っていたログ出力で、自分も Node-RED ＋ FS-1-WL の連携動作を確認してみました。

https://twitter.com/youtoy/status/1602389546972639232

フットスイッチのボタン押下で、MIDI関連の出力がログに出てきたことを確認できました（スイッチを 1回押すと、押した時と離した時で 1回ずつの出力がある）。

そして、サンプルとしてデバッグ出力の中の 1つに関し、パスと値を取得してみると、以下のような内容が得られています。

- パス： payload
- 値： [80,127]

以下のツイートでも書かれているように、反応は良い感じでした。

<blockquote class="twitter-tweet" data-conversation="none"><p lang="ja" dir="ltr">今回は Windows の Node-RED 。 MIDI で認識して 3 つのフットペダルを順に押すと、説明書に書いてあった MIDI CC ナンバーにある値が含まれて取得できた感じです。さすがフットペダル、足で押す想定なのでしっかりしてるし、楽器 MIDI らしくレスポンスも良い感じ。 <a href="https://twitter.com/hashtag/nodered?src=hash&amp;ref_src=twsrc%5Etfw">#nodered</a> <a href="https://twitter.com/hashtag/noderedjp?src=hash&amp;ref_src=twsrc%5Etfw">#noderedjp</a> <a href="https://t.co/XL5LprSYDN">pic.twitter.com/XL5LprSYDN</a></p>&mdash; Tanaka Seigo (@1ft_seabass) <a href="https://twitter.com/1ft_seabass/status/1598914228794327040?ref_src=twsrc%5Etfw">December 3, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

また、大垣のイベント出展で使い、来場者の方に 2日間の展示中に踏んで使ってもらってましたが、耐久性も良さそうでした（あと、小型で軽量なので、持ち運びも楽だった！）。

今後は、これを処理するノードをつなげてやれば、MIDIモードの FS-1-WL と Node-RED の組み合わせを、いろいろ試していけそうです。

## 追記
[@1ft_seabass さん](https://twitter.com/1ft_seabass)　が「BOSS FS-1-WL」と「Node-RED」と他のデバイスを組み合わせた記事を公開されたようなので、以下に記事へのリンクを追加しておきます。

●フットスイッチ BOSS FS-1-WL を Windows Node-RED か MIDI データを取得し obniz と連携するメモ – 1ft-seabass.jp.MEMO
　https://www.1ft-seabass.jp/memo/2022/12/14/boss-fs-1-wl-and-obniz-collaboration-with-nodered/