comirva.audio.extraction
Class FluctuationPatternExtractor

java.lang.Object
  extended by comirva.audio.extraction.AttributeExtractor
      extended by comirva.audio.extraction.AudioFeatureExtractor
          extended by comirva.audio.extraction.FluctuationPatternExtractor

public class FluctuationPatternExtractor
extends AudioFeatureExtractor

Title: Fluctuation Patterns

Description:

This class supports the extraction of the so-called "Fluctuation Patterns" from an audio stream. The fluctuation pattern of a song is a feature describing the rhythmic structure of the whole song in some way. Form implementation point of view FluctuationPatternExtractor implements the AudioFeatureExtractor interface and returns a FluctuationPattern object, which is an instance of a subclass of the abstract AudioFeature class. [1] Fastl, "Fluctuation strength and temporal masking patterns of amplitude-modulated broad-band noise", Hearing Research, 8:59-69, 1982. [2] Rauber, Pampalk, Merkl "Using Psycho-Acoustic Models and Self-Organizing Maps to create a Hierarchical Structuring of Music by Sound Similarity", In proceedings of ISMIR 2002, pages 71-80, 2002. [3] Pampalk, Rauber "Content-based Organization and Visualization of Music Archives", In Proceedings of the ACM Multimedia 2002, pages 570-579, 2002.

See Also:
AudioFeatureExtractor, FluctuationPattern

Field Summary
protected  int fftSize
           
protected  FFT magnitudeFFT
           
protected  NormalizedConvolution normalizedConvolution
           
protected  AudioPreProcessor preProcessor
           
protected  float sampleRate
           
protected  int segmentSize
           
protected  Sone soneProcessor
           
 
Constructor Summary
FluctuationPatternExtractor()
          The default constructor uses segments of size 65536 samples.
FluctuationPatternExtractor(float sampleRate, int fftSize, int segmentSize)
          Constructs an individualized FluctuationPatternExtractor.
 
Method Summary
 Attribute calculate(File input)
          This method is used to calculate the fluctuation pattern for a whole song.
 AttributeExtractor copy()
          This method returns a copy of an AttributeExtractor.
protected  Matrix createPattern(double[][] sone)
          Computes the fluctuation pattern for a short piece of audio.
 int getAttributeType()
          Returns the type of the attribute that the class implementing this interface will return as the result of its extraction process.
protected  Vector<Matrix> getFluctuationPatterns()
          Splits the audio stream in short segments and computes a fluctuation pattern for every third segment.
 double[] getFluxWeights()
          Returns weights for the amplitude modulation coefficients based on the psychoarcoustic model of the fluctuation strength.
static double getMedian(double[] array)
          Computes the median of all the elements in the array.
protected static void sortArray(double[] array)
          Sorts all elements of the given array.
 String toString()
          Returns the feature extractors name.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

segmentSize

protected int segmentSize

fftSize

protected int fftSize

sampleRate

protected float sampleRate

magnitudeFFT

protected FFT magnitudeFFT

soneProcessor

protected Sone soneProcessor

normalizedConvolution

protected NormalizedConvolution normalizedConvolution

preProcessor

protected AudioPreProcessor preProcessor
Constructor Detail

FluctuationPatternExtractor

public FluctuationPatternExtractor()
The default constructor uses segments of size 65536 samples. This corresponds to about 6 sec. of audio @11kHz.


FluctuationPatternExtractor

public FluctuationPatternExtractor(float sampleRate,
                                   int fftSize,
                                   int segmentSize)
Constructs an individualized FluctuationPatternExtractor. The number of samples to use for a segment has to be chosen with respect to an 11kHz audio stream. An fft size of 512 is used to get the rhythmic structure out of the sone representation. This corresponds to a range of 10bpm up to 2584bpm.

Parameters:
fftSize - int number of sone values to consider
segmentSize - int number of samples a segments consists of
Method Detail

copy

public AttributeExtractor copy()
Description copied from class: AttributeExtractor
This method returns a copy of an AttributeExtractor. This is useful to use multiple extractors in parallel or distributed environments as AttributeExtractors can be stateful.

Specified by:
copy in class AttributeExtractor
Returns:

calculate

public Attribute calculate(File input)
                    throws IllegalArgumentException,
                           IOException,
                           UnsupportedAudioFileException
This method is used to calculate the fluctuation pattern for a whole song. The song must be handed to this method as an AudioPreProcessor object. All settings are set by the constructor, so this method can easily be called for a large number of songs to extract this feature.

Specified by:
calculate in class AttributeExtractor
Parameters:
input - Object an AudioPreProcessor representing the audio input stream;
Returns:
Feature a FluctuationPattern feature is returned as a result of this feature extraction process
Throws:
IOException - if there are any problems regarding the inputstream
IllegalArgumentException - raised if method contract of a subroutine is violated
UnsupportedAudioFileException

getFluctuationPatterns

protected Vector<Matrix> getFluctuationPatterns()
                                         throws IOException,
                                                IllegalArgumentException
Splits the audio stream in short segments and computes a fluctuation pattern for every third segment. The returned Vector contains all these patterns, which altogether describe the rhythmic structure of the whole song.

Returns:
Vector a vector containing all the fluctuation patterns
Throws:
IOException - if there are any problems regarding the inputstream
IllegalArgumentException - raised if method contract of a subroutine is violated

createPattern

protected Matrix createPattern(double[][] sone)
Computes the fluctuation pattern for a short piece of audio. The fluctuation pattern characterizes the rhythmic structure of the short audio segment. The input data are Sone (Specific Loudness Sensation) values.

Parameters:
sone - double[][] sone values; must not be a null value;
Returns:
Matrix fluctuation pattern

getFluxWeights

public double[] getFluxWeights()
Returns weights for the amplitude modulation coefficients based on the psychoarcoustic model of the fluctuation strength. The number of the weights depends on the base frequency. For details take a look at [1].

Returns:
double[] weights for the amplitude modulation coefficients

getMedian

public static double getMedian(double[] array)
                        throws IllegalArgumentException
Computes the median of all the elements in the array. The elements in the array are sorted after a calling this method.

Parameters:
array - double[] array of values; must not be a null value and must contain at least one element;
Returns:
double the median of all the elements of the given array
Throws:
IllegalArgumentException - raised if method contract is violated

sortArray

protected static void sortArray(double[] array)
Sorts all elements of the given array. The order of the elements in the array will be changed. The algorithm in use is Bubble Sort due to the simple implementation and a the assumption of a low number of elements in the array.

Parameters:
array - double[] array of values; must not be a null value and must contain at least one element;

getAttributeType

public int getAttributeType()
Returns the type of the attribute that the class implementing this interface will return as the result of its extraction process. By definition this is the hash code of the attribute's class name.

Specified by:
getAttributeType in class AttributeExtractor
Returns:
int an integer uniquely identifying the returned Attribute

toString

public String toString()
Returns the feature extractors name.

Overrides:
toString in class Object
Returns:
String name of this feature extractor