96 lines
1.5 KiB
Text
96 lines
1.5 KiB
Text
|
#lang scribble/manual
|
||
|
@(require (for-label racket))
|
||
|
|
||
|
@title{PV_JensenAndersen}
|
||
|
FFT feature detector for onset detection.@section{related}
|
||
|
Classes/PV_HainsworthFoote
|
||
|
@section{categories}
|
||
|
UGens>FFT
|
||
|
|
||
|
|
||
|
@section{description}
|
||
|
|
||
|
|
||
|
FFT feature detector for onset detection based on work described in
|
||
|
emphasis::
|
||
|
Jensen, K. & Andersen, T. H. (2003). Real-time Beat Estimation
|
||
|
Using Feature Extraction. In Proceedings of the Computer Music Modeling
|
||
|
and Retrieval Symposium, Lecture Notes in Computer Science. Springer
|
||
|
Verlag.
|
||
|
::
|
||
|
|
||
|
First order derivatives of the features are taken.
|
||
|
|
||
|
@racketblock[threshold:: may need to be set low to pick up on
|
||
|
changes.
|
||
|
|
||
|
|
||
|
]
|
||
|
@section{classmethods}
|
||
|
|
||
|
@section{private}
|
||
|
categories
|
||
|
@section{method}
|
||
|
ar
|
||
|
|
||
|
@section{argument}
|
||
|
buffer
|
||
|
|
||
|
FFT buffer.
|
||
|
|
||
|
|
||
|
@section{argument}
|
||
|
propsc
|
||
|
|
||
|
Proportion of spectral centroid feature.
|
||
|
|
||
|
|
||
|
@section{argument}
|
||
|
prophfe
|
||
|
|
||
|
Proportion of high frequency energy feature.
|
||
|
|
||
|
|
||
|
@section{argument}
|
||
|
prophfc
|
||
|
|
||
|
Proportion of high frequency content feature.
|
||
|
|
||
|
|
||
|
@section{argument}
|
||
|
propsf
|
||
|
|
||
|
Proportion of spectral flux feature.
|
||
|
|
||
|
|
||
|
@section{argument}
|
||
|
threshold
|
||
|
|
||
|
Threshold level for allowing a detection.
|
||
|
|
||
|
|
||
|
@section{argument}
|
||
|
waittime
|
||
|
|
||
|
If triggered, minimum wait until a further frame can cause
|
||
|
another spot (useful to stop multiple detects on heavy signals).
|
||
|
|
||
|
|
||
|
@section{Examples}
|
||
|
|
||
|
|
||
|
|
||
|
@racketblock[
|
||
|
(
|
||
|
SynthDef(\fftod, { var source1, detect;
|
||
|
source1 = AudioIn.ar(1);
|
||
|
detect = PV_JensenAndersen.ar(FFT(LocalBuf(2048), source1),
|
||
|
threshold:MouseX.kr(0.1,1.0));
|
||
|
Out.ar(0, SinOsc.ar([440,445], 0, Decay.ar(0.1*detect, 0.1)));
|
||
|
}).play(s);
|
||
|
)
|
||
|
::
|
||
|
]
|
||
|
|
||
|
|