static CloseableItIt decodeWAVToMonoSamples_iterator(File wavFile) { ret decodeWAVToMonoSamples_iterator(wavFile, 4096); } // windowSize is in seconds static CloseableItIt decodeWAVToMonoSamples_iterator(File wavFile, double windowSize) ctex { WAVDecoder decoder = new(newFileInputStream(wavFile)); ret decodeWAVToMonoSamples_iterator(decoder, iround(windowSize*decoder.sampleRate)); } // windowSize is in samples static CloseableItIt decodeWAVToMonoSamples_iterator(File wavFile, int windowSize) ctex { WAVDecoder decoder = new(newFileInputStream(wavFile)); ret decodeWAVToMonoSamples_iterator(decoder, windowSize); } static CloseableItIt decodeWAVToMonoSamples_iterator(WAVDecoder decoder, int windowSize) ctex { ret iteratorFromFunction_f0_autoCloseable(func -> short[] { short[] buf = new short[windowSize]; int n = decoder.readMonoSamples(buf); if (n <= 0) null; ret subArray(buf, 0, n); }, decoder); }