みどりの工具箱

プログラミングや電子工作について書きます

PSS-A50のMIDIデータ解析

PSS-A50が送信するMIDIデータを解析してみました。

データ取得方法など

Raspberry Pi PicoとTinyUSBを使って受信したデータをシリアル出力しました。

PSS-A50のMIDIデータについては下記のMIDIリファレンスを参考にしています。
https://jp.yamaha.com/files/download/other_assets/6/1282286/pssa50_ja_mr_a0.pdf

送信データ取得

発音

鍵盤を押したときに送られるデータ(16進数)です。音はNo.001(グランドピアノ)ですが、ほかの音でも同じでした。

// ----- タッチレスポンスオフ -----
90 30 50  // 押
90 30 00  // 離

// ----- タッチレスポンスオン(強打)-----
90 30 7f
90 30 00

// ----- タッチレスポンスオン(弱く) -----
90 30 01
90 30 00

MIDIリファレンスによるとノートオフは送受信できず、代わりにベロシティが0になると記載されており、その通りになっています。 タッチレスポンスオフのときは0x50になっていました(0x7fではないのですね)。タッチレスポンスオンのときのベロシティは0x01~0x7fまで出ています。

続きを読む

Picoを使ってPSS-A50にサステインペダルを付けてみた

Raspberry Pi Picoを使って、無改造でYAMAHAのミニキーボード PSS-A50にサステインペダルを取り付けられるようにしました。

実現方法

PSS-A50のMIDI入力機能を利用します。PSS-A50から出力されたMIDI情報をそのままPSS-A50に送り返し、その上にペダル情報を乗せることで実現します。

そのためにはMIDIホストが必要になります。PCでもラズパイでもESP32でもよいのですが、私はRaspberry Pi Picoを使用しました。Raspberry Pi PicoはUSBホストになることができ、TinyUSBというライブラリを使ってホスト機能を実現できます。

しかし本家TinyUSBにはMIDIバイスの実装はあるのですが、MIDIホストはありません。自分で実装するしかないかと思っていましたが、探してみるとMIDIホストを実装している方がいたのでそれを使いました。

使用したMIDIホスト実装→GitHub - rppicomidi/tinyusb at midihost

完成図

完成図

続きを読む