changeset 9:aa9860e1af8a

Implement getParameterDescriptors
author Chris Cannam
date Thu, 26 Jan 2012 15:44:50 +0000
parents f3fc15d737eb
children d791e1324ab6
files org/vamp_plugins/test.java src/Plugin.cpp
diffstat 2 files changed, 38 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/org/vamp_plugins/test.java	Thu Jan 26 14:47:17 2012 +0000
+++ b/org/vamp_plugins/test.java	Thu Jan 26 15:44:50 2012 +0000
@@ -13,16 +13,21 @@
 	
 	try {
 	    Plugin p = loader.loadPlugin(key, 44100);
-	    System.out.println("identifier: " + p.getIdentifier() + "; " +
-			       "name: " + p.getName() + "; " + 
-			       "description: " + p.getDescription() + "; " +
-			       "version: " + p.getPluginVersion());
+	    System.out.println("identifier: " + p.getIdentifier());
+	    System.out.println("name: " + p.getName());
+	    System.out.println("description: " + p.getDescription());
+	    System.out.println("version: " + p.getPluginVersion());
 	    Plugin.InputDomain domain = p.getInputDomain();
 	    if (domain == Plugin.InputDomain.TimeDomain) {
 		System.out.println("This is a time-domain plugin");
 	    } else {
 		System.out.println("This is a frequency-domain plugin");
 	    }
+	    ParameterDescriptor[] params = p.getParameterDescriptors();
+	    System.out.println("Plugin has " + params.length + " parameters(s)");
+	    for (int i = 0; i < params.length; ++i) {
+		System.out.println(i + ": " + params[i].identifier + " (" + params[i].name + ")");
+	    }
 	    String[] progs = p.getPrograms();
 	    System.out.println("Plugin has " + progs.length + " program(s)");
 	    for (int i = 0; i < progs.length; ++i) {
--- a/src/Plugin.cpp	Thu Jan 26 14:47:17 2012 +0000
+++ b/src/Plugin.cpp	Thu Jan 26 15:44:50 2012 +0000
@@ -60,6 +60,35 @@
     return p->getPluginVersion();
 }
 
+jobjectArray
+Java_org_vamp_1plugins_Plugin_getParameterDescriptors(JNIEnv *env, jobject obj)
+{
+    Plugin *p = getHandle<Plugin>(env, obj);
+    PluginBase::ParameterList params = p->getParameterDescriptors();
+    jclass descClass = env->FindClass("org/vamp_plugins/ParameterDescriptor");
+    jobjectArray result = env->NewObjectArray(params.size(), descClass, 0);
+    for (int i = 0; i < params.size(); ++i) {
+
+	jmethodID ctor = env->GetMethodID(descClass, "<init>", "()V");
+	jobject desc = env->NewObject(descClass, ctor);
+
+	setStringField(env, desc, "identifier", params[i].identifier);
+	setStringField(env, desc, "name", params[i].name);
+	setStringField(env, desc, "description", params[i].description);
+	setStringField(env, desc, "unit", params[i].unit);
+	setFloatField(env, desc, "minValue", params[i].minValue);
+	setFloatField(env, desc, "maxValue", params[i].maxValue);
+	setFloatField(env, desc, "defaultValue", params[i].defaultValue);
+	setBooleanField(env, desc, "isQuantized", params[i].isQuantized);
+	setFloatField(env, desc, "quantizeStep", params[i].quantizeStep);
+	setStringArrayField(env, desc, "valueNames", params[i].valueNames);
+
+	env->SetObjectArrayElement(result, i, desc);
+    }
+
+    return result;
+}
+
 jfloat
 Java_org_vamp_1plugins_Plugin_getParameter(JNIEnv *env, jobject obj,
 					   jstring param)