# HG changeset patch # User Chris Cannam # Date 1362400099 0 # Node ID 6e11a36c335a38937444ada0cb2177ed50a1b6d4 # Parent ca74e2917a3a3377b3f394479b3147502916edea Toward using Vamp RDF data in Vamp module. Some type problems at the moment diff -r ca74e2917a3a -r 6e11a36c335a vamp.yeti --- a/vamp.yeti Thu Feb 28 22:25:32 2013 +0000 +++ b/vamp.yeti Mon Mar 04 12:28:19 2013 +0000 @@ -13,6 +13,9 @@ block = load block; fr = load framer; af = load audiofile; +vamprdf = load vamprdf; + +store = load yertle.store; realTime r is ~RealTime -> number = r#sec() + (r#nsec() / 1000000000); @@ -42,6 +45,18 @@ for kk do k: s[numberOf k] := featureList fs#get(k) done; s); +standardStore = store.newRdfStore (); +var standardStoreLoaded = false; + +getStandardStore () = + (synchronized standardStore do: + if not standardStoreLoaded then + vamprdf.loadSystemVampRdf standardStore; + standardStoreLoaded := true + fi; + standardStore + done); + getPluginPath () = (try map string PluginLoader#getInstance()#getPluginPath(); @@ -113,7 +128,7 @@ Unknown (); fi; -outputDescriptor od is ~OutputDescriptor -> 'a = { +outputDescriptor rdfData od is 'a -> ~OutputDescriptor -> 'b = { identifier = od#identifier, name = od#name, description = od#description, @@ -125,10 +140,13 @@ sampleType = sampleType od#sampleType, sampleRate = od#sampleRate, hasDuration = od#hasDuration, + computes = case rdfData of Some data: data.computes; None (): Unknown () esac, get inferredStructure () = structureOf od, }; -plugin key p is string -> ~Plugin -> 'a = { +plugin key p is string -> ~Plugin -> 'a = + (rdfData = vamprdf.pluginDataByKey (getStandardStore ()) key; + { plugin = p, key, get apiVersion () = p#getVampApiVersion(), @@ -139,6 +157,7 @@ get copyright () = p#getCopyright(), get version () = p#getPluginVersion(), get category () = PluginLoader#getInstance()#getPluginCategory(key), + get infoURL () = case rdfData of Some data: data.infoURL; None (): "" esac, get parameters () = array (map parameterDescriptor p#getParameterDescriptors()), parameter identifier = p#getParameter(identifier), setParameter identifier value = p#setParameter(identifier, value), @@ -152,12 +171,12 @@ get maxChannelCount () = p#getMaxChannelCount(), initialise { channels, blocksize, hop } = p#initialise(channels, hop, blocksize), reset () = p#reset(), - get outputs () = array (map outputDescriptor p#getOutputDescriptors()), + get outputs () = array (map (outputDescriptor rdfData) p#getOutputDescriptors()), process blocks time is 'a -> ~RealTime -> 'b = featureSet p#process((map block.floats blocks) as ~float[][], 0, time), getRemainingFeatures () = featureSet p#getRemainingFeatures(), dispose () = p#dispose(), - }; + }); featuresFromSet outputNo f = if outputNo in f then f[outputNo] else [] fi; diff -r ca74e2917a3a -r 6e11a36c335a vamprdf.yeti --- a/vamprdf.yeti Thu Feb 28 22:25:32 2013 +0000 +++ b/vamprdf.yeti Mon Mar 04 12:28:19 2013 +0000 @@ -1,13 +1,20 @@ module vamprdf; -vamp = load vamp; - read = load yertle.read; { newRdfStore } = load yertle.store; import java.io: File; +import org.vamp_plugins: PluginLoader; + +import java.lang: UnsatisfiedLinkError; + +getPluginPath () = + (try map string PluginLoader#getInstance()#getPluginPath(); + catch UnsatisfiedLinkError e: []; + yrt); + systemVampRdfFiles () = concat (map do p: @@ -19,7 +26,7 @@ (strEnds? lc ".n3") or (strEnds? lc ".nt")) done (listDirectory false p)) - done (vamp.pluginPath)); + done (getPluginPath ())); addVampPrefixes store = (store.addPrefix "vamp" "http://purl.org/ontology/vamp/"; @@ -67,7 +74,12 @@ subjects = map (.s); -iriTypes = map do t: case t of IRI iri: IRI iri; Blank n: Blank n esac done; +iriTypes = + map do t: + case t of + IRI iri: IRI iri; + Blank n: Blank n; + esac done; iriSubjects = iriTypes . subjects; @@ -208,7 +220,7 @@ //!!! and some other properties }); -pluginData store pluginNode = +pluginDataByNode store pluginNode = (tprop abbr = textProperty store pluginNode abbr; nprop abbr = try number (textProperty store pluginNode abbr); catch Exception _: 0 yrt; @@ -263,12 +275,19 @@ done matches)), }); +pluginDataByKey store key = + case pluginNodesByKey store key of + node::others: Some (pluginDataByNode store node); + _: None () + esac; + { loadSystemVampRdf, loadGlobalVampRdf, allPluginNodes, allLibraryNodes, pluginNodesByKey, -pluginData, +pluginDataByNode, +pluginDataByKey, }