そのままの機能を持った関数はありませんが、既存のDXライブラリの機能だけでご希望の処理を実現できます
リファレンスには載っていませんが、画像のピクセルへのアクセスに向いているソフトイメージと
同じようにサウンドの波形データのアクセスに向いているソフトサウンドというものがあります
// ソフトウエアで扱う波形データハンドルをサウンドファイルから作成する
int LoadSoftSound( char *FileName ) ;
// ソフトウエアで扱う波形データハンドルのフォーマットを取得する
int GetSoftSoundFormat( int SoftSoundHandle, int *Channels, int *BitsPerSample, int *SamplesPerSec, int *IsFloatType = NULL ) ;
// ソフトウエアで扱う波形データハンドルのサンプル数を取得する
int GetSoftSoundSampleNum( int SoftSoundHandle ) ;
// ソフトウエアで扱う波形データハンドルのサンプルを読み取る
int ReadSoftSoundData( int SoftSoundHandle, int SamplePosition, int *Channel1, int *Channel2 ) ;
// ソフトウエアで扱う波形データハンドルのサンプルを読み取る( float型版 )
int ReadSoftSoundDataF( int SoftSoundHandle, int SamplePosition, float *Channel1, float *Channel2 ) ;
// ソフトウエアで扱う波形データハンドルのサンプルを書き込む
int WriteSoftSoundData( int SoftSoundHandle, int SamplePosition, int Channel1, int Channel2 ) ;
// ソフトウエアで扱う波形データハンドルのサンプルを書き込む( float型版 )
int WriteSoftSoundDataF( int SoftSoundHandle, int SamplePosition, float Channel1, float Channel2 ) ;
ソフトイメージと同じく普通のサウンドハンドルとは異なり、ソフトサウンドハンドルというもので扱います( LoadSoftSound の戻り値がソフトサウンドハンドルです )
そして空のソフトサウンドハンドルも作成することができます
int MakeSoftSound( int UseFormat_SoftSoundHandle, int SampleNum ) ; // ソフトウエアで扱う空の波形データハンドルを作成する( フォーマットは引数のソフトウエアサウンドハンドルと同じものにする )
int MakeSoftSound2Ch16Bit44KHz( int SampleNum ) ; // ソフトウエアで扱う空の波形データハンドルを作成する( チャンネル数:2 量子化ビット数:16bit サンプリング周波数:44KHz )
int MakeSoftSound2Ch16Bit22KHz( int SampleNum ) ; // ソフトウエアで扱う空の波形データハンドルを作成する( チャンネル数:2 量子化ビット数:16bit サンプリング周波数:22KHz )
int MakeSoftSound2Ch8Bit44KHz( int SampleNum ) ; // ソフトウエアで扱う空の波形データハンドルを作成する( チャンネル数:2 量子化ビット数: 8bit サンプリング周波数:44KHz )
int MakeSoftSound2Ch8Bit22KHz( int SampleNum ) ; // ソフトウエアで扱う空の波形データハンドルを作成する( チャンネル数:2 量子化ビット数: 8bit サンプリング周波数:22KHz )
int MakeSoftSound1Ch16Bit44KHz( int SampleNum ) ; // ソフトウエアで扱う空の波形データハンドルを作成する( チャンネル数:1 量子化ビット数:16bit サンプリング周波数:44KHz )
int MakeSoftSound1Ch16Bit22KHz( int SampleNum ) ; // ソフトウエアで扱う空の波形データハンドルを作成する( チャンネル数:1 量子化ビット数:16bit サンプリング周波数:22KHz )
int MakeSoftSound1Ch8Bit44KHz( int SampleNum ) ; // ソフトウエアで扱う空の波形データハンドルを作成する( チャンネル数:1 量子化ビット数: 8bit サンプリング周波数:44KHz )
int MakeSoftSound1Ch8Bit22KHz( int SampleNum ) ; // ソフトウエアで扱う空の波形データハンドルを作成する( チャンネル数:1 量子化ビット数: 8bit サンプリング周波数:22KHz )
int MakeSoftSoundCustom( int ChannelNum, int BitsPerSample, int SamplesPerSec, int SampleNum, int IsFloatType = 0 ) ; // ソフトウエアで扱う空の波形データハンドルを作成する
今回はサウンドファイルの一部を抜き出したいとのことですので、一番上の MakeSoftSound で良いと思います
あとソフトサウンドハンドルが持つ波形データを無圧縮の PCM形式の wav ファイルで保存する関数もあります
// ソフトウエアで扱う波形データハンドルをWAVEファイル(PCM)形式で保存する
int SaveSoftSound( int SoftSoundHandle, char *FileName ) ;
これらを使用して
1.取り出したい音声ファイルを LoadSoftSound で読み込む
2.取り出したい長さのソフトサウンドハンドルを MakeSoftSound で作成する
3.取り出したい部分を ReadSoftSoundData で読み込み、2 で作成したソフトサウンドハンドルに WriteSoftSoundData で書き込む
( 一括転送の関数が無いので、面倒で申し訳ありませんが for文で 1サンプルづつ読み込み、書き込みを行ってください )
4.取り出したい部分だけの波形データとなった 2 のソフトサウンドハンドルを SaveSoftSound で保存する
という処理を行うことで、「音声の一部分を取り出して保存する」を実現することができます
よろしければお試しください m(_ _)m