待辦事項 #41895

macOS版 macOS 11 Big Sur 対応(Core MIDI 新API対応)

啟用日期: 2021-03-31 23:26 最後更新: 2021-04-02 23:11

回報者:
負責人:
類型:
狀態:
關閉
優先權:
5 - 中
嚴重程度:
5 - 中
處理結果:
修正
檔案:

細節

macOS 11(Big Sure)からCore MIDIがMIDI 2.0に対応したことに伴い、Core MIDI のAPI仕様が変更された。 これまで利用してきたMIDI送受信のAPIが非推奨となったため、macOS 11以降では新しいAPIを利用するように修正する。

なお、システムエクスクルーシブの送信API(MIDISendSysex)は非推奨になっていないが、 macOS 11(Big Sure)でMIDITrailを起動し、システムエクスクルーシブを含むMIDIデータを演奏すると、 正常に再生されない現象が発生した。(プログラムチェンジが音源に届かないように感じられる) このためシステムエクスクルーシブの送信と受信の処理についても、新しいAPIを利用する。

Ticket History (3/5 Histories)

2021-03-31 23:26 Updated by: yknk
  • New Ticket "macOS版 Core MIDI 仕様変更対応" created
2021-03-31 23:26 Updated by: yknk
評語

対策1:MIDI送信処理

SMOutDevCtrl.h

システムエクスクルーシブデータ最大サイズの定義を追加。

SMOutDevCtrl::SendShortMsg

macOS 11以降であれば、新しいMIDIメッセージ送信処理を呼び出すように修正。 これまでのMIDIメッセージ送信処理は、プライベートメソッドに切り離した。

SMOutDevCtrl::_SendShortMsg1

これまでのMIDIメッセージ送信処理をプライベートメソッドとして追加。 エラー発生時に表示するエラー情報のパラメータを見直した。

SMOutDevCtrl::_SendShortMsg2

Core MIDIの新しいAPIを利用するMIDIメッセージ送信処理を追加。

SMOutDevCtrl::SendLongMsg

macOS 11以降であれば、新しいシステムエクスクルーシブ送信処理を呼び出すように修正。 これまでのシステムエクスクルーシブ送信処理は、プライベートメソッドに切り離した。

SMOutDevCtrl::_SendLongMsg1

これまでのシステムエクスクルーシブ送信処理をプライベートメソッドとして追加。 エラー発生時に表示するエラー情報のパラメータを見直した。

SMOutDevCtrl::_SendLongMsg2

Core MIDIの新しいAPIを利用するシステムエクスクルーシブ送信処理を追加。

2021-03-31 23:27 Updated by: yknk
評語

対策2:MIDI受信処理

SMInDevCtrl.h

システムエクスクルーシブデータ最大サイズの定義を追加。 システムエクスクルーシブデータ受信用バッファをメンバ変数に追加。

SMInDevCtrl::OpenPortDev

ポート作成時に、macOS 11以降であればCore MIDIの新しいAPIを利用する処理を追加。

SMInDevCtrl::_InReadCallBack2

Core MIDIの新しいAPIを利用してMIDIイベントを受信したときのコールバック関数を追加。

SMInDevCtrl::_InReadProc2

Core MIDIの新しいAPIを利用してMIDIイベントを解析する関数を追加。

SMInDevCtrl::_InReadProcSysEx2

Core MIDIの新しいAPIを利用してシステムエクスクルーシブを解析する関数を追加。

2021-04-01 22:59 Updated by: yknk
  • Summary Updated
2021-04-02 23:11 Updated by: yknk
  • 狀態 Update from 開啟 to 關閉
  • 處理結果 Update from to 修正

Attachment File List

No attachments

編輯

Please login to add comment to this ticket » 登入