Bånder

TempoTap extends BaseAlgorithm
in package

TempoTap

Inputs:

[vector_real] featuresFrame - input temporal features of a frame

Outputs:

[vector_real] periods - list of tempo estimates found for each input feature, in frames [vector_real] phases - list of initial phase candidates found for each input feature, in frames

Parameters:

frameHop: integer ∈ (0,inf) (default = 1024) number of feature frames separating two evaluations

frameSize: integer ∈ (0,inf) (default = 256) number of audio samples in a frame

maxTempo: integer ∈ [60,250] (default = 208) fastest tempo allowed to be detected [bpm]

minTempo: integer ∈ [40,180] (default = 40) slowest tempo allowed to be detected [bpm]

numberFrames: integer ∈ (0,inf) (default = 1024) number of feature frames to buffer on

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

tempoHints: vector_real (default = []) optional list of initial beat locations, to favor the detection of pre-determined tempo period and beats alignment [s]

Description:

This algorithm estimates the periods and phases of a periodic signal, represented by a sequence of values of any number of detection functions, such as energy bands, onsets locations, etc. It requires to be sequentially run on a vector of such values ("featuresFrame") for each particular audio frame in order to get estimations related to that frames. The estimations are done for each detection function separately, utilizing the latest "frameHop" frames, including the present one, to compute autocorrelation. Empty estimations will be returned until enough frames are accumulated in the algorithm's buffer. The algorithm uses elements of the following beat-tracking methods:

  • BeatIt, elaborated by Fabien Gouyon and Simon Dixon (input features) [1]
  • Multi-comb filter with Rayleigh weighting, Mathew Davies [2]

Parameter "maxTempo" should be 20bpm larger than "minTempo", otherwise an exception is thrown. The same applies for parameter "frameHop", which should not be greater than numberFrames. If the supplied "tempoHints" did not match any realistic bpm value, an exeception is thrown.

This algorithm is thought to provide the input for TempoTapTicks algorithm. The "featureFrame" vectors can be formed by Multiplexer algorithm in the case of combining different features.

Quality: outdated (use TempoTapDegara instead)

References: [1] F. Gouyon, "A computational approach to rhythm description: Audio features for the computation of rhythm periodicity functions and their use in tempo induction and music content processing," UPF, Barcelona, Spain, 2005.

[2] M. Davies and M. Plumbley, "Causal tempo tracking of audio," in International Symposium on Music Information Retrieval (ISMIR'04), 2004.

Category: Rhythm 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 = 'TempoTap'

$category

protected string $category = 'Rhythm'

$mode

protected string $mode = 'standard'

$parameters

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

$algorithmHandle

private CData|null $algorithmHandle = null

$configured

private bool $configured = false

Methods

__construct()

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

__destruct()

public __destruct() : 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