2017-08-18 21:43 — asano
以前「メモリ事情」を書きましたが、今回はサウンド事情について書いてみたいと思います。
- 初期のサウンドの目的はエラー等の発生時に注意を促すことでした。これならビープで事足ります。
最も簡単なのは一定の周波数の信号(通常何らかのクロックを分周するが、専用の発振回路でもよい)をソフトウェアでOn/Offして一定時間鳴らす方法です。長さもハードウェア処理でも良いのですが、ソフトウェア処理ならハードウェアは1ビットの出力ポートとゲート1つで済むのでこちらが選ばれることが多かったです。PC-8001や初期のPC-9801シリーズなどがこの方式でした。
PC-8001ではOn/Offを高速で切り替えることによって音楽らしきものを鳴らすというテクニックがありましたが、ビープの2.4kHzが混ざってしまうこと、表示のためのDMAによりCPUが停止する期間があり正確な周期でOn/Offできないことから、濁った音しか出せませんでした。
のちにPC-8801mk2では2.4kHzを混ぜない回路も搭載されましたが、DMAの問題はどうしようもありませんでした。さらに後継のPC-8801mk2SRからは後述のFM音源が搭載されたのであまり使われなかったようです。
- MZ-80シリーズやPC-9801VF以降などはクロックの分周回路に8253などのカウンタICが使用されました。分周比はソフトウェアで変更可能なので音程が簡単に出せるようになりました。中には複数の音程を切り替えて和音を出そうという試みもありました。
またカウンタを分周モードではなくタイマモードにしてPWM変調を試みる人もあり、PC-9801にはPCM再生をするspeak.comというソフトウェアが作られました。
- おもな用途としてゲームを想定した機種では専用のデバイスが搭載されました。
GI AY-3-8910 PSG (Programmable Sound Generator)やTI SN76489A DCSG (Digital Complex Sound Generator)などです。これらは矩形波3音とノイズ発生器を持ち、3音までの和音が出せるほか爆発音等の効果音も発生できました。AY-3-8910とSN76489Aは機能的にはよく似ていますが、互換性はありません。
- その後ヤマハのFM音源が使われるようになりました。少ないパラメータから複雑な音色を作れるということで、性能の乏しかった当時のコンピュータには向いていたのです。
日本のパソコンではYM2203が広く使われました。これはAY-3-8910 PSGの上位互換となっており、PSGとソフトウェアの互換が保てたためでしょう。PSGに加えFM音源3音が使用可能です。
一部の機種ではさらに上位互換のYM2608も使われました。これはFM音源が6音に増え、他にリズム音源やADPCMの再生ができるようになっています。MSXシリーズでは別のシリーズ(YM2413)が使われました。PCのSound Blasterシリーズのサウンドボードもこちらのシリーズを採用していました。
- さらにADPCM, PCMが使われるようになります。最初は録音したものをただ再生するのみでしたが、プロセッサの処理能力が上がるにつれ活用の幅が広がりました。
- 楽器の波形データを持っておき、必要な音程・長さの波形を生成する
- FM音源の動作をエミュレーションする
- 必要な音数分の波形をミキシングする (⇒ CPUさえ高性能なら音数の上限が無くなる)
今後はチャンネル数(スピーカ数)を増やす以外はソフトウェアの問題となってしまいました。過去との互換性を考慮しなくて良いならPCMだけあれば何とかなるわけです。
以前はPCのドライブでCDを再生するときはドライブとサウンドボードをアナログで接続していましたが、今はCDのデータをソフトウェアで読んでPCM音源で再生するようになりアナログ接続は不要になりました。
Add new comment