モノラルWav2つからステレオWavを作成するJavaプログラム

誰か使うかな?というかSoxでMixする方法誰か知りませんか?

package test;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.UnsupportedAudioFileException;

public class WavMux {

/**
* @param args
*/

public static int findWaveDataLocation(InputStream input){
int ret=-1;
byte buf=new byte[1024];
try {
BufferedInputStream binput=new BufferedInputStream(input);
int r=binput.read(buf);

String t=new String(buf);
System.out.println(t);
ret=t.indexOf("data");
input.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

System.out.println(ret);
if(ret!=-1){
return ret+4+4;//data+data.length
}else{
return -1;
}
}
public static boolean domin=false;
public static void main(String
args) {
File left=new File(args[0]);
File right=new File(args[1]);
File output=new File(args[2]);



try {

AudioFormat leftFormat=getAudioFormat(left);
AudioFormat rightFormat=getAudioFormat(right);
if(!equalFormat(leftFormat,rightFormat)){
System.out.println("input formats different");
System.exit(1);
}

if(leftFormat.getChannels()!=1){
System.out.println("channel must be monoral");
System.exit(1);
}
AudioFormat audioFormat=changeStereoAudioFormat(left);

File tmpOut=File.createTempFile("newTmp",".wav");
BufferedOutputStream fout=new BufferedOutputStream(new FileOutputStream(tmpOut));

AudioInputStream leftInput=AudioSystem.getAudioInputStream(left);

AudioInputStream rightInput=AudioSystem.getAudioInputStream(right);

byte leftbyte=new byte[1024];
byte
rightbyte=new byte[1024];
int size=audioFormat.getSampleSizeInBits()/8;

boolean finishLeft=false;
boolean finishRight=false;
while(finishLeft==false || finishRight==false){
int leftValue=0;
if(!finishLeft){
leftValue=leftInput.read(leftbyte);
}
int rightValue=0;
if(!finishRight){
rightValue=rightInput.read(rightbyte);
}

if(leftValue<=0){
leftInput.close();
finishLeft=true;
}

if(rightValue<=0){
rightInput.close();
finishRight=true;
}

int bytes;
if(domin){
if(finishLeft || finishRight){
if(!finishLeft)
leftInput.close();
if(!finishRight)
rightInput.close();
break;
}
bytes=Math.min(leftValue,rightValue);
}else{
bytes=Math.max(leftValue,rightValue);
}
for(int i=0;i