annotate test/test.java @ 55:2b8e1416327d tip

Just change a couple of include guards
author Chris Cannam
date Wed, 16 Nov 2016 09:12:46 +0000
parents 2db3640905ef
children
rev   line source
Chris@37 1 /*
Chris@37 2 jVamp
Chris@37 3
Chris@37 4 A Java host interface for Vamp audio analysis plugins
Chris@37 5
Chris@37 6 Centre for Digital Music, Queen Mary, University of London.
Chris@37 7 Copyright 2012 Chris Cannam and QMUL.
Chris@37 8
Chris@37 9 Permission is hereby granted, free of charge, to any person
Chris@37 10 obtaining a copy of this software and associated documentation
Chris@37 11 files (the "Software"), to deal in the Software without
Chris@37 12 restriction, including without limitation the rights to use, copy,
Chris@37 13 modify, merge, publish, distribute, sublicense, and/or sell copies
Chris@37 14 of the Software, and to permit persons to whom the Software is
Chris@37 15 furnished to do so, subject to the following conditions:
Chris@37 16
Chris@37 17 The above copyright notice and this permission notice shall be
Chris@37 18 included in all copies or substantial portions of the Software.
Chris@37 19
Chris@37 20 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
Chris@37 21 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
Chris@37 22 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
Chris@37 23 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
Chris@37 24 ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
Chris@37 25 CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
Chris@37 26 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Chris@37 27
Chris@37 28 Except as contained in this notice, the names of the Centre for
Chris@37 29 Digital Music; Queen Mary, University of London; and Chris Cannam
Chris@37 30 shall not be used in advertising or otherwise to promote the sale,
Chris@37 31 use or other dealings in this Software without prior written
Chris@37 32 authorization.
Chris@37 33 */
Chris@0 34
Chris@19 35 import java.util.Map;
Chris@19 36 import java.util.List;
Chris@18 37 import java.lang.RuntimeException;
Chris@16 38
Chris@22 39 import org.vamp_plugins.PluginLoader;
Chris@22 40 import org.vamp_plugins.Plugin;
Chris@22 41 import org.vamp_plugins.ParameterDescriptor;
Chris@22 42 import org.vamp_plugins.OutputDescriptor;
Chris@22 43 import org.vamp_plugins.Feature;
Chris@22 44 import org.vamp_plugins.RealTime;
Chris@22 45
Chris@0 46 public class test
Chris@0 47 {
Chris@41 48 private static void printFeatures(Map<Integer, List<Feature>> features) {
Chris@41 49 for (Map.Entry<Integer, List<Feature>> mi : features.entrySet()) {
Chris@19 50 System.out.print(mi.getKey() + ": ");
Chris@19 51 for (Feature li : mi.getValue()) {
Chris@19 52 System.out.print("[" + li.timestamp + "= ");
Chris@19 53 for (float v : li.values) {
Chris@19 54 System.out.print(v + " ");
Chris@19 55 }
Chris@19 56 System.out.print("] (\"");
Chris@19 57 System.out.print(li.label);
Chris@19 58 System.out.print("\") ");
Chris@19 59 }
Chris@19 60 System.out.println("");
Chris@19 61 }
Chris@19 62 }
Chris@19 63
Chris@0 64 public static void main(String[] args) {
Chris@0 65
Chris@0 66 // This is a plugin we know we have installed
Chris@6 67 // String key = "vamp-example-plugins:percussiononsets";
Chris@7 68 String key = "qm-vamp-plugins:qm-onsetdetector";
Chris@0 69
Chris@0 70 PluginLoader loader = PluginLoader.getInstance();
Chris@0 71
Chris@24 72 String[] plugins = loader.listPlugins();
Chris@24 73 System.out.println("We know " + plugins.length + " plugins");
Chris@24 74 for (int i = 0; i < plugins.length; ++i) {
Chris@24 75 System.out.println(i + ": " + plugins[i]);
Chris@24 76 }
Chris@24 77
Chris@0 78 try {
Chris@29 79 Plugin p = loader.loadPlugin(key, 44100, PluginLoader.AdapterFlags.ADAPT_ALL);
Chris@24 80 String[] cat = loader.getPluginCategory(key);
Chris@24 81 System.out.print("category: ");
Chris@24 82 for (int i = 0; i < cat.length; ++i) {
Chris@24 83 System.out.print(cat[i]);
Chris@24 84 if (i+1 < cat.length) System.out.print(" > ");
Chris@24 85 }
Chris@24 86 System.out.println("");
Chris@9 87 System.out.println("identifier: " + p.getIdentifier());
Chris@9 88 System.out.println("name: " + p.getName());
Chris@9 89 System.out.println("description: " + p.getDescription());
Chris@9 90 System.out.println("version: " + p.getPluginVersion());
Chris@5 91 Plugin.InputDomain domain = p.getInputDomain();
Chris@29 92 if (domain == Plugin.InputDomain.TIME_DOMAIN) {
Chris@5 93 System.out.println("This is a time-domain plugin");
Chris@5 94 } else {
Chris@5 95 System.out.println("This is a frequency-domain plugin");
Chris@5 96 }
Chris@9 97 ParameterDescriptor[] params = p.getParameterDescriptors();
Chris@9 98 System.out.println("Plugin has " + params.length + " parameters(s)");
Chris@9 99 for (int i = 0; i < params.length; ++i) {
Chris@9 100 System.out.println(i + ": " + params[i].identifier + " (" + params[i].name + ")");
Chris@9 101 }
Chris@6 102 String[] progs = p.getPrograms();
Chris@6 103 System.out.println("Plugin has " + progs.length + " program(s)");
Chris@6 104 for (int i = 0; i < progs.length; ++i) {
Chris@6 105 System.out.println(i + ": " + progs[i]);
Chris@6 106 }
Chris@7 107 OutputDescriptor[] outputs = p.getOutputDescriptors();
Chris@7 108 System.out.println("Plugin has " + outputs.length + " output(s)");
Chris@7 109 for (int i = 0; i < outputs.length; ++i) {
Chris@7 110 System.out.println(i + ": " + outputs[i].identifier + " (sample type: " + outputs[i].sampleType + ")");
Chris@7 111 }
Chris@16 112
Chris@18 113 boolean b = p.initialise(1, 1024, 1024);
Chris@16 114 System.out.println("Plugin initialise returned " + b);
Chris@18 115 if (!b) {
Chris@18 116 throw new RuntimeException("Plugin initialise failed");
Chris@18 117 }
Chris@16 118
Chris@17 119 float[][] buffers = new float[1][1024];
Chris@17 120 for (int block = 0; block < 1024; ++block) {
Chris@17 121 for (int i = 0; i < 1024; ++i) {
Chris@17 122 buffers[0][i] = 0.0f;
Chris@17 123 }
Chris@17 124 if (block == 512) {
Chris@19 125 buffers[0][0] = 0.5f;
Chris@19 126 buffers[0][1] = -0.5f;
Chris@17 127 }
Chris@17 128 RealTime timestamp = RealTime.frame2RealTime(block * 1024, 44100);
Chris@49 129 Map<Integer, List<Feature>> features = p.process(buffers, timestamp);
Chris@21 130
Chris@19 131 printFeatures(features);
Chris@17 132 }
Chris@16 133
Chris@41 134 Map<Integer, List<Feature>>
Chris@16 135 features = p.getRemainingFeatures();
Chris@19 136
Chris@19 137 System.out.println("Results from getRemainingFeatures:");
Chris@19 138
Chris@19 139 printFeatures(features);
Chris@21 140 p.dispose();
Chris@16 141
Chris@0 142 } catch (PluginLoader.LoadFailedException e) {
Chris@0 143 System.out.println("Plugin load failed");
Chris@0 144 }
Chris@0 145 }
Chris@0 146 }
Chris@0 147