FineKernelToolKit: FK::fk_AudioBase クラス

FineKernelToolKit 4.3.0

読み取り中…
検索中…
一致する文字列を見つけられません
公開メンバ関数 | 全メンバ一覧
FK::fk_AudioBase クラスabstract

オーディオ基底クラス [詳解]

`#include <FK/Audio.h>`

FK::fk_AudioBase の継承関係図
[凡例]

## 公開メンバ関数

| fk_AudioBase (void)
| コンストラクタ
virtual | ~fk_AudioBase ()
| デストラクタ
再生制御関数
virtual bool | open (const std::string &name)=0
| オーディオデータ読み込み関数
virtual bool | ready (void)=0
| 再生開始可能状態取得関数
virtual bool | play (void)=0
| 再生関数
virtual double | tell (void)=0
| 再生位置取得関数
virtual void | seek (double time)=0
| 再生位置頭出し関数
virtual void | stop (void)=0
| 停止関数
virtual void | end (void)=0
| オーディオデータ解放関数
void | pause (void)
| ポーズ関数
音量制御関数
void | setGain (double gain)
| 音量設定関数
double | getGain (void)
| 音量取得関数
キューバッファ制御関数
void | setQueueSize (int size)
| キューバッファサイズ設定関数
int | getQueueSize (void)
| キューバッファサイズ取得関数
ループ再生制御関数
void | setLoopMode (bool mode)
| ループモード設定関数
bool | getLoopMode (void)
| ループモード取得関数
void | setLoopArea (double start, double end)
| ループエリア設定関数
double | getLoopStartTime (void)
| ループ開始点取得関数
double | getLoopEndTime (void)
| ループ終了点取得関数
サラウンド制御関数
void | setPosition (const fk_Vector &pos)
| サラウンド音源位置設定関数
fk_Vector | getPosition (void)
| サラウンド音源座標取得関数
void | setModel (fk_Model *model)
| サラウンド音源同期モデル設定関数1
void | setModel (fk_Model &model)
| サラウンド音源同期モデル設定関数2
fk_Model * | getModel (void)
| サラウンド音源同期モデル取得関数
void | setReferenceDist (double dist)
| サラウンド音源有効距離設定関数
double | getReferenceDist (void)
| サラウンド音源座有効距離取得関数
void | setSurroundMode (bool mode)
| サラウンド効果状態設定関数
bool | getSurroundMode (void)
| サラウンド効果状態取得関数

## 静的公開メンバ関数

システム全体初期化・制御関数
static bool | init (void)
| オーディオシステム初期化関数
static bool | getInit (void)
| オーディオシステム初期化状態取得関数
static void | sleep (double time)
| プロセススリープ関数
サラウンドリスナー制御関数
static void | setListenerModel (fk_Model *model)
| サラウンドリスナー同期モデル設定関数1
static void | setListenerModel (fk_Model &model)
| サラウンドリスナー同期モデル設定関数2
static fk_Model * | getListenerModel (void)
| サラウンドリスナーモデル取得関数

## 詳解

オーディオ基底クラス

このクラスは、FKが提供するオーディオクラスの基底クラスとなっています。 オーディオ全般で共通して利用するメンバ関数を実装しています。 FKでは、オーディオシステムとして OpenAL を採用しています。 Windows プラットフォームでこのクラスの派生クラスを利用する場合は、 事前に OpenAL をインストールしておく必要があります。 (Mac は OpenAL が標準で搭載されているため、事前準備は必要ありません。)

このクラスの派生クラスによるインスタンスは、 音声再生を制御するための基本的な機能となる再生、 停止、繰り返し再生、音量調整を制御できます。

加えて、サラウンド(立体音響)を利用することもできます。 サラウンド機能においては、 各音源自体の3次元空間での位置を fk_Model と同期を取ることで実現します。 そのため、FK の 3D プログラムと高い親和性を持ちます。 また、3Dグラフィックスにおける「カメラ」に相当するような、 自分自身を指す言葉を「リスナー」と呼びます。 リスナーも fk_Model と同期を取ることができます。

参照
  fk_AudioStream, fk_AudioOggBuffer, fk_AudioWavBuffer, fk_Model

## 構築子と解体子

## ◆ fk_AudioBase()

FK::fk_AudioBase::fk_AudioBase | ( | void |  | ) |

コンストラクタ

## ◆ ~fk_AudioBase()

virtual FK::fk_AudioBase::~fk_AudioBase | ( |  | ) |

virtual

デストラクタ

## 関数詳解

## ◆ open()

virtual bool FK::fk_AudioBase::open | ( | const std::string & | name | ) |

pure virtual

オーディオデータ読み込み関数

データを開くための仮想関数です。 具体的な仕様は各派生クラスの open() を参照して下さい。

引数

  [in] | name | データ名称。

戻り値
  成功すれば true を、失敗すれば false を返します。

参照
  fk_AudioStream::open(), fk_AudioOggBuffer::open(), fk_AudioWavBuffer::open()

FK::fk_AudioOggBuffer, FK::fk_AudioStream, FK::fk_AudioWavBufferで実装されています。

## ◆ ready()

virtual bool FK::fk_AudioBase::ready | ( | void |  | ) |

pure virtual

再生開始可能状態取得関数

データ入力やデバイスの初期化等の処理が終了し、 再生が可能な状態となっているかどうかを取得する関数です。

覚え書き
  本関数は、通常の利用においてはユーザが使用する必要はありません。

戻り値
  再生可能状態であれば true を、 まだ再生の準備ができていない状態であれば false を返します。

FK::fk_AudioOggBuffer, FK::fk_AudioStreamで実装されています。

## ◆ play()

virtual bool FK::fk_AudioBase::play | ( | void |  | ) |

pure virtual

再生関数

実際に音声の再生を行う関数です。 本関数は、再生を行いたい状況においては1秒に数回以上の割合で、 連続して実行する必要があります。

戻り値
  音声再生が完了していない場合は true を、 完了している場合 false を返します。

FK::fk_AudioOggBuffer, FK::fk_AudioStreamで実装されています。

## ◆ tell()

virtual double FK::fk_AudioBase::tell | ( | void |  | ) |

pure virtual

再生位置取得関数

現在の再生位置を返します。単位は秒です。 この関数が返す値は再生時間ではなく、 音源での始端からの時間となります。

戻り値
  現時点での再生位置。

参照
  seek()

FK::fk_AudioOggBuffer, FK::fk_AudioStreamで実装されています。

## ◆ seek()

virtual void FK::fk_AudioBase::seek | ( | double | time | ) |

pure virtual

再生位置頭出し関数

現在の再生位置を変更します。単位は秒です。

引数

  [in] | time | 再生位置。

参照
  tell()

FK::fk_AudioOggBuffer, FK::fk_AudioStreamで実装されています。

## ◆ stop()

virtual void FK::fk_AudioBase::stop | ( | void |  | ) |

pure virtual

停止関数

音声の再生を停止し、再生位置も初期化します。 この後に play() を実行した場合、 停止位置ではなく始端(または指定した箇所)から再生されます。 一時停止を行いたい場合は pause() を利用して下さい。

参照
  pause()

FK::fk_AudioOggBuffer, FK::fk_AudioStreamで実装されています。

## ◆ end()

virtual void FK::fk_AudioBase::end | ( | void |  | ) |

pure virtual

オーディオデータ解放関数

open() 等で確保したデータを解放します。

参照
  open(), stop(), pause()

FK::fk_AudioOggBuffer, FK::fk_AudioStreamで実装されています。

## ◆ pause()

void FK::fk_AudioBase::pause | ( | void |  | ) |

ポーズ関数

音声再生の一時停止を行います。 この後に play() を実行した場合、 停止位置からの再生が始まります。 始端(または指定した箇所)からの再生を行いたい場合は stop() を利用して下さい。

参照
  play(), stop(), end()

## ◆ setGain()

void FK::fk_AudioBase::setGain | ( | double | gain | ) |

音量設定関数

音量(減衰率)を設定します。

引数

  [in] | gain | 音量値。0 で無音、1 で最大音量となります。 0 未満または 1 を超過する値が指定された場合は、 音量の変化を行いません。

## ◆ getGain()

double FK::fk_AudioBase::getGain | ( | void |  | ) |

音量取得関数

現在の音量値(減衰率)を取得します。

戻り値
  現在の音量値を返します。無音で0、最大音量で1となります。

## ◆ setQueueSize()

void FK::fk_AudioBase::setQueueSize | ( | int | size | ) |

キューバッファサイズ設定関数

キューバッファのサイズを設定します。 デフォルトは 64 です。

引数

  [in] | size | キューバッファのサイズ。

## ◆ getQueueSize()

int FK::fk_AudioBase::getQueueSize | ( | void |  | ) |

キューバッファサイズ取得関数

現在のキューバッファサイズ設定値を取得します。

戻り値
  キューバッファのサイズ。

## ◆ setLoopMode()

void FK::fk_AudioBase::setLoopMode | ( | bool | mode | ) |

ループモード設定関数

ループモードを設定します。 ループモードとは、音源の最後まで再生が終了した際に、 最初から再び再生を開始するかどうかを設定するためのモードです。 具体的には、再生が音源の最後となった時点での play() の挙動が異なってきます。 ループモードが ON の場合、 再生位置が最初の時点に戻り音源の再生を行います。 OFF の場合 play() は再生を終了し、false を返します。

引数

  [in] | mode | true の場合はループモードを ON とします。 false の場合はループモードを OFF とします。

参照
  play(), setLoopArea()

## ◆ getLoopMode()

bool FK::fk_AudioBase::getLoopMode | ( | void |  | ) |

ループモード取得関数

現在のループモードを取得します。

戻り値
  ループモードが ON のとき true を、 OFF のとき false を返します。

参照
  setLoopMode()

## ◆ setLoopArea()

void FK::fk_AudioBase::setLoopArea | ( | double | start,
|  | double | end )

ループエリア設定関数

ループモードが ON である場合に、繰り返す音源の時間帯を指定します。 デフォルトでは、開始時間は 0、終了時間は -1 に設定されており、 終了時間が開始時間より前に設定されている場合、 ループモードでの終端は音源の終端となります。

引数

  [in] | start | ループモードでの再生開始時間
  [in] | end | ループモードでの再生終了時間

参照
  setLoopMode(), play(), seek(), tell()

## ◆ getLoopStartTime()

double FK::fk_AudioBase::getLoopStartTime | ( | void |  | ) |

ループ開始点取得関数

ループモードでの再生開始時間を取得します。

戻り値
  再生開始時間

参照
  setLoopMode(), setLoopArea(), getLoopEndTime()

## ◆ getLoopEndTime()

double FK::fk_AudioBase::getLoopEndTime | ( | void |  | ) |

ループ終了点取得関数

ループモードでの再生終了時間を取得します。

戻り値
  再生終了時間

参照
  setLoopMode(), setLoopArea(), getLoopStartTime()

## ◆ setPosition()

void FK::fk_AudioBase::setPosition | ( | const fk_Vector & | pos | ) |

サラウンド音源位置設定関数

音源インスタンスの3次元位置を指定します。 setModel(fk_Model *), setModel(fk_Model &) による同期モデルの指定が行われた場合は、 同期モデル位置が優先されます。 デフォルトは原点です。

引数

  [in] | pos | 音源位置。

参照
  getPosition(), setModel(fk_Model *), setModel(fk_Model &)

## ◆ getPosition()

fk_Vector FK::fk_AudioBase::getPosition | ( | void |  | ) |

サラウンド音源座標取得関数

音源インスタンスの3次元位置を取得します。

戻り値
  音源位置。

参照
  setPosition(), setModel(fk_Model *), setModel(fk_Model &)

## ◆ setModel() [1/2]

void FK::fk_AudioBase::setModel | ( | fk_Model * | model | ) |

サラウンド音源同期モデル設定関数1

音源インスタンスの3次元空間中での位置と同期するモデルを指定します。 ここで指定したモデルが移動することにより、 音源もサラウンド効果の中で移動します。

引数

  [in] | model | 音源と同期するモデルインスタンスのポインタ。 同期を解除したい場合は nullptr を代入します。

参照
  setPosition(), getPosition(), getModel(), setListenerModel(fk_Model *), setListenerModel(fk_Model &)

## ◆ setModel() [2/2]

void FK::fk_AudioBase::setModel | ( | fk_Model & | model | ) |

サラウンド音源同期モデル設定関数2

音源インスタンスの3次元空間中での位置と同期するモデルを指定します。 ここで指定したモデルが移動することにより、 音源もサラウンド効果の中で移動します。

引数

  [in] | model | 音源と同期するモデルインスタンス。

参照
  setPosition(), getPosition(), getModel(), setListenerModel(fk_Model *), setListenerModel(fk_Model &)

## ◆ getModel()

fk_Model * FK::fk_AudioBase::getModel | ( | void |  | ) |

サラウンド音源同期モデル取得関数

現在音源に設定されている位置同期モデルを返します。

戻り値
  音源位置同期モデルのポインタ。 同期モデルが設定されていなかった場合は nullptr を返します。

## ◆ setReferenceDist()

void FK::fk_AudioBase::setReferenceDist | ( | double | dist | ) |

サラウンド音源有効距離設定関数

3次元空間中で音源が届く距離を指定します。 サラウンド効果においては、 音源はリスナーから離れるほど出力音量が小さくなり、 ここで指定する距離より大きい場合に聞こえなくなります。

引数

  [in] | dist | 有効距離

参照
  getReferenceDist()

## ◆ getReferenceDist()

double FK::fk_AudioBase::getReferenceDist | ( | void |  | ) |

サラウンド音源座有効距離取得関数

3次元空間中で音源が届く距離として設定されている値を取得します。

戻り値
  有効距離

参照
  setReferenceDist()

## ◆ setSurroundMode()

void FK::fk_AudioBase::setSurroundMode | ( | bool | mode | ) |

サラウンド効果状態設定関数

このインスタンスのサラウンド効果を制御します。

引数

  [in] | mode | true の場合、サラウンド効果を有効とします。 false の場合は無効とします。

覚え書き
  音源のサラウンド効果を有効とするには、 音源自体は(ステレオではなく)モノラルである必要があります。

参照
  getSurroundMode()

## ◆ getSurroundMode()

bool FK::fk_AudioBase::getSurroundMode | ( | void |  | ) |

サラウンド効果状態取得関数

このインスタンスのサラウンド効果の有無効を取得します。

戻り値
  有効な場合 true を、無効な場合 false を返します。

参照
  setSurroundMode()

## ◆ init()

bool FK::fk_AudioBase::init | ( | void |  | ) |

static

オーディオシステム初期化関数

オーディオシステムを利用する際の初期化を行います。 本関数はオーディオシステムを利用する際には必ず実行する必要があります。 しかし、この関数の実行には一定の時間を要する場合もあります。 getInit() 関数を併用することで、頻繁な実行は避けるべきです。

参照
  getInit()

## ◆ getInit()

bool FK::fk_AudioBase::getInit | ( | void |  | ) |

static

オーディオシステム初期化状態取得関数

既に初期化を行っているかどうかを取得します。 初期化を行う init() 関数は、 環境によってはかなり長い実行時間となることもあるため、 事前に本関数によって既に初期化が行われているかどうか調査を行い、 初期化されていない場合にのみ初期化を行うように記述すべきです。

参照
  init()

## ◆ sleep()

void FK::fk_AudioBase::sleep | ( | double | time | ) |

static

プロセススリープ関数

音声再生のため処理を、指定された時間だけ中断します。 単位は秒です。

この関数は、処理を短時間停止して CPU の計算資源を別の処理に割くためのものであり、 再生を停止するためのものではありません。 再生を停止するには本関数ではなく stop() や pause() を用いて下さい。

なお、本関数は static 関数となっており、 処理の停止はインスタンス全体に対して行われます。

覚え書き
  本関数は、通常の利用においてユーザが用いることは想定していません。

引数

  [in] | time | 処理を停止する時間。

参照
  stop(), end()

## ◆ setListenerModel() [1/2]

void FK::fk_AudioBase::setListenerModel | ( | fk_Model * | model | ) |

static

サラウンドリスナー同期モデル設定関数1

リスナーの位置を制御するための、 同期モデルインスタンスを指定します。 デフォルトでは、リスナー位置は原点です。

なお、本クラスのリスナーは オーディオ系クラスの全インスタンスで共通となっています。 そのため static 関数となっており、 クラスインスタンスを生成せずに指定することが可能です。

リスナーではなく、音源自身の位置を変更するには setPosition() や setModel() を使用して下さい。

引数

  [in] | model | リスナーとなるモデルインスタンスへのポインタ。

参照
  setPosition(), setModel()

## ◆ setListenerModel() [2/2]

void FK::fk_AudioBase::setListenerModel | ( | fk_Model & | model | ) |

static

サラウンドリスナー同期モデル設定関数2

リスナーの位置を制御するための、 同期モデルインスタンスを指定します。 デフォルトでは、リスナー位置は原点です。

なお、本クラスのリスナーは オーディオ系クラスの全インスタンスで共通となっています。 そのため static 関数となっており、 クラスインスタンスを生成せずに指定することが可能です。

リスナーではなく、音源自身の位置を変更するには setPosition() や setModel() を使用して下さい。

引数

  [in] | model | リスナーとなるモデルインスタンス。

参照
  setPosition(), setModel()

## ◆ getListenerModel()

fk_Model * FK::fk_AudioBase::getListenerModel | ( | void |  | ) |

static

サラウンドリスナーモデル取得関数

リスナーに指定したモデルインスタンスを取得します。

戻り値
  リスナーモデルインスタンスのポインタ。

参照
  setListenerModel(fk_Model *), setListenerModel(fk_Model &)