FM-PAC

FM-PAC（エフエムパック）は、松下電器産業（現：パナソニック）より1988年7月25日に発売された、MSXコンピュータ用の拡張カートリッジである。正式名称は「FM Pana Amusement Cartridge」。パナアミューズメントカートリッジと同様の一部のゲームなどに対応したバッテリーバックアップメモリ、並びにYM2413を搭載し、MSXに9重和音、もしくは6重和音 + ドラムセット5音の演奏機能と、対応ゲームに対するデータのセーブを実現する。希望小売価格は7800円。
概要.
FM-PACは「FM Pana Amusement Cartridge」を省略した呼び方である。そのほか、「FM PAC」または「FM P.A.C.」と略される。使用に際してはMSX本体のRAMが32KB以上必要である。
カートリッジの形態で供給され、パナアミューズメントカートリッジ同様、8KBのSRAMを搭載しており、8つのセグメントに分けてゲームソフトなどのセーブデータを記録することが可能であり、パナアミューズメントカートリッジと異なり後述のパックコマンダーと称するユーティリティーが内蔵されており、単体で他のカートリッジを含むセーブデータの管理も可能となっている。
後述のMSX-MUSICに対応したハードウェアでもあり、標準ではPSGが3チャンネルと1ビットサウンドポートのみの出力しか持っていなかったMSXに、2オペレータ、モノフォニック、9和音または6和音＋リズム5和音の発声を拡張することも可能である。
縦210mm、幅108mm、厚さ17mmと、一般的なMSX用カートリッジに比べてやや背高のサイズとなっている。FM音源の出力は拡張スロットのSUNDIN端子に接続され、本体の音声出力に合成される。本体が持つ音源とのミキシングバランスはMSX規格側で定義されていない為、調整できるようカートリッジ上部のスライドスイッチによって三段階に切り替えることが可能となっている。
MSX-MUSIC.
MSXの標準拡張音源規格としてMSX2の策定時にMSX-AUDIOが定義されていたが、実際にMSXのオプション機器として製品化されたFS-CA1が34,800円と高価な上にほとんど普及しなかったため、低コスト版として開発された。
MSX-AUDIO規格と比べてFM音源チップが廉価なものになった他、PCM用のRAMなどを必要とせず、拡張ハードウェアとして発売されたFM-PACでは音声出力も拡張スロットの音声入力を使用するなど大幅にコストダウンされている。
音源チップとして「YM2413」、ソフトウェアとして「拡張BASIC」と「FM BIOS」で構成され、他のMSXの拡張ハードウェアと異なり拡張BIOSは提供されずスロットにFM BIOSをマッピングした上で直接エントリアドレスをコールする実装になっている。
拡張BASICはMSX-AUDIOのサブセットになっているが、音名が同じであってもMSX-MUSICではハードウェアプリセット音が多く含まれ、似た音は出力されるものの同じ音が発声されるわけではない。また、ハードウェアプリセット音に該当する音色はROM内にはMSX-AUDIOと同じパラメータがセットされているものの、拡張BASICで該当する音色を読みだそうとした場合にはIllegal function callが発生するようになっている。
後述のMML節にあるとおり、通常利用される平均律以外の音律を指定できることも、他の純正MMLや、音源ドライバには見られない特徴である。
尚、FMPACの発売時期がMSX2とMSX2+の間で、MSX2+の規格と一緒に資料が出ていることからメーカーオプションとして発売されたものが規格として取り込まれたと認識されることが多いが、対応するソフトウェアのパッケージには当初より「MSX-MUSIC対応」と八分音符のロゴと共に書かれており、規格の定義の方が先で初期のソフトウェアであっても存在しなかったMSX-MUSIC内蔵の本体でもバグがない限りは正常に対応している。最大2本実装されるよう考慮された実装のMSX-AUDIOと異なり、MSX規格のI/Oポートに定義されたポートは1つ分であり、公式のドキュメントであるMSX Datapackの該当部では、MSX-MUSIC内蔵機器にFMPACを追加した時を例に、同一アドレスに複数の同一音源が接続されることで音量が二倍になることを挙げ、内蔵機器を検出の上、存在しない場合にカートリッジ側のI/Oポートを有効にするように明示している。また、商用アプリケーションについては直接制御を禁止し、FMBIOSを呼び出して制御することを要求している。内蔵機器と増設機器では識別子と電源投入時の初期状態が異なっており、前者は無条件にI/Oポートに接続されているが、後者は明示的に接続してやる必要がある。直接制御をおこなう場合は、内蔵機器を検索し、存在しなければ増設機器を検索し、存在した場合は該当スロットのフラグとなるアドレスを読み込んだ上でフラグを立てて書き込むという処理が必要となる。FMBIOSのINIOPLをコールした場合はFMBIOSを含む初期設定が行われるが、INIOPLを呼び出す場合該当スロットのページ1の状態が書き換わる為、メモリマップによっては注意が必要である。
初期状態では音源部は無効であるため後述のユーティリティーの利用も含め、バックアップメモリカートリッジとしてのFMPACの複数の接続、利用は問題はなく、ユーティリティーも各々を認識することができる。
このようにシステムとしては複数の音源をサポートしないものの、MSX-AUDIOとは別のリソースが割り振られているため共存は可能で、moonblasterなどのソフトウェアが同時使用をサポートしている他、 MSX CLUB GHQのdawn of timeなどのデモプログラムなどで、ステレオでの再生を実現している物などがある。
ドライバにあたるFM BIOSは、当時T&E SOFTに在籍していた前述の富田茂による設計とコーディングである。
1989年11月に発売された、『マイコンBASICマガジン』の別冊である『MSX/MSX2/MSX2+ ゲーム・ミュージック・プログラム大全集』では、多くの使用曲が収録された。
最初の商品化された実装であるFM-PACは爆発的なヒットを記録し、他機種のゲームをも含めたヒットチャートでベスト3入りを記録した上、パーソナルコンピュータ全般を取り扱う『マイコンBASICマガジン』誌上の音楽プログラム投稿コーナーへの投稿の8割がMSX-MUSIC用のデータで占められたとされ、また1989年5月から1990年4月までに実際に掲載された音楽プログラム61本のうち、15本がMSX-MUSICのものであった。。
本製品発売後、リリースされたMSX2用のアプリケーションにおいても多くのソフトウェアが対応した。MSX2+ではオプション扱いの規格であるが、MSX2+機で実際にMSX-MUSICを搭載しなかった機種は松下「FS-A1FX」などごく一部に限られており、事実上の標準搭載機能となっている。後に制定されたMSXturboRにて正式に標準仕様に含まれた。使用するにはMSX本体のRAMが32KiB以上必要である。
ハードウェアの直接制御による試み.
前述のようにMSX-MUSICのシステムは複数のYM2413が存在してもどれか一つを使用するよう定義されており、ソフトウェア的なサポートも存在しないが、MSXの拡張機器の実装として推奨されているメモリマップドI/Oの存在や、スロットの仕組み、並びにカートリッジ内音源の有効無効の選択が可能になっている仕様から独立制御が可能である。
音声出力がスロットの端子を経由する出力のみのFM-PAC以外は商品化がなかったため用途は限定されるものの、内蔵デバイスはI/Oポート、FMPACはデバイスの有効無効、スロットの切り替えとメモリマップドI/Oの併用によってハードウェアをダイレクトに制御することで最大10個のYM2413を制御する試みも存在している。
また、YM2413をDACとして利用する試みも、制御のシステムとしてMSX-MUSICのハードウェアを用いている。
パックコマンダー.
本製品は、パナアミューズメントカートリッジの上位機種としての側面もあり、同製品に相当する一次電池によりバックアップされるSRAMが搭載されている。
ハードウェア的なバックアップメモリと、スロットにマッピングするための仕組みのみであった前身となる製品と異なり、本製品では「パックコマンダー」というデータ管理用ユーティリティソフトがROMに内蔵されており、BASIC上から「CALL FMPAC」と入力する事で、起動できた。
ユーティリティーを起動すると音源のテストとサンプルを兼ねたBGMが流れ、コピー、クリア、チェンジ、ファイルさくじょ、スロット、BGMのメニューが表示された。「スロット」のメニューのみ接続スロットとの対応を確認する機能のため、単体で接続された状態で実行する必要があるが、それ以外のメニューは電源投入時に接続されているPAC並びに、FMPAC、フロッピーディスクを対象としたデータのコピー、削除、移動などのマネジメントを行うことが可能になっている。取扱説明書、ユーティリティー内のメッセージはコマンドを呪文に準え、ゲームに模した独特の表現となっている。BGMは5曲選択できるものの、YM2413のみで構成された曲になっているため、音量バランスの基準にすることはできず、音を止めることも可能になっている。BGM1は松下電器産業発売・T&E SOFT開発によるMSX2用ゲームソフト「アシュギーネ 虚空の牙城」のステージ1、BGM2はオープニングデモの曲をFM音源アレンジしたものになっている。T&E SOFTのコンポーザーで、MBIOSの設計者である冨田茂によると、FM-PACサンプル曲のうち1曲は富田担当との事である。
BASICからのMSX-MUSICの使用.
FM音源制御命令はCALL命令のセットとして拡張されている。以下に主な命令とその使用法を述べる。
基本仕様はMSX-AUDIOの記述に準拠し、内蔵音色などは異なるものの、音名、パラメータなどは、互換性を意識したつくりとなっている。
 DIM TONE%(15):FOR I=0 TO 15:READ A$:TONE%(I) = VAL("&H" + A$):NEXT
 DATA 0000,0000,0000,0000
 DATA 0000,0000,0000,0000
 DATA 0000,0000,0000,0000
 DATA 0000,0000,0000,0000
 CALL VOICE COPY(TONE%, @63)
MML.
MMLは一般的なものと大差ない。MSX-MUSICでの方言や特徴として、以下のようなものがある。
最も大きな点は、リズム音源演奏専用MMLの存在である。これは一般的なMMLとは全く異なり、例えば典型的な8ビートであれば、
 B!H8H8SH8H8 B!H8BH8SH8H8
となる。B:バスドラム S:スネアドラム H:ハイハット M:タムタム C:シンバル となっており、可読性に難はあるものの、1まとまりのMMLで複数の打楽器を鳴らせる仕様となっている。なお、!はアクセントとして、音量を通常のものとは異なる値に変化させる修飾コマンドである。必ずしも音量が上がるわけではない。
BASICでの演奏の限界.
BASICでの演奏ではポルタメントが行えない、ビブラートが再現できない、という問題があった。直接レジスタを制御するYコマンドで実現は可能であるが、直接送り込むデータを列挙するため、非常に煩雑でMMLの可読性を著しく損なう。
MSX-MUSICのパーカッションの音色は、よく出来ているとは言い難く、多用されるスネアドラム等に対しては、音色を加工する方法としてPSGのノイズを重ねたり、PSGに割り振るなどし、音階が存在しなかったタムタムに対しては、Yコマンドにより、直接チップに対して音程を指定する等の試行錯誤が見られた。電波新聞社刊、『MSX2/2+ ゲーム・ミュージックプログラム大全集』(1989, 電波新聞社)および『MSX2/2+ ゲーム・ミュージックプログラム大全集II』(1990, 電波新聞社)では実際に、掲載されているFM-PAC対応演奏プログラムの多くで、ドラムスの演奏にこのような工夫が見られる。
更にBASIC上でFM音源BIOSのワークエリアに直接値を書き込み、周波数のわずかに異なる2音を重ねデチューン効果を得る方法が確立されている。。
なお、PSGパートでは、タイマ割り込みとPSGのレジスタの直接変更（MSXの場合はBIOSで行える）を用いたビブラート、コーラス、ソフトウェアエンベロープ、シンセタムなどの技法はFM-PAC発売以前から行われている。これらについても『マイコンBASICマガジン』(1988年以降)、『ゲーム・ミュージック・プログラム大全集III』(1988, 電波新聞社)、『MSX2/2+ゲーム・ミュージックプログラム大全集』(1989, 電波新聞社)および『MSX2/2+ゲーム・ミュージックプログラム大全集』(1990, 電波新聞社)などで多くの実例が見られる。
チップ内蔵音色.
音色用レジスタを占有する音色も含めると、MSX-MUSICでは64種(無音含む)の音色が用意されている。以下のものは制限無く使えるチップ内蔵音色である。何分この他には同時に1音色しか使用できないため、ほとんどのMSX-MUSIC用演奏データはそのほとんどの部分がこの15種の音色だけで演奏されている。なおチップ内では音色番号は0 - 15の値を取っており、下記の音色番号はMSX-MUSIC側が独自に割り振ったものである。また、取扱説明書p.44によれば、音色名については「参考のために付けたもので音色によっては、実際の楽器の音と異なることがあります。」ということになっている。
FM音源BIOS内蔵音律.
メジャーはMと、マイナーはmと略記した。取扱説明書 p.45を参考とした。