Bånder

PredominantPitchMelodia extends BaseAlgorithm
in package

PredominantPitchMelodia

Inputs:

[vector_real] signal - the input signal

Outputs:

[vector_real] pitch - the estimated pitch values [Hz] [vector_real] pitchConfidence - confidence with which the pitch was detected

Parameters:

binResolution: real ∈ (0,inf) (default = 10) salience function bin resolution [cents]

filterIterations: integer ∈ [1,inf) (default = 3) number of iterations for the octave errors / pitch outlier filtering process

frameSize: integer ∈ (0,inf) (default = 2048) the frame size for computing pitch salience

guessUnvoiced: bool ∈ {false,true} (default = false) estimate pitch for non-voiced segments by using non-salient contours when no salient ones are present in a frame

harmonicWeight: real ∈ (0,1) (default = 0.800000011921) harmonic weighting parameter (weight decay ratio between two consequent harmonics, =1 for no decay)

hopSize: integer ∈ (0,inf) (default = 128) the hop size with which the pitch salience function was computed

magnitudeCompression: real ∈ (0,1] (default = 1) magnitude compression parameter for the salience function (=0 for maximum compression, =1 for no compression)

magnitudeThreshold: integer ∈ [0,inf) (default = 40) spectral peak magnitude threshold (maximum allowed difference from the highest peak in dBs)

maxFrequency: real ∈ [0,inf) (default = 20000) the maximum allowed frequency for salience function peaks (ignore contours with peaks above) [Hz]

minDuration: integer ∈ (0,inf) (default = 100) the minimum allowed contour duration [ms]

minFrequency: real ∈ [0,inf) (default = 80) the minimum allowed frequency for salience function peaks (ignore contours with peaks below) [Hz]

numberHarmonics: integer ∈ [1,inf) (default = 20) number of considered harmonics

peakDistributionThreshold: real ∈ [0,2] (default = 0.899999976158) allowed deviation below the peak salience mean over all frames (fraction of the standard deviation)

peakFrameThreshold: real ∈ [0,1] (default = 0.899999976158) per-frame salience threshold factor (fraction of the highest peak salience in a frame)

pitchContinuity: real ∈ [0,inf) (default = 27.5625) pitch continuity cue (maximum allowed pitch change during 1 ms time period) [cents]

referenceFrequency: real ∈ (0,inf) (default = 55) the reference frequency for Hertz to cent conversion [Hz], corresponding to the 0th cent bin

sampleRate: real ∈ (0,inf) (default = 44100) the sampling rate of the audio signal [Hz]

timeContinuity: integer ∈ (0,inf) (default = 100) time continuity cue (the maximum allowed gap duration for a pitch contour) [ms]

voiceVibrato: bool ∈ {true,false} (default = false) detect voice vibrato

voicingTolerance: real ∈ [-1.0,1.4] (default = 0.20000000298) allowed deviation below the average contour mean salience of all contours (fraction of the standard deviation)

Description:

This algorithm estimates the fundamental frequency of the predominant melody from polyphonic music signals using the MELODIA algorithm. It is specifically suited for music with a predominent melodic element, for example the singing voice melody in an accompanied singing recording. The approach [1] is based on the creation and characterization of pitch contours, time continuous sequences of pitch candidates grouped using auditory streaming cues. It furthermore determines for each frame, if the predominant melody is present or not. To this end, PitchSalienceFunction, PitchSalienceFunctionPeaks, PitchContours, and PitchContoursMelody algorithms are employed. It is strongly advised to use the default parameter values which are optimized according to [1] (where further details are provided) except for minFrequency, maxFrequency, and voicingTolerance, which will depend on your application.

The output is a vector of estimated melody pitch values and a vector of confidence values. The first value corresponds to the beginning of the input signal (time 0).

It is recommended to apply EqualLoudness on the input signal (see [1]) as a pre-processing stage before running this algorithm.

Note that "pitchConfidence" can be negative in the case of "guessUnvoiced"=True: the absolute values represent the confidence, negative values correspond to segments for which non-salient contours where selected, zero values correspond to non-voiced segments.

References: [1] J. Salamon and E. Gómez, "Melody extraction from polyphonic music signals using pitch contour characteristics," IEEE Transactions on Audio, Speech, and Language Processing, vol. 20, no. 6, pp. 1759–1770, 2012.

[2] http://mtg.upf.edu/technologies/melodia

[3] http://www.justinsalamon.com/melody-extraction

Category: Spectral Mode: standard

Table of Contents

Properties

$algorithmName  : string
$category  : string
$essentia  : EssentiaFFI
$mode  : string
$parameters  : array<string|int, mixed>
$algorithmHandle  : CData|null
$configured  : bool

Methods

__construct()  : mixed
__destruct()  : mixed
compute()  : array<string|int, mixed>
getAlgorithmName()  : string
getCategory()  : string
getMode()  : string
getParameters()  : array<string|int, mixed>
setParameter()  : self
configure()  : void
isValidParameter()  : bool
validateInput()  : void
cleanupAlgorithm()  : void
configureAlgorithmParameters()  : void
estimateOutputSize()  : int
executeAlgorithm()  : array<string|int, mixed>
executeGenericAlgorithm()  : array<string|int, mixed>
executeSpecificAlgorithm()  : array<string|int, mixed>
getAlgorithmCreateFunction()  : string
getValidParameters()  : array<string|int, mixed>
initializeAlgorithm()  : void
prepareInput()  : mixed
processOutput()  : array<string|int, mixed>
processRhythmOutput()  : array<string|int, mixed>
processSpectralOutput()  : array<string|int, mixed>
processStatsOutput()  : array<string|int, mixed>
processTemporalOutput()  : array<string|int, mixed>
processTonalOutput()  : array<string|int, mixed>
setAlgorithmParameter()  : void
setArrayParameter()  : void
validateAlgorithmInput()  : void

Properties

$parameters

protected array<string|int, mixed> $parameters = []

Methods

__construct()

public __construct([array<string|int, mixed> $parameters = [] ]) : mixed
Parameters
$parameters : array<string|int, mixed> = []

compute()

public compute(mixed $input) : array<string|int, mixed>
Parameters
$input : mixed
Return values
array<string|int, mixed>

getAlgorithmName()

public getAlgorithmName() : string
Return values
string

getCategory()

public getCategory() : string
Return values
string

getParameters()

public getParameters() : array<string|int, mixed>
Return values
array<string|int, mixed>

setParameter()

public setParameter(string $key, mixed $value) : self
Parameters
$key : string
$value : mixed
Return values
self

configure()

protected configure(array<string|int, mixed> $parameters) : void
Parameters
$parameters : array<string|int, mixed>

isValidParameter()

protected isValidParameter(string $parameter) : bool
Parameters
$parameter : string
Return values
bool

validateInput()

protected validateInput(mixed $input, string $expectedType) : void
Parameters
$input : mixed
$expectedType : string

estimateOutputSize()

private estimateOutputSize(mixed $input) : int
Parameters
$input : mixed
Return values
int

executeAlgorithm()

private executeAlgorithm(mixed $input) : array<string|int, mixed>
Parameters
$input : mixed
Return values
array<string|int, mixed>

executeGenericAlgorithm()

private executeGenericAlgorithm(FFI $ffi, mixed $input) : array<string|int, mixed>
Parameters
$ffi : FFI
$input : mixed
Return values
array<string|int, mixed>

executeSpecificAlgorithm()

private executeSpecificAlgorithm(FFI $ffi, mixed $input) : array<string|int, mixed>
Parameters
$ffi : FFI
$input : mixed
Return values
array<string|int, mixed>

getValidParameters()

private getValidParameters() : array<string|int, mixed>
Return values
array<string|int, mixed>

processOutput()

private processOutput(array<string|int, mixed> $result) : array<string|int, mixed>
Parameters
$result : array<string|int, mixed>
Return values
array<string|int, mixed>

processRhythmOutput()

private processRhythmOutput(array<string|int, mixed> $result) : array<string|int, mixed>
Parameters
$result : array<string|int, mixed>
Return values
array<string|int, mixed>

processSpectralOutput()

private processSpectralOutput(array<string|int, mixed> $result) : array<string|int, mixed>
Parameters
$result : array<string|int, mixed>
Return values
array<string|int, mixed>

processStatsOutput()

private processStatsOutput(array<string|int, mixed> $result) : array<string|int, mixed>
Parameters
$result : array<string|int, mixed>
Return values
array<string|int, mixed>

processTemporalOutput()

private processTemporalOutput(array<string|int, mixed> $result) : array<string|int, mixed>
Parameters
$result : array<string|int, mixed>
Return values
array<string|int, mixed>

processTonalOutput()

private processTonalOutput(array<string|int, mixed> $result) : array<string|int, mixed>
Parameters
$result : array<string|int, mixed>
Return values
array<string|int, mixed>

setAlgorithmParameter()

private setAlgorithmParameter(FFI $ffi, string $key, mixed $value) : void
Parameters
$ffi : FFI
$key : string
$value : mixed

setArrayParameter()

private setArrayParameter(FFI $ffi, string $key, array<string|int, mixed> $value) : void
Parameters
$ffi : FFI
$key : string
$value : array<string|int, mixed>

validateAlgorithmInput()

private validateAlgorithmInput(mixed $input) : void
Parameters
$input : mixed

        
On this page

Search results