YM2413FM音源の使い方

YM2413はFM音源LSIで、MUSIC規格に採用されているLSI。
この音源LSIはモノラルFM音源で、同時発音数が9チャンネル、または
6+5リズムを持つ。
LSIのROMに音色データが予め設定されており、難しいFM音源の設定を必要としない。
また独自の音色を一つだけ設定することができる。

LSIは書き込み専用でレジスタの読み込みやステータス状態を知ることは出来ない。
有効アクセス時間があるので、連続データ書き込み時はウエイトを採りタイミングに注意する必要がある。

YM2413はI/Oポートの0x7C,0x7Dに接続されている。
このFM音源チップは0x7Cに音源LSI内部レジスタの設定、0x7Dにデータの
書き込みを行なう。
FM音源LSIのレジスタ内容は書き込み専用でレジスタの参照は出来ない。

レジスタは38個あり、それぞれの内容はレジスタ番号をI/Oポートの0x7Cにセットし、
I/Oポートの0x7Dへデータ書き込みを行なう。
YM2413は同時発音数が9チャンネルあるので、それぞれの発音チャンネル用に
設定可能なレジスタデータセットを内部に持っている。
音を制御する場合は、これらのレジスタを制御する。
FM音源の音色設定も可能だが、しかしその仕組みは非常に複雑なので、FM音源の仕組みを
理解している事と、チャンネルについて理解している必要がある。

単純に音を発音する場合は以下の手順に従ってコントロールすればよい。

  1. 音階をF-Numberで与える。音階はチャンネルごとに指定が可能。音階モードの場合は、チャンネルは9チャンネルある。
  2. 音量と音色を設定する。
  3. 音を発音する場合は鍵盤キーが押された事を示すON/OFFレジスタを設定する。この瞬間にFM音源は音を発生する。このキーON/OFFについてもチャンネルごとに指定が可能。


ビルトインのFM音源の音色を使う場合は、独自に作る音色設定関連のレジスタは
特に必須ではない。
予めLSIに搭載されたビルトインのFM音源の音色は、それぞれのチャンネル
ごとに指定可能。

音源の音量を設定するボリュームもチャンネルごとに設定が可能である。

I/Oポート0x7Cでレジスタを一回設定したらあとは連続してデータ書き込み(0x7D)が可能。
YM2413はレジスタの書き込みのみで、ステータスやレジスタセットの
読み込みはできない。

キーON/OFFは鍵盤のキーのON/OFFである。このデータはオート
インクリメントされない。
キーが放されたときはゼロを書き込む必要がある。
このタイミングがFM音源のエンベロープの変化に反映される。

F-Numberは音階である。正確なオクターブのパラメータは計算によって
求める事ができる。


  • C言語のサンプル。
音階のドの音、(O4 C)を発音する場合は、チャンネル0にF-Numberとして172を指定する。
これは262Hzの音を指定した事に等しい。

またレジスタアクセス時は適切にウエイトタイミングを必要とする。

extern unsigned char inp(unsigned char);
extern outp(unsigned char,unsigned char);

void ym2413(unsigned char reg, unsigned char parm);

void main(void){
	volatile long i;

	//F-Number
	ym2413(0x10,172);

	//Voice & Vol
	ym2413(0x30,48);

	//Key-on
	ym2413(0x20,24);

	//wait
	for(i=0; i<100000; i++);

	//Key-off
	ym2413(0x20,0);

}

void ym2413(unsigned char reg, unsigned char parm){
	volatile int i;

	outp(0x7C,reg);

	for(i=0; i<5000; i++);

	outp(0x7D,parm);

	for(i=0; i<5000; i++);
}

上のC言語と同等のBASICコード例を示す。
10 'F-Number
20 out &h7c,&h10
30 out &h7d,172(86)
40 'voice number & volume
50 out &h7c,&h30
60 out &h7d,48
70 'key-on
80 out &h7c,&h20
90 out &h7d,24
100 for i=0 to 1000:next i
110 'key-off
120 out &h7c,&h20
130 out &h7d,0

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2012年05月03日 23:47
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。