Gigamix DM-SYSTEM2

SEの発声機能

updated:

第1章 概要

SEとは

 SEとは“Sound Effect”の略記で、効果音を指します。DMシステム2はBGM演奏と同様、1/60秒のタイマー割り込みを利用してSEを発声します。

 SEの発声機能は基本的にPSG音源で発声します。DMシステム2のSEの発声機能はBGM機能とリンクしており、BGMのPSG演奏部分を一時的にSEへ割り当てて発声し、SE発声が終了すると自動的にBGM演奏へ復帰します。

 SEドライバを変更することにより、多くのSE形式、そして上記以外のまったく新しい音源に対応します。

やりようによっては便利かもしれないがツールを失念してしまいデータ作成が大変なので利用頻度が低めになってしまった、DMシステム2のSE発声機能のサンプル https://gigamix.jp/ds2/ds2se.html — Takashi Kobayashi (@nf_ban) 2021年08月14日 鈴見咲君高さんのSEドライバ「SZMKO」のDMシステム2版(DM2ZSMKO, SE-SZMK)はMMLで記述できるので効果音作りが捗りますね!完成したらRAMの領域をBSAVEしておけばいいんですもんね。おすすめです。https://hp.vector.co.jp/authors/VA011751/MSXHIKID.HTM — Takashi Kobayashi (@nf_ban) 2021年08月15日
SEの発声機能のサンプル動画

第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

用語説明

  • ディレイ…………最初のウェイト
  • ディチューン……最終的にトーン周波数に足す値
  • ポルタメント……一定周期ごとにトーン周波数に値を足す事
  • 増減時間…………何ステップ毎にポルタメントをかけるか(ポルタメントの周期)

第5章 補足

PSGの優先順位

 DMシステム2のBGM機能でPSGを使用するとき、SEでもPSGを使用すると、SEの音を優先します。ただし、SEで使用しないPSGのチャンネルは、引き続きBGMを演奏します。

 BGMとSEとで周波数の違うノイズを使用すると、一定時間BGMが聞き苦しくなる場合があります。※

※出荷時のBGMドライバ・SEドライバを利用するとき。

[Back]トップページへ