任务单 #41895

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

开放日期: 2021-03-31 23:26 最后更新: 2021-04-02 23:11

报告人:
属主:
类型:
状态:
关闭
优先:
5 - Medium
严重性:
5 - Medium
处理结果:
Fixed
文件:

Details

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を利用する。

任务单历史 (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 Fixed

Attachment File List

No attachments

编辑

Please login to add comment to this ticket » 登录名