Ah, unfortunately this thread doesn't have what I posted in a different thread. Too bad it can't automagically update all related posts

Anyhow, the problem lies in the fact that once converted to PCM, the AudioInputStream always returns -1 for getFrameLength() and available() always returns 0. This is due to something deep deep in the Tritonus API where the AudioInputStream is actually reading from an internal TCircularBuffer. This buffer blocks on the read with a
1
| while (buffer.available() == 0) { Object.wait(); } |
Since available() is always 0 at the end it always blocks. There's also a condition where if frameLength == -1 then it skips the EOF check based on frameLength. When I found this out I was overjoyed and thought maybe I could fix it. Then I tried a smaller file, about 1MB. And lo and behold it worked perfectly fine. In fact it only starts this problem once the input file size gets to around 3MB. So I was back to square one. I emailed the VorbisSPI who are responsible for the OGG to PCM conversion code but they haven't responded. And it looks like Tritonus is all but dead considering they haven't updated in like 2 years.
P.S. That's all the code necessary but you need to have the proper jars. VorbisSPI 0.6 should have all of them and I can't get VorbisSPI 0.7 to recognize an OGG file and they haven't been any help on that bug either.
Of course they were really helpful for a different problem I have, so what can I expect for free

And it does work really well except for the bugs I'm battling now.