class
GPDSPWaveNode波形ノードを表す抽象クラス
Contents
GPDSPWaveNode クラスは, さまざまな波形を合成して出力する波形ノードを表す抽象クラスです.
あらかじめ指定された解像度で波形バッファを計算しておき演算時に参照する方法と, 演算時に波形を逐次計算する方法を選択することができます.
波形を合成して出力する各種ノードを表す具象クラスは, GPDSPWaveNode クラスを継承し, getName(), getWave(), fillWave() 関数を実装します.
Base classes
- class GPDSPInputtableNode
- 入力ターミナルを持つノードを表す抽象クラス
- class GPDSPOutputtableNode
- 出力ターミナルを持つノードを表す抽象クラス
- class GPDSPRewindableNode virtual
- 巻き戻し可能なノードを表すインターフェースクラス
Derived classes
- class GPDSPSawtoothWaveNode
- 鋸波ノードを表す具象クラス
- class GPDSPSinWaveNode
- サイン波ノードを表す具象クラス
- class GPDSPSquareWaveNode
- 矩形波ノードを表す具象クラス
- class GPDSPTriangleWaveNode
- 三角波ノードを表す具象クラス
Constructors, destructors, conversion operators
- GPDSPWaveNode(int rate) protected explicit noexcept
- コンストラクタです.
- ~GPDSPWaveNode(void) noexcept protected pure virtual
- デストラクタです.
Public functions
- int getRate(void) const noexcept
- サンプリングレートを取得します.
- GPDSPError setResolution(GPDSPFloat resolution) noexcept
- 解像度を設定します.
- GPDSPFloat getResolution(void) const noexcept
- 解像度を取得します.
- GPDSPError fixate(void) virtual noexcept
- 入力ターミナルを2つと, 出力ターミナルを1つ生成します.
- void invalidate(void) virtual noexcept
- 入出力の演算結果を無効化し, 再演算を要求します.
- GPDSPError prepare(void) virtual noexcept
- 演算前の準備をします.
- GPDSPError process(void) virtual noexcept
- 演算を行います.
- void rewind(void) virtual noexcept
- 波形バッファの位相を先頭に再初期化します.
- int getCountI(void) const noexcept
- 入力ターミナルの個数を取得します.
- GPDSPError setNameI(int index, std::string const& what) noexcept
- 入力ターミナルの名前を設定します.
- GPDSPError getNameI(int index, std::string* what) const noexcept
- 入力ターミナルの名前を取得します.
- GPDSPError setLinkPositiveI(int index, GPDSPOutputtableNode const* from, int which) noexcept
- 入力ターミナルの非反転入力のノード接続を設定し, モードを GPDSPMODE_POSITIVE に変更します.
- GPDSPError setLinkNegativeI(int index, GPDSPOutputtableNode const* from, int which) noexcept
- 入力ターミナルの反転入力のノード接続を設定し, モードを GPDSPMODE_NEGATIVE に変更します.
- GPDSPError setLinkConstantI(int index, GPDSPFloat constant) noexcept
- 入力ターミナルの定数入力の定数値を設定し, モードを GPDSPMODE_CONSTANT に変更します.
- GPDSPError getModeI(int index, GPDSPMode* mode) const noexcept
- 入力ターミナルのモードを取得します.
- GPDSPError getLinkI(int index, GPDSPOutputtableNode const** from, int* which) const noexcept
- 入力ターミナルのモードが GPDSPMODE_POSITIVE か GPDSPMODE_NEGATIVE の場合に, ノード接続を取得します.
- GPDSPError getLinkI(int index, GPDSPFloat* constant) const noexcept
- 入力ターミナルのモードが GPDSPMODE_CONSTANT の場合に, 定数値を取得します.
- GPDSPError clearLinkI(int index) noexcept
- 入力ターミナルのノード接続と定数値を解除し, モードを GPDSPMODE_NONE に変更します.
- void clearLinkI(GPDSPMode mode) noexcept
- 入力ターミナルのノード接続と定数値を解除し, モードを GPDSPMODE_NONE に変更します.
- void clearLinkI(GPDSPOutputtableNode const* from, int which) noexcept
- 入力ターミナルのノード接続を解除し, モードを GPDSPMODE_NONE に変更します.
- void clearLinkI(GPDSPOutputtableNode const* from) noexcept
- 入力ターミナルのノード接続を解除し, モードを GPDSPMODE_NONE に変更します.
- void clearLinkI(GPDSPFloat constant) noexcept
- 入力ターミナルの定数値を解除し, モードを GPDSPMODE_NONE に変更します.
- void clearLinkI(void) noexcept
- すべての入力ターミナルのノード接続と定数値を解除し, モードを GPDSPMODE_NONE に変更します.
- GPDSPError getValueI(int index, GPDSPFloat* value) const noexcept
- 入力ターミナルの値を取得します.
- int findNameI(std::string const& what) const noexcept
- 引数に指定された名前を持つ入力ターミナルを検索します.
- int findModeI(GPDSPMode mode) const noexcept
- 引数に指定されたモードを持つ入力ターミナルを検索します.
- int findLinkI(GPDSPOutputtableNode const* from, int which) const noexcept
- 引数に指定されたノード接続を持つ入力ターミナルを検索します.
- int findLinkI(GPDSPOutputtableNode const* from) const noexcept
- 引数に指定されたノード接続を持つ入力ターミナルを検索します.
- int findLinkI(GPDSPFloat constant) const noexcept
- 引数に指定された定数値を持つ入力ターミナルを検索します.
- int getCountO(void) const noexcept
- 出力ターミナルの個数を取得します.
- GPDSPError setNameO(int index, std::string const& what) noexcept
- 出力ターミナルの名前を設定します.
- GPDSPError getNameO(int index, std::string* what) const noexcept
- 出力ターミナルの名前を取得します.
- GPDSPError getValueO(int index, GPDSPFloat* value) const noexcept
- 出力ターミナルの値を取得します.
- int findNameO(std::string const& what) const noexcept
- 引数に指定された名前を持つ出力ターミナルを検索します.
Public static functions
- static GPDSPFloat defaultResolution(void) noexcept
- デフォルトの解像度を取得します.
Protected functions
- char const * getName(void) const noexcept pure virtual
- 波形バッファの名前を取得します.
- GPDSPFloat getWave(GPDSPFloat phase) const noexcept pure virtual
- 引数に指定された位相に対応する, 波形の値を取得します.
- void fillWave(std::vector<std::pair<GPDSPFloat, GPDSPFloat>>* wave) const noexcept pure virtual
- 引数に指定された波形バッファに対して, 1波長分の波形の値を計算して書き込みます.
- GPDSPError setCountI(int count, std::string const& what) noexcept
- 入力ターミナルの個数と名前を設定します.
- GPDSPError appendI(std::string const& what) noexcept
- 引数に指定された名前を持つ入力ターミナルを追加します.
- GPDSPError insertI(int index, std::string const& what) noexcept
- 引数に指定された名前を持つ入力ターミナルを挿入します.
- GPDSPError removeI(int index) noexcept
- 入力ターミナルを削除します.
- void clearI(void) noexcept
- すべての入力ターミナルを削除します.
- GPDSPError setCountO(int count, std::string const& what) noexcept
- 出力ターミナルの個数と名前を設定します.
- GPDSPError setValueO(int index, GPDSPFloat value) noexcept
- 出力ターミナルの値を設定します.
- GPDSPError appendO(std::string const& what) noexcept
- 引数に指定された名前を持つ出力ターミナルを追加します.
- GPDSPError insertO(int index, std::string const& what) noexcept
- 引数に指定された名前を持つ出力ターミナルを挿入します.
- GPDSPError removeO(int index) noexcept
- 出力ターミナルを削除します.
- void clearO(void) noexcept
- すべての出力ターミナルを削除します.
Function documentation
ir:: GPDSPWaveNode:: GPDSPWaveNode(int rate) explicit protected noexcept
コンストラクタです.
解像度を defaultResolution() に設定し, リソースを初期化します.
Parameters | |
---|---|
rate in | サンプリングレート > 0 |
GPDSPError ir:: GPDSPWaveNode:: setResolution(GPDSPFloat resolution) noexcept
解像度を設定します.
resolution 引数に (0.0, +INFINITY) の範囲の値を設定すると, サンプリングレートと解像度に応じた波形バッファがあらかじめ作成され, 演算時には波形バッファを参照し直線補完にて値を求めます.
resolution 引数に +INFINITY を設定すると波形バッファを作成することなく, 演算時に値を逐次計算して求めます.
コンストラクタのサンプリングレート引数に 0 以下の値が設定されているとき, この関数は失敗します.
Parameters | |
---|---|
resolution in | 設定する解像度 (0.0, +INFINITY] |
Returns | |
GPDSPERROR_OK | 正常 |
GPDSPERROR_NO_MEMORY | メモリが不足している |
GPDSPERROR_INVALID_STATE | 不正な状態 |
GPDSPERROR_INVALID_PARAM | 不正なパラメータ |
GPDSPERROR_FAILED | 失敗 |
GPDSPError ir:: GPDSPWaveNode:: fixate(void) virtual noexcept
入力ターミナルを2つと, 出力ターミナルを1つ生成します.
Returns | |
---|---|
GPDSPERROR_OK | 正常 |
GPDSPERROR_NO_MEMORY | メモリが不足している |
GPDSPError ir:: GPDSPWaveNode:: prepare(void) virtual noexcept
演算前の準備をします.
何もしません.
Returns | |
---|---|
GPDSPERROR_OK | 正常 (準備を完了) |
GPDSPError ir:: GPDSPWaveNode:: process(void) virtual noexcept
演算を行います.
Returns | |
---|---|
GPDSPERROR_OK | 正常 (演算を完了) |
GPDSPERROR_WAIT | データフロー入力待ち |
GPDSPERROR_INVALID_RANGE | 範囲外のパラメータ |
static GPDSPFloat ir:: GPDSPWaveNode:: defaultResolution(void) noexcept
デフォルトの解像度を取得します.
Returns | |
---|---|
+INFINITY | デフォルトの解像度 |
char const * ir:: GPDSPWaveNode:: getName(void) const noexcept pure virtual protected
波形バッファの名前を取得します.
Returns | |
---|---|
NULL | [返却禁止] |
"" | [返却禁止] |
その他 | 波形バッファの名前 |
GPDSPFloat ir:: GPDSPWaveNode:: getWave(GPDSPFloat phase) const noexcept pure virtual protected
引数に指定された位相に対応する, 波形の値を取得します.
Parameters | |
---|---|
phase in | 位相 [0.0, 1.0) |
Returns | 波形の値 [-1.0, +1.0] |
void ir:: GPDSPWaveNode:: fillWave(std::vector<std::pair<GPDSPFloat, GPDSPFloat>>* wave) const noexcept pure virtual protected
引数に指定された波形バッファに対して, 1波長分の波形の値を計算して書き込みます.
(*wave)[N].first に対して波形の値を設定し, (*wave)[N].second は変更してはいけません. また, *wave のサイズを変更したり, *wave を解放してはいけません.
Parameters | |
---|---|
wave in/out | 波形バッファ |