Incidencia #39805

iOS版 MIDIデバイスの識別方法を変更

Abrir Fecha: 2019-11-28 01:23 Última actualización: 2019-12-01 01:33

Informador:
Propietario:
Estado:
Cerrado
Prioridad:
5 - Medium
Gravedad:
5 - Medium
Resolución:
Fixed
Fichero:
Ninguno

Details

MIDIデバイスを一意に識別する方法を変更する。 同一メーカー、同一モデル、同一エンドポイント名のMIDIデバイスが複数存在する場合でも、 ユーザがMIDI IN,MIDI OUTで選択したデイバイスを一意に識別できるようにする。

次のチケットで報告された問題の対策。

  • #39271 MIDIポート二重選択

Ticket History (3/11 Histories)

2019-11-28 01:23 Updated by: yknk
  • New Ticket "iOS版 MIDIデバイスの識別方法を変更" created
2019-11-30 11:49 Updated by: yknk
Comentario

対策方針

現状のMIDITrailは、ユーザが選択したMIDIデバイスの以下のプロパティを保存して、MIDIデバイスを選択するときのキーにしている。

  • メーカー名(kMIDIPropertyManufacturer)
  • モデル(kMIDIPropertyModel)
  • エンドポイント名(kMIDIPropertyName)

しかし、同一メーカー、同一モデル、同一エンドポイント名のMIDIデバイスが複数存在する場合、 MIDITrailは最初にプロパティが一致したデバイスを、ユーザが選択したデバイスとして識別することになる。

ユーザが選択したMIDIデバイスを確実に識別できるようにするため、デバイスの表示名も検索キーとする。

  • 表示名(kMIDIPropertyDisplayName)

ただしMIDITrailは、これまでのバージョンでユーザが選択したデバイスの表示名を保存していなかったため、 表示名が保存されていなかった場合は、従来と同じ方法で(表示名を利用せずに)MIDIデバイスを識別する。

2019-11-30 11:49 Updated by: yknk
Comentario

対策概要

設定ビューの変更

MIDI OUT, MIDI INのデバイス選択時に、デバイス表示名を保存する。

シーケンサとモニタの変更

ポートに対応するMIDIデバイスを指定するメソッドで、表示名も指定できるようにI/Fを追加する。 表示名が指定された場合は、表示名も一致するMIDIデバイスを選択する。 表示名が指定されなかった場合は、表示名を利用せずにMIDIデバイスを選択する。

2019-11-30 11:50 Updated by: yknk
Comentario

対策1:MIDITrail アプリケーションクラス

MIDITrailApp::setPortDev

シーケンサに対して、ポートに対応するMIDIデバイスを指定する時、引数にデバイス表示名を追加。

MIDITrailApp::setMonitorPortDev:scene

ライブモニタに対して、MIDIデバイスを指定する時、引数にデバイス表示名を追加。

2019-11-30 11:50 Updated by: yknk
Comentario

対策2:MIDI入力デバイス選択ビュークラス

MTSettingMIDIInDevViewCtrl

メンバにデバイス表示名称用キー文字列 m_PortDevDisplayNameKey を追加。

MTSettingMIDIInDevViewCtrl::setPortKey:portLabel

メンバのデバイス表示名称用キー文字列の初期化処理を追加。

MTSettingMIDIInDevViewCtrl::makeDevCellForIndexPath

選択中のデバイスを識別する処理において、表示名称の一致も判定するように修正。 ただし表示名称が保存されていない場合は、従来通りの判定とする。

MTSettingMIDIInDevViewCtrl::onSelectDevCellForIndexPath:tableView

デバイス選択時に表示名称を保存する処理を追加。

2019-11-30 11:50 Updated by: yknk
Comentario

対策3:MIDI出力デバイス選択ビュークラス

MTSettingMIDIOutDevViewCtrl

メンバにデバイス表示名称用キー文字列 m_PortDevDisplayNameKey を追加。

MTSettingMIDIOutDevViewCtrl::setPortKey:portLabel

メンバのデバイス表示名称用キー文字列の初期化処理を追加。

MTSettingMIDIOutDevViewCtrl::makeDevCellForIndexPath

選択中のデバイスを識別する処理において、表示名称の一致も判定するように修正。 ただし表示名称が保存されていない場合は、従来通りの判定とする。

MTSettingMIDIOutDevViewCtrl::onSelectDevCellForIndexPath:tableView

デバイス選択時に表示名称を保存する処理を追加。

2019-11-30 11:50 Updated by: yknk
Comentario

対策4:MDIDIデバイス制御クラス

SMInDevCtrl::SetDevForPort

メソッドの引数にデバイス表示名称を追加。 デバイス検索処理で、指定された表示名の一致も判定するように修正。 ただし表示名称が未指定の場合は、従来通りの判定とする。

SMOutDevCtrl::SetDevForPort

メソッドの引数にデバイス表示名称を追加。 デバイス検索処理で、指定された表示名の一致も判定するように修正。 ただし表示名称が未指定の場合は、従来通りの判定とする。

SMOutDevCtrlEx::SetDevForPort

メソッドの引数にデバイス表示名称を追加。 出力ポートのデバイス設定で指定するパラメータに、デバイス表示名を追加。

(Edited, 2019-11-30 11:51 Updated by: yknk)
2019-11-30 11:52 Updated by: yknk
Comentario

対策5:ライブモニタクラス

SMLiveMonitor

メンバにMIDI INデバイス表示名 m_pInPortDevDisplayName とMIDI OUTデバイス表示名 m_pOutPortDevDisplayName を追加。

SMLiveMonitor::SMLiveMonitor

追加したメンバの初期化処理を追加。(MIDI INデバイス表示名、MIDI OUTデバイス表示名)

SMLiveMonitor::SetInPortDev

メソッドの引数にデバイス表示名称を追加。 メンバに表示名称を保持する処理を追加。

SMLiveMonitor::SetOutPortDev

メソッドの引数にデバイス表示名称を追加。 メンバに表示名称を保持する処理を追加。

SMLiveMonitor::_ClearPortInfo

追加したメンバの破棄処理を追加。(MIDI INデバイス表示名、MIDI OUTデバイス表示名)

SMLiveMonitor::_OpenMIDIDev

出力ポートと入力ポートのデバイスを開くときに指定するパラメータに、デバイス表示名を追加。

SMOutDevCtrlEx::SetDevForPort

メソッドの引数にデバイス表示名称を追加。 出力ポートのデバイス設定で指定するパラメータに、デバイス表示名を追加。

2019-11-30 11:52 Updated by: yknk
Comentario

対策6:シーケンサクラス

SMSequencer

メンバにデバイス表示名称リスト m_PortDevDisplayNameList を追加。

SMSequencer::SMSequencer

デバイス表示名称リストの初期化処理を追加。

SMSequencer::SetPortDev

メソッドの引数にデバイス表示名称を追加。 メンバに表示名称を保持する処理を追加。

SMSequencer::ClosePortDevAll

全ポートに対応するデバイスを閉じるメソッドを追加。

SMSequencer::_ClearPortInfo

デバイス表示名称リストの破棄処理を追加。

SMSequencer::_OpenMIDIOutDev

出力ポートのデバイスを開くときに指定するパラメータに、デバイス表示名を追加。

2019-11-30 11:52 Updated by: yknk
  • Resolución Update from Ninguno to Fixed
  • Estado Update from Open to Cerrado
2019-12-01 01:33 Updated by: yknk
  • Details Updated

Attachment File List

No attachments

Editar

Please login to add comment to this ticket » Entrar