pmidiの再生ポートとSysExに関するバグ

Bug #307143 reported by fueryuejing
This bug report is a duplicate of:  Bug #316265: pmidi use wrong device number. Edit Remove
2
Affects Status Importance Assigned to Milestone
Ubuntu Japanese Kaizen Project
Triaged
Low
Unassigned

Bug Description

ポート指定のメタイベントが入ったMIDIファイルを演奏するとすべてのSysEx.をポート0に寄せ集めてしまう不具合があるそうです。Plamo/SUSE では対応パッチが出ていたので添付します。(添付したのはPlamoのもの)

この修正がない場合、例えば2ポート対応MIDIファイルの再生などで曲がおかしくなってしまうようです。類似ソフトのaplaymidiではこのような不具合はないらしいです。

Revision history for this message
fueryuejing (fueryuejing) wrote :
Revision history for this message
Mitsuya Shibata (cosmos-door) wrote :

Plamo/SUSEの該当バグのURLなどがわかれば、貼り付けてもらって良いでしょうか?
こっちではこんな風に直しているよって示したほうが対応してもらいやすいのです。

Revision history for this message
fueryuejing (fueryuejing) wrote :

了解です :)

バグの存在とパッチのURLを教えてもらったのですが、該当バグのURLはわかりません。訊ねてみます。

Revision history for this message
fueryuejing (fueryuejing) wrote :

SUSEの該当バグに関してのURLを教えてもらいました。

http://download.opensuse.org/repositories//openSUSE:/11.1/standard/repodata/repoview/pmidi-0-1.6.0-134.60.html

* Tue Mar 27 14:00:00 2007 <email address hidden>
- build with included glib support, don't use gtk1-compat
- fix the handle of MTS (MIDI Tuning Standard) ←コレです

Revision history for this message
Mitsuya Shibata (cosmos-door) wrote : Re: [Bug 307143] Re: pmidiの再生ポートとSysExに関するバグ

2008/12/25 fueryuejing <email address hidden>:
> SUSEの該当バグに関してのURLを教えてもらいました。
>
> http://download.opensuse.org/repositories//openSUSE:/11.1/standard/repodata/repoview/pmidi-0-1.6.0-134.60.html
>

情報ありがとうございます。MIDIがよくわからないので、ソースやファイル形式の説明を
見ての自分なりの解釈なのですが、以下のような感じで良いでしょうか:

a. デバイス番号(msp->device)、ポート番号(msp->port)は、チャンネル数がMIDIの上限である16を
越える場合を想定して用意されている。例えば、ポート番号0の2チャンネルはデバイス番号が
16*0+(2-1)=1になり、ポート番号2の14チャンネルはデバイス番号が16*2+(14-1)=45になる。
b. よってステータスバイト(status)がチャンネルメッセージ(0x80 - 0xef)のときは、
デバイス番号(msp->device)は、ポート番号(msp->port)*16+チャンネルである必要がある。
c. ステータスバイト(status)がSysEx(0xf0 - 0xff)に相当するときは、チャンネル特有のメッセージでは
ないので、デバイス番号(msp->device)は、ポート番号(msp->port)*16に一致する。
d. しかしながら、現状のコードはSysExを受け取ったとき、デバイス番号を初期化した値(0)
まま利用してしまっている。
e. このため、どのポート番号向けのSysExメッセージであっても、ポート番号0と勝手に
想定してSysExメッセージを送ってしまう。
f. このパッチは、デバイス番号の初期値をポート番号(msp->port)*16にし、SysExメッセージで
ないときのみチャンネルも追加するものである。

デバイス番号とポート番号の解釈が怪しいのですが……マルチポートという概念が規格外?
この解釈で問題なければ、英訳した上でバグ報告を行って、パッチ適用済みパッケージを
提案してみます。

Revision history for this message
fueryuejing (fueryuejing) wrote :

対応ありがとうございます。

僕も詳しく無いので f^^; またたずねてみました。
バグの解釈はこれで問題ないそうです :)

ではでは、よろしくお願いします。

Revision history for this message
Mitsuya Shibata (cosmos-door) wrote :

報告しておきました。
 https://bugs.launchpad.net/bugs/316265

また、pmidiの開発元にもパッチを送ったところ、
CVSの方には適用してもらえました。

Fumihito YOSHIDA (hito)
Changed in ubuntu-jp-improvement:
importance: Undecided → Low
status: New → Triaged
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.