C# 클래스 SoundLibrary.Pipe.Monaural.TimeStretcher

時間伸長・短縮処理を行うクラス。 一定間隔でデータを間引き・コピーすることで、 音程を変えることなく再生時間を伸長・短縮する。
상속: Pipe
파일 보기 프로젝트 열기: ufcpp/UfcppSample

공개 메소드들

메소드 설명
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

비공개 메소드들

메소드 설명
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 を返す。

메소드 상세

Process() 공개 메소드

public Process ( ) : void
리턴 void

SetParameter() 공개 메소드

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

TimeStretcher() 공개 메소드

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

TimeStretcher() 공개 메소드

パラメータの設定。
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 倍に。
리턴 System

TimeStretcher() 공개 메소드

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
리턴 System