import java.util.ArrayList; import jm.util.Write; public class WavFileWriter { private int channels = 0; private ArrayList<Float>[] channelData; private String filename; private double[] azArray; private double[] elArray; public WavFileWriter(String filename, int channels) { this.channels = channels; this.filename = filename; this.channelData = new ArrayList[channels]; for(int i = 0; i < channels; i++) { this.channelData[i] = new ArrayList<Float>(); } this.azArray = new double[channels]; this.elArray = new double[channels]; } public void setListenerAngleForDelayLine(int channel, double az, double el) { this.azArray[channel] = az; this.elArray[channel] = el; } public void appendData(int channel, float sample) { this.channelData[channel].add(sample); } public void writeData() { /*float[] samples = new float[this.channels*this.channelData[0].size()]; for(int j = 0; j < this.channelData[0].size(); j++) { for(int i = 0; i < channels; i++) { samples[(j*this.channels)+i] = this.channelData[i].get(j); } } Write.audio(samples, filename, this.channels, 44100, 32);*/ float[] samples = new float[this.channelData[0].size()]; float max = -1.0f; int i = 0; for(float sample : this.channelData[0]) { samples[i] = sample; if(Math.abs(sample) > max) { max = Math.abs(sample); } i++; } i = 0; for(float s: samples) { samples[i] = 1.0f/max*s; i++; } Write.audio(samples, filename, 1, 44100, 32); } }