Skip to content

pvsbandwidth

Calculate the spectral bandwidth of a signal from its discrete Fourier transform.

Syntax

kbnd = pvsbandwidth(fsig)
kbnd pvsbandwidth fsig

Performance

kbnd -- the spectral bandwidth, in Hz

fsig -- an input pv stream in amplitude-frequency or amplitude-phase format

The bandwidth is the standard deviation of the FFT bin centre frequencies, weighted by their magnitudes. It measures their spread around the spectral centroid. The calculation uses bin positions, not the frequency or phase values stored in the bins. A silent frame returns zero.

For frame-based input, the output updates when a new frame arrives and holds the result between frames. For sliding input, it uses the first active sample of each control block.

Examples

Here is an example of the use of the pvsbandwidth opcode. It uses the file pvsbandwidth.csd.

Example of the pvsbandwidth 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 pvsbandwidth.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
   kbw          pvsbandwidth fftin; spectral center
   printks2     "--**spectral center frequency = %f\n", kbw
 endif
 aout   vco2    .2, 130
 asig   butterbp  aout,kcenter,kbw
        outs asig, asig
 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: Victor Lazzarini
March 2020