SD-80のデータを複数に分けて転送するSYSEXについて
メッセージ
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と一致いたしました -- ミスト? 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 - すみませんでした 直しました→ 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