« Neko ProjectのFM音源がもたる。 | トップページ | オーボエ と ナイフ の関係 »

2009/12/30

NekoProject2 FM音源改善

改造版 NekoProject2

前々から、色々、記憶の中の86音源実機の音と比較し、
より実機の動作に近くなるように改善したもの。

ダウンロードする人は、続きも読むように。

(1) アタックの改善。
    0 スタートではなく、ADSRエンベロープの
    現在値(Level)をアタックとするように変更。

(2) FM音源レジスタ変更時の挙動
    特定条件下において、キースケール(KS)による
    エンベロープの変動が適用されていない場合が
    あるバグがあったので修正。

(3) それなりに、ちょこっとi686 (Pentium II~世代)用に最適化。
    本当は、アセンブリ言語で書かれているソースを、
    Cに書き直したかったけど、めんどくさくなった。
    FM音源の波形生成部だけ、MASMで書き直して、
    これも、一応、i586, i686両用に、最適化しておいた。

(4) FM音源の挙動を実機に近づけるために、
   複雑な浮動小数点演算を導入したので、
   SSE2命令を生成するように、コンパイラオプションを変更した。
   つまり、CPUは、Pentium 4以降専用。
 (※ソースいれてあるんで、それ以前のCPUの人は、コンパイルし直して。)

ここまでやって、ようやく、音声録音、動画録画、ネコプロジェクト2の同時起動で、FM音源の再生がもたらなくなった。

一応、自分用に改造しただけなんで、技術サポートとかは、気が向けばしますけど、期待しないでください。
人のソフトを勝手に改造したものですし・・・。(FM音源の音に納得できなくて。)


ちなみに、最適化の過程で、構造体の定義の順番や、内容等も若干変えたので、
(CPU内の1次キャッシュと、2次キャッシュの効率を上げるため。)
ソースだけ流用する人は、要注意です。
(サウンド関係だけだけど)

あ、あと、__fastcall だったところも、 __stdcall に変えてる。
どうせ、スタックフレームに入れてるんだから、
最初からスタックに入れちまえって感じで。
これも、サウンド関連だけだけど。

てか、この程度の改善は、あんまり影響は無いんだろうけど。

|

« Neko ProjectのFM音源がもたる。 | トップページ | オーボエ と ナイフ の関係 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/36969/47149214

この記事へのトラックバック一覧です: NekoProject2 FM音源改善:

« Neko ProjectのFM音源がもたる。 | トップページ | オーボエ と ナイフ の関係 »