jAudioFeatureExtractor.AudioFeatures
Class BeatHistogram

java.lang.Object
  extended by jAudioFeatureExtractor.AudioFeatures.FeatureExtractor
      extended by jAudioFeatureExtractor.AudioFeatures.BeatHistogram

public class BeatHistogram
extends FeatureExtractor

A feature extractor that extracts the Beat Histogram from a signal. This is histogram showing the strength of different rhythmic periodicities in a signal.

This is calculated by taking the RMS of 256 windows and then taking the FFT of the result.

No extracted feature values are stored in objects of this class.

IMPORTANT:

The window size of 256 RMS windows used here is hard-coded into the class BeatHistogramLabels. Any changes to the window size in this class must be made there as well.

Daniel McEnnis 05-07-05 Added setElement, getElement, setElement, and clone functions

Author:
Cory McKay

Field Summary
 
Fields inherited from class jAudioFeatureExtractor.AudioFeatures.FeatureExtractor
definition, dependencies, offsets, parent
 
Constructor Summary
BeatHistogram()
          Basic constructor that sets the definition and dependencies (and their offsets) of this feature.
 
Method Summary
 java.lang.Object clone()
          Create an identical copy of this feature.
 double[] extractFeature(double[] samples, double sampling_rate, double[][] other_feature_values)
          Extracts this feature from the given samples at the given sampling rate and given the other feature values.
 java.lang.String getElement(int index)
          Function permitting an unintelligent outside function (ie.
 void setElement(int index, java.lang.String value)
          Function permitting an unintelligent outside function (i.e.
 void setWindowLength(int n)
          Helper function to set window length for this feature.
 
Methods inherited from class jAudioFeatureExtractor.AudioFeatures.FeatureExtractor
getDepenedencies, getDepenedencyOffsets, getFeatureDefinition, setParent, setWindow
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BeatHistogram

public BeatHistogram()
Basic constructor that sets the definition and dependencies (and their offsets) of this feature.

Method Detail

extractFeature

public double[] extractFeature(double[] samples,
                               double sampling_rate,
                               double[][] other_feature_values)
                        throws java.lang.Exception
Extracts this feature from the given samples at the given sampling rate and given the other feature values.

In the case of this feature the sampling_rate is ignored.

Specified by:
extractFeature in class FeatureExtractor
Parameters:
samples - The samples to extract the feature from.
sampling_rate - The sampling rate that the samples are encoded with.
other_feature_values - The values of other features that are needed to calculate this value. The order and offsets of these features must be the same as those returned by this class's getDependencies and getDependencyOffsets methods respectively. The first index indicates the feature/window and the second indicates the value.
Returns:
The extracted feature value(s).
Throws:
java.lang.Exception - Throws an informative exception if the feature cannot be calculated.

setWindowLength

public void setWindowLength(int n)
                     throws java.lang.Exception
Helper function to set window length for this feature. Note that this feature does *not* conform to the syntax of setWindow so this feature is not affected by a global window change. This is necessary since the beat bins have a different meaning than most windowed features.

Parameters:
n - new number of beat bins
Throws:
java.lang.Exception - thrown if the new value is less than 2

getElement

public java.lang.String getElement(int index)
                            throws java.lang.Exception
Function permitting an unintelligent outside function (ie. EditFeatures frame) to get the default values used to populate the table's entries. The correct index values are inferred from definition.attribute value.

Overrides:
getElement in class FeatureExtractor
Parameters:
index - which of Beat Histograms's attributes should be edited.
Throws:
java.lang.Exception

setElement

public void setElement(int index,
                       java.lang.String value)
                throws java.lang.Exception
Function permitting an unintelligent outside function (i.e. EditFeatures frame) to set the default values used to populate the table's entries. Like getElement, the correct index values are inferred from the definition.attributes value.

Overrides:
setElement in class FeatureExtractor
Parameters:
index - attribute to be set
value - new value of the attribute
Throws:
java.lang.Exception

clone

public java.lang.Object clone()
Create an identical copy of this feature. This permits FeatureExtractor to use the prototype pattern to create new composite features using metafeatures.

Specified by:
clone in class FeatureExtractor