English
FAQSGLプログラミング関連
戻る進む
FAQ/SGLプログラミング関連

サウンド



CDDAにステレオ/モノラルの設定をしたい。

Q)
SGLでのステレオ/モノラル設定について

A)
SGLのCD-DAとシーケンスデータのステレオ/モノラル 設定は以下のように行ってください。

  1. CD-DAのステレオ/モノラル切り替え
    • ステレオの場合:slCDDAOn関数の左右のパンを
      slCDDAOn( .. , .. , -127, 127 );
      と設定します。
    • モノラルの場合:slCDDAOn関数の左右のパンを
      slCDDAOn( .. , .. , 0, 0 );
      と設定します。

    slCDDAOn関数→SGLリファレンスマニュアル

    但し、この関数を実行するためには予め、slInitSound関数を実行しておく 必要があります。
    メインプログラムのループ内にてslSynch関数を実行していれば、CD-DAの 再生中にも上記の関数にてステレオとモノラルの切換が可能です。

  2. シーケンスデータの変更の場合
    サウンドドライバのステレオ/モノラルビットを変更します。
    この設定は必ずサウンドドライバ設定後に行ってください。

    (例)

    Uint8 sndctrl;
    sndctrl = (*((volatile Uint8 *)(0x25a00483)));
    sndctrl &= 0x7f;
    if (stereo) {
       sndctrl |= 0x80;
    }
    (*((volatile Uint8 *)(0x25a00483))) = (Uint8)sndctrl;
    


4音のPCM再生をしたい。

Q)
SGLのPCM再生サンプル(sampsnd2)で、実際には4音鳴る筈のPCMが最大でも2音 しか鳴らないんですがどうしてなのでしょうか?

A)
SGLのslPCMOn関数では確かに最大4音迄の再生が可能ですが、鳴らそうとする PCMの種類によって最大音数が異なってきます。
実例をあげると

 STEREO
 16 Bit
 1音 音源使用数 4
 STEREO
  8 Bit
 2音 音源使用数 2
 MONORAL
 16 Bit
 2音 音源使用数 2
 MONORAL
  8 Bit
 4音 音源使用数 1

となります。
音源使用数が4を越えた場合slPCMOnはエラーステータス-2  (チャネルオーバー)を返します。
従って、上で記述した種類のPCM音を組み合わせる事で1〜4音のPCMデータの再生 が可能になります。


エフェクト関連の関数のパラメータ

Q)
下記の関数の使い方がよくわからずエフェクト関係がうまく行きません。
下記の関数の各引数はどこから導き出される値なのでしょうか?
サンプルなどあれば提供していただけませんか?

slSndEffect(Effect)
Effect:エフェクトナンバー

slSndMixChange(Tbank,Mixno)
Tbank:トーンバンク番号
Mixno:ミキサ番号

slSndMixParmChange(Effect,Level,Pan)
Effect:エフェクト出力チャンネル
Level:エフェクトリターンレベル
Pan:エフェクトパン

slDSPOff()

A)
結論から言いますと、これらエフェクト関連のパラメータの設定内容は サウンドデータ制作側から情報としてもらって処理するものです。
では、実際に以下のマップ構成で作成したサウンドデータを鳴らす場合を 例にして簡単に説明します。

---------------------------------------
BGM曲データ  : シーケンスデータ0
SE曲データ   : シーケンスデータ1
BGM音色データ : トーンバンクデータ0
SE音色データ  : トーンバンクデータ1
ディレイ効果   : DSPプログラム0
リバーブ効果   : DSPプログラム1
         : DSPワークエリア
---------------------------------------

  1. まず "slSndEffect(Effect)" で指定する「エフェクトナンバー」ですが エフェクトが1つの場合は常に「0」を指定し、複数ある場合は 上記リバーブをかけたい場合は上記マップ情報から「1」を指定します。

  2. 次にエフェクトをかける対象を "slSndMixChange(Tbank,Mixno)" で 決定します。BGMにエフェクトをかけたい場合は「トーンバンク番号」 に0を指定します。またエフェクトからのリターンレベルやパンを指定 するミキサが複数ある場合は、使用したいパラメータの「ミキサ番号」を セットします。このミキサの詳細も制作側からもらう情報です。

  3. 最後に "slSndMixParmChange(Effect,Level,Pan)" ですが、これは プログラム側でエフェクト効果を初期設定から変更したい場合に使用 します。例えばリバーブ効果を小さくする場合は変更したいエフェクトを 「DSPエフェクト出力チャンネル」で指定し(これも制作側からチャンネル の割り振りの情報をもらってください。)「エフェクトリターンレベル」を 下げてやります。

  4. "slDSPOff()" はサウンドDSP自体を停止して初期化する命令を発行する ものでエフェクトを扱う場合にサウンドの初期化処理や終了処理に必ず 行う必要のある関数です。

残念ながらエフェクトを扱ったSGLのサンプルプログラムはまだありません。


ミキサパラメータのSGLでの設定方法

Q)
ミキサのパラメータでR=15のサウンドデータを実際のプログラムの上で 実現するにはSGLではどうすればよいのか? PANのパラメータで下位 3ビットは無視すればよいのか?

A)
R=15は slSndMixParmChange() 関数の引数でいうと 127 になります。
この値は3ビット右にシフトされて23段階のエフェクト出力PANの指定に なります。
実際にサウンドコントロールコマンドに渡される引数の形では 16進で0Fになります。


戻る進む
FAQSGLプログラミング関連
Copyright SEGA ENTERPRISES, LTD,. 1997