ir::GPDSPGenerativeNode class

生成的ノードを表す具象クラス

GPDSPGenerativeNode クラスは, gpdsp 形式の外部ファイルから XML で記述されたノードの構成を読み込み, 任意の特性を持つフィルタとして振る舞う生成的ノードを表す具象クラスです.

GPDSPGenerativeInputNode クラス, GPDSPGenerativeOutputNode クラスとともに利用します.

入力ターミナルと出力ターミナルの個数と名前は, 読み込むノードの構成に依存します.

番号入力出力
0??
1??
N-1??

gpdsp ファイルでの記述例

<GPDSPGenerativeNode>
    <name>ノード名</name>
    <param>
        <file>gpdsp ファイルのパス</file>
    </param>
    <input>
        <::0>
            <node>[入力ターミナル名] に対する入力元のノード名</node>
            <output>::[入力ターミナル名] に対する入力元のターミナル番号</output>
        </::0>
        <::1>
            <node>[入力ターミナル名] に対する入力元のノード名</node>
            <output>::[入力ターミナル名] に対する入力元のターミナル番号</output>
        </::1>
        ...
        <::N-1>
            <node>[入力ターミナル名] に対する入力元のノード名</node>
            <output>::[入力ターミナル名] に対する入力元のターミナル番号</output>
        </::N-1>
    </input>
</GPDSPGenerativeNode>

Base classes

class GPDSPInputtableNode
入力ターミナルを持つノードを表す抽象クラス
class GPDSPOutputtableNode
出力ターミナルを持つノードを表す抽象クラス
class GPDSPRewindableNode virtual
巻き戻し可能なノードを表すインターフェースクラス
class GPDSPRefreshableNode virtual
リフレッシュ可能なノードを表すインターフェースクラス

Constructors, destructors, conversion operators

GPDSPGenerativeNode(int rate) explicit noexcept
コンストラクタです.
~GPDSPGenerativeNode(void) virtual noexcept
デストラクタです.

Public functions

int getRate(void) const noexcept
サンプリングレートを取得します.
GPDSPNodeRenderer const & getRenderer(void) const noexcept
内部で利用している GPDSPNodeRenderer クラスのインスタンスを取得します.
std::string const & getFile(void) const noexcept
開いているファイルのパスを取得します.
GPDSPError open(std::string const& file) noexcept
gpdsp 形式の外部ファイルを開いて, XML で記述されたノードの構成を読み込みます.
void close(void) noexcept
開いているファイルを閉じて, 管理しているリソースを解放します.
GPDSPError fixate(void) virtual noexcept
固定個数の入出力ターミナルを生成します.
void invalidate(void) virtual noexcept
演算結果を無効化し, 再演算を要求します.
GPDSPError prepare(void) virtual noexcept
演算前の準備をします.
GPDSPError process(void) virtual noexcept
演算を行います.
void rewind(void) virtual noexcept
入出力バッファの操作位置などを再初期化します.
void refresh(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_POSITIVEGPDSPMODE_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
引数に指定された名前を持つ出力ターミナルを検索します.

Protected functions

GPDSPError copyInput(void) noexcept
入力ターミナルの値を対応する内部の GPDSPGenerativeInputNode クラスのインスタンスにコピーします.
GPDSPError copyOutput(void) noexcept
内部の GPDSPGenerativeOutputNode クラスのインスタンスの値を対応する出力ターミナルにコピーします.
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::GPDSPGenerativeNode::GPDSPGenerativeNode(int rate) explicit noexcept

コンストラクタです.

リソースを初期化します.

Parameters
rate in サンプリングレート >= 0

ir::GPDSPGenerativeNode::~GPDSPGenerativeNode(void) virtual noexcept

デストラクタです.

管理しているリソースを解放します.

int ir::GPDSPGenerativeNode::getRate(void) const noexcept

サンプリングレートを取得します.

Returns 現在のサンプリングレート

GPDSPNodeRenderer const & ir::GPDSPGenerativeNode::getRenderer(void) const noexcept

内部で利用している GPDSPNodeRenderer クラスのインスタンスを取得します.

Returns インスタンスへの参照

std::string const & ir::GPDSPGenerativeNode::getFile(void) const noexcept

開いているファイルのパスを取得します.

Returns パスへの参照

GPDSPError ir::GPDSPGenerativeNode::open(std::string const& file) noexcept

gpdsp 形式の外部ファイルを開いて, XML で記述されたノードの構成を読み込みます.

Parameters
file in ファイルのパス
Returns
GPDSPERROR_OK 正常
GPDSPERROR_NO_SUPPORT サポートされていない
GPDSPERROR_NO_FILE ファイルが存在しない
GPDSPERROR_NO_MEMORY メモリが不足している
GPDSPERROR_NO_FOUND 項目が見つからない
GPDSPERROR_ALREADY_EXIST すでに存在している
GPDSPERROR_INVALID_STATE 不正な状態
GPDSPERROR_INVALID_PARAM 不正なパラメータ
GPDSPERROR_INVALID_RANGE 範囲外のパラメータ
GPDSPERROR_INVALID_FORMAT 不正なフォーマット
GPDSPERROR_FAILED 失敗

GPDSPError ir::GPDSPGenerativeNode::fixate(void) virtual noexcept

固定個数の入出力ターミナルを生成します.

何もしません.

Returns
GPDSPERROR_OK 正常

GPDSPError ir::GPDSPGenerativeNode::prepare(void) virtual noexcept

演算前の準備をします.

Returns
GPDSPERROR_OK 正常 (準備を完了)
GPDSPERROR_WAIT [返却なし]
GPDSPERROR_IGNORE [返却なし]
GPDSPERROR_FRAGMENT [返却なし]
GPDSPERROR_LOOP [返却なし]
その他のエラー

GPDSPError ir::GPDSPGenerativeNode::process(void) virtual noexcept

演算を行います.

Returns
GPDSPERROR_OK 正常 (演算を完了)
GPDSPERROR_WAIT データフロー入力待ち
GPDSPERROR_IGNORE [返却なし]
GPDSPERROR_FRAGMENT 一部の演算のみ完了
GPDSPERROR_LOOP [返却なし]
その他のエラー

GPDSPError ir::GPDSPGenerativeNode::copyInput(void) protected noexcept

入力ターミナルの値を対応する内部の GPDSPGenerativeInputNode クラスのインスタンスにコピーします.

Returns
GPDSPERROR_OK 正常
GPDSPERROR_INVALID_RANGE 範囲外のパラメータ

GPDSPError ir::GPDSPGenerativeNode::copyOutput(void) protected noexcept

内部の GPDSPGenerativeOutputNode クラスのインスタンスの値を対応する出力ターミナルにコピーします.

Returns
GPDSPERROR_OK 正常
GPDSPERROR_INVALID_RANGE 範囲外のパラメータ