2012/09/09

ファミコン音源の三角波

プチコンのサウンド機能はかなり豪華にできている一方、矩形波やホワイトノイズを使って昔のPSGみたいな音を出すのも簡単なのですが、ファミコン音源の三角波に相当するものは用意されてないので作る必要があります。といっても、プログラムは非常に簡単です。
こうすると @224 がファミコン音源の三角波になります。
W$=""
FOR I=0 TO 63
V=FLOOR(I/2)*2*8
IF I>=48 THEN V=V-512 ELSE IF I>=16 THEN V=256-V
IF V<-127 THEN V=-127
IF V>127 THEN V=127
U$=HEX$(V,2)
W$=W$+U$
NEXT
BGMPRG 224,127,0,127,123,W$
ファミコン音源の三角波は、きれいな形ではなく階段状の波形になっていて、それが独特な音色の元になっています。プチコンの波形定義もそこそこ粗いのですが、ファミコンなみにするには、もっと粗くしないといけません。 FLOOR(I/2)*2 というのが、そのへんの計算です。
またファミコン音源での三角波の音量は固定なので、本来エンベロープを指定することはできません。ただBGMPRGするときのADSRを本当にその通りにすると、音のON/OFFで「プチッ」というノイズが出てしまうので、リリースを少しだけ残した方が良いみたいです。アタックの方は127でも大丈夫のようです。

この三角波を使って、ファミコン音源の制限内で曲を演奏してみました。