Mercurial > jmeCapture
diff src/com/aurellem/capture/audio/WaveFileWriter.java @ 9:5dfc9e768816
moved files
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Wed, 26 Oct 2011 08:54:12 -0700 |
parents | |
children | 8a6b1684f536 |
line wrap: on
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/com/aurellem/capture/audio/WaveFileWriter.java Wed Oct 26 08:54:12 2011 -0700 1.3 @@ -0,0 +1,46 @@ 1.4 +package com.aurellem.capture.audio; 1.5 + 1.6 +import java.io.ByteArrayInputStream; 1.7 +import java.io.File; 1.8 +import java.io.IOException; 1.9 +import java.nio.ByteBuffer; 1.10 +import java.util.Vector; 1.11 + 1.12 +import javax.sound.sampled.AudioFileFormat; 1.13 +import javax.sound.sampled.AudioFormat; 1.14 +import javax.sound.sampled.AudioInputStream; 1.15 +import javax.sound.sampled.AudioSystem; 1.16 + 1.17 +public class WaveFileWriter implements SoundProcessor { 1.18 + 1.19 + public Vector<Byte> fullWaveData = new Vector<Byte>(); 1.20 + public File targetFile; 1.21 + 1.22 + public WaveFileWriter(File targetFile){ 1.23 + this.targetFile = targetFile; 1.24 + } 1.25 + 1.26 + public void cleanup() { 1.27 + byte[] data = new byte[this.fullWaveData.size()]; 1.28 + 1.29 + for (int i = 0; i < this.fullWaveData.size(); i++){ 1.30 + data[i] = this.fullWaveData.get(i);} 1.31 + 1.32 + 1.33 + ByteArrayInputStream input = new ByteArrayInputStream(data); 1.34 + AudioFormat format = new AudioFormat(44100.0f, 32, 1, true, false); 1.35 + AudioInputStream audioInput = new AudioInputStream(input, format, data.length / 4 ); 1.36 + try {AudioSystem.write(audioInput, AudioFileFormat.Type.WAVE, targetFile);} 1.37 + catch (IOException e) {e.printStackTrace();} 1.38 + 1.39 + } 1.40 + 1.41 + 1.42 + public void process(ByteBuffer audioSamples, int numSamples) { 1.43 + for (int i = 0; i<numSamples; i++){ 1.44 + Byte b = audioSamples.get(i); 1.45 + fullWaveData.add(b); 1.46 + } 1.47 + } 1.48 + 1.49 +}