/ / Аналіз звукових файлів java - java, аудіо, музика

Аналіз звукових файлів java - java, аудіо, музика

Я працюю на музичному візуалізаторі в Java, але я "мщо я стикаюся з проблемами, що виникають. Моя програма успішно читає аудіо, і я розібрала функції з математичними операціями / малювання, але в моєму питанні з'ясовується, як налаштувати мої методи, які мої програми малюють візуальні ефекти поки звукові п'єси.

Це фрагмент мого коду для читання в аудіо (після створення рядка, а AudioInputSystem, збережений як ais, був викликаний у файл з getAudioInputStream):

byte[] data = new byte[EXT_BUFF_SIZE];
int bytesRead =0;
while(bytesRead!= -1){
try{
bytesRead = ais.read(data,0,data.length);
}catch(IOException e){e.printStackTrace();}
if(bytesRead>0){
int bytesWritten = line.write(data,0,bytesRead);
}
}
line.drain();
line.close();

Я намагався надіслати дзвінки на інші функції в різних місцях в той час або спробувати безрезультатно.Я також сподівався, що, можливо, поставити його перед тим, як line.write () працюватиме, але це не робить.

Схоже, єдиним рішенням буде викликфункції читання та запису на збільшення файлу замість всього цього, але я боюся, що це призведе до розриву у відтворенні. Це моя перша публікація тут, після багатьох скриплень, тому, сподіваюсь, мені було досить докладно пояснюючи моє запитання.Якщо не, я спробую в останній раз: як організувати програму для читання аудіофайла, потім виконати купу арифметичних операцій у файлі, тоді як виявляється, що обидва відбуваються одночасно (або, можливо, вони можуть і трапляється одночасно за допомогою планування потоку чи чогось, чого я не можу точно з'ясувати)? Заздалегідь дякую за будь-яку та всю допомогу!

Відповіді:

0 для відповіді № 1

Ви повинні мати можливість обробляти та відтворюватиаудіофайл у "фрагментах" певного розміру так само, як аудіо-драйвери обробляють аудіопотоки. (128, 256, 512 і т. Д. Зразки на шматок) Більше зразків на шматок означає більше "обробки візуалізації" часу на шматок до того, як аудіоплеєр готовий до наступного фрагмента аудіовипробувань. Ви можете експериментувати з розмірами шматочків, щоб знайти хороший баланс між достатньою швидкістю обробки візуалізації та вільним відтворенням.