Well, it may be helpful for some other audio programmers to partake in some of my discoveries:
1.) AudioSystem.getAudioInputStream( on any PCM file) returns a stream with no mark support! They're basically useless!
2.) Using javaZoom's vorbis library, property "ogg.position.byte" (the only way to get song position) is horribly low granularity! you get udpates ~ every 30 ms!
3.) Of course, one can get around #1 by just always using .mp3 and .ogg files, which is nice and great! But, when you have the problem #2 with oggs, you need to get from ogg > mp3! and you can't do that without going through PCM! and pcm has no mark support so you can't do ANYTHING with it!
4.) To go just a little bit backwards in a file, you have to rewind to the beginning and then rescan the whole file!!! WHY!?!?!?!?
EDIT: oh, well, ok, figured out how mark and reset actually work.
So, I misdiagnosed my condition.
Output using jsresource's Mp3Encoder class
Code:
Input format: VORBISENC 44100.0 Hz, unknown bits per sample, stereo, unknown frame size, unknown frame rate,
Intermediate: PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian
Got converted AudioInputStream: org.tritonus.sampled.convert.lame.Mp3LameFormatConversionProvider$EncodedMpegAudioInputStream
Output format: MPEG1L3 44100.0 Hz, unknown bits per sample, stereo, unknown frame size, unknown frame rate, false
Writing C:\Users\Ben Braun\Desktop\Pad simfiles\Banzaigtv's ITG Simfiles\Are You Serious\Are You Serious.mp3...
But the .mp3 file comes out empty!
HOWEVER: if we try to save a .au file to the .mp3, it succeeds! I think it's because the .ogg file is not sending the correct header, and therefore AudioSystem.write can't write anything. (in fact, it does write a few bytes, but not enough to actually hear anything)
and, if I try to write my own loop that does something similar, I get that the "converted stream" doesn't have any available bytes even at the beginning!
(help....)