@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 . } .