# HG changeset patch # User Chris Cannam # Date 1367063472 -3600 # Node ID 476a03ca013bc9a54b8f3c8b07deea3348524c33 # Parent 9ade635dbad651906d7b52bd0f504dc620f40aca Start on feature extractors diff -r 9ade635dbad6 -r 476a03ca013b yetilab/feature/features.yeti --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/yetilab/feature/features.yeti Sat Apr 27 12:51:12 2013 +0100 @@ -0,0 +1,35 @@ + +module yetilab.feature.features; + +cplx = load yetilab.block.complex; +fr = load yetilab.stream.framer; + +specdiff frame1 frame2 = + sum (map2 do a b: abs(cplx.magnitude b - cplx.magnitude a) done + frame1 frame2); + +emptyFrameFor frames = + if empty? frames then array [] else cplx.zeros (length (head frames)) fi; + +features featureFunc frames = + (featuresOf prev frames = + case frames of + frame::rest: featureFunc prev frame :. \(featuresOf frame rest); + _: []; + esac; + featuresOf (emptyFrameFor frames) frames); + +featuresOfFile featureFunc file = + case fr.frequencyDomainFramesOfFile { framesize = 1024, hop = 512 } file of + Frames ff: + Features (features featureFunc ff); + Error e: + Error e; + esac; + +{ + specdiff, + features, + featuresOfFile +} +