Mercurial > hg > jvamp
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)