Arduinoでセンサの値をMIDIノート信号にし、Pdでその値を受けとりました。
MIDIノート信号は0〜127までの数を扱いますが、Arduinoのアナログ入力は0〜1023まで扱えます。
もっともシンプルなプログラムは、0〜1023の値を、0〜127に減らしてMIDIとする方法です。
しかし解像度が低いので、本来の0〜1023の値をMIDIとするため、プログラムで工夫をしました。
(11-1. PdでMIDIの下の方にこのプログラムがあります)
count変数を、2つに分け、MIDIノート信号にしています。
・7ビット右にシフトしたものを、ノートに。
・0x7Fでアンドしたものを、ベロシティに。
MIDIに入ってくる値を、元に戻しています。
・ノートを、7ビット左にシフトして
・ベロシティと足し算する
これらは「ビット」で計算していますが、この部分をもう少し詳しく説明しておきます。
ビット計算のポイントは、ふだん10進数で考える数を、2進数(ビット)に変換することです。
検索すると自動的に変換してくれるサイトがみつかります。
https://hogehoge.tk/tool/number.html
上記のように、16進数にも変換してくれるところが便利です。
今回は、Arduinoでは0〜1023のセンサ値を「0〜127」の2つの数に分けて、Pdではその2つの数から0〜1023に戻す計算をしています。
ここでもし、0〜127の制限を超える値になった場合、元に戻せなくなってしまいます(結果が変になる)。
そこで、任意の数をMIDIノート信号として「0〜127」の範囲におさめることが必要になります。
Arduinoでは0〜1023を2つの数に分けるときに、右シフトを使います。
Pdでは2つの数から0〜1023に戻すため、左シフトを使います。