Protokolアプリを使って MIDIデバイス（3種類）の入力をモニタリングしてみる

この記事は、以下の記事の中でも用いたアプリ「Protokol」に関する内容です。

●mocopi のセンサーデータを「VRChat（OSC）」の送信フォーマットで PC に送ってサクッとモニタリング（Protokol アプリを利用） - Qiita
　https://qiita.com/youtoy/items/c2cd8c3464fa4edda810

上記の記事の中では、Protokol を用いて OSC のモニタリングをしていました。その際に、Protokol の上部メニューに「MIDI」・「GAMEPAD」というタブがあったのを見かけていて気になったため、そのうちの 1つを試してみたという流れです。

## 今回利用する MIDIデバイス
今回、Protokol と組み合わせて利用するデバイスは、以下の 3つです。

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

- [BOSS - FS-1-WL ](https://www.boss.info/jp/products/fs-1-wl/)
- [KORG nanoPAD2](https://www.korg.com/jp/products/computergear/nanopad2/)
- [KORG nanoKONTROL2](https://www.korg.com/jp/products/computergear/nanokontrol2/)

## Protokol で MIDIデバイスの入力を見てみる
それでは、Protokol を使って MIDIデバイスの入力をモニタリングしてみます。
アプリ起動後の使い方については、アプリの MIDIタブを選んでから、そのタブ直下の「Enabled」というボタンを押すだけで良さそうです。

### FS-1-WL
まずは、FS-1-WL の入力を見てみます。

このデバイスにボタンが 3つあるので、それらを左にあるものから準備に 1回ずつ押してみます。その結果、得られた内容は以下のとおりです。

<blockquote class="twitter-tweet" data-conversation="none"><p lang="ja" dir="ltr">この前、OSC のモニタリングで使ったアプリの、MIDI用のモニタリング機能を使ってみる <a href="https://t.co/FxRG5VUrxG">pic.twitter.com/FxRG5VUrxG</a></p>&mdash; you (@youtoy) <a href="https://twitter.com/youtoy/status/1619493875462324224?ref_src=twsrc%5Etfw">January 29, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

[FS-1-WL の仕様](https://static.roland.com/assets/media/pdf/FS-1-WL_jpn02_W.pdf)（以下の画像の内容）にあるとおりの MIDI CC ナンバーで出力できているのが確認できました（TYPE は「CONTROLCHANGE」）。

![FS-1-WLのMIDIの仕様](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/42161ec3-8786-0a33-558d-e4f43463663f.png)

また、ボタンを押した時と離した時で、「DATA2」の部分で「127 ⇒ 0」という値が得られるようです（それと、同じ値が「USB-MIDI」と「Bluetooth」で二重に得られているようですが、そこの仕様はまだよく分かってないです...）。

### nanoPAD2
次に nanoPAD2 です。
nanoPAD2 の X-Yパッド（デバイス左側のタッチパッド）の操作と、トリガー・パッド（デバイス右側の 16個あるパッド）を、順番に操作してみます。

ちなみに nanoPAD2 の仕様は、以下のリンク先のドキュメントで見られます。

●ダウンロード | nanoPAD2 | KORG (Japan)
　https://www.korg.com/jp/support/download/product/0/158/

#### X-Yパッド
X-Yパッドに触れて、指をパッドの上下方向に動かしてみたりしました。その際に得られたデータは、以下の通りです。

![X-Yパッド：nanoPAD2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/37c6d34a-57c1-1854-c98b-40ee924feffb.png)

得られた結果から、以下のようなデータが得られるようでした（※デバイスで切り替えができるモードにもよるようですが）。

- X方向の操作： DATA1＝1、DATA2＝位置によって変わる値（0 から 127 の値）
- Y方向の操作： DATA1＝2、DATA2＝位置によって変わる値（0 から 127 の値）
- 指を離した時： DATA1＝16、DATA2＝0

※ 上記全ての TYPE は「CONTROLCHANGE」

#### トリガー・パッド
トリガー・パッドも試してみました。そして、得られたデータは以下のとおりです。

![トリガー・パッド：nanoPAD2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/e7e71293-6a5d-7152-d633-dad7473a6524.png)

TYPE の部分は、これまでと異なり「NOTE_ON/NOTE_OFF」となっています。
そして、DATA1 は押したパッドに対応した数字、DATA2 は[ベロシティ](https://www.g200kg.com/jp/docs/dic/velocity.html)の値になるようです。

### nanoKONTROL2
最後は、「nanoKONTROL2」です。
デバイスの 8チャンネル分ある「ノブ・フェーダー・3つのスイッチ」を操作してみます。

ちなみに仕様は、以下のリンク先のドキュメントで見られます。

●ダウンロード | nanoKONTROL2 | KORG (Japan)
　https://www.korg.com/jp/support/download/product/0/159/#software

また、過去に書いた以下の記事でも、このデバイスに関する情報を書いています。

●p5.js Web Editor上で「Web MIDI API」を使って USB MIDIコントローラー（nanoKONTROL2）の入力を JavaScript で処理する - Qiita
　https://qiita.com/youtoy/items/3abc6be12d9729157189

#### ノブ・フェーダー・スイッチを試す
以下は、一番左のチャンネルのノブ・フェーダー・スイッチを操作してみた時のものです。

![nanoKONTROL2で得られたデータ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/3bb0ebda-c1f8-ddb2-a03e-9a6ce65ddf03.png)

TYPE は 3つとも全て共通で、「CONTROLCHANGE」です。
そして、DATA1 はノブ・フェーダー・スイッチに割り当てられた番号、DATA2 は次の値になっていました。
ノブ・フェーダーは、操作量に応じた「0〜127」の値、スイッチは、「押した時：127、離した時：0」という値です。

## おわりに
今回、Protokolアプリを使うことで、3種類のデバイス（FS-1-WL・nanoPAD2・nanoKONTROL2）の MIDI の情報を、簡単に可視化することができました。

Protokolアプリについて、まだ試せてない「GAMEPAD」も試せればと思います。

### 【追記】 公式での「MIDI Tab」に関する説明ページ
Protokol の公式ページで、MIDI Tab に関するページがあったのでメモ。

●Interface · MIDI Tab · Protokol | hexler.net
　https://hexler.net/protokol/manual/interface-midi-tab

モニタできるイベント・メッセージの一覧などが掲載されていました。
![MIDI Tab](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/c7614fd6-e092-b3b7-453c-541ada4aa560.png)