2003/4/14/
|
|||||||||||||
・その後の改良点 まず、回路構成を一新している。不安定なラッピング配線をプリント基板に置き換え、 センサ周りの設計も一新した。一部センサの接点に、加重によって不具合が生じているので、センサの接合を新たに設計したスルーホール基盤で行い、より安定した構造となった。 また、ロジック系をCPLD(Xilinx製)というプログラム可能なLSIに集積、オルタネイト動作や その他の場面で生じていた不具合の解消を目指した。具体的にはPGMチェンジ信号にアクセスする際のダブルク リックが不要となった。ルックアップテーブルの参照データにも実際の運用に即した改変を行った。結果として回路は複雑になったが、100個以上のD-FFで構成されているCPLDを採用したおかげで、 総部品点数を大幅に減らすことができた。また、CPLD基盤とH8の基盤を分割してあるので、今後のアップデートがパーツ毎にやり易い構成となっている。各スイッチの状態は外部信号による プリセットが可能で、MotorMix等外部機器との連携に対応を考えている |
|||||||||||||
2004/2/13
|
|||||||||||||
・その後の改良点2 |
|||||||||||||
2004/03/16
|
|||||||||||||
MotorMixのプロトコルをやっと手に入れたので、これを機にKYMA/VCSからプリセットデータを受信するプログラムを製作中。これは当然 MotorMix との連携を考えた仕様 で、B0 を先頭とする特定されたデータを受信したときに、スイッチのステイタスを読み出す仕組みだ。このパートには3664という H8Tiny シリーズのマイコンを使用する予定。3664は受信専用とし、H8 のマザーボードからは独立した存在となる。 |
|||||||||||||
2004/03/25
|
|||||||||||||
計画していた3664による VCS データ受信ユニットだが、まったく歯が立たなかった。Tiny シリーズはアドバンストモードに対応していない為、アドレスは16ビット対応となるらしい。従って、300H 用に書いたアセ ンブルコードの分岐命令に対応できない場面があるようだ。Webを検索したところ1例 MIDI工作の記事を 見つけたが、SCI が1ch しかない事や、メモリーの搭載量の関係からあまり使用には向いていないように思える。製作例では、3048用にC言語で開発されたコードを移植していたので、機種互換性を 考えた場合、Cで開発する方が異なるチップでの相互乗り換えが楽になるようだ。他に製作例が無いので仕方なく使い慣れた 3052で引き続き開発を行う事にした。 |
|||||||||||||
2004/03/27
|
|||||||||||||
MIDI 受け用のコネクタがショートしているという大変情けないトラブルで丸一日無為に過ごしてしまった。トラブルの原因確定後は、すんなりとデータを受信することが出来た。ポートのアサインで少々混乱したが、現在受けに関しては問題なく動作を確認している。 |
|||||||||||||
2004/03/30
|
|||||||||||||
その後、KYMA との連動試験を行ったところ、幾つか問題点がわかってきた。まず、KYMA の VCS から出力さ れる MotorMix の LED 点滅用プロトコルのデータ確定方法が厳密には存在しないことがある。VCS と Capybara はスクリーンショットの切り替えを外部からの program change message を受信後に Firewire を経由してを行っているのだが、受信確定後に MIDI が出力される仕組みにはなっていない。そのため、必然としてデータ確定のタイミングはローカルで決定(推定)する事になる。また、VCS のスピードはホストコンピ ューターの処理能力に依存するので、受信部でデータが確定するタイミングを推定する事は難しいのだが、Pentium 3/600Mhz の環境での実測値はおよそ2秒、余裕を見て3秒あまりの遅延があるようだ。一番確度の高い方法は、VCSの表示を見て手動でプリセットを行う事だが、経験から、ライブ演奏時にはある程度自動化したシステムの方が混乱が少なく都合が良いので、発信されるプログラムチェンジ信号そのものをトリガーに採用した。 問題は、やはり VCS の遅延時間の設定となる。VCS スクリーンショット切り替えトリガーの発生から、プリセット・ データがスイッチに降りてくるまで MIDI 信号はループを一巡することになるが、その間も MIDI 送受信用 H8 の内部ではデータが処理されている。そのため、遅延時間の計測はメインの処理ループから分離する必要がある。今回は遅延時間計測用に WDT(番犬タイマー)を使用する。WDT は8ビットカウンターで構成されているので、マスタークロック分周設定を最大値の4096 にセットしてもフルスケールで 40ms 程度の遅延時間が得られるに過ぎない。そこで、カウンターオー ・ヴァーフロー毎に発生するインターラプト時に、それぞれ6ビットの時間計測用カウンタを廻すことで、2.5秒の遅延時間を獲得している。タイマーは64カウント分のインターラプトを終えた後、データ取り込み用のトリガーを発信する。 その他、MotorMix の下流には LED 点灯メッセージが流れてこないので、MotorMix 本体を改造して Midi Thru 回路を追加する必要があった。配線は未使用の DIN 5pin の空き端子1番と3番を使用する。 MotorMix と併用しない場合はクロスケーブルを自作する必要がある。 ディテクトからスイッチプリセットまでのシーケンスを説明すると、、、、 |
|||||||||||||
1) H8 MIDI 送受信デバイスの A:フットスイッチのプログラムチェンジ割り当てスイッチにアクセス B:もしくは MIDI 入力端子に外部入力されたプログラムチェンジ信号を検知 2) A:スイッチ状態判定ルーティン内でプログラムチェンジ出力を識別 B:外部入力の MIDI 受けルーティンでプログラムチェンジ信号を選別 3) プログラムチェンジ信号発生フラッグに書き込み 4) フラッグ検知後、リトリガーが可能なように、スタートルーティン頭でタイマーのリセットを 行った後、WDT をスタート。マイコンのバックグラウンドで2.5秒をカウント 5) 一方、スイッチ・プリセットデータ受信部(H8別体)で、MotorMix 用の LED 点灯デー タを受信、スイッチ本体のプリセットデータポートにデータをアップロードする 6) アップロードには KYMA の VCS(ヴァーチャルコントローラー)の状態が反映されるため、 約2秒あまりの遅延が生じる 7) タイミングリタードされたトリガーをスイッチコントローラー(CPLD) のプリセット クロック端子 に入力。プリセットデータがスイッチの状態に反映される。 こんな感じのことをやるのに3週間程掛かったのだから、これは一寸時間を食い過ぎだ。 設置/撤収の簡略化を目論んでいるので、各種ケーブルの一本化が今後の課題となっている。演奏規模によっては MotorMix を切り離したシステムも考慮しておく必要がありそうだ。あと、データの無線化も興味があって、RS-232C を BlueTooth に変換して飛ばすデバイスを発見している。ただ今、MIDI 送受信に応用できないかメーカーに問い合わせ中。 |
|||||||||||||
2005/06/27
|
|||||||||||||
一寸時間が空いてしまったが、その後の改良・変更のレポート。 まず、2004年末のギグに合わせて、MIDIケーブルをマルチ化し、配線をシンプルに改造した。MotorMix内部にThru回路を追加したものの、偶にデータロックアップが原因と思われる動作の不具合が散見される。これは、MIDIアウト周りの問題と思われるが、KYMA立ち上げ後に接続を行うと問題の発生率が軽減されるようだ。やはり、グランド周りの電位差が怪しいのだろうか? AD変換の問題解決のため、コードをいじるも進展がなく、仕方なしにMIDI受け出しのバッファーの容量を1/4に抑えたところ、怪我の功名で誤動作の確率が減少した。無駄にゴミデータを吐かなくなった分、KYMA側のMIDI受けバッファーがオーヴァーフローしなくなったと想像される。同様に、プリセット側のバッファーも減らしてみる予定だ。 |
|||||||||||||
2005/07/04
|
|||||||||||||
AD周りのバグをフィックス。AD変換ループ外にあった変換速度設定の矛盾を排除した。同時にMotorMix プロトコルを使った Preset 受け用マイコンのバッファー容量を4kから1kにダイエット。動作速度の向上に成功した。その他、3664へのデータ移植実験を継続中。電池駆動の組み込みシステムへの応用を狙っている |
|||||||||||||
2005/0709
|
|||||||||||||
H8/3664へのMIDIソフトウエア移植に成功。現在、MotorMix用のLED点滅プロトコル受信ソフトウエアが可動している。 移植へのハードルは、ベクターアドレスの設定ミスが主な原因だった模様。H8/3052との互換性はあるものの、アドレス設定のやり直し、メモリー配分の変更など修正する必要がある項目が多く、事はそう簡単にはいかない。H8/3048からH8/3052への乗り換えが、楽だったので甘く見ていたが、Tinyシリーズはあくまで低位互換ハードウエアであることを認識すべきだろう。開発にCを導入していれば、乗り換え時の互換性の問題は軽減されたと思うので、徐々にアセンブラからCベースに開発環境を移築する必要がありそうだ。 |
|||||||||||||
Audio Hologram / Orbital Maneuvering Music | |||||||||||||