// Path: src/main/java/org/harmony_analyser/application/visualizations/VisualizationData.java
// public class VisualizationData {
// 	private String pluginName;
// 	private List<Float> timestamps;
// 	private List<Float> values;
// 	private List<String> labels;
// 
// 	public final static VisualizationData EMPTY_VISUALIZATION_DATA = new VisualizationData();
// 
// 	public VisualizationData() {
// 		setTimestamps(new ArrayList<>());
// 		setValues(new ArrayList<>());
// 		setLabels(new ArrayList<>());
// 	}
// 
// 	List<Float> getTimestamps() {
// 		return timestamps;
// 	}
// 
// 	public List<Float> getValues() {
// 		return values;
// 	}
// 
// 	List<String> getLabels() {
// 		return labels;
// 	}
// 
// 	String getPluginName() {
// 		return pluginName;
// 	}
// 
// 	public void setTimestamps(List<Float> timestamps) {
// 		this.timestamps = timestamps;
// 	}
// 
// 	public void setValues(List<Float> values) {
// 		this.values = values;
// 	}
// 
// 	public void setLabels(List<String> labels) {
// 		this.labels = labels;
// 	}
// 
// 	public void setPluginName(String pluginName) {
// 		this.pluginName = pluginName;
// 	}
// }
// 
// 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.VisualizationData;
import org.harmony_analyser.jharmonyanalyser.chroma_analyser.Chroma;
import org.harmony_analyser.jharmonyanalyser.services.*;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
				}

				// bump previous timestamp-value and continue
				previousTimestamp = timestamp;
				previousValue = value;
				index++;
			} else {
				// CASE 2: Timestamp difference lower than sample length
				// Omit the current timestamp-value pair and continue with the next one, leaving previous timestamp-value pair
				index++;
			}
		}

		// 4. Rewrite input file using new timestamps and values
		index = 0;
		BufferedWriter out = new BufferedWriter(new FileWriter(inputFile));
		for (Float value : outputValuesList) {
			timestamp = outputTimestampList.get(index);
			out.write(timestamp + ": " + value + "\n");
			index++;
		}
		out.close();

		return result;
	}

	protected void setParameters() {
		samplingRate = parameters.get("samplingRate");
	}

// Path: src/main/java/org/harmony_analyser/application/visualizations/VisualizationData.java
// public class VisualizationData {
// 	private String pluginName;
// 	private List<Float> timestamps;
// 	private List<Float> values;
// 	private List<String> labels;
// 
// 	public final static VisualizationData EMPTY_VISUALIZATION_DATA = new VisualizationData();
// 
// 	public VisualizationData() {
// 		setTimestamps(new ArrayList<>());
// 		setValues(new ArrayList<>());
// 		setLabels(new ArrayList<>());
// 	}
// 
// 	List<Float> getTimestamps() {
// 		return timestamps;
// 	}
// 
// 	public List<Float> getValues() {
// 		return values;
// 	}
// 
// 	List<String> getLabels() {
// 		return labels;
// 	}
// 
// 	String getPluginName() {
// 		return pluginName;
// 	}
// 
// 	public void setTimestamps(List<Float> timestamps) {
// 		this.timestamps = timestamps;
// 	}
// 
// 	public void setValues(List<Float> values) {
// 		this.values = values;
// 	}
// 
// 	public void setLabels(List<String> labels) {
// 		this.labels = labels;
// 	}
// 
// 	public void setPluginName(String pluginName) {
// 		this.pluginName = pluginName;
// 	}
// }
// 
// 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/filters/TimeSeriesFilter.java
import org.harmony_analyser.application.visualizations.VisualizationData;
import org.harmony_analyser.jharmonyanalyser.chroma_analyser.Chroma;
import org.harmony_analyser.jharmonyanalyser.services.*;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;

				}

				// bump previous timestamp-value and continue
				previousTimestamp = timestamp;
				previousValue = value;
				index++;
			} else {
				// CASE 2: Timestamp difference lower than sample length
				// Omit the current timestamp-value pair and continue with the next one, leaving previous timestamp-value pair
				index++;
			}
		}

		// 4. Rewrite input file using new timestamps and values
		index = 0;
		BufferedWriter out = new BufferedWriter(new FileWriter(inputFile));
		for (Float value : outputValuesList) {
			timestamp = outputTimestampList.get(index);
			out.write(timestamp + ": " + value + "\n");
			index++;
		}
		out.close();

		return result;
	}

	protected void setParameters() {
		samplingRate = parameters.get("samplingRate");
	}

	public VisualizationData getDataFromOutput(String inputWavFile) {