【要約】Picorubyで作るUSB MIDIコントローラ、picoruby-usb_midi_deviceの紹介 [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
開発者の牧氏は、MIDIオーケストレーションツール「MIDoRI」において、PCからMIDIコントローラとして認識させる機能の欠如に直面した。既存のシステムではUSB-MIDIホスト機能のみをサポートしていたため、以下の課題があった。
- ・MIDoRIをPCに接続してMIDIコントローラとして利用できなかった。
- ・M5Stack Tab5のUSBポートをMIDI用に割り当てると、デバッグログの確認が困難になる。
- ・デバッグ効率の低下を懸念し、デバイス機能の実装が後回しになっていた。
// Approach
牧氏は、デバッグ環境の整備と、TinyUSBを活用した新しいgemの開発という二段構えのアプローチを採用した。これにより、開発効率を維持したままデバイス機能を実装した。
- ・LCDへのログ出力と内蔵FLASHへのクラッシュダンプ保存を実装し、USB不要のデバッグ環境を構築。
- ・TinyUSBを用いてUSBデバイスを定義する
picoruby-usb_midi_devicegemを開発。 - ・I2C通信を用いるロータリーエンコーダ用のmrbgemを開発し、パラメータ制御をモジュール化した。
// Result
これらの取り組みにより、MIDoRIはAbleton Live等のDAWからMIDIコントローラとして正常に認識されるようになった。具体的な成果は以下の通りである。
- ・
picoruby-usb_midi_deviceにより、USB-MIDIデバイスとしての動作を実現。 - ・ロータリーエンコーダを用いたMIDI CC(コントロールチェンジ)の送信が可能になった。
- ・開発したgemは、他のESP32ベースの機器へも転用可能な設計となっている。
Senior Engineer Insight
> 組み込み開発において、デバッグ手法の確立が機能拡張のボトルネックを解消した好例である。USBポートを機能に割り当てる際、ログの永続化設計を先行させた判断は極めて実践的だ。TinyUSBをラップしたgemの提供は、Picorubyエコシステムの開発体験を大きく向上させる。ただし、複合デバイス化による実装の複雑化や、リソース制約下でのレイテンシ管理には継続的な注意が必要である。