マトモな音が出るまでに少し時間掛かったけど。


RGKT-NDS-STDY-018(005)


PSG Func check program.


一応バイナリは完成。
エミュで動かしたとき感じる若干のタイムラグは実機じゃ然程気にならないレベル。
操作方法は前も書いたけどバンドブラザーズバンブラDX互換(デフォルトキー配列)。
遊び慣れてる人なら普通に操作できると思う。


現状ソース公開の為の残り作業は足りてないコメントの追記と
バンブラインターフェイスにはない、独自の拡張操作の説明があと必要ってぐらい。
(拡張操作:デューティ比変更、音量・パン・オクターブ増減処理、オクターブアップ/ダウン切替)


昨日、
デューティ比とオクターブ増分できるなら
ボリュームとパンも出来たほうがいいだろうってことで思いつきで拡張。
これはまあよしとして。


周波数テーブルはめらまんさんの解説を参考に
12平均律の小数点第一位までを10倍したものをx8して更に÷10で作った整数値をテーブルで持ち
(6オクターブ分。523〜31609の範囲)、
押されたキーとか現在のオクターブとかの状態を元にテーブルから周波数データを抜き出して
そのデータを Freq 値として soundPlayPSG() 関数に渡して鳴らしてます。


サンプルとして晒す用で書いたのにソース中 soundPlayPSG() でしかサウンド関数の設定値弄ってないのは
デューティ比はこの関数でしか設定できなかったから。
ソース晒す前だけど言い訳だけ先に。(まて
パンとかボリュームとか周波数は単体の関数が用意されてるから
それだけ変更するんだったらそっちを使うべきなんだろうけど。


ソース説明とかもう少しだけ書いてみて今日晒せるようなら今日、
明日まで掛かるなら明日、しょぼいですがソース出しときます。
…全部メインに詰め込んで300〜350行ぐらいです。ごめんちゃい。