PasoFun休憩室

気軽に見て下さい

2012年07月

APPLE IIと自動演奏

現在、過去
こんにち、パソコンでの音楽の自動演奏は音源はリアルで、ソフトも優れた物が数多くある。APPLE IIが販売されていた頃は、パソコンによる音楽の自動演奏は初期段階だった。

APPLE IIによる音楽の自動演奏
店(富士音響)でAPPLE IIに音源ボードを使った自動演奏のデモを見たことがあった。確認はしなかったが、恐らく、音源ボードは”mockingboard”だと思う。6音(ボイス)で、各パートをグラフィックカーソルで表示する物であった。当時のレベルでは音質に関しては現在のPCMの様な質感は出せなかったが、それでも魅力的であった。
その頃、たまたま雑誌IO(アイオー)別冊に音源ボード製作の記事があり、自分で製作してみた。音は3音であったが、回路を見て、コントロールチップ、配線追加で6音になることに気付き、変更を加え、雑誌に載っていた音出しプログラムを変更して試してみたところうまくいった。すごい配線の束である。記事では、後で自動演奏プログラムを出すとあったが結局、見たことは無かった。しかたなく、自分で作ることにした。まず、楽譜について勉強した。次に楽器の音について調査した。そしてプログラムを作成をした。
プログラムは次の3つで構成されている
1、データ入力プログラム
  楽譜形式で入力
  データ数;6パート合計で最大6000ノートとする
  データ形式
  初期値;
    (1)パート数
    (2)各パートの楽器タイプ
    (3)長調、短調
    (4)拍子
    (5)テンポ
  各データのパラメータ      
    (1)小節No. 
    (2)音符か休符の識別       
    (3)音符、休符の長さ
    (4)音程
    (5)音符に付くシャープ、フラット、ナチュラルの有無
    (6)その他記号;3連符、強弱等
 データ数を増やすために、各データに必要な構成要素をビット単位で設定する。
   例 小節No.;1バイト
     音符か休符の識別;1ビット以上
     音符、休符の長さ(1/1〜1/64(7種類)、付点の有無);4ビット      
2、演奏データコンポーザー
 演奏順を入力して、楽譜データから演奏用のデータを作成する。
 演奏順のデータ作成には、演奏する順序(小節No.)を入力する。繰り返しが有る時は、その小節No. を入力する。
  データのパラメータ
    (1)音符か休符の識別
    (2)音符、休符の長さ
    (3)音程
    (4)その他記号;3連符、強弱等
     
 3、自動演奏プログラム
 自動演奏部と画面表示部で構成されている。
 自動演奏部
  データを音源に送る繰り返しを出来るだけ短いサイクル、一定の時間で行う。
  演奏のテンポを変えないために、パート数、音符の長さに関係無く同じサイクルで動作させる。
  音出しについては、楽器の音の出力パターンのデータを作り、変化を付けた。楽器の音はゼロから  上昇(アタック)し、徐々に下降(ディケイ)し、いってい(サスティン)する。
  楽器のエミュレート(楽器らしく)
   楽器固有の出力パターンをデータ化してその楽器らしい音の変化をつけた。
   一般的に、楽器の音はゼロから上昇(アタック)し、最高点から下降(ディケイ)し、一定(サ   スティン)になって、最後に減衰(リリース)する。
音













プログラム作りは次のようにした。演奏を高速で安定させるには、アセンブラを使い機械語で書くことになる。これはそれ程大変な作業ではなくおもしろいほど簡単に出来た。演奏中の画面のグラフィックは高解像度では肝心の音出しが難しくなるため低解像度で行うことにした。データの作り方は前述の通り。8ビットコンピューターの少ないメモリーで出来るだけ多くのデータを入れる為に、工夫が必要になる。データを小さくする事に工夫をして数千音(ノート)を入力可能にした。後は音楽データの入力、編集プログラムである。楽譜形式で入力(グラフィック画面で入力)したい。これを機械語で書くのはさすがに時間がかかり、特別に高速である必要が無く、メモリの管理のし易さを考え、BASICコンパイラで行った。音楽のデータは各小節ごとの楽譜データと小節の演奏順序のデータで構成され、繰り返しの場合の無駄なデータ入力を避けた。入力した楽譜データと演奏順のデータから演奏用データに変換する。演奏は、店で見た自動演奏に似た画面とした。結果は良好。実際に曲データを入れるのは結構楽しい。
(おまけ)
当時、マウンテンハードウェアのミュージックシステムという音源ボードがあり、音質が最近のサウンドボードと変わらないものがあり、18万円もするものだったが、どうしてもほしくなり手に入れた。しかし、マニュアルに詳しいデータが無く、また、デモが2曲入っていたが音楽データを入れるプログラムも無かった。しかたなく、自分でプログラムを解析して、音出しルーチンを作り自動演奏プログラムでやってみた。しかし、楽器の音質を出す方法が完全には分からなかったため満足出来るものではなかった。ねばりが足りなかった。結果として、動くには動いたが重い。音符の長さも1/32位までが限界で、パート数6では無理な部分があった。音符の長さが短くなると音の出力が不十分になる問題も影響した。ころで、このボードを買う時に、相手(イーエスデラボラトリー)の反応から、あまり買う人がいないような感じた。あまりにも値段が高すぎる。今考えると、もう少し頑張ってプログラムを作るべきだったかも。

そして再び現在
今はAPPLE IIを使う事は無いが、必要な時は代わりにエミュレータを使っている。自動演奏に関しては、MAC、WINDOWS上でMIDIに準じた高度なシステムになっているが、相変わらず興味を引く。
続きは次回 


マイコンから

私とコンピューター
 
私は、いわば、コンピューター好き人間である。今では当たり前のようにパソコンが使われており、私も主にMacを使っている。そして、どちらかと言えば、プログラムを作ることに関心があり、得意としている。今、過去の自分を反省するために記憶を辿り、経験した事を整理してみる事にした。

マイコンとの出会い
1978年、6月、私は、T.I.のプログラム電卓を探す為に秋葉原に向かった。当時、雑誌に載っていた物だが、この種のものに強い関心を抱いており、5万円程のものだが、どうしても手に入れたかった。秋葉原のどこで売っているか確認もしないでで取り敢えず総武線のガード下の電機部品街をうろうろしている時にある店でマイコン(ワンボードコンピューター)なるものが目に入った。それがEX80だった。

EX80購入
それは東芝製の組み立てキットで、CPUはインテルの8080で、ボード上に16進数入力用のテンキーがあり、1列のLEDディスプレイが配置されるものですあつた。電源は、5ボルト、12ボルトを出力するものを使用。どうせやるならコンピータの方が面白いと思い、すぐ買ってしまった。家に帰って、CMOSの静電気破壊に注意しながら慎重にハンダ付けを行い組み立てた。完成品のスイッチオン。1回目はダメで、ハンダ付けを修正し、2〜3回でLEDディスプレイが説明書通りに点いた。一通り、動作確認を行って問題がないことが分かった。説明書を見て、コンピューターがどのように動くのか理解した。しかし、プログラムの概念は分かってもすぐには組めない。すぐにサンプルプログラムを入力して動きを試してみた。動作確認は出来た。
EX80は、機械語で動かすため、機械語の命令を16進数のバイナリーデータに変換してそれを入力する必要がある。基本的に機械語が分からなければ動かせない。もっとも、やっていることはBASICなどと同じようなもので、CPUのレジスタにデータを出し入れし、演算させたりする。BASICの様な曖昧さは許されないが基本的な考え方は同じ。
雑誌ではNECのTK80のプログラムのダンプリストが主に載っており、当然、EX80では動かないことが多く、EX80用に修正する必要があつた。基本的にI/O関係の違いだ。機械語の命令と、バイナリーコードの変換表を見ながらやるのは大変だった。データの読み書きはカセットテープレコーダーを使った。暫く過ぎて、BASICが動かせるEX80BSのキット(ロジックボードとキーボードのセット)が発売されて、早速購入し、前のボードと2段重ねにして使った。RFモジユレーターで安物のテレビにつなぎ、機械語が分からない人でも、どうにかプログラムが組み易い状態になった。プログラムの保存は相変わらずカセットテープレコーダーだ。カラーは無し、音も出ないがそれが当たり前だった。その頃の私にとってはBASICは馴染み易く、すぐにプログラムが組めた。実は大学の時に夏休みの講習で同じようなプログラム言語に触れた経験があった。ところで、そのEX80だが、家の中を探してみたが、どこにあるのか現在、見つかっていない。多分、部屋の隅にでも有るのではないかと思うが。当時の
記憶が完全でないので多少思い違いがあるかもしれない。なにしろ30年以上前の事だから。
 
パソコンへAPPLE IIステップアップ
         
写真は現在所有して
            いるAPPLE IIe
   






APPLE II 購入
EX80を使い始めてから1年程過ぎたある日、秋葉原の角田ビルにある東芝のブースでEX80の拡張部品を見て、買うかどうか迷っていた。値段が4万円程度するのものも原因の1つだが。帰りに、なんとはなしに駅前のラジオ会館に行き、(5階だったと思うが)、富士音響でAPPLE IIを目にした。(いわゆるパソコンであるが、当時、私にとってパソコンという呼称に馴染みが薄かった)。それはフロッピーディスクがつながれ、ゲームが走っていた。また、パドルと呼ばれるコントローラが付属し、ゲームの操作に使えた。
初期のゲームは完成度が低いが、それでも、EX80とは格段の差があるように感じた。EX80をこのまま続けて、結局、止めることになった場合、出費が無駄になると思い、後戻りが出来にくくなる前に止めるのがベターだと思った。凄い値段だが、無駄にはならないだろうと思い、APPLE  IIを買うことに決めた。APPLE IIのセットと10K BASICガードを合わせて55万円程かかつた。当時は秋葉原に行かなければコンピューター、周辺機器、ソフトは手に入らず、栃木の田舎では全く無縁のものであり、周りの人でコンピューターに手を出している人は皆無であった。話題にすら出ない状態で、恐らく、こんな事をしているのは私だけだろうと思った。
APPLE IIは、BASIC、機械語共に扱いやすく、フロッピーディスクが使えるため、かなり便利であった。私の場合、初めはゲームをかなりやったが、同時にBASICでのプログラム作りなどをやったりしていた。しかし、店でやっているデモのグラフィックを見る度に欲しくなった。売っている筈もないので、なんとか自分で同じ物を作ってみたいと思うようになったりもした。(デモの内容にもよりますけどね)。
高速のグラフィックをやるには機械語で書く必要があり、アセンブラソフトを入手する事が出来たので機械語で組むことに決めた。とにかく、機械語をバイナリーに変換するのに時間をかけたくなかった。かなり後でBASICコンパイラが出て、BASICインタープリタの3、4倍程度の速さにすることも可能になったが、機械語でプログラムを組めば桁違いである。ハードウェアの説明書を調べ、グラフィック関係を理解して、なんとかデモと同じようなものヵ出来るようになってきた。もっとも、肝心な部分を機械語で作り、あまり速さに関係無い部分はBASICで作って、機械語のルーチンをBASICからCALLすることも多かった。ところで、前述のBASICコンパイラだが、BASICインタープリタよりも変数、領域の設定に注意する必要があるが、かなり面白い。
余談ではあるが、APPLE IIを買った頃、ATARI社のATARI800というパソコンのデモを見たことがあるが、このパソコンはかなり高性能で先進的であり、買うかどうか迷ったものである。
続きは次回 

フリートーク
プロフィール

PCの達人

ギャラリー
  • FRETTEL Active wireless earphoneを試す
  • FRETTEL Active wireless earphoneを試す
  • FRETTEL Active wireless earphoneを試す
  • FRETTEL Active wireless earphoneを試す
  • 書籍のPDF化;拡大してもぼやけない
  • 書籍のPDF化;拡大してもぼやけない
  • 書籍のPDF化;拡大してもぼやけない
  • 書籍のPDF化;拡大してもぼやけない
  • 書籍のPDF化;拡大してもぼやけない