2003/4/14/
・その後の改良点

まず、回路構成を一新している。不安定なラッピング配線をプリント基板に置き換え、 センサ周りの設計も一新した。一部センサの接点に、加重によって不具合が生じているので、センサの接合を新たに設計したスルーホール基盤で行い、より安定した構造となった。 また、ロジック系をCPLD(Xilinx製)というプログラム可能なLSIに集積、オルタネイト動作や その他の場面で生じていた不具合の解消を目指した。具体的にはPGMチェンジ信号にアクセスする際のダブルク リックが不要となった。ルックアップテーブルの参照データにも実際の運用に即した改変を行った。結果として回路は複雑になったが、100個以上のD-FFで構成されているCPLDを採用したおかげで、 総部品点数を大幅に減らすことができた。また、CPLD基盤とH8の基盤を分割してあるので、今後のアップデートがパーツ毎にやり易い構成となっている。各スイッチの状態は外部信号による プリセットが可能で、MotorMix等外部機器との連携に対応を考えている
2004/2/13

・その後の改良点2

えらく間が開いてしまったが、改良レポート第二弾をお送りする。  SymbolicSoundのサイトで紹介された後、海外から問い合わせが一件あった。なんとか商売にならないものか、と筐体の見積もりを行ったとこ ろ一台48万円也ということだった。(汗)セットとなると工作だけで予算90万円弱ということなので、製品化は諦めた。 (苦笑) まあ、よほどの事が無い限りこんな代物誰も買わんわな。内部回路を入れたら実費で100万 超えてしまうし。儲けなしでこんな大変なものを作る気は無い。値段をつけるとすると、一台100 万円以上取らないと引き合わない。 で、製品化はさておいて、使い勝手が悪いのは自分のライブに跳ね返ってくるので、日々是改良に邁進しているつもりなのだが、なかなか感性域に達することはなく、ライブで何度も痛い目にあってしまった。もうそろそろ限界を感じてきたので、遂に根本的な問題解決を行うべく重い腰を上げた。

まず、スイッチの動作が鈍くて反応が遅い。幾ら自作モデルとはいえ、これでは酷すぎて安心して 演奏するどころではない場面が何度もあった。次のステージ、3月(2004年)のギグは踊りの伴奏なので、失敗して恥をかく のは僕一人では済まない。ここでようやく根本的解決を目指してシステムを精査することした。  最初は、手近なところから、、、ということで、金欠で諦めていたバネの交換を行う。思えば、最初にバネの径をギリギリに発注してところからケチがついて、しかもバネの巻き直し作業中に爪まで剥がしている。(汗) 以前発注した サワネスプリング のカタログを調べると、丁度使いやすそうな円錐バ ネなる製品を発見。バネ自由長の規格がイマイチ合わないが、これを特注するとバネ一個が凄い値段になるので、ここは我慢(というか、バネの巻き直しに慣れた)して、要求される仕様より少し長めの自由長のバネを購入した。 一個一個、余分な部分を1.5ターンほどカットして(結果ニッパー1本が昇天した)スイッチ可動部分に組み込む。ところが、これでも何故かリリース時の不感帯が出来てしまう。原因は、ショック吸収及び王冠固定用のO-リングの塑性変形で、スイッチが張り付いて しまうのでは?、、、と根拠無く思っていたのだが、バネの反力を強めて、王冠が吹っ飛ぶほどにチューンしても不具合は解決ない。何だかオカシナ感じなのでリリースポイントを計測してみると、オン・ポイントとオフ・ポイントの段差が1mmもある、、、。これではリリース時のタイミングがかなりズレてしまうのは必至である。認めたくないが、どうやら回路の設計でマヌケをやって仕舞ったようだ。

試作第二版で採用したセンサーは、その出力をコンパレーターで受け、パルスを生成しいている。スイッチング時の端月を押さえるための不感帯の設定はコンパレーターのヒステリシスで行うので、その部分の設定値を再度点検した。その結果判ったことは現在の設定ではヒステリシス値がなんと100mVもあるということで、これではいくらセンサの立ち上がりが急峻だといっても問題がありそうだ。そこで、この値を10mV程度に変更してみたところ、全チャンネルで健全な動作を確認できた。32個分のSMDチップ抵抗を交換するのは辛い作業だったが。

次にフィックスする問題は、「AD 周り」のデータ・オーヴァーフローだ。現在フットコントローラーは限界に近い7台を接続しているが、電圧が安定しないためか、コイツらが始終データを吐き続けるので、バッファーは常に満杯で、このデータの洪水にフットスイッチへのアクセスデータが埋もれた結果、肝心のスイッチング・アクションの入力が撥ねられてしまうという事故が多発した。まず、考えられ得る原因として、電源周りから侵入するノイズが疑われたので、AD用の電源をトランスを使ったアナログ方式に交換。基準電圧源もTL431を使った正規のものを追加した。しかし、思ったほど性能の向上は認められない。次にフットコントローラー側の問題を考慮して、関連する配線をシンプルにしてみる。今まではポート分のコネクタをいちいち接続していたのだが、フットコントローラーを4個イチにまとめる改造を行って筐体化し、配線周りの単純化を行った。たしかに、セッティングは以前と比べ物にならないほど楽になったが、 それでもデータは安定しない。試しに、フットコントローラーのアウトプットをグランド電位にし ても、MIDI的にはワラワラとデータを吐いているようだ。これは幾らなんでもおかしいので、AKI-H8 のアナログ端子にSMDチップ・コンデンサーを直に配線して、ノイズをグランドに逃す算段をした。 結果6Bit程度の精度は出せるようになった。その他、データトラフィックを減少させるため、ADデー タをMIDIに送る部分に、10msほどのウエイト・ルーティンを配置してデータ量を抑えてみる。この改造後になんとか演奏に支障の無いレベルでフットコントローラーをつかえるようになったが、今度は一寸反応がトロイ感じがするので、ADの入力変化ディテクタ周りのチューンを引き続き行う事にする。無間地獄の予感。

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