Proteus2000のロータリーエンコーダ完死。nanoKONTROLで復活か?
ロータリーエンコーダの取替え、、失敗
E-mu Proteus2000に使われているLGのロータリーエンコーダが駄目で、全くどうにも表示を制御できなくなった。わざわざ秋葉原まで足を運んで秋月でロータリーエンコーダ(EC16B)を購入して付け替えようと試みた*1。
ハードウエアはカラッキシ駄目だという事実をすっかり忘れてのチャレンジ。半田の吸い取り器*2をかったり色々努力してみた。2時間以上もかかって、最後はペンチで半ば強引に元の部品を引っぺがし、無駄に多い半田で新しいロータリーエンコーダを取り付けたものの。。どれほど優しくノブを廻してみても一切反応なし!!(号泣)。音が出てボタン類まで殺さなかったことが幸いだと泣く泣くあきらめることにした。
さて話はここから。
proteus2000をSysExで制御できないか?
ProteusだってSysExで制御できるはずと思ってマニュアルを探るがそんな記述は見当たらないググッてみると、あった!Proteus 2000だけではなくシリーズでのSysExでの制御ということでドキュメントを見つけた*3。やったとばかりにまずはシーケンサーからSysExの送出を試みる。Remote Front Panel Control Commandsの章を読み下すとこういうことらしい。
- まず、remote control session のopen
- 制御対象(ボタンやら今回狙いのメインノブ)を決めてそのときに動かす大きさをなどを指定
- 最後にremote control session のclose
この3段階だということが分かった。例えばノブを右に廻すには以下の3つのSysExを送出する必要がある。
- F0 18 0F 7F 55 40 10 F7
- F0 18 0F 7F 55 40 22 01 00 01 00 F7
- F0 18 0F 7F 55 40 11 F7
この数字列の意味を解説すると、まず3つのうちの最初と最後の remote control session open/closeについては
- F0(SysEx始まり)
- 18(E-muのベンダID)
- 0F(proteusのID)
- 7F(Device ID、0-7Eすなわち0〜126の個体を識別できるということ。今回は7F/127だとブロードキャストして全機器に設定の意味)
- 55(Special Editor designator byte)
- 40(フロントパネルを制御しますよというコマンド)
^ 10/11(session open / close)
- F7(SysEx終わり)
まん中のノブを廻すコマンドについては
- F0(SysEx始まり)
- 18(E-muのベンダID)
- 0F(proteusのID)
- 7F(Device ID、0-7Eすなわち0〜126の個体を識別できるということ。今回は7F/127だとブロードキャストして全機器に設定の意味)
- 55(Special Editor designator byte)
- 40(フロントパネルを制御しますよというコマンド)
- 22(Rotary Event)
- F7(SysEx終わり)
- 01, 00(16進4桁で制御対象を指定。今回はMasterつまり壊れたノブ)
- 01, 00(符号付14bitのLSB,MSBの順番でのクリック数。正だと右回り、負だと左回り。つまり右に一つはこうなる)
- F7(SysEx終わり)
ここで注意は符号付14bitといっても8bit,8bitの一番上のビットを0とみなしての符号付き。マニュアルだと78頁にある。これを理解しないと右にしか回らない。
左に廻したいときは「-1」にしなきゃいけないが、これを2ビットで言うと「01111111|0111111」(まん中の縦棒は8ビット区切りのつもり)で16進だと「7F7F」、これをLSB,MSBひっくり返して(結局同じだけど)「7F, 7F」。敢えて全部書くと
F0 18 0F 7F 55 40 22 01 00 7F 7F F7
次に、これを折角買ったのにペラペラで使っていないnanoKONTROLを使ってそこから制御できるようになって生まれ変わってくれるととうれしいな。