OSDN Ticket Archive


Ticket #39271

MIDIポート二重選択

登録: 2019-06-01 15:20 最終更新: 2019-12-02 23:20

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

詳細

iPhone5sのMIDITrailからiPod touch 6gen同一機種2台をBLE-MIDI経由(midimittr)でそれぞれAポートBに割り当てようとすると、ひとつのPortに2台のiPodが同時にアサインされてしまう。
一方のiPod touch 6genを別の機材(例えばiPhone7)にすると正常に1デバイスのみアサインされます。(完全に同じモデルだと再現する?)

チケットの履歴

2019-06-01 15:20 更新者: tsas
  • 新しいチケット "MIDIポート二重選択" が作成されました
2019-06-01 15:21 更新者: tsas
  • 添付ファイル iptgena.jpg (File ID: 5476) が付加されました
2019-06-02 13:01 更新者: yknk
コメント

調査結果

midimittrを利用しているデバイス(iPhone, iPad, iPod touch)について、 機種が全く同じものが複数存在すると、ご指摘の事象が発生します。

現状のMIDITrailではこの問題を回避できません。異なる機種を利用してください。 例えばiPhone6を2台利用すると発生します。iPhone6とiPhone7であれば発生しません。

MIDITrail側の修正は検討してみます。

2019-06-02 13:06 更新者: tsas
コメント

運用で回避する事に致します。

2019-06-02 13:08 更新者: yknk
コメント

技術的原因

iOS版とmacOS版のMIDITrailは、CoreMIDIデバイスを一意に識別するため、 デバイスの3つのプロパティ(Manufacturer, Model, Name)を参照している。

midimittrの仮想デバイスは、これら3つのプロパティを次のように返している。

kMIDIPropertyManufacturer = "Apple Inc."
kMIDIPropertyModel = "iPhone11,8"  <- iPhoneの内部名(製品番号)と思われる(*1)
kMIDIPropertyName = "Bluetooth"
(*1)#iPhone XRの内部名(製品番号)は"iPhone11,8"。

このためiPhoneの内部名(製品番号)が同じだと、midimittrが作成する仮想デバイスを MIDITrailは一意に識別できなくなる。

midimittrで、kMIDIPropertyNameの値をユーザが編集できるなら問題を回避できるが、midimittrにそのような機能はない模様。 macOSのAudio MIDI設定(MIDIスタジオ)は、kMIDIPropertyNameを編集できる。 midimittrは、kMIDIPropertyDisplayNameの値をユーザが編集できるので、これをデバイス識別に利用するしかなさそう。

なお、同じ機種でも内部名が異なる場合もあり、このときは問題が起きないと思われる。

内部名についての参考ページ

iPhone iPad 端末での 一般名と内部名の対応表
https://qiita.com/YumaInaura/items/31838a72678fa09d7e19

2019-06-02 13:28 更新者: tsas
コメント

解説ありがとうございます。
対応されるか不明ですが、midimittrに対応依頼を出してみました。
なんらかのアクションがあった場合、共有させていただきます。

2019-06-02 17:52 更新者: tsas
コメント

midimittrから回答を貰えました。

残念ながら、kMIDIPropertyName含めapple由来の値はmidimittr側ではコントロール出来ない。
表示名で識別しないとアプリは混乱する事になるだろう。

との事で同じ見解のようです。
いずれにしてもA・Bポートには違う機材を割り当てて回避したいと思います。

ありがとうございました。
ーーーー
midimittr追伸を追記

本来、機器は名前ではなくIDで識別されるべきなのは間違いない。
以下のゆるいドキュメントがもしかしたら役立つかもしれない。
https://developer.apple.com/documentation/coremidi/1495191-midiobjectfindbyuniqueid

(編集済, 2019-06-02 18:07 更新者: tsas)
2019-06-02 22:31 更新者: yknk
コメント

tsasさん、連絡ありがとうございます。 次バージョン以降で対応を考えてみます。

2019-12-01 01:31 更新者: yknk
コメント

以下のチケッットにて対策し、MIDITrail Ver.1.3.1 for iOS に適用済み。

  • #39805 iOS版 MIDIデバイスの識別方法を変更
2019-12-01 01:33 更新者: yknk
  • マイルストーン(未割り当て) から Version 1.3.1 for iOS (完了済み) に更新されました
  • 解決法なし から 修正済み に更新されました
2019-12-02 23:20 更新者: yknk
コメント

midimittrを利用しているデバイス(iPhone, iPad, iPod touch)について、 機種が全く同じものが複数存在している場合でも、デバイスごとに異なる名前が設定(*1)されていれば、 MIDITrailから間違えずにデバイスを識別できるようにしました。(Ver.1.3.1)

MIDITrailの設定画面で、MIDI OUTのデバイスを選択しなおしてください。

(*1) midimittr の Advertise / Periperal Settings / Name

2019-12-02 23:20 更新者: yknk
  • 状況オープン から 完了 に更新されました

添付ファイルリスト

  • iptgena.jpg(78KB)
    • 1ポートに複数デバイスが選択された状態