作成する音声データの再生形式を設定する
SetCreateSoundDataType SoundDataType
int SoundDataType : 再生形式の識別値 ( DX_SOUNDDATATYPE_MEMNOPRESS (デフォルト) 説明:音声データを直接再生できる状態にしてメモリ上に保存 読み込み速度:遅い 再生負荷:速い 必要メモリ領域:大きい DX_SOUNDDATATYPE_MEMPRESS 説明: 圧縮されている音声データをメモリ上に保存、再生時に リアルタイムで圧縮データを展開、音声データが圧縮されて いない場合は DX_SOUNDDATATYPE_MEMNOPRESS よりかえって 必要メモリ容量、再生負荷、読み込み速度全ての面で不利になる 読み込み速度:普通 再生負荷:少し重い 必要メモリ領域:普通 DX_SOUNDDATATYPE_FILE 説明: 音声データを再生時にファイルからリアルタイムに メモリ上に読み込む、音声データが圧縮されている場合は 読み込んだ時に展開する 読み込み速度:速い 再生負荷:重い 必要メモリ領域:軽い )
(プラグイン / モジュール : DxLibW)
LoadSoundMem で読み込む音声データの扱いを設定します。 デフォルトの状態では LoadSoundMem は読み込んだ音声ファイルを、 メモリ上にまるまる保存し、再生に備えます。この方法が一番処理効率が 良いのですが、たとえばBGMに使うような巨大な音声ファイルも この方法で再生しようとすると、とたんに大量にメモリ領域を必要とし、 ファイルからメモリに読み込む時間もかなりかかってしまい、あまり良いことが ありません。 なので、そんな時にストリーム再生というものをつかいます。 ストリーム再生とは、例えばBGMを再生する場合、音声データを一度に ファイルからメモリに読み込んで再生に備えるのではなく、再生するときに少し づつファイルから音声データを読み込んで、少しづつ再生するという再生 方式です。 この方法では、音声ファイル全部をメモリに保存する必要がないので メモリ領域の節約にもなりますし、再生しながらファイルから読み込むので ロードの時間も短くてすみます。いいことがたくさんです。 このストリーム再生をするためにあるのがこの SetCreateSoundDataType という わけです。引数は、どんな音声再生方法をとるのか、を識別するint 型の 整数値一つで、ファイルからのストリーム再生をしたい場合は、ストリーム再生 したい音声ファイルをロードする前に SetCreateSoundDataType( DX_SOUNDDATATYPE_FILE ) ; としてやるだけで出来るのです。 ですが、ストリーム再生には再生時にファイルから逐次音声データを読み 込むことになるために、デフォルトの、全て音声データをファイルから読み 込んでおく方法に比べて処理負荷が大きくなります。 なので、『パン』や『ドカン』などのちょっとした音が保存された音声 ファイルは、ストリーム再生ではなく、デフォルトの全てメモリ上に音声 データを読み込んでおく方法をとった方が良いわけで、このあたりは使いわける 必要があります。 ちなみに DX_SOUNDDATATYPE_MEMPRESS は DX_SOUNDDATATYPE_FILE と DX_SOUNDDATATYPE_MEMNOPRESS の中間的なものです。 音声ファイルにはWAVEファイルの他にMP3等のWAVEファイルよりも 容量を小さくしたファイル形式があるのはご存知だと思います。このDXライブラリ でもそれらのファイルを扱う事が出来ますが、DXライブラリが音声を出力 する為に使用している DirectSound はMP3等の所謂『圧縮データ』に対応 していない為、再生する際にはMP3等のデータ形式からPCMという何の 変哲も無い音声データ形式に変換してやる必要があるのです。 デフォルトの設定ではDXライブラリはこの『変換処理』を LoadSoundMem で ファイルをメモリに読み込んだ時に行います。ですが、MP3からPCMに変換 する処理は決して軽い物ではないので、場合によってはMP3より10倍近い データサイズを持つWAVEファイルを読み込む場合よりも LoadSoundMem に 時間が掛かってしまう場合があるのです。 そういう時は DX_SOUNDDATATYPE_FILE の出番なわけですが、DX_SOUNDDATATYPE_FILE は『ファイルから少し読み込む』→『少しだけ変換』→『少しだけ再生』を繰り返す ので、少々マシンに掛かる負荷が高いのです。 そこで今度は DX_SOUNDDATATYPE_MEMPRESS の出番というわけです。 DX_SOUNDDATATYPE_MEMPRESS も DX_SOUNDDATATYPE_FILE と同じく少しづつ変換、 再生を繰り返すのですが、DX_SOUNDDATATYPE_FILE と違いファイルの中身だけは 全てメモリ上に読み込んでしまいます。これにより DX_SOUNDDATATYPE_FILE では 『ファイルから少し読み込み』→『少しだけ変換』→『少しだけ再生』だった過程が 一つ減り『少しだけ変換』→『少しだけ再生』になるわけです。 DX_SOUNDDATATYPE_MEMPRESS と DX_SOUNDDATATYPE_FILE どちらが良いかと訊かれると 少し悩みますが、無圧縮のWAVEファイルに関しては DX_SOUNDDATATYPE_FILE を、 圧縮された音声ファイルに関しては DX_SOUNDDATATYPE_MEMPRESS をお使いになる事を お勧めしておきます。 注意!… この関数で DX_SOUNDDATATYPE_NOMEMPRESS 以外の選択をした場合は、 以後 ProcessMessage の呼び出し間隔を0.2秒以上空けないようにして下さい。 (0.2秒以上空け続けると再生中の音が途切れる現象が発生します) というのも、解説に記載されている『少し読み込んで(あと変換して)再生する』 という処理が ProcessMessage の中で行われているからです。(汗) 戻り値: -1:エラー発生 0:成功
| GetCreateSoundDataType | 作成するサウンドハンドルの再生タイプを取得する( DX_SOUNDDATATYPE_MEMNOPRESS 等 ) | (DxLibW) |
| プラグイン / モジュール | DxLibW |
| バージョン | 3.24f |
| 作成日 | 2026/04/12 |
| 著作者 | DxLib: Takumi Yamada / HSP binding: IronHSP Project |
| URL | https://dxlib.xsrv.jp/ |
| 備考 | hspdxlib.as をインクルードして使用 |
| タイプ | DxLib ゲームライブラリ |
| グループ | DxLib サウンド |
| 対応環境 |
|
| hs ファイル | hsphelp\hspdxlib.hs |