Use Non-Frames Version Previous Page Next Page
Operations Using Spectral Data Types

specaddm, specdiff, specscal, spechist, specfilt

  wsig    specaddm  wsig1, wsig2[, imul2]
  wsig    specdiff  wsigin
  wsig    specscal  wsigin, ifscale, ifthresh
  wsig    spechist  wsigin
  wsig    specfilt  wsigin, ifhtim

Initialization

imul2 (optional) - if non-zero, scale the wsig2 magnitudes before adding. The default value is 0.

Performance

specaddm - do a weighted add of two input spectra. For each channel of the two input spectra, the two magnitudes are combined and written to the output according to:

  magout = mag1in + mag2in * imul2

The operation is performed whenever the input wsig1 is sensed to be new. This unit will (at Initialization) verify the consistency of the two spectra (equal size, equal period, equal mag types).

specdiff - find the positive difference values between consecutive spectral frames. At each new frame of wsigin, each magnitude value is compared with its predecessor, and the positive changes written to the output spectrum. This unit is useful as an energy onset detector.

specscal - scale an input spectral datablock with spectral envelopes. Function tables ifthresh and ifscale are initially sampled across the (logarithmic) frequency space of the input spectrum; then each time a new input spectrum is sensed the sampled values are used to scale each of its magnitude channels as follows: if ifthresh is non-zero, each magnitude is reduced by its corresponding table-value (to not less than zero); then each magnitude is rescaled by the corresponding ifscale value, and the resulting spectrum written to wsig.

spechist - accumulate the values of successive spectral frames. At each new frame of wsigin, the accumulations-to-date in each magnitude track are written to the output spectrum. This unit thus provides a running histogram of spectral distribution.

specfilt - filter each channel of an input spectrum. At each new frame of wsigin, each magnitude value is injected into a 1st-order lowpass recursive filter, whose half-time constant has been initially set by sampling the ftable ifhtim across the (logarithmic) frequency space of the input spectrum. This unit effectively applies a persistence factor to the data occurring in each spectral channel, and is useful for simulating the energy integration that occurs during auditory perception. It may also be used as a time-attenuated running histogram of the spectral distribution.

Example

  wsig2    specdiff         wsig1               ; sense onsets 
  wsig3    specfilt         wsig2, 2            ; absorb slowly 
           specdisp         wsig2, .1           ; & display both spectra 
           specdisp         wsig3, .1

Use Non-Frames Version Previous Page Next Page
Operations Using Spectral Data Types