【聞き専】FM音源の曲データ倉庫【PMD/FMP、MDX】4
記事が消えていたPSG(AY-3-8910)で非矩形波をがInternet Archiveに残っているぞ
ミュートとハードウェアエンベロープを使って非矩形波を鳴らせるぞ
やり方
1.矩形波以外の波形を出したいチャンネルをミュートする
2.三角波風の音を出すならエンベロープ10番か14番、鋸歯状波風の音を出すならエンベロープ08番か12番を選択
3.以下の計算式に従ってエンベロープ周期レジスタを設定する
エンベロープ10(14)番の周期=PSG入力クロック(Hz)/256/演奏したい周波数(Hz)
エンベロープ08(12)番の周期=PSG入力クロック(Hz)/128/演奏したい周波数(Hz)
4.エンベロープを有効にして発音する
PSGはチャンネルをミュートすると振幅が0になるのではなく、振幅1でホールドされた状態になる
この状態でも、音量指定やエンベロープは出力に反映される
エンベロープを有効にすればエンベロープ形状どおりの波形がそのまま出力される
MGSC用のMMLサンプル
1 /0 ; このチャンネルをミュート
1 s14 ; エンベロープ14番を選択
1 m42e8>m24dm21e<m42e8m45d+m42e8m32am28bm42e8>m24dm21e<m45d+
1 m42e8>m24dm21e<m42e8m45d+m42e8m32am28bm42e>m24dm21e<m32am28b
エンベロープ波形は純粋な鋸歯状波・三角波ではないため(対数的に凹んだ形になる)音がややつぶれた感じになるそうだが矩形波との違いは十分に聴き取れる
PSGのエンベロープではあまり精度の高い周期の設定ができないことが原因のようだ
続き
手順の1を無視する、つまりチャンネルをミュート状態にしないで周期の短いエンベロープを適用すると、
YM系チップ音楽でおなじみのフィルター効果がかかったようなベース音を出すことができる
MGSC用(MSX)のMMLサンプル
1 /1 ; トーン有効・ノイズ無効
1 s14m85 ; エンベロープ14番、エンベロープ周期85
1 o2e1e1e1e1
エンベロープ波形をそのまま鳴らしてしまう手法も、フィルター風音色の発音手法も、海外(AtariST用のデータなど)ではごく普通に使われている手法であるようだ
PC98の「竹屋システム」にエンベロープによる音階発声機能があるらしい。ベーマガ(廃刊)にこの手法を使ったMSX用データが掲載されたことがあるらしい
エンベロープ10/14番の周期と音階の対応表 音階:周期(o1)-周期(o2)-周期(o3) o2a なら64となる
G:143-71-36、G+:135-67-34、A:127-64-32、A+:120-60-30、B:113-57-28、C:107-53-27
C+:101-50-25、D:95-48-24、D+:90-45-22、E:85v42-21、F:80-40-20、F+:76-38-19
Internet Archiveのページが消えるかもしれないで記載しておいた(元ページは消失)
ttp://web.archive.org/web/20060627095149/dsa.sakura.ne.jp/index.php?PSG%A4%C7%C8%F3%B6%EB%B7%C1%C7%C8%A4%F2
続き
PSGの非矩形波はAY-3-8910、YM2149の他にもYM2203、YM2608、YM2610のPSGでも可能だ
しかしFMP、PMDにはPSGハードウェアエンベロープを制御するためのコマンドがないようだ
残念なことにFMP、PMD両方ともに開発放棄状態のため搭載が困難
参考にX1のNARDRVやMSXのMGS、xpmckではハードウェアエンベロープ制御するためのコマンドがある
今のfmgenはリズム音が搭載されていない問題も今はMAMEの fm.c を利用すれば内蔵することが可能だ(MAMEの fm.c にリズム音のデータが含まれている)
未確認だがfmgenはPSGの非矩形波も対応していないらしい
ついでにfmgenは長期未更新(fmgenの作者は夜逃げ?)
幸いfmgenはソースが公開されているので改良が期待できる(ついでにMAMEとfmgenとX68Sound.dllの3つのエンジンを統合?)
WinFMP.dll、PMDWin.dllは最近更新されたがSSG の音量と周波数がに変更になっただけでエンジンそのものには改良されていないそうだ
個人的にはMAME版WinFMP.dll、PMDWin.dllを出してほしい
fmgenソース
ttp://www.retropc.net/cisc/m88/download.html WinFMP.dll、PMDWin.dll
ttp://www.fmp.jp/~c60/