待辦事項 #41903

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

啟用日期: 2021-04-01 22:51 最後更新: 2021-04-02 23:12

回報者:
負責人:
類型:
狀態:
關閉
優先權:
5 - 中
嚴重程度:
5 - 中
處理結果:
修正
檔案:

細節

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

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

  • #40982 MIDIポート二重選択(macOS)

iOS版では以下のチケットで対策済みのため、これをmacOS版にマージする。

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

Ticket History (3/10 Histories)

2021-04-01 22:51 Updated by: yknk
  • New Ticket "macOS版 MIDIデバイスの識別方法を変更" created
2021-04-01 22:52 Updated by: yknk
評語

対策方針

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

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

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

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

  • 表示名(kMIDIPropertyDisplayName)

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

2021-04-01 22:52 Updated by: yknk
評語

対策概要

MIDI入力/出力設定ダイアログの変更

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

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

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

2021-04-01 22:52 Updated by: yknk
評語

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

MIDITrailApp::_SetPortDev

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

MIDITrailApp::_SetMonitorPortDev

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

2021-04-01 22:52 Updated by: yknk
評語

対策2:MIDI入力設定ダイアログクラス

MTMIDIINCfgDlg::initPopUpButton

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

MTMIDIINCfgDlg::savePortCfg

ポート設定保存時に表示名称を保存する処理を追加。

2021-04-01 22:53 Updated by: yknk
評語

対策3:MIDI出力設定ダイアログクラス

MTMIDIOUTCfgDlg::initPopUpButton

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

MTMIDIOUTCfgDlg::savePortCfg

ポート設定保存時に表示名称を保存する処理を追加。

2021-04-01 22:53 Updated by: yknk
評語

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

SMInDevCtrl::SetDevForPort

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

SMOutDevCtrl::SetDevForPort

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

SMOutDevCtrlEx::SetDevForPort

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

2021-04-01 22:53 Updated by: yknk
評語

対策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

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

2021-04-01 22:53 Updated by: yknk
評語

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

SMSequencer

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

SMSequencer::SMSequencer

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

SMSequencer::SetPortDev

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

SMSequencer::_ClearPortInfo

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

SMSequencer::_OpenMIDIOutDev

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

2021-04-02 23:12 Updated by: yknk
  • 狀態 Update from 開啟 to 關閉
  • 處理結果 Update from to 修正

Attachment File List

No attachments

編輯

Please login to add comment to this ticket » 登入