pvscent
Calculate the spectral centroid of a signal from its discrete Fourier transform.
Syntax
kcent -- the spectral centroid, in Hz
acent -- the spectral centroid, in Hz
fsig -- an input pv stream in amplitude-frequency or amplitude-phase format
The centroid is the mean of the FFT bin centre frequencies, weighted by their
magnitudes. The calculation uses bin positions, not the frequency or phase
values stored in the bins. A silent frame returns zero.
For frame-based input, both outputs update when a new frame arrives and hold
the result between frames. For sliding input, acent updates each sample;
kcent uses the first active sample of each control block.
Examples
Here is an example of the use of the pvscent opcode. It uses the file pvscent.csd.
| Example of the _pvscent_ opcode. |
|---|
| <CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
; Audio out Audio in
-odac ;;;RT audio I/O
; For Non-realtime ouput leave only the line below:
; -o pvscent.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>
sr = 44100
ksmps = 32
nchnls = 2
0dbfs = 1
;; example written by joachim heintz 2009
giSine ftgen 0, 0, 4096, 10, 1
instr 1
irefrtm = p4; time for generating new values for the spectral centroid
ifftsize = 1024
ioverlap = ifftsize / 4
iwinsize = ifftsize
iwinshape = 1; von-Hann window
;Sfile = "flute-C-octave0.wav"
Sfile = "fox.wav"
ain soundin Sfile
fftin pvsanal ain, ifftsize, ioverlap, iwinsize, iwinshape; fft-analysis of the audio-signal
ktrig metro 1 / irefrtm
if ktrig == 1 then
kcenter pvscent fftin; spectral center
endif
aout oscil .2, kcenter, giSine
outs aout, aout
endin
</CsInstruments>
<CsScore>
i 1 0 2.757 .3
i 1 3 2.757 .05
i 1 6 2.757 .005
i 1 9 2.757 .001
e
</CsScore>
</CsoundSynthesizer>
|
See also
Tools for Real-time Spectral Processing (pvs opcodes)
Credits
Author: John ffitch
March 2005
New plugin in version 5
March 2005.