Computer Musicもろもろ

長嶋洋一


RE:鬼が笑うAKI-H8の活躍する単行本のお話 98/11/29 18:07


> 近日出版の AKI-H8 本の御解説ありがとうございました。それにしても製作する
>  規模 (100 個の IC!) と、添付予定の情報量は凄いですね。 AKI-H8 のポテン
>  シャルを探るにも、絶好の本になるのではないか期待しています。

今日は午後じゅう、だらだらとしながらシステム設計のメモを書き付けつつ
テレビっ子していたのですが(^_^;)、いやー音源DSPというのはなかなか大変
ですね。ICが100個でできる訳ないことをだんだん思い出してきました。かつて
ギョーカイで音源を作っていた時には、LSIに入るのでゲート数はあまり気に
しなかったのですが、基板に並ぶ個数となると最適化への制限がきついです。
基板も近所のお店にあったので買ってきたのですが、1枚6900円もしました。
手持ちの1枚に加えて2枚買いましたが、けっこうな投資になってしまいます。

AKI-H8のポテンシャルについては、既にこれまでに書いた原稿の部分で、十分
に圧倒していただけると思います。(^_^) 本当に、予想外に凄いボードです。
気付いてみると、最近の製作では、買いだめしたAKI-80をまったく使っていない
のでした。そして今回の執筆でほとんどストックがなくなったので、また秋月
にAKI-H8を注文して、昨日はドカッと届いたところです。また作らないと。

> 僕は悪あがきをして、落着いてからコメントとラベルを入れなおす等のソースのメ
>   ンテナンスをするようにしています。後で理解しやすいように。書くソースの量
>   が膨大な方はこんな無駄ことやってられないでしょうね 。

毎回ちょっとずつ変えているのでそんなに膨大ではないのですが、僕はこの意味
ではまったくメンテをしていないですね。これまでに自作したMIDI機器/センサ
関係のソフトというのは、たぶんAKI-80で数十本、AKI-H8で十数本というところ
です。これ完成品ベースでの数です。しかしそれにしても、AKI-H8とAKI-80では
アセンブラはモトローラ系とインテル系との全面対決で、とても混乱します。
まぁいつもの事と慣れていますが。(^_^;)

> アセンブラを選んだ理由は PIC16F84 のメモリー量とコンパイラーのバグが少ない
>   のではないかという期待です。いままでバグらしいものは体験していません。
>   悲しいことに  YAHOO! JAPN のプログラミング言語のカテゴリーにはアセンブラ
>   という言語は見あたりませんでした。一度経験することは、良いことだと考えて
>   手をつけたのですが。

僕は前の本でも今度の本でも、アセンブラとCの両方の開発環境を構築して、兼用
するところまで紹介していますが、結局は実際にはよほどの必要性がない限り、
アセンブラで開発しています。理由はまぁ、スピードと信頼性でしょう。(^_^;)
MIDIモノはどうせ通信処理部分とかタイマはアセンブラで割り込みになりますし、
マクロ(AKI-H8のには無いですが)とかサブルーチン化によって、低級言語でも
かなり高級言語的に使えますので。

> |最近ではシーケンサではエクスクルーシブで音源のパラメータをいじることは
> |少なくなっているのでしょうか。
> 
> 言葉が足りませんでした。「エクスクルーシブ対策は必要性を感じなかった」では
>   なくて、「僕の環境ではエクスクルーシブ対策は必要性を感じなかった」でした。

いやいや、上記の質問は、一般的なDTMの皆さんに質問したものです。
DTMの世界では、最近では、シーケンスデータにエクスクルーシブで音源の初期
設定パラメータとかを入れるというかつての傾向が、減っているのか、あるいは
輪をかけて進展しているのか(^_^;)、という素朴な質問です。僕はSMFデータを
公開したり交換する、というコミュニティに疎いので、お聞きしたいのです。

ちなみに、MIDI機器を自作する僕としては、まったくエクスクルーシブは使って
いません。この時代にIDを必要とするような怪しいものは使う必要がないです。
僕の本にあるように、僕の作るオリジナル機器を使うのは自分の作品か、依頼
してきたアーティスト等のオリジナル環境ですので、MIDI規格で本来は特定の
意味を持っているメッセージに、勝手な意味を割り当てて使っています。この
方法のメリットは、MAXで簡単にデバッグできることです。デメリットは、プロ
は使えない方法ということです。(^_^;)(^_^;)

> そのうち「FO  を受信したら F7 以外は無視する」というフィルターを
>  付け加えるつもりです。

うーん、たしかF0が来てエクスクルーシブのパケットが来ている時に、F8より
上のリアルタイムが混じって来ても対応しないといけないのではなかった
でしたっけ。あと、F7で閉じていないパケットも解釈してやらないといけない
のでは。(^_^;) なんて考えると全面無視したくなるわけです。(^_^;)

そういえば昔のヤマハの機器で、内部パラメータをリクエストすると、4KB
ぐらいのデータをハンドシェイク無しに一気にドカッと送り付けてくるものが
あり、パソコン等に吸い上げようとうっかりリクエストすると受けきれずに
死ぬ(^_^;)、というのがありましたね。最近では改善されているのでしょうか。
世界的なトレンドとしては、MIDI協議会にエクスクルーシブのIDを申請して登録
する、などという重いスタンスは今時流行らないので(^_^;)、ソフトハウス等
はエクスクルーシブを使っていないのではないでしょうか。インターネットの
ドメインがメイル1本で即日に取れるという時代なのですから。(^_^;)

> 電池以外で駆動するものは、 AKI-H8 を検討していて情報収集中だったので、僕に
>   はグッドニュースです。開発環境はこれからの課題です (^^;)

あれ、僕はAKI-80でもAKI-H8でも電池でバンバン使っていますよ。結構、電池
でも相当に使える、という意識でいます。まぁPICよりはだいぶ電力を使うの
でしょうけど、小型軽量ライブ向け携帯機器もAKI-H8はいいと思います。(^_^)

>   ・・・MSDOSで動作するインラインアセンブルをサポートしている
>   C コンパイラーがあったらベストなのですが。TurboC++ を持っているので
>   これで勉強しておきます。(^^;)

秋月で売っているAKI-H8の簡易コンパイラは2000円ですが、これはバージョン
アップされないらしいです。店員の話では、GCCの本格的なやつがあるそうです
が、AKI-H8のCPUに対応したものはちょっとパッチを当ててコンパイラをまず
コンパイルしないといけない(^_^;)とかで、苦労しているという事でした。
インラインアセンブラにはなりませんが、でも自作のアセンブラルーチンと
混在する手法はAKI-80の時と同じように僕は既に開発済です。この本の原稿と
してたしか書いています。MIDI受信とかタイマ割り込みの部分はこのアセンブラ
モジュールを利用して、GUIとか細かい部分、あるいはシステム依存の部分を
Cで書いて開発する、というのはAKI-H8でバッチリできますよ。(^_^)

RE:鬼が笑うAKI-H8の活躍する単行本のお話 98/11/30 19:02


> >DSPシステムを汎用ICだけで組むということで、かなりきちんと
> >設計しないといけません。PALやGALやFPGAやLCAを使わない、もちろん
> >DSPチップも使わない(^_^;)、というリクエストなのです。
> 
> そういうこだわりって良いですね。
> でも実際に組立てるならFPGAですが...(^_^;)

はい、実は内心後悔しています。(^_^;)
でも、編集長の話では、FPGAとかでスマートに
組んだ製作記事はカッコイイのですが、読者の多くは壁が高くて手を出さなく
なるんだそうです。僕はもっと皆んな、びしばしFPGAを焼いているのかと
思っていましたが。
今日はお仕事の合間にラフな設計などしていました。DSP内部のレジスタ
ファイルみたいな小容量RAMをどうするか、ですね。ASICなら簡単なのですが。

> その昔、シンクラビアの初期のモデルを見たら、CPUまでTTLでディスクリー
> トに組んでありました。ハガキ大の基板が何枚もささるようになっていて、

なるほど。あり得る話ですね。僕もかつて、TTLでCPUを作ろうとか、完全
オリジナルのOSを作ろうとか(OS-9の出た頃です(^_^))、志だけは持った
ことがありますが、まぁ少しも持続しませんでした。(^_^;)

> パラシリ変換が必要になりますが、秋月の通販リストに載っているPCM58
> (バーブラウン)も使いやすいのでは...

バーブラウンはギョーカイ時代にあまりにお世話になったので(^_^;)、
ちょっと変えたいというところです。

RE:2はじめまして 98/11/30 19:26


> H-8 は A/D 8ch D/A 4ch を内蔵しているのですよね。16bit タイマー 5ch  という
>  あたりで現在夢が展開中です。(^^;)

A/Dは10ピット精度が8本、D/Aは8ビット精度が2本です。ただしピンが共通に
なっているので、最大合計8本です。かなり高速です。(^_^)

> AKI-H8 に手を出せそうな気がしてきました。 ROM ライターを持っていないので、
>   AKI-H8 を 2 台購入してフラッシュロムの書き換え回数の限界に近くなったら別
>   の AKI-H8 で 実機 DEBUG を続けようと考えています。(^^;)

僕も、しばらく開発機で使ったものを実機に入れるようにしていますが、
まぁ100回とか200回の書き込みはまったく平気のようです。
ちなみに、たぶん静電気だと思うのですが、VCOとVCFとVCAの実験に使って
いた3枚のAKI-H8が、昨日まで何でもなく動作していたのに、今日になったら
突然に3枚とも動かない(^_^;)、という現象になりました。ライタでは焼ける
のですが、いずれもどこか誤動作するという厄介な現象です。参りました。
こういうのはAKI-80ではなかったことです。でも、基板の信頼度はだいぶ
AKI-H8の方が上ですね。作るのも簡単ですし。完全に部品感覚です。(^_^)

>   ということは、メッセージの処理のほうは、
> リアルタイムメッセージ?→エクスクルーシブ?→他のCHメッセージ等?
>  という流れで判定するといけるでしょうか?なにか落とし穴があるかな。

基本的にはそうです。たしかMIDI協議会のドキュメントに、推奨のフロー
チャートがありましたよね。詳しくは判りませんが。

> F7 で閉じていないパケットというのは、どういうケースなのか良く分かりません。
> (^^;)F7の後にエクスクルーシブのデータが届くケースが、有り得るということ
> でしょうか?

F0で始まってダラダラと続いて、来る筈のF7が来ないのにノートオンとかが
ドカドカ来はじめたら、どうしますか? (^_^;)(^_^;)
昔のバグ有りMIDI電子楽器にはよくあった現象です。

> エクスクルーシブはあまり実際使われていないようなら、自分の環境で必要性を感
>   じてから対策しても遅くなさそうですね。

はい、まったくその通りだと思います。(^_^)

> AKI-H8  はともかくあの自作の世界の重鎮と言われる AKI-80 のほうもそんな感覚
>   で運用できるとは知りませんでした。

まぁ電池は単3でも006Pでもアルカリを使いますが、リハから本番まで数時間、
というような使い方は何度もしています。僕の印象では電池OKです。(^_^)

RE:BeOS 版 MAX 登場? 98/12/03 06:52


> 時間精度なんかも計測してみると面白そうなんですが、どなたかこんなツールを
> 作ってみませんか(^^;)?AKI-H8 に LCD を組み合わせれば比較的簡単に実現でき
> そうなのですが。
> ・適当な MIDI Message を送信して受け側でソフト・スルーして返って来るまで
>   の遅延時間を計測する
> ・定期的に発生させた F8 などを受信してタイミングのずれを計測する

これは、あと1ヶ月前に言われていたら、本の原稿にからめて速攻で作って
いたところです。今となってはもう暇がなくなりました。作るのは簡単なの
ですが、時間がないです。誰か作りませんか?

> 受信した MIDI データにタイム・スタンプを付けて適当な形で保存するというの
> は比較的簡単にできますので、そのツールがあれば検証もすぐにできると
> 思います。
> 実は今 MIDI の基本的なコーディングの練習も兼ねてメトロノームを作っていま
> すので、これが終わったら検証用の機能を追加してみたいと思います。

僕の作ったのは、詳しくは本に載せるのでここでは全部は公開できません。(^_^;)
というのも、来年春の情報処理学会と電子情報通信学会の全国大会で発表する
爆弾ネタにもなっているからです。(^_^;)
せっかくなので、ここだけですが、その原稿の一部を抜粋して紹介します。

=======================================================================
市販されているMIDIシンセサイザやMIDI音源モジュール、さらにパソコン等の
ソフトウェアによるGM音源ドライバやGM音源モジュールについて、実際にMIDI
信号を受けてから発音されるまでの発音の遅延とそのばらつき、さらにMIDI情
報のトラフィックに対する振舞いについて実験的に検証し、特に音楽心理学の
ための実験環境として安易に利用されている現状に関して、その問題点を検討
した。
分解能が4分音符単位で960とか1920と謳われている市販のシーケンスソフトの
実際のMIDI時間管理にそのような精度が無いのは常識であり、実際のMIDI信号
を処理する部分がソフトウェアのブラックボックス内に入っているツールをこ
の計測に使用することは無意味である。そこで、必要な基準MIDIメッセージの
みを正確に送出し、さらにその出力タイミングと厳密に同期したトリガ信号を
発生するツールをまず開発した。今回の計測では、基準MIDIメッセージとして
「MIDI1チャンネル、ノートナンバ60、ベロシティ100でON、その直後にOFF」と
いう6バイトのMIDI情報を送出して、その最終バイトの送出と同期してディジタ
ルポートに幅2.5m秒のトリガパルスを生成した。このMIDI信号を対象の音源に
直接接続し、GMリセットによりそのサウンド出力に現れるピアノ音の立ち上が
り点までの遅延をストレージスコープで20回計測し、平均遅延時間と最大値最
小値をプロットした。この「シングルトリガモード」とともに、多量のMIDIト
ラフィックの中からこの基準MIDIメッセージを受信して発音する「トラフィッ
クモード」も設けて併せて計測した。ここでは、上記シングルトリガモードの
情報と対応したトリガ信号を生成しながら、さらにバックグラウンドとして
「他の二つのMIDIチャンネルで、ノートナンバ0から127までを順に、ベロシテ
ィ1でONして直後にOFFする多量のメッセージ」を流す。送出レートのチューニ
ングにより、実際にMIDIケーブル上を流れるディジタル信号が約70%になるよ
うに調整した。これは実際の音楽の場では多数のセンサフュージョン情報をマ
ージしたような非常に過酷な条件であるが、同時発音数は常に1音で情報として
はMIDI規格に従った条件であり、ベロシティが最小音量である多量のメッセー
ジに埋没することなく、基準メッセージのサウンドが発音されることが求めら
れる。
今回の実験で対象とした音源は以下(メーカ省略)である。
((中略(^_^;)))
このような特性を持つMIDI音源を音楽心理学の実験の道具として使用した場合、
文献にあるように、人間の聴覚と音楽心理学的な影響から、発音遅延やばらつ
きによって、実験の意味が消滅する危険性がある。適確な環境の構築が必須で
ある。
((後略))
=======================================================================

単行本では、このツールの回路図(チョー簡単(^_^))とAKI-H8のソースを
完全公開していますので、皆さんこの危険な実験をできます。Indyなどでは
プロセス単位でなくUnixのカーネルから凍り付き、リセットボタンにドライ
バーを突っ込まないと対応できなくなります。(^_^;)

> ということは、エンベロープの状態遷移があって、エンベロープを保持するアップ
> ダウンカウンタがあって、VCAはROM乗算器かな? VCFの係数更新はどうするのかな、
> と想像はつきないです。

いいセン、行ってますね。(^_^)
音色の時間的変化はVCFとなるとディジタルフィルタとなって大変になるので、
すいませんが簡易型です。MIDIを受けて鳴るようにしたいので、ちょっとAKI-H8
とのインターフェースで悩んでいます。今日もこれから、新幹線の中で設計です。

>   乗算器ICですが、74LS/HC384なんてどうでしょうか? 16ピンのICですが、
> シリアル入力の8ビット乗算器で、一度何かに使ってみたいなと思っていたので
> す。データがシリアルでなかったらだめですが、非常にユニークなICではないかと

昨日、追加の部品を藤商電子に発注したところですが、このICは気付かなかった
です。まぁROM乗算でいいでしょう。久しぶりに283とか86がズラリと並ぶ基板
を作ることになりますね。(^_^)

MIDIの出力回路・入力回路 98/12/10 06:53


> MIDIの送信回路を今作っているところですが、出力部分の回路で試行錯誤中です。
> 記事ではHC05を使われているのを拝見いたしましたし、HC04を使っている
> 記事も読んだことがあります。今使っているCPUは吐き出し電流で20mAの駆動能力が
> あるので、できれば部品数を減らしたいという理由でCPUから直接ポート出力が
> できないかと思って試しているところです。

僕の回路でHC05を使っているのですが、もともとMIDIというのはハード的には
 ・カレントループにして耐ノイズ性を高める
 ・送信側/受信側をフォトカプラで電気的に分離する(故障伝播防止)
 ・そのためフォトカプラ1次側の電源は送信側から供給する
という事を同時に実現するという仕様になっています。このため、出力と
してはオープンコレクタかオープンドレインのインバータを使う、というのが
定石です。つまり04を使うというのは、規約違反となります。(^_^;)

また、簡易回路では、エミッタフォロワ等のトランジスタで作ることも
ありますが、高速動作時の動作としてはちょっと不安です。入力からスルー
して多段接続するところには使いたくありません。1段2段程度ならいいの
ですが、立ち上がり時間と立ち下がり時間の遅延特性の違いから次第に波形
としてデューティが変わってきてしまいます。

ポートの仕様に「吐き出し電流」がありますが、実際にはHレベルでは電流を
流さず、Lレベルの時に電流を「吸い込む」というのが正しい言い方になり
ます。データシートでは、ポートの吸い込み電流の仕様を見て下さい。
(等価回路としては、GNDとの間をON/OFFする超高速リレーです)
厳密なことを言えば、一般の出力ポートというのは、オープンコレクタ/
ドレインの出力回路とは構成が違うので、MIDI出力には適当でない、という
ことになります。ただし、04同様に使えることは使えます。アマチュアの
場合には、精神衛生上の問題です。プロの設計なら御法度です。(^_^;)
まぁ、ひどいものではRS232Cから抵抗1本でもMIDIは動くのですから。

ちなみに、上記のMIDIの仕様には
 ・受け手が勝手に送信側から電源(電力)を取らない
という意味もあります。ところが、電源を別途に供給しないタイプのパソコン
のMIDIインターフェースというのは、実はこれをしています。(^_^;)
つまりMIDI送信側から、電気的に分離するために受け手のフォトカプラの
1次側のLEDの電源として220Ωを介して供給しているのですが、なんとこれを
1Fとかの大容量コンデンサに貯えて、分離される筈の2次側のフォトカプラ
の電源に利用しているのです。これはMIDI本来の規格としてはやっちゃいけない
反則技ですので、パソコン周辺機器メーカとかは勝手にやりますが、少なくとも
MIDI協議会のメンバーの楽器メーカとかはこのタイプの製品は出していない
と思います。誤動作防止とか安全性のための仕様を無視しても動作はする
わけですが、このタイプのインターフェースはセンサ等からのMIDI情報を
多量に受信し続けていると、上記コンデンサに充電している電荷が減ってきて、
かといって抵抗経由で盗んでいるので電荷はそう速攻では貯まりませんので、
次第にMIDI受信が不安定になってきます。実際に、多数のセンサフュージョン
情報からパターン認識をしているシステムでこのトラブルによく遭遇しますので、
「電源無しのMIDIインターフェースは恐くて使えない」という経験則が徹底
しています。(^_^)

僕の公演ではこのタイプのインターフェースも使いますが、それはMIDI入力
のトラフィックが少ないことを理解した上でやっているわけで、多数のセンサ
がドカッと送ってくる時には、ちゃんと専用に自作した電源付きのMac用
MIDIインターフェースを使います。AKI-80の本に写真が載っていましたっけ。

...というようなことがあり、あの本の回路となっております。(^_^)

> そこで回路の検証という名目で (^_^;) オシロスコープを入手しようと企てていま
> す。今のところ岩通にしたいのですが、オシロもどきでお茶を濁すかもしれませ
> ん(^_^;)工作されているみなさんはやはりオシロスコープはお持ちなのでしょうか

オシロはずっと前に、数万円の簡単なものを入手したのですが、最近はまったく
と言っていいほど、これは使っていません。いま活躍しているのは、秋月が
売っている、Windowsパソコンに付くサンプリングオシロ(ストレージ)です。
この便利なところは、ストレージになるところ、そして画面のハードコピーが
簡単にBMPでできるところです。既に出した本では、工業調査会の「電子回路と
ノイズ対策がわかる本」という単行本のオシロ画面は全てこれです。(^_^)
次に出る予定の単行本(どうも来年3月あたりらしいです(^_^;))でも、この
オシロ画面はバッチリ活用しています。僕の持っているのは、200MHzの一番
高いタイプのものですが、普通の用途であれば、もっと廉価版でもまったく
問題なく使えます。モノとしてはなかなかいいですよ。(^_^)

よいお年を(^_^) 98/12/31


さて、今年最後の近況報告です。実は、まったく「区切り」がついていません。
せっかくなので、本当にこのデバッグ地獄の作業で年越ししたいと思っています。
懸案の単行本「作るサウンドエレクトロニクス」(仮題)の最終章の、「TTL
だけで音源DSPを作る」というテーマですが、ようやく全体の回路設計と製作
が終わりました。問題はここからです。まだ、制御系のAKI-H8のソフトを開発
していないので動かないのは当然ですが、回路図はできたとして、製作したこの
ハードが正しいというわけではなく(^_^;)、本当に動作するところまでもって
いき、その過程でタイミング設計などの設計変更をしつつ本物にしていく、と
いう楽しい楽しい(^_^;)(^_^;)(^_^;)作業に入りました。

それを、せっかくなのでHi-8で撮ってindyに取り込みました。以下、簡単に紹介
しておきましょう。もしかすると、デバッグに失敗して「未完の大器」に終わる
可能性もあるシステムです。(^_^;)


これは僕の机の全景です。実際のデバッグでは、A4で十枚ほどの回路図とタイ
ミングチャート、3冊のデータブック、オシロ、ハンダごて、MIDI送りのもう
1台のPowerBookも登場するので、こんな整然としてはいません。(^_^;)
左側のPowerBookの画面内では、AKI-H8のソフト開発用にWindows95が走って
います。(^_^) MacもWinも、まったく同じメーカのトラックボールを使って
います(本当は右のIndy用にも欲しいのですが、3ボタンがないのです)。
この操作性に慣れると、効率が悪くてもうマウスには戻れません。これは
新幹線内でも愛用しています。正面上の積み重なった2台のCDROMドライブは、
下がApple純正(^_^;)、その上がWindowsノートで書き込むCD-Rです。僕の作品
のCDは全てこれで作りました。bit別冊の付録もこれでマスタリングしました。
右のIndyの前に立っているのは、Indy用超小型PC/ATキーボードです。(^_^)
Indyディスプレイのすぐ左にあるMOは、MacとWinとサンプラーで交代に共用
しています。その上の拡張HDはCD-R用に増設しました。ここに写っていない
パソコンが、あと数台、現役で待機しています。(^_^;)(^_^;)
そして、中央にドン、とある基板が、30cm*20cmの今回の試作中のシステム
です。すぐ左にはAKI-H8ライタ、すぐ右には電源ボックスがあります。いずれ
も自作です。(^_^)


その基板のアップです。左上にMIDI入力、発音割り当て等の動作を行うAKI-H8
が載っています。縦に4つ並んだEPROMは、これで16*16の乗算を実行する
EPROMです。その左に二つあるROMが、波形とエンベロープのROMで、まだ
暫定のデータしか入っていません(このソケットはレバー付きのもの)。
いちばん右が富士通の16ビットD/Aコンバータです。二つあるスリム28pinDIP
がSRAMです。283を並べた、16ビット加算器、20ビット加算器もあります。
このぐらいで、ギョーカイ諸氏はシステムの概要がお判りでしょう。(^_^;)
まだ、設計変更で残りスペースにICが加わる可能性は大きいです。
水晶オシレータは今回は25MHzのものを使っています。上の方のフォトカプラ
とMIDIコネクタは、いつものものです。(^_^)


この基板上のAKI-H8に書き込むための、自作フラッシュROMライタです。普段は
スイッチングレギュレータ上に作ったこの基板にAKI-H8を挿すのですが、今回
はいちいち抜き差ししないように、こうやって延長してみました。オンボード
でテスト書き込み、テストランを繰り返すことができます。(^_^)


そして、これがシステムの基板の、配線が終わったばかりの配線面です。(^_^;)
これは、新年になって出張とかで2-3日単位で出歩くようになったら、まず
絶対にデバッグ作業が進まなくなりますので、この年末年始(もう年末はない
ですね(^_^;))に集中してやっつけるしかないわけです。(^_^;)

詳しいチェックはAKI-H8のソフトと同時進行でないとできませんが、慎重に
製作したとはいえ、まぁ絶対にミスもバグもあり、さらにたぶん基本的な設計
ミスで設計変更もあります。基本構想としては動く筈のシステムなのですが、
本当に動くかどうかは、まさにここからが山場です。去年のKyma漬けの年末年始
に続いて、なんか強烈な年末年始となってしまったようです。(^_^;)

(^_^)謹賀新年(^_^) 完成しました 99/01/04 06:41


年末年始というのは、毎日いつものようにアクセスしても閑散としていて、
自宅に篭ってデバッグ三昧、というには最高の時期といえます。(^_^;)

なかなか過酷な課題とともにマル3日半(12/31-1/3)、ついにデバッグが
完了し、つまりは制御側のAKI-H8ソフトから基板上に搭載された6個のEPROMのデータ
作成まで含めて、懸案の「製作」が昨日の午前に完遂できました。(^O^)(^O^)/^^^

まだ作ってみただけでまったく動かなかった(^_^;)基板も、最終的には
74個のICと15枚ほどの設計資料(回路図等:普段はまったく描かない僕にとって
は画期的な分量です(^_^;))、ということで決着しました。16音ポリフォニック、
モーフィング時間的音色変化、ADSR123エンベロープ、タッチレスポンス、24KHz
サンプリング16bit分解能、(AKI-H8のソフトを改訂すれば)マルチティンバー、
という、音源LSIとして作っても1万ゲート程度にはなるものに、無事に成長して
くれました。デバッグ個所はかなりになりましたが、配線ミスはそれほど多くなく
て、設計上の細かなミスもそこそこありました。(^_^;) まぁ、25MHzのオシレータ
を使っているのに、計測器は日立の20MHzの2CHオシロだけなのですから、よくも
まぁ、複雑な時分割パイプラインの奥底まで探ってデバッグできたものだと自分
でも感心します(デバッグのためのD/Aツールも製作しました)。ここ数年で、
もっとも集中した3日間となりました。外出も電話も手紙も通信もなく没頭できる、
年に一度の絶妙な期間のお陰です。(^_^)

まだまだ、本にするにはここから、原稿の記事、そして何よりも自分だけでなく
誰にも判るように回路図をキチンと描いて、さらに動作の詳細を説明しないと
いけません。時分割多重化システムの設計思想を本人以外に本当に伝えるという
のは至難の技なのですが、いよいよそれに挑戦することになります。(^_^;)
LSIを作る時のような「いいCAD」がないので、まだ、
 ・MacDraw
 ・DraftCad
 ・テキスト回路図(この会議室にアップするもの(^_^;))
 ・手描き回路図を編集部でトレース(ミスのデバッグが大変(^_^;))
のどの方法でいくか、は未定で悩んでいます。これまでのところは、簡単な回路は
上の三つの方法で原稿にしてきたのですが、今回はどうやってもA4サイズなら
回路図が数枚から10枚程度に分割されてしまうので、悩ましいところです。(^_^;)
でもまぁ、実際に動作するブツが目の前にあるので、なるべく忘却しないうちに
やっつけたいと思っています。

...ということで、まだまだこんなハードなハードを白紙から設計して製作して
完成できた、という自分を誉めてあげたいモードに入っています。(^_^;)
どうやら僕の経験値はまだアップしているようです。音源LSIをびしばし
作っていた時代にも、この作業にはマル3-4ヶ月以上はかかっていたのですが、
今回は前半は片手間なのに、およそ2週間で全部完了したことになるわけです。
サラリーマンエンジニアとフリーエンジニアの集中力の差、ということもあるの
かもしれません。そういえば去年はある筋から「音源を作りませんか」などという
オファーが一瞬あったのですが(^_^;)、「お仕事」として引き受けたら、たぶん
こんな短期集中ではできなかったでしょう。自分だけのために好きでやることが
一番なのかなぁ。(^_^)

RE:AKI-H8完成 99/01/11 10:43


> (ある理由で)ハードウェアに少しは慣れたいというのと、ここを読んでいて
> おもしろそう、かつ、AKI-80でなくAKI-H8ならなんとかなりそうというのが
> あって、AKI-H8に手を出しました。

そうですか。なかなかAKI-H8は、いろいろと作ってみて、その実力に感心
しましたので、どうぞ遊んで下さい。(^_^)

> ということで、次はMIDIオルゴールにする予定です(^^)
> パーツは既に買ってありますが、この辺からキット制作とは違う
> 私にとって未知の世界となります(大げさな(^^;;)
> そういえば、忘れずに232の足切断もしておかないと。なんか恐いです(笑)

別に、ICのピンの根本で切断するだけのことです。(^_^;)
この加工所要時間は2本合わせて10秒です。違うピンは切らないようにして
下さいね。(^_^;)

ということで、年末年始に集中没頭デバッグしていた「TTL(HC)で作るDSP」も
無事に完成し、ちゃんとMIDIを受けて動きました。サンプルのサウンドを5曲
ほど録音し、付録CDROMのサウンドトラックとして僕の去年の作品からいくつか
も趣味で放り込み(^_^;)、ISO9660にした70本1MBのリストのデータトラックと
ともに、マスターCDROMが完成しました。図面も、この章については24本3.5MB
のBMPファイルとして完成し、この章としては52KBとなったテキスト原稿ととも
にCDに入れて、写真撮りのためにこの基板とともに、昨日、編集長に送った
ところです。(^_^) コラムでは、またまた趣味の音律ネタを入れてしまい
ました。(^_^;) 全体のバランスの関係で、今回はセンサもの、インスタもの
はカットしました。次の機会にまた別の視点でまとめようと思っています。
この本では、もう秋月が泣いて喜ぶほど、AKI-H8のオンパレードとなって
います。簡単に作ってそのまま動くように、ソースとともに
フラッシュROMのためのMOTファイルも入っています。タイトルの副題に
「AKI-H8」が入る可能性もかなり高いです。これから相談です。(^_^)

「Java & AKI-80」読者からの質問 99/01/14 11:10


先日、「Java & AKI-80」の読者の方からメイルが来ました。
内容は「ROMエミュレータ」の回路についての質問で、了承して
いただきましたので、ここでそのやりとりを紹介しておきます。

●最初に届いたメイル(より抜粋)

先日から「Java&AKI-80」(トラ技97増刊号)を読み進め、回路製作の
準備をしています。
「ROMエミュレータの開発」章に「プリンタ・ポート利用のROM
エミュレータの製作」項目が有りますが、その中の回路図で(P34・
図4-6)、プリンタコネクタから出た出力線(8bit)が、トランシーバー
HC245を経て、8ビットの内4ビットが、7つのラッチIC・HC574に、
並列に分岐し、それぞれのラッチIC・HC574は、残りの4ビットを
デマルチプレクサHC138に通し、そのHC138の指示により出力状態
になる・・・と理解しております。
ここで解かりませんのは、0番から6番まであるHC574の内、[1]番目の
HC574から、どうしてD4からD7のデータが出力できるのかという事
です。(各HC574へは、D0からD3までのデータしか入力していない
のに?)以下同様に、[2]番目のHC574〜[5]番目のHC574から、
アドレス信号A0〜A14が出力されていますが、入力側でアドレス信号
入力していないのに、どうして出力されるのかが解かりません。
デコーダHC138でアドレスを作るのだとしたら、D4〜D6の3ビットの
入力で、どうしてA0〜A14迄の15個もの信号が作れるのかが解かり
ません。どうぞ、よろしくお願い致します。

●僕からの返信(より抜粋)

まず、パソコン側のソフトはオリジナルですので、D0-D7とまとまっていますが、
この中身はソフト的に自由に分割して別々に扱えます。実際、このマシンでは
D0-D3をいわゆるデータラインとしてまとめて扱い、D4-D6は「どのラッチに
書き込むか」という選択(アドレスですね)としてまとめて扱い、最上位のD7
またはSTBはそれらラッチへのラッチパルス生成に単独で下げて上げる、という
操作をします。

7個の574の入力は全て、D0-D3です。いちばん下だけはD2までですが。
各574には全てD0-D3が入っていますが、ラツチパルスが来たものだけが、その
時の入力を確定させて出力させます。

出力としてD0-D3を574にラッチさせたい時は、プリンタポートのD0-D3に
出力したいD0-D3を出しつつ、この担当ラッチは574[0]なので、選択アドレス
としてプリンタポートのD4-D6に[000]をセットして、最後にラッチパルスの
ビットを下げて上げます。これで138からY0にだけ下がって上がるラッチパルス
が出て、574[0]の出力にD0-D3が出てきます。
出力としてD4-D7を574にラッチさせたい時は、プリンタポートのD0-D3に
出力したいD4-D7を出しつつ、この担当ラッチは574[1]なので、選択アドレス
としてプリンタポートのD4-D6に[001]をセットして、最後にラッチパルスの
ビットを下げて上げます。これで138からY1にだけ下がって上がるラッチパルス
が出て、574[1]の出力にD4-D7が出てきます。
出力としてA0-A3を574にラッチさせたい時は、プリンタポートのD0-D3に
出力したいA0-A3を出しつつ、この担当ラッチは574[2]なので、選択アドレス
としてプリンタポートのD4-D6に[010]をセットして、最後にラッチパルスの
ビットを下げて上げます。これで138からY2にだけ下がって上がるラッチパルス
が出て、574[2]の出力にA0-A3が出てきます。
出力としてA4-A7を574にラッチさせたい時は、プリンタポートのD0-D3に
出力したいA4-A7を出しつつ、この担当ラッチは574[3]なので、選択アドレス
としてプリンタポートのD4-D6に[010]をセットして、最後にラッチパルスの
ビットを下げて上げます。これで138からY3にだけ下がって上がるラッチパルス
が出て、574[3]の出力にA4-A7が出てきます。
出力としてA8-A11を574にラッチさせたい時は、プリンタポートのD0-D3に
出力したいA8-A11を出しつつ、この担当ラッチは574[4]なので、選択アドレス
としてプリンタポートのD4-D6に[011]をセットして、最後にラッチパルスの
ビットを下げて上げます。これで138からY4にだけ下がって上がるラッチパルス
が出て、574[4]の出力にA8-A11が出てきます。
出力としてA12-A14を574にラッチさせたい時は、プリンタポートのD0-D2に
出力したいA12-A14を出しつつ、この担当ラッチは574[5]なので、選択アドレス
としてプリンタポートのD4-D6に[100]をセットして、最後にラッチパルスの
ビットを下げて上げます。これで138からY5にだけ下がって上がるラッチパルス
が出て、574[5]の出力にA12-A14が出てきます。
最後に、574[6]の中身はさらにこのデータをビットごとに書き換えて、バス
の切り替えとRAMのライトパルスとAKI-80のリセットを送っています。

この操作は、リスト4.11、リスト4.12を詳しく追いかけると判ると思います。
単純なソフトです。(^_^;)

=========================================

ということです。技術的な内容としては、8ビットしかないプリンタポート
から、データの8ビットとアドレスの15ビットを出力するために、時分割
というのか、ラッチごとに分割して出している、ということですが、その
あたりは確かにこの本ではまったく説明が無いので(^_^;)、もっともな
質問ですし、この部分を本質的に理解できれば、自分でオリジナルの
ディジタル回路を設計していく上でとても重要なことですので、こう
やって紹介させていただいた次第です。自作派
の卵の皆さんも、ぜひとも参考にして下さい。この本の中では、この
ROMエミュレータがいちばん「作ってみて活用している」という話を多く
聞きますね。僕は、これはちょっと手強いので、あまり作る人はいないと
思っていたのですが、いやいやどうして、皆さんなかなかやります。この
ツールがあれば、AKI-80でびしばし色々と開発できるので、確かに便利
なのです。秋月で出してくれればいいのに。(^_^;)

MIDIのワイヤレス化(長文) 99/01/21 12:35


またまた、インターネットから以下のようなメイルが届きました。

> 自作でワイヤレスMIDIの制作をしようということです。
> 以前市販されていた(現在も?)、MIDIトランスミッターと
> 同レシーバーは、ギターなどのFMトランスミッター&レシーバー
> と併用し操作するものでした。
> ということは、MIDI信号は、音声信号に変換できるということですよね。
> いろいろさがすんですが、MIDIというのがどういう信号で、
> それを音声信号に変換するにはどのような回路をくぐればよいのか?

ここだけ読んで、ハハァあれだな(^_^;)、とピンとくる諸兄も多いかとは
思いますが、ここはMIDI自作派予備軍の初心者に向けて、基本的なところから
解説しておきましょう。ただし、「MIDIというのがどういう信号で」の部分は
省略します。「Java & AKI-80」をお読み下さい、ということで。(^_^;)

まず、いきなり結論じみた事を書きましょう。入力としてMIDI情報が既に
あり(たとえばステージ上空に吊られてMIDIキーボードを弾いているよう
なイメージ(^_^;))、これをワイヤレス化して送り、受け手で再びMIDI
に戻して音源に与える、というようなことです。この場合、MIDIの
31.25kbpsという情報転送のスピード(インターネット時代としては
かなり遅いのもかかわらず)がネックとなり、「自作の方が安くできる」
というのはかなり望み薄、となります。最初にそういう覚悟が必要です。
どうしてもワイヤレスで確実にMIDIトラフィックを無線伝送したい場合
には、専用の機器を買うことをお勧めします。(^_^;)

さて、それでは概論からいってみましょう。目的を「広義の演奏情報を
ワイヤレスで伝送してMIDI化したい」というようにしましょう。つまり
ここでは、インスタレーションに仕込まれたセンサの入力情報もソース
の一つですし、ワイヤレスの手段は無線とは限りません。そして、共通
するのは、最終的にはMIDIになっていて、そこからの知的処理はMAXで
いきましょう(^_^)、ということだけです。この条件をご了承下さい。

◆ワイヤレス伝送手段

ワイヤレスというのは無線とは限りません。赤外線通信、超音波、など
も対象となります。特にディジタルのままでMIDIの情報をまともに伝送
するなら、最近のIrDA技術を利用して赤外線リモコンのように伝送する
という手もあると思います。超音波というのも、うまく使うとアマチュア
がローコストで利用できると思います。ただし赤外線と超音波は、いずれ
も指向性が強く、間に遮蔽物があったり送信側と受信側とがうまく向き
合っていないと誤動作します。ちなみに赤外線や超音波の通信システム
は、秋月や共立で色々なキットを安価で売っていますので、実験してみる
意義とチャンスは十分にあります。
そして、以下ではワイヤレスモジュール(無線を利用)の手法に限定して
検討していきます。

◆複数スイッチのON/OFF情報

「広義の演奏情報」と入力ソースを広げたのは、いきなり入力ソースが
生MIDIとなってしまうと、ワイヤレス伝送の可能性の選択肢(これは
経済的な意味で、アマチュアの自作派が手を出せる世界という意味)が
えらく限られてしまうからです。
まずもっとも単純には、「スイッチのON/OFF」があります。インスタ
の場合、とにかく例えば来場者が造形物に働きかける(近接、接触など)
の情報が得られればいい、という事があります。このON/OFFという情報
は、ワイヤレス伝送には好適です。スイッチは一つである必要は
ありません。プッシュホンのボタンのそれぞれは二つのトーンの合成音
で成り立っていますが、複数のスイッチ入力(たとえば16個)のON/OFF
をスキャンして、それをまとめて1本のアナログトーン信号(DTMFって
言いましたっけ)に変換するICがあります。これを普通のワイヤレス
マイクで無線送信して、受信機のこの音声DTMF信号を再び16個の
ラインのON/OFFに復元するICも、たいていセットであります。このDTMF
チップセットIC(1000円しません)を使うと、複数スイッチのON/OFFの
情報がいったん音声信号にエンコードされ、これを何らかの無線通信
モジュールで伝送して再びディジタル信号にデコードされるわけです。

◆DTMF伝送とMIDI化

この出力は、AKI-80とかAKI-H8のパラレルポートにそのまま入る
ディジタル信号ですので、あとはどのようにもMIDI化できます。(^_^)
ちなみに、16チャンネルのディジタル情報をDTMFワイヤレス伝送する
ためには、普通のFMラジオ帯域のワイヤレスマイクとFMラジオ程度
でも十分ですが、当然ですけど混信したら駄目になります。(^_^;)
秋葉原あたりだと、これに使える150MHz帯とか250MHz帯の小電力
小型無線送信/受信モジュールが、1万円台から5万円あたりまで色々
と出ています。安いものはそれなりに性能と信頼性が低いです。同時に
複数を使う場合には、メーカに確認して同じ周波数帯域でもクリスタル
周波数を変える必要があります。
僕が「Java & AKI-80」の中で紹介した「ワイヤレスPowerGlove」
の、グローブの指情報は、この手法で伝送していました。グローブの
指の部分の導電プラスチック板の抵抗値を分圧抵抗に使って、指の曲げ
の情報をシュミットトリガICで受けて2値化し、AKI-80で4本の指情報
として入力します。そして、DTMF送信モジュールはスイッチマトリクス
をスキャンするので、このスキャンラインで得られる信号になるように
AKI-80の出力ポートから出してやり(モジュールを騙しているわけ
です(^_^;))、送信させています。受信側は単純に、16個のディジタル
復元情報をAKI-80に入力させて、MIDI情報として出力しています。
ICCで常設展示している、前林さんの"Audible Distance"という作品に
僕が作った心拍センサの情報も、この手法でワイヤレス伝送しています。

◆センサからの連続量(電圧)情報

スイッチのイメージのON/OFF情報でなく、センサの電圧出力として
アナログの連続量をワイヤレス送信したい場合もあります。この場合、
 [1]AKI-H8などでA/D変換して独自フォーマットでシリアル伝送
 [2]アナログ電圧をそのままV/Fコンバータでピッチに変換
 [3]アナログ電圧をそのままPWMなどにエンコードして送信
などの方法があります。
[1]の方法の場合、MIDIの31.25kbpsは無線伝送には速すぎる(送れる
無線モジュールはたしか10数万円以上、ととても高い(^_^;))ので、
たとえば1200bpsとか2400bpsあたりにして、2種のトーン信号
の組み合わせとして送信します。
[2]の方法の場合、アナログ電圧をディジタルの周波数にそのまま
置換します。VCOです(^_^)。LS124も使えます。当然ながら誤差
もあり、ワイヤレス機器の周波数帯域がもろに伝送情報のダイナ
ミックレンジを決定します。
[3]はたしか去年、▽▽さんが夏シンポで発表した中にあったと思い
ますが、OPアンプのオシレータ(コンパレータ?)にアナログ電圧を
与えて、VCOよりは安定したアナログ情報のエンコードに成功して
いたと思います。
これらの方法によるエンコード情報は、DTMFと同じような性能の
無線モジュールで伝送できます。▽▽さんによると、2400はツライ
ということでした。サッポロシティは110bpsでしたっけ。(^_^;)

◆シリアル入力をワイヤレス伝送

ON/OFFやアナログ情報でなく、既に入力としてシリアル情報と
して確定している場合もあります。MIDIはその一つとなりますが、
このスピードは31.25kbpsです。たとえばPowerBookやBioMuse
などの場合には、RS232Cのシリアル信号が来ます。スピード
としては、2400,9600,19200,38400bpsと言いたいところ
ですが、ここでは9600bpsあたりを上限と考えた方がいいと
思います。
このようなシリアル情報をリアルタイムに伝送するには、
 ・シリアル入力をバッファリング
 ・このバッファから無線伝送レートのシリアルとして送信
という送信側の機構が必須となります。AKI-80かAKI-H8の
ようなマイコンが必要となります。
また受信側としても、
 ・無線伝送レートのシリアル入力をバッファリング
 ・このバッファ内容を解釈し、MIDIバッファに積む
 ・このMIDIバッファからMIDI出力
という機構が必要で、ここでもマイコンが活躍します。
そして、実はこの部分というのは、以前に僕が
書いた「MacのRealBasicのRS232CでMIDIの双方向情報処理
を行うためのモジュール」そのものです。(^_^) あの回路は
たしか9600bpsで、双方向の情報を欠落させないために、
FIFOバッファをそれぞれの場所に入れています。多量の情報が
殺到した時のリアルタイムレスポンスはちと悪くなりますが、
確実な情報転送を行うためには必須です。回路もマイコンの
ソフトもそこで公開してあり、実際に動作しています。(^_^)

◆高速情報のワイヤレス転送

さて、ここでようやく冒頭の質問に関係してきます。
> 以前市販されていた(現在も?)、MIDIトランスミッターと
> 同レシーバーは、ギターなどのFMトランスミッター&レシーバー
> と併用し操作するものでした。
というのは、おそらくFMワイヤレスはダイバシティとかを使って、
無線伝送の信頼度を上げているものなのでしょうが、ちょっとこれに
ついては疑問があります。(^_^;)
入力されたMIDIを確実にワイヤレス伝送するには、音声信号そのまま
エンコードするのはちょっと無理があります。そこで9600あたりに
スピードを落とすにしても、上記のようにマイコンを使ってバッファ
リングして伝送レートを落とすと、レスポンスが悪くなります。
ギターの場合で言えば、チョーキングのような連続量は極力粗く
サンプリングして情報伝送量を減らさないといけないと思います。
また、正直に31.25kbpsとか38.4bpsをディジタルのままで伝送する
無線モジュールを使う、という手の場合には、前述のようにかなり
高いものとなります。つまり、MIDIラインになったところで途中に
「長距離伝送のための光ファイバ」を入れることはよくあります
が、同じここに「ワイヤレス伝送のための***」を入れる、という
のは技術的にはうまくない選択(^_^;)、ということなのです。

ヤマハのミブリの初代モデルはワイアードで連続量をセンシング
できましたが、2代目モデルではワイヤレスになったものの、
タッピングのスイッチON/OFF情報の伝送になってしまった? と
いう話を聞きましたが、これも上記のように理由があることなの
です。(^_^;)

...ということで、うまくまとまったとは言えませんが(^_^;)、参考
にしてみて下さい。ポイントとしては、システムとしての情報の
切り分けによって、性能も信頼度もコストもだいぶ違ってくる、と
いう当然のことです。無線伝送というのはけっこう粗いので、確実
にローコストで伝送したいなら、粗い情報の段階でワイヤレス化
した方がいいようです。