Ticket #41978

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

Eröffnet am: 2021-04-11 22:02 Letztes Update: 2021-04-12 00:13

Auswertung:
Verantwortlicher:
Status:
Geschlossen
Priorität:
5 - Mittel
Schweregrad:
5 - Mittel
Lösung:
Gefixt
Datei:
Keine

Details

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 仕様変更対応

Ticket-Verlauf (3/4 Historien)

2021-04-11 22:02 Aktualisiert von: yknk
  • New Ticket "iOS版 iOS 14対応(Core MIDI 新API対応)" created
2021-04-11 22:02 Aktualisiert von: yknk
Kommentar

対策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 Aktualisiert von: yknk
Kommentar

対策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 Aktualisiert von: yknk
  • Status Update from Offen to Geschlossen
  • Lösung Update from Keine to Gefixt

Dateianhangliste

Keine Anhänge

Bearbeiten

Please login to add comment to this ticket » Anmelden