Есть ли способ подать прямой ввод аудиолинии в java, чтобы я мог сделать синтезатор?
Я попытался передать двоичные данные в поток аудиовхода. Это не сработало
Когда это не сработало, я предполагаю, что я вводил неправильные данные, поэтому я получил волновой файл и после выяснения, где находятся аудиоданные, и подал их.
Но он все еще не работал
вот исходный код:
//audio.bin is just a .wav file
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.*;
import java.io.*;
import java.nio.file.Files;
public class main{
public static Mixer mixer;
public static Clip clip;
public static AudioInputStream audioStream;
public static InputStream inputStream;
public static void main(String[] args) throws IOException{
File file = new File("audio.bin");
byte[] files = Files.readAllBytes(file.toPath());
Mixer.Info[] mx = AudioSystem.getMixerInfo();
//for(int i=0;i<mx.length;i++){
// System.out.println(i+"="+mx[i]);
//}
mixer = AudioSystem.getMixer(mx[0]);
//Port.Info.SPEAKER;
byte[] seq = new byte[files.length-0x56];
int j=0x56;
for(int i=0;i<seq.length;i++){
seq[i]=files[j];
j++;
//System.out.println(seq[i]);
}
inputStream = new ByteArrayInputStream(files);
AudioFormat format;
DataLine.Info dataInfo = new DataLine.Info(Clip.class, null);
try{
clip = (Clip)mixer.getLine(dataInfo);
format = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,44100,16,2,4,44100,false);
audioStream = new AudioInputStream(inputStream,format,files.length);
clip.open(audioStream);
clip.start();
}catch(Exception e){
System.err.println(e);
}
}
}
/*
try{
clip = (Clip)mixer.getLine(dataInfo);
//AudioInputStream audioStream=;
//clip.Open();
}catch(Exception e){
System.out.println(e);
}
*/