OSDN Ticket Archive


Ticket #41895

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

登録: 2021-03-31 23:26 最終更新: 2021-04-02 23:11

報告者:
yknk
担当者:
yknk
チケットの種類:
サポートリクエスト
状況:
完了
コンポーネント:
MIDITrail Ver.1.3.x for macOS
マイルストーン:
Version 1.3.2 for macOS (完了済み)
優先度:
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を利用する。

チケットの履歴

2021-03-31 23:26 更新者: yknk
  • 新しいチケット "macOS版 Core MIDI 仕様変更対応" が作成されました
2021-03-31 23:26 更新者: 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 更新者: 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 更新者: yknk
  • 概要が更新されました
2021-04-02 23:11 更新者: yknk
  • 状況オープン から 完了 に更新されました
  • 解決法なし から 修正済み に更新されました

添付ファイルリスト

添付ファイルはありません