Mercurial > jmeCapture
view src/com/aurellem/capture/audio/WaveFileWriter.java @ 19:4de7988407ef
added CompositeSoundProcessor for combining SoundProcessors
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sat, 29 Oct 2011 15:16:06 -0700 |
parents | 8a6b1684f536 |
children | b643413c3aba |
line wrap: on
line source
1 package com.aurellem.capture.audio;3 import java.io.ByteArrayInputStream;4 import java.io.File;5 import java.io.IOException;6 import java.nio.ByteBuffer;7 import java.util.Vector;9 import javax.sound.sampled.AudioFileFormat;10 import javax.sound.sampled.AudioFormat;11 import javax.sound.sampled.AudioInputStream;12 import javax.sound.sampled.AudioSystem;14 public class WaveFileWriter implements SoundProcessor {16 public Vector<Byte> fullWaveData = new Vector<Byte>();17 public File targetFile;19 public WaveFileWriter(File targetFile){20 this.targetFile = targetFile;21 }23 public void cleanup() {24 byte[] data = new byte[this.fullWaveData.size()];26 for (int i = 0; i < this.fullWaveData.size(); i++){27 data[i] = this.fullWaveData.get(i);}29 ByteArrayInputStream input = new ByteArrayInputStream(data);30 AudioFormat format = new AudioFormat(44100.0f, 32, 1, true, false);31 AudioInputStream audioInput = new AudioInputStream(input, format, data.length / 4 );32 try {AudioSystem.write(audioInput, AudioFileFormat.Type.WAVE, targetFile);}33 catch (IOException e) {e.printStackTrace();}35 }38 public void process(ByteBuffer audioSamples, int numSamples) {39 for (int i = 0; i<numSamples; i++){40 Byte b = audioSamples.get(i);41 fullWaveData.add(b);42 }43 }45 }