В настоящее время я разработал приложение Java в Eclipse, основанный на Audio Capture учебнике, написанном Richard G. Baldwin на http://www.developer.com/java/other/article.php/1579071/Java-Sound-Getting-Started-Part-2-Capture-Using-Specified-Mixer.htmJava: Sound Capture и Waveform Plotting
Это прекрасно работает, от того, что я могу сказать.
Я могу собирать данные и хранить их в ByteOutputStreamObject.
Я хотел бы воспользоваться этими данными и построить их.
Для заговора я использую плагин SWTChart (swtchart.org).
Однако все значения Построенные близки к 0, -256, 256.
Моя коллекция AudioFormat является:
SampleRate = 8000.0F
SampleSize = 8 bits
Channels = 1
Signed = true
bigEndian = False
Я преобразование ByteOutputStream через:
ySeries = toDoubleArray(byteArrayOutputStream.toByteArray());
...
public static double[] toDoubleArray(byte[] byteArray){
int times = Double.SIZE/Byte.SIZE;
double[] doubles = new double[byteArray.length/times];
for(int i=0;i<doubles.length;i++){
doubles[i] = ByteBuffer.wrap(byteArray, i*times, times).getShort();
}
return doubles;
}
Двойной формат требуемый вход для
lineSeries.setYSeries(ySeries);
Если изменить метод выше, от getShort к getDouble, полученный массив удваивается, но по заказу (+ -) 10^300 - 10^320.
Может кто-нибудь помочь мне понять, что мне нужно сделать здесь?
Вопрос заключается в подписании аудиоформата. Это назначение 'times' больше не используется. –
@ greg-449 - спасибо. Я редактировал сообщение. – jaket