/*
* -------------------------------------------------------------------------
* $Id: AccessWaveFile.java,v 1.4 2006/01/30 20:03:45 estewart Exp $
* -------------------------------------------------------------------------
* Copyright (c) 1999 Visual Numerics Inc. All Rights Reserved.
*
* This software is confidential information which is proprietary to
* and a trade secret of Visual Numerics, Inc. Use, duplication or
* disclosure is subject to the terms of an appropriate license
* agreement.
*
* VISUAL NUMERICS MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
* SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING
* BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. VISUAL
* NUMERICS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE
* AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR
* ITS DERIVATIVES.
*--------------------------------------------------------------------------
*/
package com.imsl.demo.Harmonic;
import java.io.IOException;
import javax.sound.sampled.*;
/**
* Uses classes from javax.sound.sampled to obtain data
* from a .wave file.
*
* @author R.B.E.Taylor
* @created October 23, 2002
*/
public class AccessWaveFile {
java.net.URL fileURL;
public AccessWaveFile(String fileName) throws UnsupportedAudioFileException {
setInput(fileName);
}
public void setInput(String fileName) {
this.fileURL = this.getClass().getResource("/com/imsl/demo/Harmonic/"+fileName);
}
private int availableBytes;
private AudioFormat inputFormat;
private float framesPerSec;
private int bytesPerFrame;
private float bytesPerSec;
public byte[] getByteStream(int streamSize) throws IOException, UnsupportedAudioFileException {
AudioInputStream input = AudioSystem.getAudioInputStream(fileURL);
byte[] byteWaveForm = new byte[streamSize];
// Deal with "unsigned-to-signed" issue and make "dc" 0
input.read(byteWaveForm);
for (int i=0; i<availableBytes; i++) byteWaveForm[i]+=128;
// input.read() broken in Java 1.5
//for (int i=0; i
// byteWaveForm[i] = (byte)(input.read() + 128);
//}
input.close();
return byteWaveForm;
}
public float getBytesPerSec() throws IOException, UnsupportedAudioFileException {
AudioInputStream input = AudioSystem.getAudioInputStream(fileURL);
inputFormat = input.getFormat();
framesPerSec = inputFormat.getFrameRate();
bytesPerFrame = inputFormat.getFrameSize();
input.close();
// Test bytes per frame? Throw an exception if != 1 (as
// demo expects it to be) ?
return framesPerSec;
}
public int getAvailableBytes() throws IOException, UnsupportedAudioFileException {
AudioInputStream input = AudioSystem.getAudioInputStream(fileURL);
availableBytes = input.available();
input.close();
return availableBytes;
}
}