クラス dline::CShifter

#include <dline.h>

すべてのメンバ一覧


説明

遅延バッファ型

与えられたサイズのバッファを確保し、遅延バッファとして使う。

dline.h16 行で定義されています。

Public メソッド

 CShifter (int aMaxDelay)
 遅延バッファを確保するコンストラクタ
virtual ~CShifter (void)
 デストラクタ
virtual void run (const shortfract in[], shortfract out[], int count, int delay)
 遅延を行う


コンストラクタとデストラクタ

dline::CShifter::CShifter ( int  aMaxDelay  ) 

遅延バッファを確保するコンストラクタ

引数:
aMaxDelay 最大遅延量を指定する。単位はサンプル。
遅延バッファを確保し、0で初期化する。確保に失敗したら内部バッファにはNULLをいれる。

dline.cpp8 行で定義されています。

00009     {
00010         head = 0;
00011         maxDelay = aMaxDelay;
00012         state = new shortfract[maxDelay];
00013         
00014         if ( state ){           // 割り当てに成功
00015             for ( unsigned int i=0; i < maxDelay; i++ )
00016                 state[i] = 0.0r;
00017         }
00018     }

dline::CShifter::~CShifter ( void   )  [virtual]

デストラクタ

内部バッファを開放する

dline.cpp20 行で定義されています。

00021     {
00022         if ( state )    //  割り当てに成功しているか
00023             delete[] state;
00024     }


関数

void dline::CShifter::run ( const shortfract  in[],
shortfract  out[],
int  count,
int  delay 
) [virtual]

遅延を行う

引数:
in 入力バッファ
out 出力バッファ
count 入力バッファのサンプル数。最大遅延量をこえてもかまわない。
delay 出力バッファへの遅延量。0でもかまわない。。
与えられた入力を内部バッファにコピーしながら、内部バッファの内容を出力にコピーする。 delayが0のとき、出力には入力の値がそのままコピーされる。ディレイが1のときには、 1サンプル遅れた値がコピーされる。

最大遅延量を以上のdelayを指定すると、最大遅延量-1 分遅延させる。最大遅延量は コンストラクタ CShifter::CShifter() であたえる

dline.cpp26 行で定義されています。

参照元 afw::processData().

00027     {
00028         int delayIndex;             // 遅延データのインデックス
00029         
00030         if ( delay >= maxDelay )    // maxDelayより大きな遅延は、maxDelayだけ遅延させる。
00031             delay = maxDelay - 1;
00032         
00033         if ( state ){    // 割り当てに成功しているか
00034             for( int i = 0; i<count; i++ ){
00035                 state[head] = in[i];            // サンプルを遅延バッファに格納
00036                 delayIndex = head + delay;      // 出力するデータの位置を計算
00037                 if ( delayIndex >= maxDelay )   // 遅延データがバッファの上側境界を超えたところなら
00038                     delayIndex -= maxDelay;     // ラップアラウンド
00039                 out[i] = state[delayIndex];     // 遅延データを出力
00040                 head --;                        // 遅延バッファの先頭を更新
00041                 if ( head < 0 )                 // バッファの先頭がバッファの下側境界を超えたら
00042                     head = maxDelay - 1;        // ラップアラウンド
00043             }
00044         }
00045         else            // state 割り当て失敗の場合
00046             for( int i = 0; i<count; i++ )
00047                 out[i] = in[i];            // 入力をそのまま出力
00048     }


このクラスの説明は次のファイルから生成されました:
Flangerに対してWed Jul 25 11:10:16 2007に生成されました。  doxygen 1.5.2