be.hogent.tarsos.dsp.pitch
Class Yin

java.lang.Object
  extended by be.hogent.tarsos.dsp.pitch.Yin
All Implemented Interfaces:
PitchDetector

public final class Yin
extends java.lang.Object
implements PitchDetector

An implementation of the AUBIO_YIN pitch tracking algorithm. See the YIN paper. Implementation based on aubio

Author:
Joren Six, Paul Brossier

Field Summary
static int DEFAULT_BUFFER_SIZE
          The default size of an audio buffer (in samples).
static int DEFAULT_OVERLAP
          The default overlap of two consecutive audio buffers (in samples).
 
Constructor Summary
Yin(float audioSampleRate, int bufferSize)
          Create a new pitch detector for a stream with the defined sample rate.
Yin(float audioSampleRate, int bufferSize, double yinThreshold)
          Create a new pitch detector for a stream with the defined sample rate.
 
Method Summary
 float getPitch(float[] audioBuffer)
          The main flow of the YIN algorithm.
 float getProbability()
          Some algorithms can calculate a probability (noisiness, (a)periodicity, salience, voicedness or clarity measure) for the detected pitch.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_BUFFER_SIZE

public static final int DEFAULT_BUFFER_SIZE
The default size of an audio buffer (in samples).

See Also:
Constant Field Values

DEFAULT_OVERLAP

public static final int DEFAULT_OVERLAP
The default overlap of two consecutive audio buffers (in samples).

See Also:
Constant Field Values
Constructor Detail

Yin

public Yin(float audioSampleRate,
           int bufferSize)
Create a new pitch detector for a stream with the defined sample rate. Processes the audio in blocks of the defined size.

Parameters:
audioSampleRate - The sample rate of the audio stream. E.g. 44.1 kHz.
bufferSize - The size of a buffer. E.g. 1024.

Yin

public Yin(float audioSampleRate,
           int bufferSize,
           double yinThreshold)
Create a new pitch detector for a stream with the defined sample rate. Processes the audio in blocks of the defined size.

Parameters:
audioSampleRate - The sample rate of the audio stream. E.g. 44.1 kHz.
bufferSize - The size of a buffer. E.g. 1024.
yinThreshold - The parameter that defines which peaks are kept as possible pitch candidates. See the YIN paper for more details.
Method Detail

getPitch

public float getPitch(float[] audioBuffer)
The main flow of the YIN algorithm. Returns a pitch value in Hz or -1 if no pitch is detected.

Specified by:
getPitch in interface PitchDetector
Parameters:
audioBuffer - The buffer with audio information. The information in the buffer is not modified so it can be (re)used for e.g. FFT analysis.
Returns:
a pitch value in Hz or -1 if no pitch is detected.

getProbability

public float getProbability()
Description copied from interface: PitchDetector
Some algorithms can calculate a probability (noisiness, (a)periodicity, salience, voicedness or clarity measure) for the detected pitch. This is somewhat similar to the term voiced which is used in speech recognition. This probability should be calculated together with the pitch but is returned using a call to this method. So if you want the probability of a buffer: first call getPitch(buffer) and then getProbability().

Specified by:
getProbability in interface PitchDetector
Returns:
A probability