# Sound

## 概要 - Abstract

VCSSL Sound ライブラリ は、サウンドを扱う標準ライブラリです。

VCSSL におけるサウンド再生の基本的な流れは、以下の通りです。

まず、newSound 関数でファイルからサウンドデータを読み込みます。現在VCSSL で利用可能なサウンド形式としては、WAVE 形式（ 拡張子 .wav ）のみがサポートされています。

続いて、setSoundGain 関数で音量を設定した後、startSound 関数で再生を開始します。サウンドの再生は、VCSSLプログラムの実行とは非同期で行われます。つまり、サウンドの再生終了を待つことなく、VCSSL の処理も引き続き実行されていきます。これは複数のサウンドを再生する場合も同様で、サウンドは互いの終了を待つ事なく、非同期に再生されます。

サウンドの再生が終了すると、onSoundEnd イベントハンドラがコールされます。サウンドをリピート再生したい場合は、ここで setSoundFrame関数にフレーム値 0 を指定してサウンドを巻き戻し、再び startSound 関数で再生します。

## 目次 - Index

int newSound(string filePath)
  サウンドファイルを読み込んでサウンドデータを生成し、それに固有の識別番号である「グラフィックスデータID」を割り振って返します。
void deleteSound(int soundID)
  サウンドデータを破棄します。
void startSound(int soundID)
  サウンドの再生を開始します。
void stopSound(int soundID)
  サウンドの再生を一時停止します。
void setSoundGain(int soundID, float gain)
  サウンドの音量ゲインを設定します。
void setSoundFrame(int soundID, int frame)
  サウンドの再生位置をフレーム単位で設定します。
int getSoundFrame(int soundID)
  サウンドの再生位置をフレーム単位で取得します。
int getSoundFrameLength(int soundID)
  サウンドの長さをフレーム数単位で取得します。
void setSoundTime(int soundID, int milliSec)
  サウンドの再生位置を時間単位（ミリ秒）で設定します。
int getSoundTime(int soundID)
  サウンドの再生位置を時間単位（ミリ秒）で取得します。
int getSoundTimeLength(int soundID)
  サウンドの長さを時間単位（ミリ秒）で取得します。
void onSoundStart( int soundID )
  サウンドの再生が開始した際にコールされます。
void onSoundStop( int soundID )
  サウンドの再生が停止した際にコールされます。
void onSoundEnd( int soundID )
  サウンドの再生が終了した際にコールされます。

## 構造体 - Structs

- なし - None -

## 変数 - Variables

- なし - None -

## 関数 - Functions

文法的定義 - Signature | int newSound(string filePath)
関数名 - Name | newSound
役割 - Role | サウンドファイルを読み込んでサウンドデータを生成し、それに固有の識別番号である「グラフィックスデータID」を割り振って返します。
引数 - Arguments | (string型) filePath : 読み込むサウンドファイルの名称またはパス（現時点でWAV形式のみ対応）
戻り値 - Return | (int型) 生成したサウンドデータに割り振られたサウンドデータID（識別番号）

文法的定義 - Signature | void deleteSound(int soundID)
関数名 - Name | deleteSound
役割 - Role | サウンドデータを破棄します。
引数 - Arguments | (int型) soundID : 対象サウンドデータのID
戻り値 - Return | (void型)

文法的定義 - Signature | void startSound(int soundID)
関数名 - Name | startSound
役割 - Role | サウンドの再生を開始します。
引数 - Arguments | (int型) soundID : 対象サウンドデータのID
戻り値 - Return | (void型)

文法的定義 - Signature | void stopSound(int soundID)
関数名 - Name | stopSound
役割 - Role | サウンドの再生を一時停止します。
引数 - Arguments | (int型) soundID : 対象サウンドデータのID
戻り値 - Return | (void型)

文法的定義 - Signature | void setSoundGain(int soundID, float gain)
関数名 - Name | setSoundGain
役割 - Role | サウンドの音量ゲインを設定します。
引数 - Arguments | (int型) soundID : 対象サウンドデータのID (float型) gain : 音量ゲイン。
戻り値 - Return | (void型)

文法的定義 - Signature | void setSoundFrame(int soundID, int frame)
関数名 - Name | setSoundFrame
役割 - Role | サウンドの再生位置をフレーム単位で設定します。
引数 - Arguments | (int型) soundID : 対象サウンドデータのID gain : 再生位置フレーム
戻り値 - Return | (void型)

文法的定義 - Signature | int getSoundFrame(int soundID)
関数名 - Name | getSoundFrame
役割 - Role | サウンドの再生位置をフレーム単位で取得します。
引数 - Arguments | (int型) soundID : 対象サウンドデータのID
戻り値 - Return | (int型) 現在の再生位置フレーム

文法的定義 - Signature | int getSoundFrameLength(int soundID)
関数名 - Name | getSoundFrameLength
役割 - Role | サウンドの長さをフレーム数単位で取得します。
引数 - Arguments | (int型) soundID : 対象サウンドデータのID
戻り値 - Return | (int型) 総フレーム数

文法的定義 - Signature | void setSoundTime(int soundID, int milliSec)
関数名 - Name | setSoundTime
役割 - Role | サウンドの再生位置を時間単位（ミリ秒）で設定します。
引数 - Arguments | (int型) soundID : 対象サウンドデータのID (int型) milliSec : 再生位置時間（ミリ秒）
戻り値 - Return | (void型)

文法的定義 - Signature | int getSoundTime(int soundID)
関数名 - Name | getSoundTime
役割 - Role | サウンドの再生位置を時間単位（ミリ秒）で取得します。
引数 - Arguments | (int型) soundID : 対象サウンドデータのID
戻り値 - Return | (int型) 再生位置時間（ミリ秒）

文法的定義 - Signature | int getSoundTimeLength(int soundID)
関数名 - Name | getSoundTimeLength
役割 - Role | サウンドの長さを時間単位（ミリ秒）で取得します。
引数 - Arguments | (int型) soundID : 対象サウンドデータのID
戻り値 - Return | (int型) 総ミリ秒数

## イベントハンドラ - Event Handler

文法的定義 - Signature | void onSoundStart( int soundID )
関数名 - Name | onSoundStart
役割 - Role | サウンドの再生が開始した際にコールされます。
引数 - Arguments | (int型) soundID : イベント発生元サウンドデータのID
戻り値 - Return | (void型)

文法的定義 - Signature | void onSoundStop( int soundID )
関数名 - Name | onSoundStop
役割 - Role | サウンドの再生が停止した際にコールされます。
引数 - Arguments | (int型) soundID : イベント発生元サウンドデータのID
戻り値 - Return | (void型)

文法的定義 - Signature | void onSoundEnd( int soundID )
関数名 - Name | onSoundEnd
役割 - Role | サウンドの再生が終了した際にコールされます。
引数 - Arguments | (int型) soundID : イベント発生元サウンドデータのID
戻り値 - Return | (void型)