ar butterlp asig, kfreq [,iskip]
ar butterbp asig, kfreq, kband [,iskip]
ar butterbr asig, kfreq, kband [,iskip]
second-order high-pass, low-pass, band-pass and band-reject
Butterworth filters를 실행시키는 옵코드.
butlp, buthp, butbp, butbr. 이렇게도 쓸 수 있다.
설명>
이filter는 Butterworth second-order IIR filter입니다. 이것들은 Csound내에 있는 original filters보다 다소 느린면이 있습니다. 그러나 이것들은 거의 평평한 passband와 매우 정밀하며 stopband 의 감쇠(직선적이지 않다는뜻이겠지요)를 보여줍니다.
여기서 잠깐!! IIR filter란?
filter에는 크게 IIR필터와 FIR필터로 나뉩니다.
IIR필터는 Infinite Impulse Response Filter 우리말로 하면 무한 임펄스 응답 필터인데, 그 원리는, 만익 입력 단의 신호를 저장하여 딜레이 라인을 만들지 않고 출력단의 신호로 다시 보내어 딜레이 라인으로 사용한다면 메모리에 입력할 필요가 없어서 무한의 신호를 사용할 수 있고, 적은 게수로도 충분히 필터 효과를 볼수 있습니다. 이렇게 출력측 신호를 입력측으로 다시 보내어 얻어지는 필터를 피드백 또는 리커션 이라고 하며, 출력측에서 얻어 입력측으로 돌려보내는 신호는 무한하기 때문에 무한 임펄스 필터라 합니다.
그럼 FIR필터는 뭐시다냐. Linear Phase Response 즉 직선 위상 응답 필터입니다. 이 필터의 사용은, 주파수에 의존한 딜레이 라인으로 인해 위상이 찌그러 지는 Phase Distortion을 막아 주며, 피드백이 없어서 Overflow가 발생하는것을 막아주므로 안정적인 필터를 디자인합니다. 대신 IIR필터보다 더 많은 메모리와 계산을 요구합니다.
IIR필터는 여러 함수 모양의 컷오프와 증폭을 FIR필터에 비해서 적은 계산으로 만들 수 있습니다. 출력에서 얻어지는 피드백을 사용하지 않으므로 출력을 저장하기 위하여 메모리를 사용하지 않아도 되고, FIR필터를 위해서 많은 계산을 요구하지도 않으므로, 저가의 필터를 구현 할 수 있습니다.
butterlp : kfreq에 적힌 프리퀀시의 수의 위에 있는 주파수를 차단합니다.
butterhp : kfreq에 적힌 프리퀀시의 수의 위만 내보냅니다.
butterbp : kfreq, kband의 사이의 수만 통과시킵니다.
butterbr : kfreq, kband의 사이의 수만 잘라냅니다.
-asig – filter를 사용할 시그널
-kfreq – 각각의 필터에 대한 Cutoff or center frequency .
butterbp 와 butterbr의 경우 center kfreq 는 낮은값이며(exponentially), 수
치적 center값이 아니다.
-kband – bandpass와 bandreject 필터의 Bandwidth
-iskip – Skip initialization if present and non zero
EXAMPLE>
asig rand 10000 ; White noise signal
alpf butterlp asig, 1000 ; cutting frequencies above1K
ahpf butterhp asig, 500 ; passing frequencies above 500Hz
abpf butterbp asig, 1000, 2000 ; passing 2 octaves: 500 to 2000 Hz
abrf butterbr asig, 200, 150 ; cutting 2 octaves: 50 to 200 Hz