domino/要望000/75

Last-modified: 2007-12-31 (月) 19:19:51

SD-80のデータを複数に分けて転送するSYSEXについて

  • ページ: domino/要望
  • 投稿者: ミスト?
  • 優先順位: 低
  • 状態: 完了
  • 投稿日: 2007-02-28 (水) 02:59:19

メッセージ

MFXのパラメータの設定値などがそうなのですが
例えば、[ 10h 00h 06h 11h (12h 34h ) ]と表現できそうな値を
SD-80では[ 10h 00h 06h 11h (01h 02h 03h 04h) ]と分割しています。

#VL
有効な値を見つけるのが大変です。

あとGM2のSYSEXのうち表現な困難なものが2つありました。
Scale Octave Tuning
F0 7E 7F 08 08 ff gg hh ss F7
ff : bits 0 to 1 = Ch 15 to 16

    bits 2 to 6 = 未定義

gg : bits 0 to 6 = Ch 8 to 14
hh : bits 0 to 6 = Ch 1 to 7
ss : 12 byte tuning offset of 12 semitones C to B

    00h = -64 sent
    40h = 0 sent
    7Fh = +63 sent

Key-Based Instrument Controllers
F0 7F 7F 0A 01 0n kk nn vv F7
0n = MIDI Ch(00-0F)
kk = キーナンバー
nn = コントロールナンバー
vv = バリュー(00-7F)

 nn=07 Level
    0A Pan
    5B Reverb Send
    5D Chorus Send

これらをCCMでうまい具合に表現できるようにできないでしょうか?
例えばGM2の2つでしたら#VH #VL #GH #GLの4つの値を個別に入力出来るようにするとか。


  • 最初のは Tabel を用意するしかないかなーと思いました。XG2k の CCM#392 XG Detune (Table ID="17") がそんな感じです。この例の場合は Label を 0 ~ 127 や 00 ~ 7F のようにすればいけるのではないでしょうか。
    「Scale Octave Tuning」 はよく意味が分っていない状態なのですが、単に CH によってアドレスの指定がずれるだけなのであれば 「Scale Octave Tuning CH xx」 という風に16個用意すれば解決すると思いました。間違っていたらすみません。
    「Key-Based Instrument Controllers」 の方は 不具合報告/44 の話に便乗して 「#0CH」 を追加して頂ければ可能になるなと思いました。そうすれば
    F0H 7FH 7FH 0AH 01H #0CH #GL 07H #VL F7H
    F0H 7FH 7FH 0AH 01H #0CH #GL 0AH #VL F7H

    という感じで、有効なコントロールナンバーの数だけ用意すればOKということになります。 -- 逃亡者? 2007-02-28 (水) 07:06:28
  • 「Scale Octave Tuning」はおそらくgg hh ssの値を2進数にして各ビットが0ならOFF 1ならONということだと思うので、複数のCHを選択でき2^16で65536通りテーブルを作らないといけないのではないでしょうか -- ミスト? 2007-02-28 (水) 14:03:40
  • Key-Based Instrument Controllersは#0CHのようなものがあればPan Reverb Chorusの3通り作ってキーナンバーとバリューをValueとGateに対応させれば表現出来ますね。ただSYSEXは全部初期化用のトラック(A1 Setup)に入れる人もいるのかなと思い、この場合だと初期化用トラックと同じChが割り当てられたトラックにしか使えなくなってしまうので、#VH #VL #GH #GLそれぞれ値を入力できた方が良いのかなと思いました -- ミスト? 2007-02-28 (水) 14:12:30
  • 最初のは指定できる値の範囲が12768-52768なんですよね。全部のMFXで試したわけではありませんが実際は上位2バイトが08 00固定で下位2バイト分で表現できてるみたいですけど、MFXとパラメータの種類が多いのでまだ全部確認していません。ちなみにMFX90種でパラメータ数は最大32です。 -- ミスト? 2007-02-28 (水) 14:24:19
  • 4桁以上だと Table は厳しいですね^^; 現状だと、CCM ではなくエクスクルーシブのプリセットを作るのが効果的でしょうか。
    または予め値が分かっているのであれば、Gate、Vel/Value の入力に計算式が使用出来るので 「128*1+2」「128*3+4」 という風に入力するという手もあります。 -- 逃亡者? 2007-02-28 (水) 18:34:16
  • 一番上のは、MFXのパラメータ範囲がどんなので、どうやって指定するのかが、はっきりすれば、それに対応させる値(#hogehoge)を作り出すことは可能かと思いますので、何か解ったらいってください。最後のはマニュアルには書いてありませんが「#CH」というのが使えると思いますので、逃亡者さんの案で試してみてください。 -- たかぼー? 2007-02-28 (水) 19:05:23
  • MIDIインプリメンテーションには以下のような感じで書いてあります
    0000 aaaa |
    0000 bbbb |
    0000 cccc |
    0000 dddd | MFX Parameter 1 -20000~+20000(12768-52768) -- ミスト? 2007-02-28 (水) 22:55:24
  • よくわからないので、時間があるときにマニュアルのぞいてみますね→http://www.roland.co.jp/cs/main_om.html -- たかぼー? 2007-02-28 (水) 23:10:48
  • MFX Parameterは1から32まであって、最初にMFX Typeを送信するとそのタイプによってどのパラメータにどのような範囲で値を設定したらいいか変化するようです
    例えばMFX Typeを 69:SHUFFLE DELAY 2にするとParam1はDELAY TIMEとなり0-3022の範囲で値を設定します。
    Param2はSUFFLE RATEで値は0-100
    Param3はDELAY ACCERATIONで値は0-15といった感じです。なお08h 00h 00h 00h(実際は80h 00h)が0になるようです。 -- ミスト? 2007-02-28 (水) 23:12:15
  • 説明が下手ですいません。マニュアルの66ページにわかりやすく書いてあるようです。ただこのマニュアル不親切でしてMIDIインプリメンテーションは別のPDF(製品にも冊子が無くPDFのみでHPにも置いてない)にしか細かいこと書いてないんです。SC-8850みたいに冊子1冊にまとめてくれれば良かったのに・・・。 -- ミスト? 2007-02-28 (水) 23:28:33
  • Fantom-Xシリーズの定義ファイルを作成しているのですが、全く同じ部分で躓いていました。。このSYSEXへの対応は私も希望します。よろしくお願いします。 -- るふと? 2007-02-28 (水) 23:39:40
  • ようするに 「FF FF」 にしたいのに 「7F」 までしか入力出来ないものだから、「0F 0F 0F 0F」 で 「FF FF」 ということにしよう、ということではないですか? XG Detune はそんな感じで 「0F 0F」 で 「FF」 ということにしています。
    -20000~+20000(12768-52768)」 これは単純に
    <Value Min="-20000" Max="20000" Offset="32768">」 ということですよね?
    だとすると 「#VF4 #VF3 #VF2 #VF1」(仮) で 65535 (FF FF) を 「0F 0F 0F 0F」 で出力するようにしてもらう (0F で 1byte 繰り上がる #hogehoge を追加して頂く)、という感じでしょうか。 -- 逃亡者? 2007-03-01 (木) 00:32:17
  • 逃亡者さんの説明のような感じで間違いないです。
    ただMFXが90種類でパラメータ数が平均12だと仮定するとCCMは1080個必要になるわけですが、SD-80の場合MFXが3系統あるのでそれだけではSD-80 Editorを使わずすべてCCMで対応するのは難しいことに気がつきました。 -- ミスト? 2007-03-01 (木) 01:18:49
  • 付けるなら「#VLL #VLH #VHL #VHH」かなぁ? SD-80 Editorとか外部エディタをどこまで使うかが問題ですよね。CCMのID上限を4000とかにしても良いですが、そもそも90種類の全マクロを登録する作業自体がなかなか大変でしょうね(2系統は一括置換でいけそうとはいえ)。 -- たかぼー? 2007-03-01 (木) 12:12:58
  • いや、そもそも#VLはValue下位7bitだし、今回は4bit単位でやるんだから、#VLLとかはまずいか・・・逃亡者さん案かな。。。 -- たかぼー? 2007-03-01 (木) 12:13:35
  • 実際にMFXに手を出されるのかは解りませんが、とりあえず「#VF1」~「#VF4」に対応しておきましのたで、お暇なときに確認をお願いします:http://www.tkb-soft.hmcbest.com/Domino109_dev003.ZIP -- たかぼー? 2007-03-04 (日) 19:05:52
  • #VF2 #VF1 で試してみた所、1つずれているみたいです。「0」 を入力すると 「0F 0F」 になります。「1」 を入力すると 「00 00」 になりました。 -- 逃亡者? 2007-03-04 (日) 21:52:13
  • それから、Offset が効いていないようです。Offset="1" を加えても変化がありませんでした。 -- 逃亡者? 2007-03-04 (日) 22:16:02
  • <Value Min="0" Max="3022" Offset="32639" />
    <Data>@SYSEX F0h 41h 10h 00h 48h 12h [ 11h 00h 06h 11h 08h #VF3 #VF2 #VF1 ] F7h</Data>
    上記の内容で試しに70:3D DelayのDly Time Left -- ミスト? 2007-03-04 (日) 23:11:06
  • の値(0~3022)を作ってみましたがバッチリSD-80 Editorと一致いたしました [star] -- ミスト? 2007-03-04 (日) 23:13:03
  • と思ったら逃亡者さんが言っているとおりOffsetが効いてませんでした -- ミスト? 2007-03-04 (日) 23:25:20
  • あれ、本当だ。ずれてない? と思って調べてみましたが、どうも Gate の方の Offset値が反映されてしまうようです。Value の方の Offset は反映されていません。 -- 逃亡者? 2007-03-04 (日) 23:45:45
  • <Value Min="-128" Max="127" Offset="128" Name="1/10 Hz" />
    <Gate Default="1" Min="1" Max="64" Offset="-1" TableID="24" Name="CH を指定" />
    <Data>@SYSEX 0xF0 0x43 0x10 0x4C 0x08 #GL 0x09 #VF2 #VF1 0xF7</Data>
    私はこういう感じで試していたので、Gate の Offset="-1" が反映されて 1つずれてしまったようです。 -- 逃亡者? 2007-03-04 (日) 23:47:39
  • すみませんでした (OO; 直しました→ http://www.tkb-soft.hmcbest.com/Domino109_dev004.ZIP -- たかぼー? 2007-03-05 (月) 19:12:47
  • お疲れ様です。上記の指定で意図通りの結果が得られました (^^) -- 逃亡者? 2007-03-05 (月) 21:20:56
  • ありがとうございます^^ とりあえず完了でいいのかな・・・ -- たかぼー? 2007-03-08 (木) 11:08:51