// Path: src/main/java/org/harmony_analyser/jharmonyanalyser/chroma_analyser/Chroma.java
// @SuppressWarnings({"SameParameterValue", "WeakerAccess"})
// 
// public class Chroma {
// 	public final float[] values;
// 
// 	public static final Chroma EMPTY_CHROMA = new Chroma();
// 
// 	/* Exceptions */
// 
// 	public class WrongChromaSize extends Exception {
// 		public WrongChromaSize(String message) {
// 			super(message);
// 		}
// 	}
// 
// 	public Chroma() {
// 		this.values = new float[0];
// 	}
// 
// 	public Chroma(float[] chroma) throws WrongChromaSize {
// 		this.values = new float[Chromanal.CHROMA_LENGTH];
// 		if (chroma.length != Chromanal.CHROMA_LENGTH) {
// 			throw new WrongChromaSize("Wrong Chroma size");
// 		}
// 		System.arraycopy(chroma, 0, values, 0, Chromanal.CHROMA_LENGTH - 1);
// 	}
// 
// 	/* Public / Package methods */
// 
// 	/* Private methods */
// }


import org.harmony_analyser.application.visualizations.*;
import org.harmony_analyser.jharmonyanalyser.chroma_analyser.Chroma;
import org.vamp_plugins.PluginLoader;
import java.io.*;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.*;
			List<String> wrappedPlugins = new ArrayList<>();
			for (int i = 0; i < plugins.length; ++i) {
				for (String wrapped_plugin : analysisFactory.getWrappedVampPlugins()) {
					if (plugins[i].equals(wrapped_plugin)) {
						wrappedPlugins.add(i + ": " + plugins[i] + "\n");
					}
				}
			}
			result += "\n> Implemented VAMP plugins (" + wrappedPlugins.size() + "):\n";
			for (String s : wrappedPlugins) {
				result += s;
			}
		} catch(java.lang.UnsatisfiedLinkError e) {
			return "\nWARNING: jVamp not installed on this machine, Vamp plugins are not available.";
		}
		return result;
	}

	public String getPluginName(String analysisKey) throws LoadFailedException {
		return analysisFactory.createAnalysis(analysisKey).name;
	}

	public String getPluginDescription(String analysisKey) throws LoadFailedException {
		return analysisFactory.createAnalysis(analysisKey).description;
	}

	public String printParameters(String analysisKey) throws LoadFailedException {
		return analysisFactory.createAnalysis(analysisKey).printParameters();
	}

// Path: src/main/java/org/harmony_analyser/jharmonyanalyser/chroma_analyser/Chroma.java
// @SuppressWarnings({"SameParameterValue", "WeakerAccess"})
// 
// public class Chroma {
// 	public final float[] values;
// 
// 	public static final Chroma EMPTY_CHROMA = new Chroma();
// 
// 	/* Exceptions */
// 
// 	public class WrongChromaSize extends Exception {
// 		public WrongChromaSize(String message) {
// 			super(message);
// 		}
// 	}
// 
// 	public Chroma() {
// 		this.values = new float[0];
// 	}
// 
// 	public Chroma(float[] chroma) throws WrongChromaSize {
// 		this.values = new float[Chromanal.CHROMA_LENGTH];
// 		if (chroma.length != Chromanal.CHROMA_LENGTH) {
// 			throw new WrongChromaSize("Wrong Chroma size");
// 		}
// 		System.arraycopy(chroma, 0, values, 0, Chromanal.CHROMA_LENGTH - 1);
// 	}
// 
// 	/* Public / Package methods */
// 
// 	/* Private methods */
// }


// Path: src/main/java/org/harmony_analyser/jharmonyanalyser/services/AudioAnalyser.java
import org.harmony_analyser.application.visualizations.*;
import org.harmony_analyser.jharmonyanalyser.chroma_analyser.Chroma;
import org.vamp_plugins.PluginLoader;
import java.io.*;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.*;

			List<String> wrappedPlugins = new ArrayList<>();
			for (int i = 0; i < plugins.length; ++i) {
				for (String wrapped_plugin : analysisFactory.getWrappedVampPlugins()) {
					if (plugins[i].equals(wrapped_plugin)) {
						wrappedPlugins.add(i + ": " + plugins[i] + "\n");
					}
				}
			}
			result += "\n> Implemented VAMP plugins (" + wrappedPlugins.size() + "):\n";
			for (String s : wrappedPlugins) {
				result += s;
			}
		} catch(java.lang.UnsatisfiedLinkError e) {
			return "\nWARNING: jVamp not installed on this machine, Vamp plugins are not available.";
		}
		return result;
	}

	public String getPluginName(String analysisKey) throws LoadFailedException {
		return analysisFactory.createAnalysis(analysisKey).name;
	}

	public String getPluginDescription(String analysisKey) throws LoadFailedException {
		return analysisFactory.createAnalysis(analysisKey).description;
	}

	public String printParameters(String analysisKey) throws LoadFailedException {
		return analysisFactory.createAnalysis(analysisKey).printParameters();
	}

	public String runAnalysis(String inputFile, String analysisKey, boolean force, boolean verbose) throws AudioAnalyser.IncorrectInputException, OutputAlreadyExists, IOException, LoadFailedException, Chroma.WrongChromaSize {