53 lines
1.4 KiB
Racket
53 lines
1.4 KiB
Racket
#lang scribble/manual
|
|
@(require (for-label racket))
|
|
|
|
@title{(pv-jensen-andersen buffer propsc prophfe prophfc propsf threshold waittime)}
|
|
|
|
|
|
|
|
|
|
fft feature detector for onset detection based on work described in
|
|
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. Threshold may
|
|
need to be set low to pick up on changes.
|
|
|
|
buffer - fft buffer to read from.
|
|
propsc - Proportion of spectral centroid feature.
|
|
prophfe - Proportion of high frequency energy feature.
|
|
prophfc - Proportion of high frequency content feature.
|
|
propsf - Proportion of spectral flux feature.
|
|
threshold - Threshold level for allowing a detection
|
|
waittime - If triggered, minimum wait until a further frame can
|
|
cause another spot (useful to stop multiple detects on
|
|
heavy signals)
|
|
|
|
Default values in sclang are: propsc=0.25, prophfe=0.25,
|
|
prophfc=0.25, propsf=0.25, threshold=1.0, waittime=0.04.
|
|
|
|
|
|
|
|
|
|
|
|
@racketblock[
|
|
(with-sc3
|
|
(lambda (fd)
|
|
(async fd (b-alloc 0 2048 1))))
|
|
]
|
|
|
|
|
|
@racketblock[
|
|
(let* ((source (sound-in 0))
|
|
(detect (pv-jensen-andersen (fft* 0 source)
|
|
0.25 0.25 0.25 0.25
|
|
(mouse-x kr 0.01 1.0 1 0.1)
|
|
0.04)))
|
|
(audition
|
|
(out 0 (mul (sin-osc ar (mce2 440 445) 0)
|
|
(decay (mul 0.1 detect) 0.1)))))
|
|
]
|
|
|
|
|