WinとMacにおけるUSB_MIDIの不具合の違い

久しぶりにUSB_MIDIのファーム開発作業をしていて遭遇した状況を書いておこうと
思います。
 
発端は、PICrouterのUSB用コールバック関数群を、Mainのあるソースと分離させて
別ソースファイルにしたことでした。コードを少し整理して、処理を関数化していて、
バグを混入させてしまいました。そのバグというのは、USB_MIDIの受信処理のステート
が初期設定までは進むが、パケットが来ても実際の受信処理には進めないという、
if文の判定条件を逆にしてしまっていたという残念なものです。
 
気づいてしまえばなんてことは無いバグなんですが、しばらく気がつかずにあれや
これやテストしていました。
 
まず、
 
  • Windowsからデバイスはきちんと認識されており、デバイスマネージャーでも特にエラーなども出ていない。
 
なのに、
 
  • パッドを押してもMIDIノートが送信されない(Max6で作ったテストパッチでノートが受信できない)。
  • Maxからデバイスに対してMIDIを送ると1回目は無反応。2回目でMaxがフリーズ。
  • いったん、Maxを終了し、Ableton Liveを起動するとLiveではノートを受信できる。じゃあとLiveを閉じて再度Max6を立ち上げようとしても、Maxが立ち上がらない。一旦、USBケーブルを抜かないと終了出来ず。
 
なんだ?っと思い、試しにMacで通信テストしてみると・・・問題無くMaxパッチでデバイス
からのMIDIノートを受信できる。Mac側から送信したMIDIはバグで受信できないが、フリーズは
しない。
 
Macが優秀というか何というか・・・。Windowsだと送受信共に動作がおかしくなってしまったため、
原因の特定に手こずってしまいました。Macでやってたらもうちょっと早く修正できたかなぁ?
 
Windowsの方が不具合が大げさかもしれません。

コメントをどうぞ

Your email address will not be published. Required fields are marked *

*