2015年5月26日火曜日

Windows:FM音源はほぼ終了

怪しい所はあるにはあるが、FM音源周りに関しては以前のデータが同じ感じで
鳴るようになってきた。長かった・・。

■繰り返しの恐怖
|: |:cdefg:| gfedc:|
なんていう繰り返しのネストが可能だったのをだいぶ後に気づき、
ネスト対応にする為にえらく苦労した・・。ハマった。
・相対的に指定する
・ループエンドを見つけたら前にたぐってループスタートを見つける
この2点を思いついたら意外と少ないコードで実現できた。よかった。

■オクターブの恐怖
よくわかんないが、繰り返しの中でオクターブの上下をしても、
繰り返しから出たら元通りになるという仕様を発見。なんだこれ。
これも悩みに悩んだけど、繰り返し展開のスタート時にオクターブ
をセットするということを思いついて、なんとかなった。

■ポルタメントとLFO
ピッチ問題は後にひきまくって、数日かけてめちゃくちゃになって
しまった。ハマった。

そこで、
・オクターブと音階とKF
はOPMに寄り添わず、独自の方式で運用し、最後の最後に
独自方式からOPM対応方式に変換するという方法を思いつき、
作ってみたら意外とサックリいけた。

この方式を採用後、ピッチ関連のポルタメントとLFOが実現可能に。

ポルタメントは数日かけて悩みまくったがなんとか鳴るように。

LFOは耳コピ的に同じ数字を入れたらいい感じっぽくなるように。
sin()を使う所で結構ハマった。

sin((DX_PI / 120) * 経過時間 * 波の幅)

これでうにゅうにゅとLFOがかかるようになった。

とにかくピッチ関連はハマった。

■adpcm沼
半日くらいかけて検証してみたが、どうにもadpcmが鳴らない。

ZPDデータをバラして、一つ一つのPCMにしてファイルセーブ、
PCMをWAVに変換、WAVをOGGに変換、OGGをリストにして
読み込み、ノートデータから鳴らすということはできたので、
とりあえずめんどくさいが曲を鳴らす事は可能になった。

しかし、adpcmをそのまま鳴らしたい!という欲求が出て、
ひたすら検証をしてみた。

・普通に鳴らすと、ちょっとだけ鳴ってすぐに音が切れる。
・同じコードをコマンドラインでビルドして試した所、普通に鳴った。

そこで、DxLibが何かしてるのかと思いDxLibの息のかからない
所で鳴らしてみた。やっぱりダメ。

今の所、ウィンドウズアプリとしては僕の実力では鳴らせない。
コマンドラインのアプリだったらいけるのに。なんでだー!!

0 件のコメント:

コメントを投稿