Bånder

NNLSChroma extends BaseAlgorithm
in package

NNLSChroma

Inputs:

[vector_vector_real] logSpectrogram - log spectrum frames [vector_real] meanTuning - mean tuning frames [vector_real] localTuning - local tuning frames

Outputs:

[vector_vector_real] tunedLogfreqSpectrum - Log frequency spectrum after tuning [vector_vector_real] semitoneSpectrum - a spectral representation with one bin per semitone [vector_vector_real] bassChromagram - a 12-dimensional chromagram, restricted to the bass range [vector_vector_real] chromagram - a 12-dimensional chromagram, restricted with mid-range emphasis

Parameters:

chromaNormalization: string ∈ {none,maximum,L1,L2} (default = "none") determines whether or how the chromagrams are normalised

frameSize: integer ∈ (1,inf) (default = 1025) the input frame size of the spectrum vector

sampleRate: real ∈ (0,inf) (default = 44100) the input sample rate

spectralShape: real ∈ (0.5,0.9) (default = 0.699999988079) the shape of the notes in the NNLS dictionary

spectralWhitening: real ∈ [0,1.0] (default = 1) determines how much the log-frequency spectrum is whitened

tuningMode: string ∈ {global,local} (default = "global") local uses a local average for tuning, global uses all audio frames. Local tuning is only advisable when the tuning is likely to change over the audio

useNNLS: bool ∈ {true,false} (default = true) toggle between NNLS approximate transcription and linear spectral mapping

Description:

This algorithm extracts treble and bass chromagrams from a sequence of log-frequency spectrum frames. On this representation, two processing steps are performed: -tuning, after which each centre bin (i.e. bin 2, 5, 8, ...) corresponds to a semitone, even if the tuning of the piece deviates from 440 Hz standard pitch. -running standardisation: subtraction of the running mean, division by the running standard deviation. This has a spectral whitening effect. This code is ported from NNLS Chroma [1, 2]. To achieve similar results follow this processing chain: frame slicing with sample rate = 44100, frame size = 16384, hop size = 2048 -> Windowing with Hann and no normalization -> Spectrum -> LogSpectrum.

References: [1] Mauch, M., & Dixon, S. (2010, August). Approximate Note Transcription for the Improved Identification of Difficult Chords. In ISMIR (pp. 135-140). [2] Chordino and NNLS Chroma, http://www.isophonics.net/nnls-chroma

Category: Tonal 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

$algorithmName

protected string $algorithmName = 'NNLSChroma'

$parameters

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

$algorithmHandle

private CData|null $algorithmHandle = null

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

cleanupAlgorithm()

private cleanupAlgorithm() : void

configureAlgorithmParameters()

private configureAlgorithmParameters() : void

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>

getAlgorithmCreateFunction()

private getAlgorithmCreateFunction() : string
Return values
string

getValidParameters()

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

initializeAlgorithm()

private initializeAlgorithm() : void

prepareInput()

private prepareInput(mixed $input) : mixed
Parameters
$input : 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