サウンドマニュアル - GAME BASIC for SEGASATURN -
Up↑
GAME BASIC for SEGASATURN(Version 1.064)1998年3月19日
このページは、1998年当時のドキュメントをBits Laboratoryの許諾を得て、サウンドシステムの設計を行った私自身がHTML化したものです。
今後、製品に含まれるチュートリアルやサンプルを音付きの動画で紹介する予定です。
主に従来のMML(ここではPC-8801mkII SR等の8ビットPC)と比較した場合の特徴を挙げます。
- 本MMLは、ハードウェアの構造上の違いにより、若干特殊な命令形態になっているところがあります。FM音源コマンドの仕様も特殊なものになっています。FM音源コマンドの詳細はTARG命令を参照してください。
- 音楽演奏とBASICの構文解析は別々のCPUで並行して動作しています。構文解析をしている間に曲がもたついたり、間延びしてタイミングが狂うことはありません(PLAY命令は1行に記述したMML文字列単位に演奏し、その演奏が終わるまで次の命令を実行しないため、途中の構文解析の時間だけ間延びすることがあります)。トラック間のタイミングずれは起こりませんが、ゲームや音楽演奏をメインとするプログラムを組む場合は、SETSONG命令によって予めサウンドメモリにソングデータを用意した後(最大251曲)、EFFECTやBGM命令によって任意のソングデータを呼び出して演奏する形式をとって下さい。EFFECTやBGM命令で演奏する場合は、BASICメインシステムとは完全に独立して演奏しますので、お互いに影響を与えることはありません。
- 8ビットPCに比べればSEGASATURNのメモリ容量は広大です。MMLを含めたサウンドシステムも大幅に機能拡張し、できる限り市販のシーケンサーやシンセサイザーの機能を盛り込み、より音楽性を重視した設計になっています。これは、基本コマンドにオプションを追加して指定する方式ですので、オプションを指定しなければ従来のMMLと互換性があります。
- 音色データファイルセットの中には、そのまま使える効果音データを内蔵しているものがあります。効果音で音階を作ったり、逆に楽器の音源を使って効果音を作ることも可能です。
- SEGASATURNの音源ハードウェアは、32個のスロットに対して個別に音色を指定して再生できる設計になっています。本システムは、MMLで記述できるトラック数を最大16に設定していますが、和音やFM音源等、32個のスロットを動的にアサインしながら有効に利用できます。
- MMLで記述したサウンドデータは、PLAYやEFFECT、およびSETSONG命令によって、演奏する前に予めソングデータに変換し、サウンドメモリに転送しています。したがって、曲チェンジや効果音リクエストによるタイムラグを最小限に留めています。
- DSPエフェクターを使用する場合は、音色データ側で「入力ミキサー」設定が必要になります(デフォルトで設定されている音色もあります)。TPROP()命令のミキサー、およびサウンドシステムのブロック構成をよく読んでから御利用下さい。
- BASICメインシステムと同期を取るための「埋め込み制御コマンド」があります。現在演奏中の「音符」、「音量」、「定位」をリアルタイムに取得できる他、トリガ形式のコマンドをサウンドシステムからBASICインタープリタに対して送ることができます。トラック「0」の制御コマンドのみ、インタープリタ側から割り込み監視できます。この機能により、カラオケプログラムや、音楽に同期しながらポリゴンを動かすことも可能です。
[UP]
-
32オシレータ(FM、PCM兼用のスロット)/16トラック
(1音色1レイヤの場合は、最大32音同時発音)
-
最大251ソング
(BEEP用とPLAY命令用を合わせて253ソング)
-
最大26,000ノート
(ピッチベンドなどの特殊効果を指定しない場合)
-
PCMサンプリングメモリ:標準340Kバイト:最大461Kバイト
(差し替えをしないでオンメモリで同時に扱える容量)
-
最大128ボイス(1ボイス最大128レイヤ)まで同時使用可能。
(一般シンセサイザー用語では、パッチ/パフォーマンスに相当します)
-
最大ベンドレンジ±2オクターブ
(TPROP()命令で変更可能)
-
エフェクト用DSP制御
(MMLでリバーブ、ディレイ、ディストーション制御が可能)
-
標準装備のPCM音源200種以上、FM音源512種(効果音含む)
(16種のファイルから任意に選択して組み替え可能)
-
FM音源編集コマンド装備。
(32オペレータを自由に結線可能)
(標準で用意されている47種類の変調波形のほか、オリジナルPCMサンプリングデータを変調波形として使用可能)
[UP]
-
音声合成方式
- PCM音声合成およびFM音声合成。ノイズ音源(混在使用可能)。
-
音源部
- リサンプリング周波数(定再生レート)44.1KHz固定。
(サンプリング周波数44.1KHz、16ビットのときはCDクオリティ)
-
波形データフォーマット
- 16ビット直線、および8ビット直線。
- サンプリング周波数 0(DC)〜44.1KHz。
- 波形データの符号ビット反転機能対応。
-
音声処理スロット数32
- 1スロットは、PCM音源の1音、FM音源の1オペレータに相当。
- 最大同時発音数32。
- すべて4オペレータアルゴリズムのFM発声時は8音。
- FM音1音に使用するスロット数は、1〜32まで任意に設定可能。
(FM音とPCM音の混在可能)
-
波形ループ機能
-
各スロットごとに
から選択(PCM/FM両方対応)。
-
EG(エンベロープジェネレータ)
4セグメントAmplitude-EG(PCM/FM両方対応)
-
LFO(ローフリケンシーオシレータ)
振幅/周波数変調用
LFO出力波形の種類
ALFO/PLFO独立指定可能。
(PCM/FM両方対応)
-
音色データ(標準装備の音色ファイル)
- メモリ容量は、ソングデータ領域、DSPプログラム領域とのトレードオフ(サウンドメモリマップ参照)。
- 音色ファイル(340Kバイト × 12 =約4M byte + GM配列のFM音源ファイル)の中から自由に組み替え可能。
- オリジナルPCMサンプリングデータの登録、およびピッチを変えての再生が可能。
- 標準音色ファイルのデータと組み合わせることも可能。
- 「AIFF」形式、「WAVE」形式のファイルを音色データにリンク可能(自動識別)。
- ヘッダ情報無しのウェーブデータも『DATA』文で登録可能。
- レイヤ単位(スロット別)に ALFO/PLFO/4セグメントEG制御可能。
-
DSP/ミキサー制御(入力ミキサー/出力ミキサー)
-
“DSP”モード(シングルエフェクターモード)時
-
DSPエフェクタープログラム
- REVERB〔リバーブ〕2種類
- STEREO DELAY〔ディレイ〕
- DISTORTION〔ディストーション〕
の中から1種を MML「ec:エフェクトチェンジ」コマンドでリアルタイムに選択可能。
-
“DSPEXT”モード(マルチエフェクターモード)時
-
DSPエフェクタープログラム
- REVERB〔リバーブ〕
- STEREO DELAY〔ディレイ〕
- DISTORTION〔ディストーション〕
が別々のDSP入力ミキサーに割り振られ、レイヤ単位にエフェクターを選択し同時に使用可能。
各出力チャンネルごとにエフェクトレベル/パンポット設定可能。
-
FM音源の変調用波形は、サイン波、のこぎり波、矩形波、三角波など一般的な波形の他、合計47種類用意されていますので、表現できる音色の幅が広がります。
(変調波形の形は、TARG命令マニュアルの「FM変調波形図」を参照して下さい)
★波形グラフィックは JPEG で用意されています。
[UP]
-
従来のMMLと、ほぼ上位コンパチブル。
- レジスタの意味が異なるので、直接レジスタを操作している部分は互換性無し。
- TARG命令の"FM"コマンドでスロットアルゴリズムの設定可能。
- 最大16トラックまで指定可能。
-
調号指定可能。
- 小節、臨時変化記号の概念有り。
(「S」コマンドを指定しなければ、従来のMMLと互換性があります)
-
ノートオンコマンド(音名指定)用サブオプション。
- ベロシティ指定/Gate/Delta比指定。
- ピッチベンド指定(オートボリューム/オートパンと兼用)。
- コードネーム指定。
(指定しなければ、従来のMMLと互換性があります)
- トラック単位のダンパースイッチ。
-
1トラック内での和音指定(異なる音色でも指定可能)。
-
DSPエフェクター/ミキサー制御コマンド。
- レイヤ単位にDSPブロックへの入力ミキサー設定が行なわれている場合、そのエフェクト成分のレベルと定位をMMLで制御可能。
- “DSP”モード時、エフェクトチェンジコマンド「ec」で、エフェクターの選択ができます(“DSPEXT”モード時は「ec0」固定)。
-
再定義可能なマクロ機能。
- ベロシティマクロ(p,mp,mf,f 等)。
- 128文字×52個のフリー定義マクロ(パーカッション定義に有効)。
- キートランスポーズ機能。
- 楽典仕様のループ構造。
- メインシステムと同期を取るための埋め込み制御コマンドあり。
-
16トラックぶんの演奏状態をリアルタイムに監視可能。
(トラック「0」に対しては、割り込み監視可能)
[UP]
ユーザーが使用できる総サウンドメモリ容量 = 468K byte(1872block)

[UP]
サウンド命令/関数を実行したときの実際のサウンドデータの流れを記します。
サウンドデータの流れは、大まかに上図のような経路をたどって最終的にステレオ2チャンネルにミキシングされます。
DSPエフェクターを使わないデフォルト状態では、図の「ダイレクト成分」だけです。「72:ダイレクトデータ送出レベル」、「73:ダイレクトデータ定位」、「マスターボリューム」のパラメタを変えるだけで音が出ます。マスターボリュームはVOLUME命令でデフォルト値が設定されています。ダイレクト成分のパラメタに関しては、音色データ側に予めデフォルト値が設定されています。DSPエフェクターを使わない場合は、ミキサーを意識する必要はまったくありません。
[UP]
“DSP”モード時の内部構成
『PLAYINIT "DSP"』を実行すると、シングルエフェクターモードでDSPが初期化されます。
入力ミキサーはチャンネル「0」しか使いません。
エフェクターを通したい音色が登録されているレイヤの「70:入力選択」をTPROP()/DSP命令で「0」チャンネルに設定すると接続されます。デフォルトで「0」になっていますので、「71:入力混合レベル」を変えるだけでエフェクターが利用できます(予め混合レベルが設定されている音色もあります)。
逆に、エフェクターを通したくない音色に対しては、「71:入力混合レベル」を「0」に設定して下さい。→ TPROP()/DSP参照
出力ミキサーはチャンネル「0〜1」しか使いません。
(ディストーションはモノラルエフェクターなので、チャンネル「0」のみ)
出力ミキサーは、デフォルトでチャンネル「0」をLeftへ、チャンネル「1」をRightに振り、エフェクトレベルを最大に設定しています。この設定は、後からMMLの「ep:エフェクトパン」コマンド、および「el:エフェクトレベル」コマンドで変更可能です。

“DSPEXT”モード時の内部構成
『PLAYINIT "DSPEXT"』を実行すると、マルチエフェクターモードでDSPが初期化されます。
入力ミキサーはエフェクターの種類によってチャンネル「0〜2」が選べます。
(0〜2は、定数シンボル @REV、@DEL、@DST に対応しています)
エフェクターを通したい音色が登録されているレイヤの「70:入力選択」をTPROP()命令で「0〜2」チャンネルに設定すると接続されますが、デフォルトで「0」になっていますので、特に選択しない場合はリバーブになります(『DSP ON,…』命令と同じ)。
出力ミキサーもエフェクターの種類によって別々に取り出せます。
リバーブの出力が「0〜1」、ディレイの出力が「2〜3」、ディストーションはモノラルエフェクターなので、チャンネル「4」のみに割り当てられています。
それぞれの出力ミキサーは、デフォルトでLeft、Rightに振られ、エフェクトレベルは最大に設定されています。
設定後の操作は、"DSP"モード時と同じです。

[UP]
ダイレクト成分のミキサーパラメタは、音色データに予め設定されています。PLAYINIT命令で"DSP"オプションを指定した場合は、エフェクト成分に対してのミキサーパラメタが初期化されます。
エフェクト成分のミキサーパラメタは、音色単位ではありませんのでMMLの「el」コマンドで設定して下さい。
本サウンドシステムを使用するにあたって、DSPエフェクトを使用しない場合は実際にミキサーを意識する必要はありませんが、使用する場合は、エフェクトを通さない「ダイレクトデータ」と、DSPを通す「エフェクトデータ」のレベルと定位を常に意識しなければなりません。
SEGASATURNのデジタルミキサーは、各音声信号のレベル/バランス調整を行うブロックで、ダイレクト音声調整部/DSP入力段調整部/DSP出力段調整部/最終段出力調整部の4つの部分から構成されています。
-
ダイレクト音声調整部
-
- 各スロットの出力が、直接DAC出力につながる経路を管理するミキサーブロックです。各スロットごとに出力レベルと出力バランスをコントロールすることができます。
※TPROP()命令で調整します。
-
DSP入力段調整部
-
- 各スロットの出力をDSPへ入力するためのミキシングを行います。実際には、各スロットの「入力選択」で音声信号を選択して「入力混合レベル」で入力レベルを調整します。「入力選択」で複数の音声をミキシングする場合、各音のバランスをとることが必要です。
- DSPは、複数のスロット出力をミキシングして入力することができるので、BGMのリバーブのように複数の音声に対して同じエフェクト処理を行うことができます。
※TPROP()またはDSP命令で設定します。
-
DSP出力段調整部
-
- DSPでエフェクトをかけられた音声や、外部デジタル入力により取り込まれた音声を、最終的にミキシング処理を通してステレオにまとめます。DSP、および外部デジタルオーディオから出力される音声信号に対して、出力レベル、および出力バランスの調整を行うことができます。ここでまとめられたデータは、ダイレクト音声成分ともミキシングされます。
※MMLの「el」「ep」コマンドで調整します。
-
最終段出力調整部
-
- 音声のダイレクト成分とエフェクト成分をまとめて、DACへの出力レベルを調整します。
[UP]
SCSPレジスタの値を直接操作したい方ヘ(Saturn Custom Sound Processor)
SEGASATURNには32個の発音スロットがあり、最大32音同時発声が可能であることはすでに記した通りです。
これまでの説明は、すべて「スロット」という表現を使いましたが、MMLを使って演奏させるだけであれば本サウンドシステムを使うときにスロット番号を意識する必要はありません。これは、1レイヤ1スロットに内部で動的に割り当てられるからです。
従って、従来の音源パラメタを操作するときのように、「発音スロット番号に対応する音源レジスタ」のアドレスを調べて読み書きする必要はなく、すべてレイヤデータ(音色データに含まれています)に予め設定しておき、そのレイヤが発音時にどのスロットに割り当てられても良いようになっています。FM音源パラメタを設定する場合も、レイヤデータを予め作成しておき(TARG命令「"FM"」コマンド)、後からリアルタイムでパラメタを変更する場合も、TPROP()命令でレイヤ番号を指定して読み書きします(SCSPレジスタへの設定は、直接ではなく、レイヤ間接操作ということ)。
この方法で設定したレジスタ値は、そのレイヤが発音される(ノートオン)タイミングで、実際のSCSPレジスタに転送されます(どの発音スロットに割り当てられたかはユーザーが意識する必要はありません)。
レジスタ項目の詳細はTPROP()命令のマニュアルを参照して下さい。
[UP]
TPROP()命令で設定可能な「73:ダイレクトデータ定位」は、MMLの「P(ダイレクトパン)」コマンドを実行すると無効になります。有効にする場合は「@」コマンドで、音色チェンジ(プログラムチェンジ)を行って下さい。逆に言うとMMLの「P」コマンド(ノートオンコマンドの「~P:オートパン」を含む)の設定は、音色チェンジによって初期化されるということですので注意して下さい。
また、『PLAYPAN』命令を実行した場合は、「P」コマンドによるダイレクトパンも音色データのレイヤパンも無効になります。
次に、パン指定コマンドの優先順位を高い順に並べておきます。
-
パン指定コマンドの優先順位(高い順)
-
- シーケンスパン(『PLAYPAN』命令 )
- MMLパン( MML「P」コマンド )
- レイヤパン(TPROP()項目番号「73:ダイレクトデータ定位」)
いずれの場合も、上図のダイレクトデータ定位のミキサーに設定されます。
(設定場所が独立しているわけでは無い)
マルチプレイヤ画面(SEGASATURN本体のモード設定画面)でモノラルを選択しているときは効果が表われません。
Up↑
©1998 ASCII Corp./Bits Laboratory/ESP inc.
(2005/7/7)
[UP]