Ticket #39271

MIDIポート二重選択

Open Date: 2019-06-01 15:20 Last Update: 2019-12-02 23:20

Reporter:
Owner:
Status:
Closed
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
1

Details

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

Ticket History (3/12 Histories)

2019-06-01 15:20 Updated by: tsas
  • New Ticket "MIDIポート二重選択" created
2019-06-02 13:01 Updated by: yknk
Comment

調査結果

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

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

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

2019-06-02 13:06 Updated by: tsas
Comment

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

2019-06-02 13:08 Updated by: yknk
Comment

技術的原因

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 Updated by: tsas
Comment

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

2019-06-02 17:52 Updated by: tsas
Comment

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

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

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

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

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

(Edited, 2019-06-02 18:07 Updated by: tsas)
2019-06-02 22:31 Updated by: yknk
Comment

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

2019-12-01 01:31 Updated by: yknk
Comment

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

  • #39805 iOS版 MIDIデバイスの識別方法を変更
2019-12-01 01:33 Updated by: yknk
2019-12-02 23:20 Updated by: yknk
Comment

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 Updated by: yknk
  • Status Update from Open to Closed

Attachment File List

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

Edit

Please login to add comment to this ticket » Login