annotate test/test.java @ 28:f2914a92b553

Docs
author Chris Cannam
date Mon, 19 Nov 2012 15:12:44 +0000
parents cd430fbf6795
children 7d1118b3860d
rev   line source
Chris@0 1
Chris@16 2 import java.util.ArrayList;
Chris@16 3 import java.util.TreeMap;
Chris@19 4 import java.util.Map;
Chris@19 5 import java.util.List;
Chris@18 6 import java.lang.RuntimeException;
Chris@16 7
Chris@22 8 import org.vamp_plugins.PluginLoader;
Chris@22 9 import org.vamp_plugins.Plugin;
Chris@22 10 import org.vamp_plugins.ParameterDescriptor;
Chris@22 11 import org.vamp_plugins.OutputDescriptor;
Chris@22 12 import org.vamp_plugins.Feature;
Chris@22 13 import org.vamp_plugins.RealTime;
Chris@22 14
Chris@0 15 public class test
Chris@0 16 {
Chris@19 17 private static void printFeatures(Map<Integer, ArrayList<Feature>> features) {
Chris@19 18 for (Map.Entry<Integer, ArrayList<Feature>> mi : features.entrySet()) {
Chris@19 19 System.out.print(mi.getKey() + ": ");
Chris@19 20 for (Feature li : mi.getValue()) {
Chris@19 21 System.out.print("[" + li.timestamp + "= ");
Chris@19 22 for (float v : li.values) {
Chris@19 23 System.out.print(v + " ");
Chris@19 24 }
Chris@19 25 System.out.print("] (\"");
Chris@19 26 System.out.print(li.label);
Chris@19 27 System.out.print("\") ");
Chris@19 28 }
Chris@19 29 System.out.println("");
Chris@19 30 }
Chris@19 31 }
Chris@19 32
Chris@0 33 public static void main(String[] args) {
Chris@0 34
Chris@0 35 // This is a plugin we know we have installed
Chris@6 36 // String key = "vamp-example-plugins:percussiononsets";
Chris@7 37 String key = "qm-vamp-plugins:qm-onsetdetector";
Chris@0 38
Chris@0 39 PluginLoader loader = PluginLoader.getInstance();
Chris@0 40
Chris@24 41 String[] plugins = loader.listPlugins();
Chris@24 42 System.out.println("We know " + plugins.length + " plugins");
Chris@24 43 for (int i = 0; i < plugins.length; ++i) {
Chris@24 44 System.out.println(i + ": " + plugins[i]);
Chris@24 45 }
Chris@24 46
Chris@0 47 try {
Chris@0 48 Plugin p = loader.loadPlugin(key, 44100);
Chris@24 49 String[] cat = loader.getPluginCategory(key);
Chris@24 50 System.out.print("category: ");
Chris@24 51 for (int i = 0; i < cat.length; ++i) {
Chris@24 52 System.out.print(cat[i]);
Chris@24 53 if (i+1 < cat.length) System.out.print(" > ");
Chris@24 54 }
Chris@24 55 System.out.println("");
Chris@9 56 System.out.println("identifier: " + p.getIdentifier());
Chris@9 57 System.out.println("name: " + p.getName());
Chris@9 58 System.out.println("description: " + p.getDescription());
Chris@9 59 System.out.println("version: " + p.getPluginVersion());
Chris@5 60 Plugin.InputDomain domain = p.getInputDomain();
Chris@5 61 if (domain == Plugin.InputDomain.TimeDomain) {
Chris@5 62 System.out.println("This is a time-domain plugin");
Chris@5 63 } else {
Chris@5 64 System.out.println("This is a frequency-domain plugin");
Chris@5 65 }
Chris@9 66 ParameterDescriptor[] params = p.getParameterDescriptors();
Chris@9 67 System.out.println("Plugin has " + params.length + " parameters(s)");
Chris@9 68 for (int i = 0; i < params.length; ++i) {
Chris@9 69 System.out.println(i + ": " + params[i].identifier + " (" + params[i].name + ")");
Chris@9 70 }
Chris@6 71 String[] progs = p.getPrograms();
Chris@6 72 System.out.println("Plugin has " + progs.length + " program(s)");
Chris@6 73 for (int i = 0; i < progs.length; ++i) {
Chris@6 74 System.out.println(i + ": " + progs[i]);
Chris@6 75 }
Chris@7 76 OutputDescriptor[] outputs = p.getOutputDescriptors();
Chris@7 77 System.out.println("Plugin has " + outputs.length + " output(s)");
Chris@7 78 for (int i = 0; i < outputs.length; ++i) {
Chris@7 79 System.out.println(i + ": " + outputs[i].identifier + " (sample type: " + outputs[i].sampleType + ")");
Chris@7 80 }
Chris@16 81
Chris@18 82 boolean b = p.initialise(1, 1024, 1024);
Chris@16 83 System.out.println("Plugin initialise returned " + b);
Chris@18 84 if (!b) {
Chris@18 85 throw new RuntimeException("Plugin initialise failed");
Chris@18 86 }
Chris@16 87
Chris@17 88 float[][] buffers = new float[1][1024];
Chris@17 89 for (int block = 0; block < 1024; ++block) {
Chris@17 90 for (int i = 0; i < 1024; ++i) {
Chris@17 91 buffers[0][i] = 0.0f;
Chris@17 92 }
Chris@17 93 if (block == 512) {
Chris@19 94 buffers[0][0] = 0.5f;
Chris@19 95 buffers[0][1] = -0.5f;
Chris@17 96 }
Chris@17 97 RealTime timestamp = RealTime.frame2RealTime(block * 1024, 44100);
Chris@18 98 TreeMap<Integer, ArrayList<Feature>>
Chris@17 99 features = p.process(buffers, timestamp);
Chris@19 100
Chris@21 101 timestamp.dispose();
Chris@21 102
Chris@19 103 printFeatures(features);
Chris@17 104 }
Chris@16 105
Chris@18 106 TreeMap<Integer, ArrayList<Feature>>
Chris@16 107 features = p.getRemainingFeatures();
Chris@19 108
Chris@19 109 System.out.println("Results from getRemainingFeatures:");
Chris@19 110
Chris@19 111 printFeatures(features);
Chris@21 112 p.dispose();
Chris@16 113
Chris@0 114 } catch (PluginLoader.LoadFailedException e) {
Chris@0 115 System.out.println("Plugin load failed");
Chris@0 116 }
Chris@0 117 }
Chris@0 118 }
Chris@0 119