PC-9801の音声再生

 インターネット黎明のころ、パソコン通信のBBSへの書き込みした方からその当時どんな雰囲気だったかを聞きます

free(573/585) 93/11/16 01:16 げーん、なんか指名されてしまった
1rep 1176B

私は単に○○○○○さんに「こうやったらPCM鳴る。作れ」とか言われて
そのまま作っただけやのに・・・。

まあ一応簡単に説明すると、98VMのbeepはタイマーICの出力とANDかかってまして、タイマーICをいじる事によっていろんな事が出来るようになってます。(○○○さんの言う周波数の変えられるbeepもそう)
で、そのタイマーのモードに「カウンタをデクリメントする間は0をカウンタが1になったら出力するモード」というのがありまして。このカウンタにPCMデータを一定時間毎に入れてやると、beepがカウンタの値の分だけ鳴るようになってPCM再生になります。

ちなみにbeepのモードを変えるので、プログラム終了時にちゃんと元に戻さないプログラム(な○らとか(笑))ではbeepの音が変になります。

それ以外のパソコンでのbeepでのPCMってのは、
・beepが鳴ってる→音が有る
・beepが鳴ってない→音が無い
というのを1ビット分の、1ビットPCMです。

後はPSGのDAモードを使ったPCMとかが有りますね。

こんなもんであってますでしょうか? >専門家の方々

1993/11 BBSの書き込み より

 当時のPC-9801ではFM音源はあったもののPCM音源は無く、beep音という一定周波数の矩形波(ビーというブザーのような音)を使って無理やりPCMを再生する方法が一部界隈で存在したようです。

pc98(6/33) 91/12/17 14:13 エコーのかかるpcmです(98/286用)
[ECHOPCM .LZH] 64KB

最近Q&Aボードでエコーについて聞いていました
成果がこれです。ちょっとサンプルのせいで
大きいですが、暇が有ればダウンしてみて下さい。

pc98(18/33) 92/05/06 00:06 PCMディスクシリーズの98版のソースです
[PAPI_SRC.LZH] 12KB
一応「ぱぴぷぺぽ98」「世界一98」「なてら98」のソースが入ってます。
昨日東京パソケで「ソースください」って人がいて、ソースは
一応送ることにしたんですが、なんとなく「その人だけがソースを持っている」
という状況になるのが気にくわなかった(笑)のでここにアップします。
(ひでえやつだなぁ)
他人が読むことを想定してないソースなのできちゃないです。
(ついでに手抜きもいっぱい・・・)

1991~1992年頃のBBSの書き込みより

 PC-9801シリーズのパソコンでPCM再生するようなプログラムを精力的に作成されていたようです。

 書き込みでは偉そうにしてますが、当時も今もですが、なんで BEEP で PCM 再生できたのか、理屈を全く出来てません。知ったかぶってコメントしてますが、何も理解せずに書いていたはずです。
 と、これでコメントが終わったら余りにも不親切なので、分かる範囲で解説を書いてみましょうか。
 まず PCM について。ぐぐれば Pulse Code Modulation と出てきますんで、詳しくはそっちを読んでもらった方がいいわけですが、簡単に言っちゃうと音声をデジタル化する手法の一つですな。PCM では音声信号を時間軸で区切ってそのままデジタル化します。CD-Audio も PCM を採用していますな。
 PCM は仕組みとしては非常に単純なのですが、なんせデータが膨大になる(CD は1枚 650MB だけれど、当時のパソコンはメモリが KB もしくは MB 単位。フロッピーも 1MB の 5 インチ 2HD が主流)ということで、パソコンではまだまだ普及していませんでした。
 そんな中で PCM(正確には非可逆データ圧縮をした ADPCM)を標準で搭載したのが X68000 シリーズ。さすが目の付け所が違う会社の製品は違いますな。
 一方の国民機 PC-9801(正確には国民機と名乗っていたのは互換機の EPSON)には PCM は搭載されていませんでした。のちに拡張ボードで対応したような気もするけど、さすがにその辺は記憶が曖昧で。音美ちゃんとかあったような気がするけど、これ同人ハードですよね。純正では PCM 対応してなくて、FM 音源だけだったのかな。ぐぐったら 86 ボードで対応してたのか!あー、あったあった。持ってなかったけど。
 当時、FM 音源を使って PCM 再生を行うという試みもありました。PCM データをフーリエ変換して FM 音源データにしてしまうという。鈴のような声(何言ってるか聞き取れねー)とかですな。ああ、何もかもが懐かしい。
 話が常に取っ散らかってるけど、気を取り直して PCM 再生に戻して。のちにオプションで PCM 再生に対応した PC-9801 ではありますが、標準では対応してないし、大多数のユーザは 86 ボード持ってないわけです。そんな中でなんとか PC-9801 でも PCM 再生出来ないかと考えられて実現されたのが BEEP 音によるものなのですね。
 BEEP 音による PCM 再生は別に我々のオリジナルでは無くて、先行事例があります。商用ソフトではコンパイルの魔導物語やぷよぷよでやっていたと思います。オンラインソフトでも再生ソフトがあったんで、これを調べればいいかというところだったんですが、ドキュメントに解析禁止という条項がありまして。これに反応して

「お前のプログラムなんか参考にせず、自分で調べてやるわい!!」

 と書き込み冒頭にある「こうやったらPCM鳴る。作れ」と言ってた人がPC-9800シリーズ テクニカルデータブックを調べ始めて、ほんの数日で実際に実現してしまったんですね。こわいやっちゃな。
 「このポートにこういう風にデータを書け。そうすれば PCM 鳴る」
 と言われて、素直にその通りに実装したのが私という次第でありまする。
 こうして理屈は分からないけれども PCM 再生できるようになりましたんで、二つ目の書き込みのエコーなんぞは簡単なものです。減衰したデータをディレイして加算してやればいいだけですからね。実際簡単な修正で綺麗にエコー掛かったので非常に面白かった記憶があります。
 PCM再生できるようになったことで、PCM再生を利用したソフトウェアを作成します。「なてら98」はデータ量がそれほどでもなかったのでオンメモリで動いたんですが、「世界一98」は音声データが 1 分以上。とてもメモリに載りきらんということでフロッピーから読み出しながらの再生になりました。アホですな。
 「ぱぴぷぺぽ98」はグラフィックデータもメモリに載りきらなくなったので、ディスク2枚から交互にがっちゃんがっちゃんと読み出しながらの再生となりました。アホアホですな。音声データはシーケンシャルなので順番に読めばいいんですが、グラフィックデータは使いまわしがあるのでシーケンシャルになりません。どのブロックをどの順番でフロッピー上のセクタに配置したら、シーク速度も計算に入れたうえでうまく収まるかを紙の上でシミュレーションし、全て間に合うことが分かった時にはとても安堵した記憶があります。忘れろよそんな記憶。
 最近になって、この仕組みがストリーミングであると言われて、おおこれがストリーミングであったかとビックリしました。当時、そんな概念なかったから、全く気付いてなかったんですな。まあ、だからって私がストリーミングを発明したなんて言うつもりは無くて、多分概念としてはもっと前に発明されていたでしょうし、もしも私が世界初だったところで、それを現代に繋げられてなかったんだったらやっぱり無意味ですよね。

BBS書き込みした方による現在のコメント

 NECのパソコン、PC-9801のハードウェアについて詳細に記載されたPC-9800シリーズ テクニカルデータブック アスキーテクライト編集という技術書がアスキー出版局から出版されていて、書き込みした方は何かプログラムをPC-9801シリーズ向けに作成する時にはいつも参照していたそうです。

タイマ仕様
使用LSI   8253C相当
ビット長    16ビット
カウンタ数   3組
カウントレート 500.8ns(1.9968MHz):システムクロック8MHz時
        406.9ns(2.4576MHz):システムクロック5/10MHz時

PC-9800シリーズ テクニカルデータブックより
PC-9800シリーズ テクニカルデータブック 8253A タイマ制御概念図より

 テクニカルデータブックによると、PC-9801シリーズで使用しているタイマは8253C相当のもので、約2KHzの電子ブザー音を出すために使用しているようです。このような接続をされている機能をプログラムで工夫することによってブザー音だけでなく音声再生も出来るようになるようです。
  PC-9801シリーズはいくつかの機種でFM音源チップやPCM再生機能を標準で持つものもあるようです。しかし、仕事用パソコンに音楽や音声の再生などの余計な機能は不要と考えられていた時代でもあったようで、当時サウンド系の拡張ハードウェアを追加していない状態のPC-9801シリーズで音声再生できるのは、いろいろなオフィスにあるほとんどのPC-9801でそのまま使用できるため、手軽で便利だったようです。

用語

・98VM
 NECから発売されていたパソコン PC-9801VMの略称。それまで発売されていたPC-9801と、1985年発売のPC-9801VM以降でハードウェアが一部異なる。PC-9801VM以降は上位互換性を持つ機能向上したものとなっているため、当時のソフトウェアも追加機能を利用した場合は過去の機種で動作しない。このため、PC-9801VM以降などと表記することで区別できるようにすることが多い。

・タイマIC
 基本となる与えられている周波数を指定回数だけ数える事で、ある程度の調整可能な時間を出力できる機能をもったチップ。8253Cはプログラマブルインターバルタイマ Intel 8253と同等の機能を持つ。

・PC-9800シリーズ テクニカルデータブック
 アスキー出版局から発売されている青い表紙の資料。新しいPC-9801シリーズが発売されて機能が増えるごとに更新されている。PC-9801シリーズのプログラムをする方々のリファレンスになっている事が多い。

・パソケ
 パソケットの略。かつてあった同人ソフト・同人音楽の即売会。

・なてら98、世界一98、ぱぴぷぺぽ98
 当時頒布されていたPCMディスクシリーズの名称。

・魔導物語
 正式名称は魔導物語1・2・3で、コンパイルから発売された3Dダンジョン型ロールプレイングゲーム。PC-9801版は1991年発売。
 参照:https://www.suruga-ya.jp/product/detail/155005145

・ぷよぷよ
 コンパイルから発売された落ちものパズルゲーム。PC-9801版は1993年発売。
 参照:https://www.suruga-ya.jp/product/detail/155005324

・鈴のような声
 FM音源を利用した音声合成で定評のあるGAME ARTSから発売されたアクションゲームのゼリアード / Zeliardにおいて、姫が「鈴のような声で国中の人々に慕われていた」との表現がある事から、特徴のある声に対して「鈴のような声」という言葉が結び付けられて記憶される事に。
 参照:https://www.gamearts.co.jp/ja/products/pc-zeliard.html

・86 ボード
 NEC PC-9801シリーズ向けの拡張ハードウェアボード PC-9801-86 サウンドボードの通称。ヤマハのYM2608 (OPNA) が搭載されており、FM音源 6音、SSG 3音、リズム 6音、PCM 1音の再生が可能。
 参照:http://hamlin.html.xdomain.jp/SOUND/SOUND98/SOUND98.htm

・音美ちゃん
 MAD Factoryによる同人ハードのPC-9801シリーズ向け拡張ハードウェアボード。ヤマハのYM2608BとYM3438の2つのチップが搭載されており、FM音源 12音、SSG 6音、ADPCMサンプリングのリズム 6音x2、ADPCM 1音と、たくさんの音源を再生可能。
 参照:http://www.hi-ho.ne.jp/~y-exp/dustman/sound.htm

 インターネット黎明のころの草の根BBSももりこみつつ、いろんなエピソードをつめこんだ「ちょっと偏ったインターネット老人会へようこそ」を同人誌として頒布予定です。
参加予定イベント
 11月6日 おもしろ同人誌バザール@神保町2022秋
 11月20日 第七回技術書同人誌博覧会

同人サークル BLACK FTZやってます twitter @black_ftz

この記事が気に入ったらサポートをしてみませんか?