自作フットスイッチ・システムとKYMA・VCSのリレーション
|
||||||
![]() |
||||||
KYMAはCMLab社のMotorMixを標準でサポートしている。 MotorMixは、90年代の終わりに登場した比較的安価なインターフェイスで、 MotorDrive フェーダーを実装した画期的で息の長い製品だ。これ無しにライブは不可能、と言い切るのは少し大袈裟だが、非常に便利な機材であることは間違いない。 ところで、僕のライブではMotorMixと共に、自身で製作した階段状のフットスイッチを使用している。スイッチ自体の動作には満足しているのだが、演奏中に時々戸惑うことがある。それは、ProgramChangeでVCSのシーンチェンジを行った際に、予めプリセットされたVCS上のスイッチの状態とフットスイッチ本体にLEDで表示されているスイッチのステイタス情報が、一致しないことだ。この問題をフィックスするためにはVCSの状態をフットスイッチ側に反映する何らかの仕掛けを作る必要がある。2004年、MotorMix社がMotorMix関連のMIDIプロトコルを公開したことを受けて、マイコンによるデータ受信・復調システムを工作することにした。 |
||||||
KYMA側のPreferenceでMotorMixの使用を選択している場合、Capybara のMIDI端子からは常にMotorMix用のコントロールデータが送信される。このデータのうち、MotorMix中央にあるLED群32個分の点滅情報をフットスイッチのOn/Offステイタス情報として流用する。 □□□□□□□□ MotorMix上面中央からみて。この列のLEDは無視する ○○○○○○○○ これはロータリーエンコーダー。この部分のデータも無視 @ABCDEFG この列のLEDからOn/Offのデータをフットスイッチの表示に対応させる。 @ABCDEFG 正方形の4×4のマトリックスが左右バンクに別れているという設定をとる。 @ABCDEFG データ上では横一列の連番になっているところを、マイコンのレジスタ上で @ABCDEFG 並べ替え、左右個別ののスイッチ・プリセット用データとして再構築する。 まず最初に、VCS上で設定するスイッチの位置を調整し、MotorMixのLED群と動作を一致させる。VCSでインターフェイスの形状をスイッチとしてプリセットした場合、そのステイタスは自動的にMotorMixのLED点滅情報として送信される。注意する点は、表示形態を優先してVCS側のスイッチを Switch_Fill に設定した場合、VCS側からはオルタネイト動作が一切行えなくなることだ。当然、VCSからもオルタネイト動作は(ハングアップ防止から)行えないので、オルタネイト/モーメンタリー動作の設定は、唯一フットスイッチ側から行うことになる。 VCSとMotorMixのリレーションを確認した後、フットスイッチをプリセットするためのマイコン・プログラミングを行う。要求される動作は、MIDI受信後に、LED点滅用のプロトコルを選別、結果をスイッチ駆動用LSI(CPLDで作成済み)のプリセット端子に入力する、といったところで、これに合わせて細かい仕様を決定していく。 仕様を決定する上で最初の問題点は、スイッチのプリセット情報をどのような時期に確定するか、そのタイミングの設定にある。VCSとMotorMixの動作を観察すると、シーンチェンジを行った直後のVCSの状態は画面全体が一気に変化する事はなく、左上方のデータから順を追ってスキャンしていることが判る。これは、グラフィックの状態変化をトリガーにイベントが発生し、それが順を追ってMIDIデータに反映されていることを示唆している。この事例から推測されることは、音響処理の全てをDSPをに依存しているKYMAではあるが、ことVCSに至ってはPC側の処理能力がVCS周りの動作速度を左右すると言う点だ。つまり、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用のデータを検知/復調し、その状態をポートに出力している。バッファーの容量設定を1kバイトとすれば、遅延は殆ど生じないようだ。
1) H8 MIDI 送受信デバイスの |
||||||