comirva.audio.extraction
Class SpectralPatternCentExtractor

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

public class SpectralPatternCentExtractor
extends AudioFeatureExtractor

Title: Fluctuation Patterns

Description:

This class supports the extraction of the so-called "Fluctuation Patterns" from an audio stream. This is a advanced version based on the cent scale instead of the bark scale.

See Also:
AudioFeatureExtractor, FluctuationPattern

Field Summary
protected  int blockSize
           
protected  CentSpectrum centProcessor
           
protected  int delta
           
protected  int frameHop
           
protected  AudioPreProcessor preProcessor
           
protected  float sampleRate
           
 
Constructor Summary
SpectralPatternCentExtractor()
          The default constructor uses segments of size 65536 samples.
SpectralPatternCentExtractor(float sampleRate)
          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[][] block)
          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.
(package private)  double[][] getBlock(Vector<double[]> normalizedCentSpectrum, int start)
           
(package private)  double[] getDiff(double[] a, double[] b)
           
static double getQuantil(double[] array, double quantil)
          Computes the median of all the elements in the array.
protected  Matrix getSpectralPatterns()
          Splits the audio stream in short segments and computes a fluctuation pattern for every third segment.
 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

frameHop

protected int frameHop

blockSize

protected int blockSize

delta

protected int delta

sampleRate

protected float sampleRate

centProcessor

protected CentSpectrum centProcessor

preProcessor

protected AudioPreProcessor preProcessor
Constructor Detail

SpectralPatternCentExtractor

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


SpectralPatternCentExtractor

public SpectralPatternCentExtractor(float sampleRate)
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 cent 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

getSpectralPatterns

protected Matrix getSpectralPatterns()
                              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

getDiff

double[] getDiff(double[] a,
                 double[] b)

getBlock

double[][] getBlock(Vector<double[]> normalizedCentSpectrum,
                    int start)

createPattern

protected Matrix createPattern(double[][] block)
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

getQuantil

public static double getQuantil(double[] array,
                                double quantil)
                         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

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