C# Class SoundLibrary.Pipe.Monaural.TimeStretcher

時間伸長・短縮処理を行うクラス。 一定間隔でデータを間引き・コピーすることで、 音程を変えることなく再生時間を伸長・短縮する。
Inheritance: Pipe
显示文件 Open project: ufcpp/UfcppSample

Public Methods

Method Description
Process ( ) : void
SetParameter ( int size, int overlap, double rate, int maxSkip ) : void

パラメータの設定。

TimeStretcher ( Queue input, Queue output ) : System

デフォルト値で初期化。

TimeStretcher ( Queue input, Queue output, int size, int overlap, double rate ) : System

パラメータの設定。

TimeStretcher ( Queue input, Queue output, int size, int overlap, double rate, int maxSkip ) : System

Private Methods

Method Description
Correlation ( int pos, int len ) : int
Interpolate ( short a, short b, int fade, int overlap ) : short

a と b の信号をクロスフェードさせながら混ぜる。

MoveNext ( ) : void

現在位置(current)を更新する。 ついでに、ピッチ予測とかの処理も行う。

Reset ( ) : void

現在位置をリセットする(current を 0 に)。 ついでに、スキップ量を更新。

SeekSkipSize ( ) : bool

フレームのスキップ数を求める。 前フレームの overlap(後) と現フレームの overlap(前) の相互相関値が高くなるように、 フレームの最初数サンプルをスキップする。

スキップ数を決定するために、何サンプルか後ろのデータを参照するため、 入力キューにある程度データがたまらないとスキップ数を決定できない。 スキップ数を決定できない間は false を返す。

Method Details

Process() public method

public Process ( ) : void
return void

SetParameter() public method

パラメータの設定。
public SetParameter ( int size, int overlap, double rate, int maxSkip ) : void
size int ブロックサイズ
overlap int オーバーラップさせる部分の長さ
rate double 変換レート。再生時間が 1/rate 倍に。
maxSkip int
return void

TimeStretcher() public method

デフォルト値で初期化。
public TimeStretcher ( Queue input, Queue output ) : System
input Queue 入力キュー
output Queue 出力キュー
return System

TimeStretcher() public method

パラメータの設定。
public TimeStretcher ( Queue input, Queue output, int size, int overlap, double rate ) : System
input Queue 入力キュー
output Queue 出力キュー
size int ブロックサイズ
overlap int オーバーラップさせる部分の長さ
rate double 変換レート。再生時間が 1/rate 倍に。
return System

TimeStretcher() public method

public TimeStretcher ( Queue input, Queue output, int size, int overlap, double rate, int maxSkip ) : System
input Queue
output Queue
size int
overlap int
rate double
maxSkip int
return System