n2kd 次期バージョン v0.2a の現状と計画
2024-09-06
タグ: #FM_synthesisこの web サイトでは自作の FM 音源ドライバである n2kd を公開している。 というか一番最初に作ったのはトップページと n2kd のページである。 が、n2kd の現在の最新版は2年とちょっと前の v0.1.2 beta2 で長らく更新できていない。 v0.1.2 beta2 公開以降、次期 v0.2 系に向けての機能追加や修正を度々行ってきたが、最近は進捗がなく、下手したらこのまま埋もれゆく運命となりかねない。 そうなっては勿体ないと思うので、次期バージョンを着地させるため、現状を把握して今後の計画を立てることにした。
まずそもそも、v0.1 系のコードには直したい箇所が多くあった。 n2kd を作り始めた時は FM 音源ドライバもそこそこ大きい規模の DOS プログラムも書いた経験がなかった。 そのため、プログラムの少なくない箇所が入り組んで見通しが悪い状態だった。 結局、v0.1 系のコードをベースに開発を進めるのでなく、全体的な再設計と再実装を行って v0.2 系として仕切り直すことを決めた。 幾らか苦労したものの、この仕切り直しの大規模改修は完了している。
その後、新機能の追加も行うようにして、この記事を書いている2024年09月冒頭では主に下記のような変更が入っている。
- 曲データファイルのフォーマット変更
- 複数音源対応
- MML 命令の追加と変更
MH
命令追加 (ハードウェア LFO 制御)MO
命令追加 (ソフトウェア LFO 対象オペレータ指定)- デチューン周りの仕様変更
- PCI BIOS を利用した YMF724/744/754 の検出機能追加
- OPN(A) がない場合に演奏時のテンポ管理にタイマ割込を用いる機能を追加
- PC/AT 互換機対応
- バグ修正色々
これに加えて発音時の FNum
と BLK
を直接指定できる機能を追加する予定である。
OPL3 で WS
を使って正弦波以外の波形で変調をかけた時、ML
等の値によっては FNum
を±1変えるだけで音色が大きく変わる場合がある。
現在の n2kd で FNum
と BLK
を細かく制御するには発音命令とデチューン命令を組み合わせて使う必要がある。
これらの命令により OPL3 に書き込まれる FNum
と BLK
はドライバで計算を経て求まるため、実際に書き込まれる値を直接的に知ることはできない。
個人的には、打楽器の音色を作る際に FNum
と BLK
を細かく変えて適当な値を探す作業を行うことが多いが、その過程では結局ある程度の範囲の FNum
と BLK
を全て嘗めることになる。
このような場合には、発音する音程とデチューンの値よりも FNum
と BLK
を直接取り扱えた方が作業がしやすいだろう。
他に、OPL3 は他の音源チップに比べてチャンネル数が18と多いので CSM 音声合成と相性が良いのではないかと考え、CSM 音声合成の実験を行っているが、あまりいい結果が得られていない。 一朝一夕では改善させられなさそうなので、少なくとも次のバージョンでは CSM 音声合成機能の追加は行わないつもりである。
そういった訳で、v0.2 系の初回リリースの v0.2a のための主要な残務は以下のようになる。
- 発音時の
FNum
とBLK
を直接指定する MML 命令追加 - 各種ドキュメントとサンプル MML 作成
サンプル MML は、複数音源対応したため、複数の音源を使用する場合の例を追加で作成する予定である。 対応音源 IC は OPL3 のみのままなので、全パートを上手く使い切れるか今から少し不安だが、OPL3 を2個使うデータになるだろう。 OPL3 1個のデータは、v0.1.2 beta2 と合わせて既に公開しているサンプル MML があるので、これを手直しするつもりである。
体感の目標としては、(何の保証もないが)今年中にリリースを行いたいと思う。