謎なタイトルですが気にせずに。昔流行った「初めての~」という見出しに引っ掛けてみようと思ったんですが、大失敗。

さて、前置きはここまでとして、今回はOPL3ことYMF262という音源についてです。
基本的なことしか書いてありませんので、目新しい情報ではありませんし、OPL使いの方であれば既知の内容と思われます。(私にとっては初の2opということでいろいろ驚いたりしたのです)
この音源は今まで扱った音源よりかなり複雑な実装がされていたので、私自身が後々何かする時のための備忘録のつもりで気になったところだけまとめてあります。そうなんです、まだ何か実際に作ったわけじゃないので試していない部分もあったりします。
なんで、それ違っているよ~ということはこっそり(優しく)教えてもらえると嬉しいなぁ(笑)

まずは、この音源の基礎的なことから。ソフトウェアを開発する上では特に重要ではありませんが、今まで私が見てきた音源と違うことは2つパッケージが存在するということです。

まずはSOPタイプ。これは今まで見たことがあるYM2203やYM2608、そしてYM2151と似たパッケージタイプです。型番はYMF262-Mとなり、ピン数は24。形状はこんな感じです。
SOP

そしてもう1つがQFPタイプ。型番がYMF262-Sとなり、ピン数は48。形状はこんな感じです。
QFP

ピン番号のみで詳しい信号線などの記述は省略してあります。
両者はパッケージの違いのみで、機能的には全く同等です。手持ちのGIMIC用OPL3モジュールはSOPタイプの音源が積まれていました。

さてと、ここからがいよいよ本番。ここから音源用語が飛び交います(笑)

音源にアクセスを行う上で欠かせないレジスタマップを出しておきます。
レジスタマップ


2opとはいえ18ch同時発音が出来るだけあって、かなりマッピングされていますね。左と右はそれぞれ別にアクセスする必要があり、「A1」の信号線の0/1でアクセス先が変わる仕組みです。
このあたりはYM2608と似た動作です。

このレジスタマップの中にエンベロープに関係しそうな項目があるのはFM音源をご存知の方ならすぐに気づくと思います。ぱっと見た感じではYM2203と同じようなエンベロープの指定が行えそうな感じに思えますよね。
ところがよくよく見ると、オペレータの数だけでなく微妙にあちこち違っています。まずはAR/DRのビット幅が違います。4op系では5bitなのに対して4bitしかありません。また、TLも6bitしかありません。そして、一番はSRパラメータが無いのです。
SRとはSL到達後の減衰を指定するパラメータです。4op音源ではkeyoffされるまではこのSRで減衰させることができ、keyoffが指定されるとRRにて減衰します。
では、SRがない2op音源はどうやって音の減衰を指定するのか、もしくは指定出来ない(!)のか?
先に答えを言ってしまうと、減衰の指定が出来ないわけはありません。2op音源でもRRパラメータは存在します。しかしSRパラメータがないため、SRとRRを同時に実現することが出来ないようです。
この図を見て下さい。これは2op音源のエンベロープを表しています。
エンベロープ


左はSL到達後すぐにRRで減衰が始まります。この時にkeyoffの指定は意味を持ちません。RRによる減衰はkeyoffの指定を行わずとも実行されるためです。
右はSL到達後は減衰は行われずそのまま維持されます。そしてkeyoffの指定がされた時にRRにて減衰が始まります。
この両者のどちらかを選択しエンベロープの処理方法を決定します。この指定を行うパラメータが$20-$35にある「EGT」というbitです。このbitが0の場合には左の動作。1の場合には右の動作になります。
4op音源ほど自由にはいかないのですが、何とかしたという感じでしょうか。うーん。なかなかに厳しい仕様ですね。

そうそう、レジスタのビット幅の話ですが、細かいことでは実はF-Numberも1bit少なかったりします。これじゃOPL用に4opとは別の周波数計算用のテーブル持たないといけないじゃないですかー。もー、他の音源と一緒に鳴らすこと考えてなかったでしょう(←当たり前)

さて、次はオペレータの構成です。まずは2op時。
2op アルゴリズム


2つしかないんですから、アルゴリズム(=op同士のつなぎ方)なんてこれしかないですよね。
ということで、気になる4op時はこちら。
4op アルゴリズム


んん?見たようなものもあれば、知らない接続もありますね。というか、アルゴリズムなんで4つなのさ…
それはさておき、4op音源にはないアルゴリズム2や3はどんな感じになるのかちょっと気になるところですね。面白い音作ることが出来るといいんですが。
この音源はこの2op/4opの構成を混在させて利用することが出来ます。

と、ここまで話をしてこなかったリズム音について簡単に。
リズム音とは$BDのRYTを1とすることで動作します。この場合はA1=”L”側の2opが3ch使用出来なくなります。実はリズム音と言ってもYM2608とは違い、サンプリングされたリズム音が鳴るわけではありませんでした。3ch分の6opをリズムbitに割り付けてkeyonを制御することが出来るようになるモードのことのようです。
リズム音は5音同時に鳴らすことが出来るのですが、BDだけが2op割り付けられ、残りは1opで動いています。リズム音はエンベロープ指定も可能(必須?)なようで、使い方によってはリズムではなく通常の音源としても利用可能です。例えばBDを2opの音源として使うなんてことも出来るようです。ちょうどYM2203の3ch目の効果音モードを利用してop毎にkeyonを制御する方法と似たような感じでしょうか。実際、音量や音程は割り当てられたopに対して行うことでリズム音に反映されます。
ただ、ノイズジェネレータ通る(らしい)んで、その辺りは特殊処理が行われるようです。あんまり詳しく調べてないのでリズム音の話しはこのあたりで。

さて、リズム音を有効とすると9chある2opが6chに減るという話をしました。4opの音源の指定をしても2opのchが減っていきます。
4opを何ch使用するかはA1=”H”の$04にてbitで指定します。ここにLSBから6bit分を1とした数だけ4op音源として動作するようになります。
となると、この音源にはこんなにたくさんの動作モードがあることになってしまいます。

  • 2op 18ch
  • 2op 16ch / 4op 1ch
  • 2op 14ch / 4op 2ch
  • 2op 12ch / 4op 3ch
  • 2op 10ch / 4op 4ch
  • 2op 8ch / 4op 5ch
  • 2op 6ch / 4op 6ch
  • 2op 15ch / リズム5ch
  • 2op 13ch / リズム5ch / 4op 1ch
  • 2op 11ch / リズム5ch / 4op 2ch
  • 2op 9ch / リズム5ch / 4op 3ch
  • 2op 7ch / リズム5ch / 4op 4ch
  • 2op 5ch / リズム5ch / 4op 5ch
  • 2op 3ch / リズム5ch / 4op 6ch

試していないのですが、リズム音の使用有無や、この4op構成の指定は動作途中でも切り替え出来るんじゃないかと思っています。演奏中にばりばり切り替えられたりしたら、ビュワー作る人大変そうですねー(←他人事^^)
ま、曲作る人も大変そう。
ドライバ作る人も…(←他人事では済まない)「切替時にノイズ乗るので無理でした♪」とか言って仕様にしましょうかね(ぉ

次は2op音源の一番の特徴と言われている(私はそう聞いております。骨くんとかに)波形指定です。
4op音源では波形はsin波に限定されていますが、OPL3では下のような波形が選択可能です。
波形種別


なんと8種類もあります。矩形波まで!これは面白そう。いろいろと値を変えて音を出し比べてみたいですね。
同じOPL系のYM3812(OPL IIもしくはOPL2と呼ばれます)という音源ではちょうど0~3の半分の指定が可能となっています。このYM3812ではYM3526(これがOPLの元祖。多分)と互換性を保つために、波形の指定を行うためには$01のLSI TESTのbit5に1を指定する必要があります。YMF262ではこの指定は必須ではなく、最初からWSの指定が行えるようです。

そうそう。最後にちょっと以外だったことを1つ。
YMF262ではチップからの出力が4系統あり、これを利用してステレオ化を実現することが可能です。実際にGIMICでもA/Bの出力系統がステレオ出力として設計されています。
出力chの制御は$C0-$C8にて行います。ところがレジスタは別の情報の指定も兼ねているため、4op時には対になるもう1つのレジスタへのアクセスも有効になります。
そして、2つの出力先はそれぞれで有効となり、さらには独立して指定が可能なようです。どういう意味かというとopの組み毎にステレオの左右を指定できるということなんです。
例えばCONNECTION SELに0x3fを指定し、4op x 6chの指定を行います。この場合に1ch目の出力先の指定はレジスタ$C0/$C3となり、$c0に0×1?(CHAからの出力指定という意味)、$C3に0×2?(同じくCHBに出力指定)とした場合、op1/2はCHAからop3/4はCHBから出力されるということです。(opの組み合わせは未検証なので予想)
何に使えるの?と言われればそれまでなんですが、何かちょっと面白そうですよね。いや、ほんとに何に使えるの??って感じなんですが^^

さて、ということでずいぶんと長くなってしまったのでこのあたりで。

お約束ですが。
内容は独自の解析を含む内容のため、100%正しいという保証はありません。あしからず。

参考資料:YMF262 CATALOG 1994.11