ブログは書かなくなると、どうでも良くなってしまう状態はよろしくないですね。新年度にもなったことですし、ちょっと気持ちを入れ替えて頑張ってみることにします。

ひと通りFMP関係のモジュール公開済ませました。
そんなこんなで、今回は公開したFMP7にまつわるお話です。

今回の機能追加は時期的には去年のライブ終わったあとからすぐに始めていたんですが、実装方法を考えていたり、同時に始めていたFMPv4の演奏サポートと一緒にと思っていたら、あっという間に年が変わっている感じでした。

今回はOPMコア実装の話を長々と語ります。個人的な思い入れとか、実装のことが多くなるので、あまり面白い話ではないと思います。ほとんど方は読み飛ばし推奨です(笑)

OPMコア実装までの道のり

OPMコア実装は、実は最初から考えてはいたつもりで、OPNA側の最小音程管理を1/64centにしたのも将来、統一性が取りやすいと考えていたためでした。以前にBBSで質問を受けた際には、さも「将来の課題」ぽく回答していますが、実装できるか全く判断出来ない状態だったためにあのような言い方になってしまいました。申し訳ないです。
音程の管理なども過去に一度FMPv4のX68k版を作ったことがあったので、何となくその当時の記憶から問題ないだろうと思っていました。知っている方も多いと思いますが、OPNAとOPMでは音程を管理する周波数の指定方法が全く異なります。使う側は全く気にする必要はないので、詳細は割愛。
作ったといっても、FM6音だけ鳴る、PC98版とバイナリデータ互換のテストプログラムです。FMX.rという名前だったはずです。もうソースすら残っていません。ACE-HDの内蔵HDDの昇天とともに消えてしまいました。
MC68000のアセンブラは8086に比べてめちゃくちゃ使いやすかったですねぇ。レジスタとかめちゃくちゃ余らせていたなぁ。

おっと。脱線しかけました。
そんな感じで、X68kはほぼ聞き専状態。ほとんど曲を作ったこともなく、どうOPMを使うかということについてほとんどわかっていなかったので、初期のリリースではOPNAだけとなりました。

FMP7公開後、予想通りというか、予想以上にOPMを使いたいという意見を頂きました。6op版のFM音源コアなども試してみていたのですが、いかんせん音色を作るのが難しい。それならば、過去の資産が生かせるOPMコアのほうが使い勝手が良いかなということになりました。

音源機能拡張

実装にあたっては、そのままじゃ(私が)つまらないので、機能拡張を行いました。まずはOPNA同様にパンをより細かく指定出来るようにし、さらに音色パラメータを変更することなく音量の変更が出来るようにしました。
ここまでは前回とほぼ同等の実装。OPMコア専用の拡張として、ハードウェアLFOとノイズがあります。
ハードウェアLFOを、OPM使いたちは「LFO」としてではなく「音色」のように扱っていることがあるそうです。アーケードメーカーだとアイレムが良く使っていますね。あの「コォー」という音です。
元々のOPMではLFOの周波数などの情報は全パートで共通となっています。そこで、FMP7はコアを拡張して全パートで独立して周波数、パラメータ(PMD/AMD)、波形の指定が出来るようにしました。また、ノイズについても各パートのop4がすべてノイズジェネレータになるように拡張してあります。当然、ノイズ周波数も独立して指定可能です。
これらの実装の判断を行う際に昔から親交のあるKAPPY氏に相談させてもらい、いろいろと意見を頂きました。何度も、何度もメール出して、それに丁寧に返事してもらったりして助かりました。

制約はあったほうが面白いはずですが、多少(?)は緩めてもいいかなと考えての範囲にしたつもりでいます。ですが、これをどう使うと面白いかは、みなさん次第です。制約があった頃のようにどうすれば変な使い方が出来るかいろいろと試してみて下さい。

なんで音源をそのまま実装しないのか

そうそう。もともとパンを細かくしたのは「オートパン」の機能を付けたかったからなんです。あれは楽しい(笑) パート数が多いので2パート使って音量コントロールでやってもいいかなと思ったんですが、そのほうが制御が面倒だったので思い切ってみたという感じです。
音量を別管理としているのは、処理が楽になることと、もう1つやりたいことがあるためです。「やりたいこと」は次のVUの時(また、来年か?)にでも実装出来るんじゃないかと思ってます。それまでは、それがまだ何かは内緒にしておきます。

音源が同じでも壁は高い

OPMが使えるようになったとはいえ、MMLの書式などはmxdrvに慣れた方にとっては未知の領域でしょう。それはPMDを使っていた人も同じと思いますので、そのあたりは何か出来るといいなと思ってます。まだ、具体的に何が出来るかは何も思いついてないんですが…
ハードルは高いと思いますが、うまく慣れてもらえるといいな。と。

今更OPMをFMP7で使う理由は

とりあえず、拡張部分もそうですが、FMP7でOPMを使う利点はコアの音質です。実機に似せる必要がないためフィルタ処理など一切行なっていません。GIMICのOPMモジュールも相当良い音がしましたが、デジタル出力が出来るようになるまではOPMではFMP7が上だと思いますので、お早めにお試し下さい。そのうち抜かれるかもしれませんので^^

高レートのサンプリング音と組み合わせても遜色なく張り合える音になっていると思います。OPM+PCM、さらにはOPM+SSGといった面白い組み合わせで楽しんでみて下さい。

まとまらなくても、まとめる

ということで、OPM実装について適当に書きなぐってみました。どうでしょう、OPMも使いたくなってきませんか?>OPNA使いのみなさん。
と、ここまで書いておいて、実は今回こっそりとOPNA側の拡張も行なっています。DT2に対抗する手段としてスロット単位にディチューンが指定可能となっているのです。
詳細はMMLマニュアルを見て下さい。要するにFMP7のOPNAパートは、全てCパート扱いということなんです。さすがにやりすぎたかな…

さて、今年の夏にはOPM使った作品もたくさん応募されることを楽しみにしていますよ。みなさんよろしく。

それでは、また。