自作フットスイッチ・システムとKYMA・VCSのリレーション
フットスイッチをライブで使用しているときに戸惑うのは、ProgramChangeでVCSのシーンチェンジを行った際に、予めプリセットされたVCS上のスイッチの状態と本体のLEDで表示されているスイッチのステイタス情報が、一致しないことだ。この問題をフィックスするためにはVCSの状態をフットスイッチ側に反映する何らかの仕掛け作る必要がある。2004年、MotorMix社がMotorMix関連のMIDIプロトコルを公開したことを受けて、マイコンによるデータ受信・復調システムを工作することにした。

KYMA側のPreferenceでMotorMixの使用を選択している場合、Capybara のMIDI端子からは常にMotorMix用のコントロールデータが送信される。このデータのうち、MotorMix中央にあるLED群32個分の点滅情報をフットスイッチのOn/Offステイタス情報として流用する。

まず最初に、VCS上で設定するスイッチの位置を調整し、MotorMixのLED群と動作を一致させる。VCSでインターフェイスの形状をスイッチにプリセットした場合、そのステイタスは自動的にMotorMixのLED点滅情報として送信される。注意する点は、表示形態を優先してVCS側のスイッチを Switch_Fill に設定した場合、VCS側からはオルタネイト動作が一切行えなくなることだ。当然、VCSからもオルタネイト動作は(ハングアップ防止から)行えないので、オルタネイト/モーメンタリー動作の設定は、唯一フットスイッチ側から行うことになる。

VCSとMotorMixのリレーションを確認した後、フットスイッチをプリセットするためのマイコン・プログラミングを行う。要求される仕様は、MIDI受信後、LED点滅用のプロトコルを選別、結果をスイッチ駆動用のLSIのプリセット端子に入力する。

仕様を決定する上で最初の問題点は、スイッチのプリセット情報をどのような時期に確定するかそのタイミングの設定にある。VCSとMotorMixの動作を観察すると、シーンチェンジを行った直後のVCSの状態は画面全体が一気に変化する事はなく、左上方のデータから順を追ってスキャンしていることが判る。これは、グラフィックのイベントドリヴンで発生した状態が、MIDIデータに反映していることを示唆している。この事例から推測されることは、音響処理の全てをDSPをに依存しているKYMAではあるが、ことVCSに至ってはPC側の処理能力が動作速度を左右すると言う点だ。つまり、PCの速度差によってデータの確定時間にばらつきが出てしまうのだ。 

次に考慮する点はデータのロックアップである。 MotorMixはVCS(Capybara)→MotorMix→KYMA(Capybara)というMidiLoop内での使用を想定している。当然、ロックアップの危険があるため、MotorMix用のプリセットデータはMotorMixの下流には流れる事はない。しかし、FootSwitch使用時にはこれが、VCS(Capybara)→MotorMix→FootSwitch→KYMA(Capybara)というルーティンとなり、MortorMixで堰き止めたデータはFootSwitchで復活してしまう公算になる。つまり、FootSwitch側でデータを堰き止める機構を作らない限り、データのループが出来てしまうのだ。

以上のことを鑑みて、FootSwitchのプリセットデータ読み込みのタイミングは、FootSwitch本体から中継するProgramChange信号の発生タイミングをリタードして行うことに決定した。以下に信号の流れを説明しよう。

まず、FootSwitchは接続されたProgramChange信号発生用のデバイス(MidiMouse、及び、FootSwitchのスイッチをProgramChange信号にプリセットした場合)からの信号を受け、Midi信号を中継する。この時にFootSwitch内のマイコンはProgramChangeStatusを判別し、フラッグを立てる。中継されたMidi信号はCapybaraに到達、VCSのシーンチェンジを行う。この間、FootSwitchのマイコンではフラッグをトリガーとしてWDT(番犬タイマー)が作動し、FootSwitchコントロールLSI用のデータラッチ信号を発生させる。一方、KYMA側ではVCSの状態が段階的にシーンチェンジに反映し始め、それに伴ってMotorMixのLED点滅データが送信される。 FootSwitch側ではKYMA側の状態に関係なくプリセットされたパルス幅を経過した後、データラッチ信号がリセットされる。 つまり、ここでSwitch側で設定されているパルス幅は「あくまで見込み」時間であって、パソコンの処理能力を反映したものではない点に注意しよう。

さて、マイコンのプログラミングであるが、こちらは、FootSwitch本体用マイコンの改変と、受信専用のマイコンの新設、この二つの作業が必要となる。まず、オリジナルのマイコンには、ProgramChange信号のステータスを検知し、WDTを作動させるルーティン、トリガー発生用のデータポート、及びパルス幅設定用のロータリーエンコーダーと入力ポートを追加する。今回はあと一台、データプリセット用のマイコンを増設する。こちらは、KYMAから送られてくるMotorMix用のデータを検知/復調し、その状態をポートに出力している。現在のバッファー設定は4kバイトであるが、MotorMix本体よりも遅延が酷いので、これを1/4に設定し直すことを考えている。


CENTRAL CHANNEL SECTION:
CENTRAL CHANNEL SECTION
L.E.D. ON/BLINK
L.E.D. OFF
MUTE (1 thru 8) B0-0C-(00thru07)-2C-(42/52) B0-0C-(00thru07)-2C-02
SOLO (1 thru 8) B0-0C-(00thru07)-2C-(43/53) B0-0C-(00thru07)-2C-03
BYPASS (1 thru 8) B0-0C-(00thru07)-2C-(44/54) B0-0C-(00thru07)-2C-04
REC/RDY (1 thru 8) B0-0C-(00thru07)-2C-(45/55) B0-0C-(00thru07)-2C-05