Obj. bonk~ (percussion follower for Max/MSP)

bonk~오브젝트는 작은 타악기의 어택을 감지합니다. Fiddle의 경우와 같이 bonk는 하나의 입력(inlet)을 갖고 오디오 시그널을 받아들이며, 메시지는 세팅의 변경으로 쓰입니다.
다음은 메시지의 기능들의 설명입니다.

-thresh (lothresh) (hithresh) 어택의low/high시작점을 설정. 처음 시그널이 high값을 반드시 초과해야 하며, 어택을 만들기 위해서 low값으로 떨어져야 한다. (말이 어렵지만 얼마나 섬세하게 어택을 받아들일 것인가의 세팅이 된다고 생각하면 쉽겠지요)
-minvel : 최소 velocity
-mask (masktime) (maskdecay) mask parameters의 설정
-debounce (debounce-time) 두 어택간의 최소시간의 설정
-print (more) parameter의 값을 프린트함
-learn (ag)  “learn” mode 를 끄거나 킴 (learn 1 : 새로운 것을 learning하기 위하여 기존 것을 모두 지워버림. Learn 10(recommended) : 몇 번 악기를 칠(hit) 것인가의 양을 결정 learn 0 : learn mode를 끝냄)
-write (filename) templates을 텍스트 파일에 씀
-read (filename) 파일로부터 templates을 읽음
-bang list로 현재의 스펙트럼을 출력
-forget : 마지막 template값을 지움

출력 창(outlet)을 2개인데, 오른쪽은 단지instrument number(0에서부터 세어진)와 velocity를 보내며, instrument number는bonk~ 가 “template set” 을 memory에 가질 때에만 출력이 됩니다. 왼쪽 출력은 어택의raw spectrum을(사용된 11개의 frequency bands안에 있는 시그널 “loudness” 을 주는 11개수를 가진  list)를 출력합니다. –복잡하지만 예제를 사용하면 이해가 빨리 갈 것입니다

Bonk의 분석은256-point window (6 msec at 44.1kHz) 에서 수행되며 임의적으로 analysis period 은 128 samples입니다. 이analysis period 는 Bonk의 creation argument 로 설정될 수 있지만64의 제곱수여야 합니다.
Bonk의 help파일에 있는 패치에서DSP를 실행한 후 2개의 토글로 출력되는 것을 print할 수 있고, 볼륨이 증가하는 것에 의해서 신시사이저의 출력을 들을 수 있습니다.

-참고-Templates의 예제
10.469999 9.65 14.95 23.769999 28.32 38.839996 53.209999 41.199997 31.25 21.699999 16.48; 6.52 13.929999 27.82 58.049999 24.109999 35.259998 35.98 37.779999 22.539999 13.559999 10.75; 30.449999 28.859999 29.419998 21.939999 29.919998 35.699997 38.489998 32.009998 28.189999 27.379999 22.099998; 66.769997 46.269997 28.82 25.949999 22.839998 20.609999 20.33 14.179999 6.86 8.919999 7.37;

Obj. Pitch~ (based on fiddle~)

Pitch~ (based on fiddle~ from Miller Puckette)

Pitch~에 대해서 이야기 하기 이전에 먼저 Fiddle~ 부터 잠시 소개합니다.

fiddle~ object는 입력되는 소리의pitch와amplitude를 측정합니다.
Fiddle~은 pitch를 결정하는 sinusoidal peaks들을 감지하여 그 list들을 선택적으로 출력합니다. (fiddle 에 대한 이론을 보시려면http://www.crca.ucsd.edu/~msp )

Fiddle의 오브젝트 argument로는 분석 윈도우 사이즈, 최대 polyphony값(동시에 들어오는 pitch의 수를 결정) 그리고 스팩트럼 내의 peak의 수, peak의 수이다. (자세한 설명은 pitch~에서) outlet은 pitch를 분리하여 숫자로 보내어주고, amplitude enveloped내에서 감지된 어택을 뱅으로 보내주며, 하나 이상의 계속적으로 들어오는 pitch와 amplitude, 전체 amplitude, 그리고 peak에 대한 메시지의 연속(optional)을 출력합니다.

analysis hop size는 윈도우 사이즈의 반입니다. 만약 512 샘플마다 한 분석이 이루어진다면 (1.6 msec at 44.1kHz), 그리고 그 분석은 가장 최근의 1024 샘플(23.2 msec at 44.1kHz)을 사용합니다. Fiddle~이 기록하는 최소 frequency는 윈도우당 2-1/2cycles이거나 약 108Hz가 됩니다. (MIDI 45번 바로 아래)

그럼 pitch~에 대해 알아보겠습니다.
Pitch~는 이 fiddle의 성격을 그대로 반영한 오브젝트입니다.

Argument를 보겠습니다.
————————————————————————————————————-
-buffer size(ms 또는 샘플넘버)
-hop size(ms 또는 샘플넘버)
-FFT size(ms 또는 샘플넘버)
-윈도우 종류 선택(rectangular-blackman62, hanning-blackman70,hamming-blackman74)
-초기 delay값(signal vectors의 수)
-출력할 pitch의 수(1~3)
-찾아낼 peaks의 수(1~100)
-출력할 peaks의 수(1~100)

*임의의 buffer size-1024
  임의의 hop size-512
  임의의 FFT size-1024
  임의의 윈도우 종류-blackman70
  임의의 delay-0
  임의의 출력할 pitch – 1
  임의의 찾아낼 peak – 20
  임의의 출력할 peak – 0

ex>
————————————————————————————————————-

다음은 outlet을 살펴보겠습니다.(왼쪽에서 오른쪽으로)
————————————————————————————————————-

1.들어오는 신호를 감지하여 표시 (bang으로)
2.분석된 pitch(Midi, Hz) (list)
3.원래의 Pitch (Midi, Amp) (list)
4.전체amplitude in dB (float)
5.Sinusoidal decomposition (freq, amp) (list)
————————————————————————————————————-

Note>>
————————————————————————————————————-
1. size를 정의하기 위해서 소수를 쓰며(ms) 샘플넘버는 정수로 기록되어야 합니다.
2. delay는 동시에 여러 개의 FFT를 사용하여 CPU에 무리가 생기는 것을 피하기 위하여 사용됩니다. 0, 1, 2를 사용하게되면 FFT의 사용시간이 나누어집니다.

설명이 애매하고 까다롭네요. 더 자세한 것은 직접 패치를 다운받아 실행해 보시기 바랍니다.

Download page : http://web.media.mit.edu/~tristan/