第2章 DMシステム2からの利用方法
プログラムの記述はすべてのドライバにおいて共通です。ただし、ドライバによって機能に制限がある場合があります。
SEテーブルの宣言
事前にSEデータのファイル(SEテーブル)を所定のメモリ(RAM)へ配置したうえで、SEテーブルのアドレスを宣言します。
CALL SETSE (アドレス)
ex.)
_SETSE(&H3000) ← 3000hを宣言
SEを配置するエリアが8000h以降のときは、あらかじめ“CLEAR”文で宣言しておく必要があります。
SEの発声
RAMに配置したSEデータを発声します。指定した番号のSEを発声します(1~255)。SEテーブルに格納されているSEの最大数を越える番号を指定すると、DMシステム2はエラーを返します。
CALL SEON (SE番号)
ex.)
_SEON(3) ← 3番のSEを発声
効果音発声中に新たな効果音を発声させた場合、優先順位の高い効果音を発声します。優先順位はSEドライバの機能に依存します。
SE発声の停止
発声中のSEを停止します。SE番号を0にして発声しても停止します。
CALL SEOFF
CALL SEON (0)
SEを発声していない場合は無視します。
SEデータの作成方法
DMシステム2で使用するSEデータは事前に各種ツールで作成しておく必要があります。ツールの使用方法は、それぞれのドキュメントファイルなどを参照してください。
Gigamix製SEドライバ(SE-NSE)
SEデータ構造
SE-NSE データ構造
データの先頭 |
+0 |
データ数(1~255) |
ディレクトリ |
+0~+1 |
SEヘッダへの相対アドレス(0~65535) |
+2 |
ヘッダ
b7 b6 b5 b4 b3 b2 b1 b0 B:BGM停止on/off(1:off)
B 0 0 0 0 0 C C C:使用チャンネル数(1~3)
|
※データ数分ディレクトリが並んでいます。 |
SEヘッダ |
+0 |
データ本体への相対アドレス(0~255) |
+1 |
ディレイ(0~255) |
+2 |
b7~b4:ディチューン(-8~+7) b3~b0:優先順位(0(高)~15(低)) |
※使用するチャンネル分集まって1データのSEヘッダとなります。 |
SEデータ本体 |
SEデータフォーマット(後述)に従ってデータが格納されています。 |
以下、「SEヘッダ」「SEデータ」の順でデータ分並んでいます。
SEデータフォーマット
bit 7 6 5 4 3 2 1 0
---------------
1 0 n t v v v v n:ノイズ t:トーンのon/off (1:off)
v:音量指定(0~15)
1st: 1 1 0 0 |high4| トーンの直接指定 (0~4095)
2nd: | low8 |
1 1 0 1 n n n n n:ノイズの直接指定(0~15:実際は×2して発声)
1st: 1 1 1 0 p p p p p:ポルタメント(-8~+7) p=0でポルタメントoff
2nd: t t t t t t t t t:増減時間(0~255)
1 1 1 1 v v v v v:音量の相対指定(-8~+7)
0 1 w w w w w w 1回の割り込み処理の終了
w:次の発声までの待ち時間(0~63)
1st: 0 0 w w w w w w w:次の発声までの待ち時間(0~63)
2nd: l l l l l l l l l:ループ回数(0~254)
l=FFhの場合、そのSEの終了
3rd: a a a a a a a a a:ループ先の相対アドレス(-255~0)
用語説明
- ディレイ…………最初のウェイト
- ディチューン……最終的にトーン周波数に足す値
- ポルタメント……一定周期ごとにトーン周波数に値を足す事
- 増減時間…………何ステップ毎にポルタメントをかけるか(ポルタメントの周期)
旧マジカルラビリンス用SEドライバ(SE-SE2)
SEデータ構造
SE-SE2 データ構造
データの先頭 |
+0 |
データ数(1~255) |
ディレクトリ |
+0~+1 |
SEヘッダへの相対アドレス(0~65535) 0 = this+3 となります。 |
+2 |
ヘッダ
b7 b6 b5 b4 b3 b2 b1 b0 B:BGM停止on/off(1:off)
B X 0 0 0 0 C C C:使用チャンネル数(1~3)
X:排他フラグ
|
※データ数分ディレクトリが並んでいます。 |
SEヘッダ |
+0 |
b7~b4:ディチューン(-8~+7)+8 b3~b0:優先順位(0(高)~15(低)) |
+1 |
ディレイ(0~255) |
+2 |
データ本体への相対アドレス(0~255) |
※使用するチャンネル分集まって1データのSEヘッダとなります。 |
SEデータ本体 |
SEデータフォーマット(後述)に従ってデータが格納されています。 |
以下、「SEヘッダ」「SEデータ」の順でデータ分並んでいます。
SEデータフォーマット
bit 7 6 5 4 3 2 1 0
---------------
1 0 n t v v v v n:ノイズ t:トーンのon/off (1:off)
v:音量指定(0~15)
1st: 1 1 0 0 |high4| トーンの直接指定 (0~4095)
2nd: | low8 |
1 1 0 1 v v v v v:音量の相対指定(-8~+7)+8
1st: 1 1 1 0 p p p p p:ポルタメント(-8~+7)+8 p=8でポルタメントoff
2nd: t t t t t t t t t:増減時間(0~255)
1 1 1 1 n n n n n:ノイズの直接指定(0~15:実際は×2して発声)
0 0 w w w w w w 1回の割り込み処理の終了
w:次の発声までの待ち時間(0~63)
1st: 0 1 w w w w w w w:次の発声までの待ち時間(1~63)
00hの場合、そのSEの終了
2nd: l l l c c c c c c:ループ回数(1~31) 0のとき無限
l:ループの深さ (0:最内ループ~7:最外ループ)
3rd: a a a a a a a a a:ループ先の相対アドレス(-255~0)FF=直前の1byte
用語説明
- ディレイ…………最初のウェイト
- ディチューン……最終的にトーン周波数に足す値
- ポルタメント……一定周期ごとにトーン周波数に値を足す事
- 増減時間…………何ステップ毎にポルタメントをかけるか(ポルタメントの周期)
鈴見咲効果音ドライバ(SE-SZMK)
鈴見咲君高さんのWebサイトより「DM2SZMKO」のアーカイブをダウンロードしてください。
→ https://hp.vector.co.jp/authors/VA011751/MSXHIKID.HTM
第5章 補足
PSGの優先順位
DMシステム2のBGM機能でPSGを使用するとき、SEでもPSGを使用すると、SEの音を優先します。ただし、SEで使用しないPSGのチャンネルは、引き続きBGMを演奏します。
BGMとSEとで周波数の違うノイズを使用すると、一定時間BGMが聞き苦しくなる場合があります。※
※出荷時のBGMドライバ・SEドライバを利用するとき。
トップページへ