@prefix mo: .
@prefix math: .
@prefix log: .
@prefix af: .
@prefix ctr: .
@prefix qm-vamp: .
@prefix xsd: .
@prefix tl: .
@prefix vamp: .
@prefix sig: .
@prefix sim: .
# description of the mfcc means transform
_:means_transform a vamp:Transform ;
vamp:plugin qm-vamp:qm-similarity ;
vamp:step_size "2048"^^xsd:int ;
vamp:block_size "4096"^^xsd:int ;
vamp:sample_rate "44100"^^xsd:float ;
vamp:parameter_binding [
vamp:parameter [ vamp:identifier "featureType" ] ;
vamp:value "1"^^xsd:float ;
] ;
vamp:output qm-vamp:qm-similarity_output_means .
# description of the mfcc variance transform
_:vars_transform a vamp:Transform ;
vamp:plugin ;
vamp:step_size "2048"^^xsd:int ;
vamp:block_size "4096"^^xsd:int ;
vamp:sample_rate "44100"^^xsd:float ;
vamp:parameter_binding [
vamp:parameter [ vamp:identifier "featureType" ] ;
vamp:value "1"^^xsd:float ;
] ;
vamp:output qm-vamp:qm-similarity_output_variances .
{ ?track1 mo:available_as ?af1 .
?af1 mo:encodes ?signal1 .
# signal has a timeline
?signal1 mo:time [
a tl:Interval ;
tl:onTimeLine :signal_timeline_1
] .
# map continuous timeline to discrete timeline
:feature_timeline_1 a tl:DiscreteTimeLine .
:feature_timeline_map_1 a tl:UniformSamplingWindowingMap ;
tl:rangeTimeLine :feature_timeline_1 ;
tl:domainTimeLine :signal_timeline_1 ;
tl:sampleRate "44100"^^xsd:int ;
tl:windowLength "4096"^^xsd:int ;
tl:hopSize "2048"^^xsd:int .
# the actual mfcc means features
?feature_means1 a af:SimilarityMeans;
mo:time [
a tl:Interval ;
tl:onTimeLine :feature_timeline_1 ; ] ;
vamp:computed_by _:means_transform ;
af:dimensions "20 0" ;
af:value ?means1 .
# the mfcc variance features
?feature_vars1 a af:SimilarityVariances ;
mo:time [
a tl:Interval ;
tl:onTimeLine :feature_timeline_1 ;
] ;
vamp:computed_by _:vars_transform ;
af:dimensions "20 0" ;
af:value ?vars1 .
}
ctr:cc
{ ?track2 mo:available_as ?af2 .
?af2 mo:encodes ?signal2 .
# signal has a timeline
?signal2 mo:time [
a tl:Interval ;
tl:onTimeLine :signal_timeline_2
] .
# map continuous timeline to discrete timeline
:feature_timeline_2 a tl:DiscreteTimeLine .
:feature_timeline_map_2 a tl:UniformSamplingWindowingMap ;
tl:rangeTimeLine :feature_timeline_2 ;
tl:domainTimeLine :signal_timeline_2 ;
tl:sampleRate "44100"^^xsd:int ;
tl:windowLength "4096"^^xsd:int ;
tl:hopSize "2048"^^xsd:int .
# the actual mfcc means features
?feature_means1 a af:SimilarityMeans;
mo:time [
a tl:Interval ;
tl:onTimeLine :feature_timeline_2 ; ] ;
vamp:computed_by _:means_transform ;
af:dimensions "20 0" ;
af:value ?means2 .
# the mfcc variance features
?feature_vars2 a af:SimilarityVariances ;
mo:time [
a tl:Interval ;
tl:onTimeLine :feature_timeline_2 ;
] ;
vamp:computed_by _:vars_transform ;
af:dimensions "20 0" ;
af:value ?vars2 .
} .
(?mfcc1 ?vars1 ?mfcc2 ?vars2) sig:kl-div ?div .
{ ?div math:lessThan "10.0" } log:implies
{ _:timbreSimilarityStatement
a sim:Similarity ;
sim:element ?track1 ;
sim:element ?track2 ;
sim:distance ?weight .
} .