Dreamcastでは音の発音方法(以後音源もしくはサウンドモジュール)には4種類の発音法があります.
サウンドモジュールをサウンドライブラリでコントロールする場合のAPIは主に下記のAPIを使用します.
????の部分にはそれぞれMidi,Shot,Pstm,Gdda(それぞれMIDI・ワンショット・PCMストリーム・GD-DA)があてはまり,それぞれの音源に対してのコントロールになります.
音声の実際の流れは
各APIの簡単な説明を下記に記述します.
Play・Stopはそれぞれ音源に対応するサウンドデータプレイヤの再生開始・停止を行います.このAPIを使用することによりサウンドクリエイタが作成したサウンドデータを再生・停止することが可能です.
sdMidiPause・sdMidiContinueはMIDI音源に対応するサウンドデータプレイヤの再生の一時停止・一時停止解除を行います.ワンショット・PCMストリームはハードの制約上出来ません.
音源のボリュームを設定します.ここで設定する値はsd????SetFxLevおよびsd????SetDrctLevに影響します.例えばここで小さな値(例えば-007FH)を指定するとサウンドデータプレイヤで発生したデジタルオーディオがsd????SetFxLevおよびsd????SetDrctLevに来る以前に無音状態と等価になるので音声が聞こえない可能性があります.
音源のパンポットを設定します.FXのパンポットは変化しません.つまりダイレクト音のみパンポットが移動します.
音源のピッチを設定します.ワンショット・PCMストリーム音源は再生スピードを設定するAPIであるsd????SetSpeedの影響を受けます(スピードが前後します)
音源で再生しているサウンドデータの再生スピードを設定します.これはサウンドデータプレイヤにのみ関係あるのでMIDI音源で自分でMIDIメッセージを作成(sdMidiSetMes)・送信(sdMidiSendMes)した場合には影響しません.ワンショット・PCMストリーム音源は再生ピッチを設定するAPIであるsd????SetPitchの影響を受けます(ピッチが上下します)
音源からのデジタルオーディオをDSPに入力する時の入力端子番号を指定します.同時にDSPへのセンドレベル(ベースセンドレベル)も指定します.センドレベルはsd????SetFxLevの影響を受けます.sd????SetVolの値によっては(負数指定)DSPの入力に入る以前に音が無くなっている(無音状態)になっている可能性がありますので注意して下さい.
音源からのデジタルオーディオをDSPに入力する時のセンドレベルを指定します.実際のセンドレベルはsd????SetFxChのベースレベルの影響を受けます.sd????SetVolの値によっては(負数指定の場合元のサウンドデータとの兼ね合いによる)DSPの入力に入る以前に音が無くなっている(無音状態)になっている可能性があり,その場合FX音は鳴らないので注意して下さい.
音源からのデジタルオーディオをFXをかけずにしゅ通力する音声のレベルを設定します..sd????SetVolの値によっては(負数指定の場合元のサウンドデータとの兼ね合いによる)ここの数値を上げても音が実際に鳴らないので注意してください.
FXの設定をします.実際には必ずFXプログラムデータ番号とFXアウトプットデータ番号を同時に指定しなければなりません.
MIDI音源に関しては既に発音しているものに対しては効果が変化しませんので注意して下さい.
FXアウトプットのみの設定を行います.FXアウトプットデータ番号を指定します.
MIDI音源に関しては既に発音しているものに対しては効果が変化しませんので注意して下さい.
FXアウトプットのパラメータの設定を行います.リアルタイムにFXのかかり具合を変化させたいときに利用します.
MIDI音源に関しては既に発音しているものに対しては効果が変化しませんので注意して下さい.
全ての音源をミックスした最終的なデジタルオーディオに対して出力レベルを設定します.このAPIの値が0000Hになっているど音はまったく鳴らなくなるので注意して下さい.
Dreamcast用のサウンドライブラリは基本的にサウンドクリエイタの設定したパラメータを尊重するためにAPIで設定するパラメータのほとんどはサウンドデータからの相対値になっています.つまり,パンポットの設定で0000Hと設定したからパンポットは中央にあるとは限りません.