spAudio
読み取り中…
検索中…
一致する文字列を見つけられません
spAudio クラス

オーディオ入出力を扱うクラスです. [詳解]

#include <sp/spAudio.h>

spAudio 連携図
Collaboration graph

関連関数

(これらはメソッドではありません)

#define spFreeAudioDriver(audio)   {_spFreeAudioDriver(audio); (audio) = NULL;}
 
#define spFreeAudio(audio)   spFreeAudioDriver(audio)
 
初期化
spAudio spInitAudioDriver (const char *driver_name)
 
spAudio spInitAudio (void)
 
void _spFreeAudioDriver (spAudio audio)
 
デバイス選択
spBool spGetNumAudioDevice (spAudio audio, int *num_device)
 
char * xspGetAudioDeviceName (spAudio audio, int device_index)
 
spBool spSelectAudioDevice (spAudio audio, int device_index)
 
セッターおよびゲッター
spBool spSetAudioSampleRate (spAudio audio, double samp_rate)
 
spBool spGetAudioSampleRate (spAudio audio, double *samp_rate)
 
spBool spSetAudioChannel (spAudio audio, int num_channel)
 
spBool spGetAudioChannel (spAudio audio, int *num_channel)
 
spBool spSetAudioBufferSize (spAudio audio, int buffer_size)
 
spBool spGetAudioBufferSize (spAudio audio, int *buffer_size)
 
spBool spSetAudioNumBuffer (spAudio audio, int num_buffer)
 
spBool spGetAudioNumBuffer (spAudio audio, int *num_buffer)
 
spBool spSetAudioBlockingMode (spAudio audio, int block_mode)
 
spBool spGetAudioBlockingMode (spAudio audio, int *block_mode)
 
spBool spSetAudioSampleBit (spAudio audio, int samp_bit)
 
spBool spGetAudioSampleBit (spAudio audio, int *samp_bit)
 
spBool spGetAudioSpecifiedSampleBit (spAudio audio, int *specified_samp_bit)
 
spAudioCallbackType spSetAudioCallbackFunc (spAudio audio, spAudioCallbackType call_type, spAudioCallbackFunc call_func, void *call_data)
 
オープンおよびクローズ
spBool spOpenAudioDevice (spAudio audio, const char *mode)
 
spBool spCloseAudioDevice (spAudio audio)
 
読み込みおよび書き込み
long spReadAudio (spAudio audio, void *data, long length)
 
long spWriteAudio (spAudio audio, void *data, long length)
 
long spReadAudioDoubleWeighted (spAudio audio, double *data, long length, double weight)
 
long spReadAudioDouble (spAudio audio, double *data, long length)
 
long spWriteAudioDoubleWeighted (spAudio audio, double *data, long length, double weight)
 
long spWriteAudioDouble (spAudio audio, double *data, long length)
 
デバイス制御
spBool spGetAudioOutputPosition (spAudio audio, spLong *position)
 
spBool spStopAudio (spAudio audio)
 
spBool spSyncAudio (spAudio audio)
 

詳解

オーディオ入出力を扱うクラスです.

実際には,クラスではなく, typedef struct _spAudio *spAudio; により typedef された型です. spInitAudio()spInitAudioDriver() により初期化して使用し,使用が終わったら spFreeAudio() または spFreeAudioDriver() でリソースの解放を行います.

通常,オーディオ入出力の流れは次のようになります.

  1. spInitAudio() または spInitAudioDriver()spAudio を取得
  2. spSelectAudioDevice() でデバイスを選択.これを呼ばない場合はデフォルトのデバイスが使用される
  3. spSetAudioXXX で現在のデバイスに関する情報を設定
  4. spOpenAudioDevice() で現在のデバイスを開く
  5. デバイスに関する情報が,必ずしも設定した値と同じとは限らないので spGetAudioXXX を呼んで必要に応じて値をチェックする
  6. 入力の場合は spReadAudio() を,出力の場合は spWriteAudio() を必要なだけ繰り返し呼ぶ. double型のバッファを用いる場合は,それぞれ spReadAudioDouble()spWriteAudioDouble() を使用する
  7. 入出力をやり直す場合などは, spSyncAudio() を呼んでバッファをフラッシュする
  8. spCloseAudioDevice() で現在のデバイスを閉じる
  9. spFreeAudio() または spFreeAudioDriver()spAudio を解放
参照
spInitAudio() , spInitAudioDriver() , spFreeAudio() , spFreeAudioDriver()
各種例
driver.c, iotest.c, playsin.c, rec.c.

フレンドと関連関数の詳解

◆ spInitAudioDriver()

spAudio spInitAudioDriver ( const char * driver_name)
related

spAudio のメモリを確保し,オーディオドドライバーを使用できる状態に初期化します(コンストラクター).
オーディオ入出力に関する関数は,これ(もしくは spInitAudio() )を呼ばないと使用できません. spFreeAudioDriver() を呼ばずに同一のドライバーを使用して複数回呼び出すことはできません. 別々のドライバーを使用して呼び出した場合は,ドライバーや環境によっては,それぞれを独立して使用することができます.

引数
[in]driver_nameドライバー名のヌル終端文字列を指定します.NULLの場合はデフォルトのドライバーが使用されます.
参照
spFreeAudioDriver()

◆ spInitAudio()

spAudio spInitAudio ( void )
related

spAudio のメモリを確保し,オーディオドドライバーを使用できる状態に初期化します(コンストラクター).
オーディオ入出力に関する関数は,これ(もしくは spInitAudioDriver() )を呼ばないと使用できません. spFreeAudio() を呼ばずに複数回呼び出すことはできません.

参照
spFreeAudio()

◆ _spFreeAudioDriver()

void _spFreeAudioDriver ( spAudio audio)
related

オーディオドライバーのリソースを解放します.実際には, spFreeAudioDriver() を代わりに使用して下さい.

引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.

◆ spGetNumAudioDevice()

spBool spGetNumAudioDevice ( spAudio audio,
int * num_device )
related

オーディオデバイスの数を取得します.

引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[out]num_deviceデバイス数を受け取る変数のアドレスを指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ xspGetAudioDeviceName()

char * xspGetAudioDeviceName ( spAudio audio,
int device_index )
related

オーディオデバイス名を取得します.

引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[in]device_index0始まりのデバイスのインデックスを指定します.( spGetNumAudioDevice() で返される値-1)までの値が指定できます.0は,環境等によらず,常にデフォルトのデバイスに相当します.
戻り値
メモリ確保されたデバイス名(ヌル終端文字列)が返ります.必要がなくなったら xspFree() によりメモリの解放をして下さい.

◆ spSelectAudioDevice()

spBool spSelectAudioDevice ( spAudio audio,
int device_index )
related

オーディオデバイスを選択します.デバイスのオープンを行う前に呼ぶ必要があります.

引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[in]device_index0始まりのデバイスのインデックスを指定します.( spGetNumAudioDevice() で返される値-1)までの値が指定できます.0は,環境等によらず,常にデフォルトのデバイスに相当します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spSetAudioSampleRate()

spBool spSetAudioSampleRate ( spAudio audio,
double samp_rate )
related

オーディオ入出力に使用するサンプリング周波数を設定します.
デバイスのオープンを行う前に呼んでください.

引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[in]samp_rateサンプリング周波数をヘルツで指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spGetAudioSampleRate()

spBool spGetAudioSampleRate ( spAudio audio,
double * samp_rate )
related

デバイスが使用しているサンプリング周波数を取得します.
デバイスのオープン後に,デバイスにおける値を知ることができます.それまでは,単に現在設定されている値を返します.

引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[out]samp_rate値を受け取る変数のアドレスを指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spSetAudioChannel()

spBool spSetAudioChannel ( spAudio audio,
int num_channel )
related

オーディオ入出力に使用するチャネル数を設定します.
デバイスのオープンを行う前に呼んでください.

引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[in]num_channelチャネル数を指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spGetAudioChannel()

spBool spGetAudioChannel ( spAudio audio,
int * num_channel )
related

デバイスの現在のチャネル数を得ます.
デバイスのオープン後に,デバイスにおける値を知ることができます.それまでは,単に現在設定されている値を返します.

引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[out]num_channel値を受け取る変数のアドレスを指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spSetAudioBufferSize()

spBool spSetAudioBufferSize ( spAudio audio,
int buffer_size )
related

オーディオ入出力に使用するバッファのサイズを設定します.
デバイスのオープンを行う前に呼んでください.

覚え書き
バッファサイズの最適値は環境によって異なります.この値が短すぎると音飛びが起こりますし,長すぎると遅延が発生します.単に再生したり録音したりするだけであれば,8192程度以上を推奨します.また,フルデュプレックスで動作させる場合は,バッファサイズを短くしないとかなりの遅延が発生するので,音飛びが発生しない限界まで短くする程度が良いようです.
引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[in]buffer_sizeバッファのサイズを指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spGetAudioBufferSize()

spBool spGetAudioBufferSize ( spAudio audio,
int * buffer_size )
related

デバイスの現在のバッファサイズを取得します.
デバイスのオープン後に,デバイスにおける値を知ることができます.それまでは,単に現在設定されている値を返します.

引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[out]buffer_size値を受け取る変数のアドレスを指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spSetAudioNumBuffer()

spBool spSetAudioNumBuffer ( spAudio audio,
int num_buffer )
related

オーディオ入出力に使用するバッファの数を設定します.
環境によってはこの値は使用されず,常に関数の呼び出しに失敗します.

引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[in]num_bufferバッファの数を指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spGetAudioNumBuffer()

spBool spGetAudioNumBuffer ( spAudio audio,
int * num_buffer )
related

デバイスの現在のバッファの数を取得します.
デバイスのオープン後に,デバイスにおける値を知ることができます.それまでは,単に現在設定されている値を返します.

引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[out]num_buffer値を受け取る変数のアドレスを指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spSetAudioBlockingMode()

spBool spSetAudioBlockingMode ( spAudio audio,
int block_mode )
related

オーディオ入力のブロッキングモードを設定します.
ノンブロッキングモードにすると, spReadAudio()spReadAudioDouble() を呼んだ際に,現在読み込まれている分だけをバッファにコピーします.
デバイスのオープンを行う前に呼んでください.デフォルトはブロックする設定になっています.

覚え書き
環境によっては,ブロッキングモードの設定が全くサポートされておらず,その場合は常に関数の呼び出しに失敗します.
引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[in]block_modeモードを指定します. SP_AUDIO_BLOCKINGSP_AUDIO_NONBLOCKING のいずれかを指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spGetAudioBlockingMode()

spBool spGetAudioBlockingMode ( spAudio audio,
int * block_mode )
related

デバイスの現在のブロッキングモードを取得します.

引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[out]block_mode値を受け取る変数のアドレスを指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spSetAudioSampleBit()

spBool spSetAudioSampleBit ( spAudio audio,
int samp_bit )
related

オーディオ入出力に使用するbits/sampleを設定します.
デバイスのオープンを行う前に呼んでください.現在は,16bit,24bit,32bitがサポートされています. 24bitと32bitがサポートされていないデバイスでは,16bitへ変換して再生します.

引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[in]samp_bitbits/sampleを指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spGetAudioSampleBit()

spBool spGetAudioSampleBit ( spAudio audio,
int * samp_bit )
related

デバイスの現在のbits/sampleを取得します.
デバイスのオープン後に,デバイスにおける値を知ることができます.それまでは,単に現在設定されている値を返します.

引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[out]samp_bit値を受け取る変数のアドレスを指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spGetAudioSpecifiedSampleBit()

spBool spGetAudioSpecifiedSampleBit ( spAudio audio,
int * specified_samp_bit )
related

設定されたbits/sampleを取得します. spSetAudioSampleBit() で設定した場合はその値が得られます.デバイスにおける値ではありません.

引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[out]specified_samp_bit値を受け取る変数のアドレスを指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spSetAudioCallbackFunc()

spAudioCallbackType spSetAudioCallbackFunc ( spAudio audio,
spAudioCallbackType call_type,
spAudioCallbackFunc call_func,
void * call_data )
related

オーディオ入出力におけるコールバック関数を設定します.
デバイスのオープンを行う前に呼んでください.現在は, SP_AUDIO_OUTPUT_POSITION_CALLBACKSP_AUDIO_OUTPUT_BUFFER_CALLBACK のみがサポートされています.

引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[in]call_typeコールバックタイプを指定します.|を用いて複数のコールバックタイプを指定できます.
[in]call_funcコールバック関数を指定します.以下の形( spAudioCallbackFunc )である必要があります.
spBool func(spAudio audio, spAudioCallbackType call_type, void *data1, void *data2, void *user_data);
オーディオ入出力を扱うクラスです.
unsigned long spAudioCallbackType
Definition spAudio.h:63
int spBool
[in]call_dataコールバックユーザーデータを指定します.コールバック関数が呼ばれる際に,第5引数にこの値が入ることになります.
戻り値
設定されたコールバックタイプが返ります.環境によっては,引数で与えた call_type と異なることがあります.

◆ spOpenAudioDevice()

spBool spOpenAudioDevice ( spAudio audio,
const char * mode )
related

オーディオデバイスを開きます.
フルデュプレックスで開く場合は,読み込みモードと書き込みモードで1回づつ開いてください. この場合の開く順番は,読み込みモードを先に開くことを推奨します(将来的にはこの制約はなくなる可能性があります). 使用している環境がフルデュプレックスに対応していない場合は,2番目のオープンに失敗します.

引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[in]mode開くモードのヌル終端文字列を指定します.モードには,読み込みの"r"と,書き込みの"w"があります.環境によっては,読み込みのみを行うモードの"ro"と,書き込みのみを行う"wo"が有効になります. これらを使用した場合,フルデュプレックスは使用できなくなりますが(環境によっては使用できます),音質が向上する場合があります(LinuxのOSSでは顕著な場合がありました).
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spCloseAudioDevice()

spBool spCloseAudioDevice ( spAudio audio)
related

オーディオデバイスを閉じます.

引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spReadAudio()

long spReadAudio ( spAudio audio,
void * data,
long length )
related

オーディオデバイスからデータを読み込みます.
通常は( spSetAudioBlockingMode() による設定がなければ),読み込みが指定した長さに到達するまでこの関数は返りません.

警告
spOpenAudioDevice()"r"(読み込み)モードで呼び出した場合のみに使用して下さい.それ以外の場合の動作は未定義です.
引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[in]dataデータを読み込むバッファを指定します.メモリはあらかじめ確保しておいてください. バッファの型は,デバイスで使用するbits/sampleの値に応じて変えてください.16bitまでの場合はshort型,32bitまではlong型のポインタ(メモリ確保したもの)もしくは配列を使用します.
[in]lengthバッファの長さ(読み込むブロックの数)を指定します.バッファのサイズではありません.配列で考えると,要素の数に相当します.
戻り値
エラーが起きた場合は,-1が返り,それ以外の場合は,読み込んだデータの長さが返ります.

◆ spWriteAudio()

long spWriteAudio ( spAudio audio,
void * data,
long length )
related

オーディオデバイスにデータを書き込みます.
書き込みは非同期で行われるため,指定した長さまで到達する前に関数から返ってきます.どの程度の速さで関数から返ってくるかは,環境によって異なります.

覚え書き
length が小さいときにこの関数を繰り返し呼ぶと,環境によってはデッドロックに陥ります(応答しなくなります).繰り返し呼ぶ場合は,ある程度の長さになるようにプログラムを組む必要があります.例えば,ループ再生を行う場合などは,ループ区間が短い場合には,length が極めて小さくなる場合があります.その場合には,ある程度の長さのバッファを用意しておき,バッファの中身が適当な長さに到達したら spWriteAudio() を呼ぶ,といった実装にして下さい.
警告
spOpenAudioDevice()"w"(書き込み)モードで呼び出した場合のみに使用して下さい.それ以外の場合の動作は未定義です.
引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[in]dataデータの入ったバッファを指定します. バッファの型は,デバイスで使用するbits/sampleの値に応じて変えてください.16bitまでの場合はshort型,32bitまではlong型のポインタ(メモリ確保したもの)もしくは配列を使用します.
[in]lengthバッファの長さ(読み込むブロックの数)を指定します.バッファのサイズではありません.配列で考えると,要素の数に相当します.
戻り値
エラーが起きた場合は,-1が返り,それ以外の場合は,書き込んだデータの長さが返ります.

◆ spReadAudioDoubleWeighted()

long spReadAudioDoubleWeighted ( spAudio audio,
double * data,
long length,
double weight )
related

オーディオデバイスからdouble型のバッファにデータを読み込みます.
通常は( spSetAudioBlockingMode() による設定がなければ),読み込みが指定した長さに到達するまでこの関数は返りません.

警告
spOpenAudioDevice()"r"(読み込み)モードで呼び出した場合のみに使用して下さい.それ以外の場合の動作は未定義です.
引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[in]dataデータを読み込むdouble型のバッファを指定します.メモリはあらかじめ確保しておいてください.
[in]lengthバッファの長さ(読み込むブロックの数)を指定します.バッファのサイズではありません.配列で考えると,要素の数に相当します.
[in]weight読み込み後にデータの振幅値を何倍するかを指定します.
戻り値
エラーが起きた場合は,-1が返り,それ以外の場合は,読み込んだデータの長さが返ります.

◆ spReadAudioDouble()

long spReadAudioDouble ( spAudio audio,
double * data,
long length )
related

オーディオデバイスからdouble型のバッファにデータを読み込みます.
通常は( spSetAudioBlockingMode() による設定がなければ),読み込みが指定した長さに到達するまでこの関数は返りません.

警告
spOpenAudioDevice()"r"(読み込み)モードで呼び出した場合のみに使用して下さい.それ以外の場合の動作は未定義です.
引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[in]dataデータを読み込むdouble型のバッファを指定します.メモリはあらかじめ確保しておいてください.
[in]lengthバッファの長さ(読み込むブロックの数)を指定します.バッファのサイズではありません.配列で考えると,要素の数に相当します.
戻り値
エラーが起きた場合は,-1が返り,それ以外の場合は,読み込んだデータの長さが返ります.

◆ spWriteAudioDoubleWeighted()

long spWriteAudioDoubleWeighted ( spAudio audio,
double * data,
long length,
double weight )
related

オーディオデバイスにdouble型のバッファのデータを書き込みます.
書き込みは非同期で行われるため,指定した長さまで到達する前に関数から返ってきます.どの程度の速さで関数から返ってくるかは,環境によって異なります.

覚え書き
length が小さいときにこの関数を繰り返し呼ぶと,環境によってはデッドロックに陥ります(応答しなくなります).繰り返し呼ぶ場合は,ある程度の長さになるようにプログラムを組む必要があります.例えば,ループ再生を行う場合などは,ループ区間が短い場合には,length が極めて小さくなる場合があります.その場合には,ある程度の長さのバッファを用意しておき,バッファの中身が適当な長さに到達したら spWriteAudioDoubleWeighted() を呼ぶ,といった実装にして下さい.
警告
spOpenAudioDevice()"w"(書き込み)モードで呼び出した場合のみに使用して下さい.それ以外の場合の動作は未定義です.
引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[in]dataデータの入ったdouble型のバッファを指定します. デバイスで使用するbits/sampleの値によらず,データの振幅の範囲は-1.0〜1.0の範囲が想定されています.
[in]lengthバッファの長さ(読み込むブロックの数)を指定します.バッファのサイズではありません.配列で考えると,要素の数に相当します.
[in]weight書き込み前にデータの振幅値を何倍してデバイスに渡すかを指定します.
戻り値
エラーが起きた場合は,-1が返り,それ以外の場合は,書き込んだデータの長さが返ります.

◆ spWriteAudioDouble()

long spWriteAudioDouble ( spAudio audio,
double * data,
long length )
related

オーディオデバイスにdouble型のバッファのデータを書き込みます.
書き込みは非同期で行われるため,指定した長さまで到達する前に関数から返ってきます.どの程度の速さで関数から返ってくるかは,環境によって異なります.

覚え書き
length が小さいときにこの関数を繰り返し呼ぶと,環境によってはデッドロックに陥ります(応答しなくなります).繰り返し呼ぶ場合は,ある程度の長さになるようにプログラムを組む必要があります.例えば,ループ再生を行う場合などは,ループ区間が短い場合には,length が極めて小さくなる場合があります.その場合には,ある程度の長さのバッファを用意しておき,バッファの中身が適当な長さに到達したら spWriteAudioDouble() を呼ぶ,といった実装にして下さい.
警告
spOpenAudioDevice()"w"(書き込み)モードで呼び出した場合のみに使用して下さい.それ以外の場合の動作は未定義です.
引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[in]dataデータの入ったdouble型のバッファを指定します. デバイスで使用するbits/sampleの値によらず,データの振幅の範囲は-1.0〜1.0の範囲が想定されています.
[in]lengthバッファの長さ(読み込むブロックの数)を指定します.バッファのサイズではありません.配列で考えると,要素の数に相当します.
戻り値
エラーが起きた場合は,-1が返り,それ以外の場合は,書き込んだデータの長さが返ります.

◆ spGetAudioOutputPosition()

spBool spGetAudioOutputPosition ( spAudio audio,
spLong * position )
related

現在の再生位置を取得します.

覚え書き
環境によってはサポートされておれず,その場合は常に関数の呼び出しに失敗します.また,環境によってはそれほど正確でない値になることがあります.
引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
[out]position値を受け取る変数のアドレスを指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spStopAudio()

spBool spStopAudio ( spAudio audio)
related

オーディオデバイスを停止します.
この関数を呼び出すと,現在の処理を可能な限り即座に停止します.OSによって,若干動作が異なる可能性があります. 環境によっては,一度読み書きを開始すると,内部的に負荷のかかる処理をし続ける場合があります.その場合にも,この関数を呼び出すと負荷が減ります.

引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spSyncAudio()

spBool spSyncAudio ( spAudio audio)
related

オーディオデバイスをフラッシュします.OSによって,若干動作が異なる可能性があります.

引数
[in]audiospInitAudioDriver() もしくは spInitAudio() によって得られた spAudio 型の変数を指定します.
戻り値
SP_TRUE成功
SP_FALSE失敗

◆ spFreeAudioDriver

#define spFreeAudioDriver ( audio)    {_spFreeAudioDriver(audio); (audio) = NULL;}
related

spAudio のメモリを解放し,オーディオドライバーの使用を停止します(デストラクター).
これらの関数を呼び出した後,再度オーディオドライバーを使用する場合には, spInitAudioDriver() を呼び出して再初期化します.

引数
[in]audiospInitAudioDriver() によって得られた spAudio 型の変数を指定します.
参照
spInitAudioDriver()

◆ spFreeAudio

#define spFreeAudio ( audio)    spFreeAudioDriver(audio)
related

spAudio のメモリを解放し,オーディオドライバーの使用を停止します(デストラクター).
これらの関数を呼び出した後,再度オーディオドライバーを使用する場合には, spInitAudio() を呼び出して再初期化します.

引数
[in]audiospInitAudio() によって得られた spAudio 型の変数を指定します.
参照
spInitAudio()