package com.ordrumbox.core.orsnd;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import com.ordrumbox.core.description.OrPattern;
import com.ordrumbox.core.sample.ExportSample;
import com.ordrumbox.core.sample.interfaces.INormSample;
public class RenderPattern extends FileRendering {
private OrPattern orPattern;
public RenderPattern(String filename, OrPattern orPattern, int tempo) {
setFilename(filename);
this.orPattern = orPattern; // used for filename
setTempo(tempo); // used for filename
}
// ---------------------------------------------------------------------
public void exportPatternToAudioFile() {
// writeBuffer(LivePattern.getInstance().getPatternAsWavFormat(orPattern));
}
// ---------------------------------------------------------------------------
private void writeBuffer(byte[] buffer) {
AudioInputStream audioInputStream = new AudioInputStream(new ByteArrayInputStream(buffer), new AudioFormat(
(float) ExportSample.getSampleRate(), INormSample.SAMPLE_SIZE_IN_BITS, INormSample.NB_CHANNELS, true, false),
(long) (buffer.length / INormSample.BYTES_PER_SAMPLE));
File outputFile = new File(getFilename());
try {
AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE, outputFile);
} catch (IOException e) {
e.printStackTrace();
}
// OrLog.print(Level.INFO, "\n save file" + getFilename() + " Written bytes: " + nWrittenBytes);
}
public void exportBufferToFile(BufferedOutputStream bufferedOutputStream) {
// byte[] buffer = LivePattern.getInstance().getPatternAsWavFormat(getPattern());
// try {
// bufferedOutputStream.write(buffer);
// } catch (IOException e) {
// e.printStackTrace();
// }
}
}
|