- メインページ
- ネームスペース
- クラス
- ファイル

- アルファベット順一覧
- 構成
- クラス階層
- 構成メンバ

# クラス dline::CShifter

`#include <dline.h>`

すべてのメンバ一覧

## 説明

遅延バッファ型

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

dline.h の 16 行で定義されています。

## 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.cpp の 8 行で定義されています。

    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.cpp の 20 行で定義されています。

    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.cpp の 26 行で定義されています。

参照元 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     }

このクラスの説明は次のファイルから生成されました:

- dline.h
- dline.cpp