domino/要望003/207

Last-modified: 2010-05-05 (水) 23:44:20

SysExについて

  • ページ: domino/要望
  • 投稿者: ドウラン?
  • 優先順位: 低
  • 状態: 完了
  • 投稿日: 2009-08-04 (火) 21:12:32

メッセージ

f7hで終わっていないエクスクルースブがエラー処理されるようですが
例えばこのVL Visual Editor http://www.yamaha.co.jp/product/syndtm/dl/plug/plg150vl100vl/のようなソフトが吐く所謂バルクダンプ系の
エクスクルーシブにはこのようなものは沢山あります
おそらくSMF仕様にあわせていらっしゃるのであるかと思いますが、設定とかで変えれるようになるといいと思います。


  • チェック用にそのソフトで書き出したf7で終わっていないデータが含まれるsmfかdmsを添付してもらえますか? -- たかぼー? 2009-08-04 (火) 22:35:58
  • どうぞfilesysex_test.zip Dominoだと記録できないのでCherryで録音してます(MIDI Yoke経由で)  確認のため1トラック目と2トラック目に、まったく別の設定をバルクダンプしてます。 -- ドウラン? 2009-08-05 (水) 03:05:45
  • ちなみに直接そのSMFを読み込むと、エラー内容が変わって「エスケープ形式のエクスクルーシブデータを読み飛ばします。」になるようです -- ドウラン? 2009-08-05 (水) 03:07:38
  • >ちなみに直接そのSMFを読み込むと・・・
    このSMF、なんかおかしくないですか?
    F0 ← SysEx開始
    81 7F ← F0を除くバイト数(= 255バイト)
    43 00 57 ... F7 ← 実際には257バイトある(!?)
    SMFのSysExイベントに矛盾があるせいでDominoで読めないだけかと・・・ -- 2009-08-08 (土) 00:13:03
  • といってもCherryはじめとする他のシーケンサはとりあえず読んでくれますよ -- 2009-08-12 (水) 02:38:51
  • Cherryでも読めていませんよ。とりあえず読めてるように見えますが、デルタタイムとSysExの境界が区別できずにデタラメな結果になってますから。(F7で終わってなかったり、F0で始まってないのはそのせい) -- 2009-08-12 (水) 18:56:29
  • まずエスケープ形式ってなんでしょう? -- 2009-08-13 (木) 03:50:09
  • 投稿者名なんでも良いから付けてください。 -- たかぼー? 2009-08-13 (木) 11:20:13
  • とりあえずやってみました→http://takabosoft.com/beta/Domino137_dev002.ZIP 環境設定の全般2で設定できますので、①エクスクルーシブ録音で録音できるか ②録音したエクスクルーシブデータを再生して音源が正しく動くか ③SMFへ書き出せるか ④SMFを読めるか あたりの確認をお願いします。ちなみにF7で終わっていないのは仕様じゃなくてただバッファが足りて無くて途中で切れて受信しただけだったというオチは無いですよね?(現在のエクスクルーシブ受信バッファは512バイト) -- たかぼー? 2009-08-13 (木) 19:26:06
  • あ、すみません。以前SysExを受信できなかったときにお世話になった者です。Cherryについてですが、どうやら256バイトを超えるSysExを正しく受信できず、結果として先のような壊れたSMFを出力してしまうようです。(マニュアルにもショーエクスクルーシブ受信と書いてありますし、バルクダンプのような大きなデータの受信は想定していないのでしょう)
    つまり、ドウランさんがアップロードなさったSMFは「読めないのが正しい動作」なのでDomino側で対策を講じる必要は無いと思います。 -- ar? 2009-08-13 (木) 20:20:25
  • はい、上のやりとりから私もそのあたりは怪しいと思っていましたので今回SMFの入出力に関しては何も触っていません。まぁF7で終わらないエクスクルーシブと言うのはおかしいですから、たぶん受信方法に問題がありそうな予感です(MIDIyokeで欠落してたりして(^^;) VLエディタはうちのvistaでは動かなかったので確かめづらいのですが、「F7で終わっていないものは沢山あります」という結論にどうやって至ったかという部分も気になるところではあります。音源のマニュアルに記載されているのでしたら確実ですが、Cherry等で受信した結果を見てそう判断されたのでしたら、そう結論付けるのは怪しいかなと・・・。 とりあえずドウランさんの反応を待ちます。 -- たかぼー? 2009-08-13 (木) 20:52:18
  • すみません。頭がこんがらがってきたのでとりあえず結果と推測を全て書きます。長文になりますがご容赦願います。          まずMIDIYokeは自分でも一番怪しいと思ったので、以下の実験は全てYokeとRolandのUSB-MIDIインタフェイス(のADモードというRoland独自の安定モード)の両方で試しましたが、双方で試したものに差異は全くありませんでした(ヘキサエディタで比較しても全く同一でした)。よってMIDIYokeが欠落をさせている可能性は限りなく低いと考えます。            VL-Editorより全く同一のコマンドを送信させ、それをCherry1.5.3alpha及びDomino1.37dev2(f7hで終わらないものを許容)にてそれぞれ受信させたところ、Cherryは7つのSysExを記録し、Dominoは4つのSysExを記録しました。これを添付しておきます。filesysex_test_2.zip       次に、実機での再現についてです。まず、Cherryで記録したSysExをCherryにて送信したところ、正しい挙動を行っています。しかしDominoにて記録したSysExをDominoにて送信したところ、正しく挙動しないようです。(つまりエラーメッセージは吐きませんがこの時点で既にDominoの受信結果には欠落があるようです。)                 次に、双方のソフトが記録したSMFの読み込みです。Cherryが記録したSMFをDominoにて読むと、”エスケープ形式のエクスクルーシブデータを読み飛ばします。”とのエラーが4件吐き出され、7つあったはずのSysExが2つだけになってしまいます(これが現状では正常な動作ということでしょうか) 逆にDominoにて記録したSMFをCherryにて読んだところきちんと4件ともSysExが読み込まれているようです。                       私の推測ですが、このソフトが送信しているSysExはソフトから直接ディバイスに送信される前提のものであり、そもそもSMFの規格に準拠はしていないのだと思います。そのため、たぶん長ーいダンプSysEx1つの中に「0xF0」という16進がいくつも入っているんじゃないかと思います。  双方のソフトが記録したSysExを見比べるに、違いは単にSysExの認識方法で、Cherryは0xF0と0xF7の1組で1つのSysExとして認識し、対してDominoは0xF0をSysExの開始と見ているために、このようなSMFに準拠しないSysExの読み込み結果に違いがあるのだと思います。(そのため実際、Cherryが記録した3~6つ目のSysExは0xF0から始まってません。なぜ複数に分割されてるのかは分かりませんが;;)。4番目の方が書いて下さったようなSysExのデータ長指定も、そもそも存在していないのかもしれません。                    確かに、SMF規格ではSysExは結構厳格な定義をされていたと思いますしこれに対応するには、現状のままで問題ないかもしれませんが、先にも書きました通りこのようなSysExを送信するエディタソフトはいくつかあります(私が知ってるのは全てヤマハ製ですが^^;)               そのためこのように0xF0・・・0xF7間に0xF0などが含まれていた際の挙動について検討願えませんでしょうか?(例えば警告を表示したのち、1つのSysExとしてちゃんと読み込む・・SMFとして書き出す際も警告する‥など)。よろしくおねがいします。 -- ドウラン? 2009-08-14 (金) 05:31:06
  • SysExがF0~F7というのはMIDI規格では?
    >Cherryが記録した3~6つ目のSysExは0xF0から始まってません。なぜ複数に分割されてるのかは分かりませんが
    上にも書きましたが、Cherryは256バイトを超えるSysExを正しく受信できません。(恐らくCherryの受信バッファが256バイトなのが原因)正確には、複数に分割されてしまい、1つ目がF7で終わっていなくて、2つ目以降はF0から始まっていないように見えます。Cherryでは分割されてしまったSysExをSMF保存すると壊れたデータを書き出してしまい、Cherry自身でも正常に読めなくなります。
    SMFは連続的なデータですので、一つでもデータ長を間違っているイベントがあるとそれ以降のデータを正常に読む手段はありません。 -- ar? 2009-08-14 (金) 08:58:39
  • ドウランさん、お手数お掛けしました。とりあえずこちらで再度受信してみてもらえますか?→http://takabosoft.com/beta/Domino137_dev003.ZIP -- たかぼー? 2009-08-14 (金) 11:41:38
  • ありがとうございます。dev3にて受信したものを、音源に送信してみたところ正常に挙動しているようです。また、SMFとして書き出したものを1.37dev3及び1.36にて読みだし、それを音源に送信しても正常に挙動しているようです。  また、早朝同時にテストしようとインストールしたまま忘れていたのですが、ダンプ用に紹介されていた他のMIDIソフト(MIDI-OX)にて受信した結果も一緒に置いておきます。filesysex_test_3.zip -- ドウラン? 2009-08-14 (金) 15:36:17
  • 確認ありがとうございました。結論としましては、①SysExはF0~F7というMIDIのルールに沿っている ②Dominoは受信バッファが足りずに後ろが欠落していた ③Cherryは受信バッファが足らないが欠落するのではなく分割されて受信していた。しかしそれは正しい動きとは言い難い(SMF保存・読み込みで不都合)  という感じでしょうかね。 というわけで「F7以外で終わるのを許容するオプション」は無かったことにしますね^^; -- たかぼー? 2009-08-14 (金) 15:43:11
  • 了解しました。ありがとうございます。 ちなみにSysEx中にF0が入るというのは規格上は問題ないものなのでしょうか? あと、arさんがおっしゃっていたように過去にもバッファがらみで不具合を引き起こしてたことがあったようですが、昨今の高性能化事情をみるにドカーンをバッファサイズを128KBや256KBぐらいまで増やしたりは出来ないものなのでしょうか?? -- ドウラン? 2009-08-14 (金) 15:54:46
  • F0が複数入ることはたぶん無いんじゃないかなと思います。今回は1つのSysExイベントに二つ以上F0が入っているデータはありませんよね?(MIDI-OXの画面では二つありますが、Dominoでは二つのイベントとして受信していますから問題無いかと)  バッファサイズの量などはちょいと様子を見てみて、これでも足りない状況が多々発生するようでしたら、ユーザーが設定できるようにするというのも検討しないといけないかもしれません(バッファサイズが足りない場合は、警告を出すようにしましたので気がつくはずです)。 ダンプを使わない人にとっては、128KBも256KBも無駄にメモリが使われるというのは嫌でしょうしね(ちなみにバッファは1個ではなく複数個必要です。arさんの場合はサイズではなく個数が足りなかったのです)。 -- たかぼー? 2009-08-14 (金) 16:02:21
  • 早朝の受信結果でF0から開始しているSysExが4つあったので、てっきりF7を対でないF0が間に2つあるのかと勘違いしていました (^^;   確かに使わない人からすれば無駄ですよね‥orz -- ドウラン? 2009-08-14 (金) 16:17:14
  • >(バッファサイズが足りない場合は、警告を出すようにしましたので気がつくはずです 了解です。重ね重ね、ありがとうございますM(_ _)m -- ドウラン? 2009-08-14 (金) 16:18:38
  • 便乗させていただきます。F7hで終わらないオプション~ ですが、これを入れてただけませんでしょうか? 理由としては、否一般的なのですがエレクトーン固有のMIDIファイルの際、MIDIリアルタイムメッセージを、音源で無くMIDIファイル内に書くこととなっており、例えば「FA」とだけ入力したいこともあるからです。 同様の項目はhttp://www.fuchu.or.jp/~john/cgi-bin/bbs1/c-board.cgi?cmd=one;no=70;id=001に書かれています。 SMFでは無くなるので、その旨も記載したうえで搭載して下されば・・と思います。もし不可能ならば、諦めるので構いません。宜しくお願いします。 -- yunna? 2009-08-24 (月) 02:53:59
  • それと、エレクトーンのバルクダンプを取った際、「エクスクルーシブバッファ不足の可能性があります(2048 バイト)。」が表示されまして、受信しきれていないようです。 ちなみにYAMAHA公式では「パソコンやシーケンスソフト上では、データの容量などの関係から通信におきまして、多々データの取りこぼし等発生することが見られ、残念ですが実操作上、使用が難しく、本日現在、使い方などに付きご案内いたしておりません。※最新機種の取扱説明書ではこの項目を削除修正させていただきました。」 なんていう残念なコメントをいただきましたorz MIDI-OXを触ってみたところmidi-ox_sysex.pngのような感じでSysEx受信に関する設定が細かく出来るようで、dominoでも「エクスクルーシブ受信」ダイアログ辺りでバッファ等の設定が出来れば、様々な利用者に対応できるのでは無いかと思いました。ついでに、上記の設定のMIDI-OXで取り込んだエレクトーンのバルクダンプファイルを置いておきます。多分とりこぼしは無いと思います。多分^^; fileel_bulkdump.zip -- yunna? 2009-08-24 (月) 03:31:25
  • 了解です^^; 結局F7ノーチェックオプションと、バッファの設定が出来れば良いわけですね。(F7オプション消さなきゃよかったな・・・) -- たかぼー? 2009-08-24 (月) 09:19:23
  • バッファ設定とF7ノーチェックオプションを実装しましたー→http://takabosoft.com/beta/Domino138_dev001.ZIP -- たかぼー? 2010-02-11 (木) 22:13:37