プラグインでオーディオ入出力をするための関数が用意されています. 様々なファイル形式での読み込み・保存やオーディオデバイスにおける入出力が可能となります. 高水準APIと低水準APIがあり,通常は,高水準APIのみで事が足りると思います.
プラグインが動作するためには, プラグインファイル(このパッケージには含まれていません)が 以下のディレクトリ(フォルダ)のいずれかに存在している 必要があります.
- 実行ファイルのあるディレクトリ内のpluginsディレクトリ(Windows,Macのみ)
- ホームディレクトリの.sp_pluginsディレクトリ(Linuxではこれを推奨)
- Mac OS Xでは,アプリケーションパッケージ(.appファイル)の中のContents/Resourcesディレクトリの中のpluginsディレクトリ(Mac OS Xのみ)
高水準APIを用いて音声ファイルを読み書きする手順は以下の通りで, C言語でファイルを読み書きする標準的な手順と良く似ています.
- spWaveInfo 型を初期化
- 書き込みの場合は,所望のサンプリング周波数・量子化ビット数をセット
- spOpenFilePlugin() (同等の関数として, spOpenFilePluginAuto() , spOpenFilePluginArg() , spOpenFilePluginArgAuto() などがあります)を用い,読み込みの場合は"r"モードで,書き込みの場合は"w"モードでファイルをオープン
- 書き込みの場合は,書き込みプラグイン名を第1引数にセット.NULLの場合は,ファイル名から自動判定
- 読み込みの場合は,対象ファイル形式が決まっていればプラグイン名を第1引数にセットし,決まっていなければNULLを渡して自動判定させる
- 第4引数は,通常はファイルを対象とするため, SP_PLUGIN_DEVICE_FILE だが, SP_PLUGIN_DEVICE_AUDIO を指定することによりデフォルトのオーディオデバイスから入出力することも環境によっては可能
- 読み込みの場合は spReadPlugin() を,書き込みの場合は spWritePlugin() を,必要な回数呼び出す
- spCloseFilePlugin() を呼び出し,ファイルをクローズ
以下は,上記手順による読み込みプログラム例の一部分です.
long data_length;
char *input_file;
double *data;
long nread;
:
data =
xspMalloc(data_length *
sizeof(
double));
&wave_info, NULL, 0, NULL, NULL);
if (i_plugin != NULL) {
:
for (i = 0;; i++) {
break;
}
:
}
}
char * xspMalloc(int nbytes)
spBool spCloseFilePlugin(spPlugin *plugin)
spPlugin * spOpenFilePluginArg(const char *plugin_name, const char *filename, const char *mode, spPluginDeviceType device_type, spWaveInfo *wave_info, spSongInfo *song_info, int argc, char **argv, spPluginError *error)