Опитвам се да направя някаква аудио обработка на Android в реално време.
Това, което имам досега, е приложение, което записва звук за предварително зададен период от време и го записва във WAV файл, който след това се обработва.
Това работи доста добре, но тъй като просто се интересувам от записване на импулсни отговори, си помислих, че може да е доста страхотно да накарам приложението ми автоматично да открива кога е възникнал импулс и просто да запазя пробите от 0,5 секунди преди импулса и до 1,5 секунди след това (общо 2 секунди).
Ето как се справям с байтовия масив на wav файла досега:
double audioSample = (double) (array[i+1] << 8 | array[i] & 0xff)/ 32767.0;
Това ми дава стойности между [-1,1], така че да кажем, че идеята ми е да считам за импулс всеки звук над 0,3 повече или по-малко. Мисля, че решението ще бъде за съхраняване на пробите в буфер и проверка на стойностите му в реално време, но не съм съвсем сигурен как да го приложа.
Знаете ли някакъв примерен код или нещо, което мога да разгледам?