FM-PAC
FM-PAC(えふえむぱっく)は、松下電器産業（現：パナソニック）より1988年に発売された日本のパーソナルコンピュータ、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以上必要である。
カートリッジの形態を取り、MSXの拡張スロットに挿入することで、標準ではPSGが3チャンネルのみの出力しか持っていなかったMSXでそれに加えて、2オペレータ、モノフォニック、9和音または6和音＋リズム5和音の発音にする。
複数のスロットを備えたMSXで同時に挿入することで、ROMカートリッジで供給するゲームでも利用可能である。この規格は「MSX-MUSIC」と呼ばれる。
また、ゲームソフトなどのセーブデータを保存するために8KBのSRAMを搭載しており、8つのセグメントに分けて利用が可能と、パナアミューズメントカートリッジと同等の機能を持つ。この機能は対応ソフトウェア以外では使用できない。データをマネジメントするアプリケーションも内蔵されている(後述)。
縦210mm、幅108mm、厚さ17mmと、一般的なMSX用カートリッジに比べて、やや背高のサイズとなっている。FM音源はMSX本体の内部を通り、本体の音声出力端子から、PSGとミックスされた音が出力される。カートリッジ上部にスライドスイッチがあり、FM音源のボリュームは3段階に切り替えて、本体内蔵のPSG音源との音量バランスを調整できる。
「パックコマンダー」にサンプル曲が全5曲収録されている。サンプル曲1・2を浅倉大介が、3～5をK.OZAWAが作曲したとされている。浅倉大介担当の1・2はそれぞれ、松下電器産業発売・T&E SOFT開発によるMSX用ゲームソフト「アシュギーネ 虚空の牙城」のステージ1、オープニングデモの曲をFM音源アレンジしたものである。ただし、T&E SOFTのコンポーザーで、MBIOSの設計者である冨田茂によると、FM-PACサンプル曲のうち1曲は富田担当との事である。
MSXの標準拡張音源規格として本来はMSX-AUDIOが準備されていたが、MSXのオプション機器として製品化されたFS-CA1が34,800円と高価な上に、ほとんど普及しなかったため、低コスト版として開発された。MSX-AUDIO規格と比べて、FM音源チップに廉価なものが使用され、MSX-AUDIOではPCMなどの取り扱いに必要だったRAMなどパーツや、出力も、拡張スロットの音声入力を使用するなどの簡略化によって、大幅なコストダウンが達成されている。なお、MSX-AUDIOの音色が、カートリッジ内のROM内に定義されたものであるのに対し、MSX-MUSICで採用された、YM2413はチップそのものに内蔵された音色が存在し、固定されているため、音名が同じであっても、プリセット音は、同じ出力を得られるわけではない。
ハードウェアとして、「YM2413」、ソフトウェアとして、「拡張BASIC」と、「FM BIOS」で構成され、他のMSXの拡張ハードウェアと異なり、拡張BIOSは提供されず、FM BIOSをマッピングした上で、直接エントリアドレスをコールする実装になっている。
本製品発売後リリースされたMSX2用のアプリケーションにおいても、多くのソフトウェアが対応した。MSX2+ではオプション扱いの規格であるが、MSX2+機で実際にMSX-MUSICを搭載しなかった機種は松下「FS-A1FX」などごく一部に限られており、事実上の標準搭載機能となっている。後に制定されたMSXturboRにて正式に標準機能となった。使用するにはMSX本体のRAMが32KiB以上必要である。
後述のMML節にあるとおり、通常利用される平均律以外の音律を指定できることも、他の純正MMLや、音源ドライバには見られない特徴である。
尚、FMPACの発売時期が、MSX2と、MSX2+の間で、MSX2+の規格の記載されたドキュメントから記載が登場した事などから、メーカーオプションとして発売されたものが、規格として取り込まれたとされることが多いものの、規格として、内蔵デバイスと、外付けデバイスでは、仕様が異なって予め定義されている。MSX-AUDIOと違い、用意されたI/Oポートは、1つ分であるため、複数のYM2413を制御するようにはなっておらず、複数装備された環境では、初期化処理によって内蔵、外付けとハードウェアを探し、初期化処理で排他制御するようにドキュメントで明示されている。挙動としてはほぼ同一ではあるものの、外付けデバイスでは、メモリマップドI/Oのアドレスが、定義されているほか、I/Oポートの競合などを回避するため、初期化処理によって、I/Oポートを有効化してやらないと動作しない。それらの条件から、正常に動作させるためには、ソフトウェア側では、正規の手順で、スロットの検索、初期化処理を行う必要があり、特定の構成のみを想定した設計になっているソフトウェアの一部では、内蔵デバイスや差し込む場所などによって鳴らないという状況が発生している。
このように複数のYM2413を独立制御できないようになってはいるものの、MSX-AUDIOとは、別のリソースが割り振られているため、ハードウェア的に共存は可能になっており、海外のMEGA-DEMO等のソフトウェアの一部では、MSX-AUDIOと、MSX-MUSICを左右別チャンネルに接続することで、ステレオとして取り扱うソフトウェアも存在する。
ドライバにあたる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のものであった。。
8KBのSRAMにソフトウェアの状態保存などを行う。「パックコマンダー」というデータ管理用ユーティリティソフトがROMに内蔵されており、演奏機能などのおまけ機能もついていた。BASIC上から「CALL FMPAC」と命令する事で、起動が可能である。
前身である、パナアミューズメントカートリッジ同様、通常、SRAMはシステムからは切り離されており、メモリマップドI/O経由で、スロットに対し、SRAMを割り当てる処理を行うことで、アクセスが可能になる。。当時MSX用のFDDは高価であり、また、ちょうどFDD内蔵MSX2への切り替わりの時期に相当したため、ロムカートリッジで供給されたゲームの中には、高価なFDDには対応せずにPACにのみ対応したタイトルが少なからず存在している。また、例外的にFDで供給されたにもかかわらず保存をFDに行えないゲームも存在した。数年後、FDDを内蔵したMSX2やMSX2+の普及した時期には逆に、FM-PACを持っていないとデータを保存できない問題も発生した。
FM音源制御命令はCALL命令のセットとして拡張されている。以下に主な命令とその使用法を述べる。
基本仕様はMSX-AUDIOの記述に準拠し、内蔵音色などは異なるものの、音名、パラメータなどは、互換性を意識したつくりとなっている。
DIM TONE%(15):FOR I=0 TO 15:READ A$:TONE%(I) = VAL("&H" + A$):NEXT
MMLは一般的なものと大差ない。MSX-MUSICでの方言や特徴として、以下のようなものがある。
最も大きな点は、リズム音源演奏専用MMLの存在である。これは一般的なMMLとは全く異なり、例えば典型的な8ビートであれば、
となる。B:バスドラム S:スネアドラム H:ハイハット M:タムタム C:シンバル となっており、可読性に難はあるものの、1まとまりのMMLで複数の打楽器を鳴らせる仕様となっている。なお、!はアクセントとして、音量を通常のものとは異なる値に変化させる修飾コマンドである。必ずしも音量が上がるわけではない。
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によれば、音色名については「参考のために付けたもので音色によっては、実際の楽器の音と異なることがあります。」ということになっている。メジャーはMと、マイナーはmと略記した。取扱説明書 p.45を参考とした。