OSDN Ticket Archive


Ticket #41978

iOS版 iOS 14対応(Core MIDI 新API対応)

登録: 2021-04-11 22:02 最終更新: 2021-04-12 00:13

報告者:
yknk
担当者:
yknk
チケットの種類:
サポートリクエスト
状況:
完了
コンポーネント:
MIDITrail Ver.1.3.x for iOS
マイルストーン:
Version 1.3.3 for iOS (完了済み)
優先度:
5 - 中
重要度:
5 - 中
解決法:
修正済み
ファイル:
なし

詳細

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

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

macOS版の対策をマージする。

  • #41895 macOS版 Core MIDI 仕様変更対応

チケットの履歴

2021-04-11 22:02 更新者: yknk
  • 新しいチケット "iOS版 iOS 14対応(Core MIDI 新API対応)" が作成されました
2021-04-11 22:02 更新者: yknk
コメント

対策1:MIDI送信処理

SMOutDevCtrl.h

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

SMOutDevCtrl::SendShortMsg

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

SMOutDevCtrl::_SendShortMsg1

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

SMOutDevCtrl::_SendShortMsg2

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

SMOutDevCtrl::SendLongMsg

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

SMOutDevCtrl::_SendLongMsg1

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

SMOutDevCtrl::_SendLongMsg2

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

2021-04-11 22:03 更新者: 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-12 00:13 更新者: yknk
  • 状況オープン から 完了 に更新されました
  • 解決法なし から 修正済み に更新されました

添付ファイルリスト

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