Playing Music (Able to play longer than 28 second files somehow?)
I am working on a game. Don't let that throw you, though, my question is pretty well contained within the bounds of this board.
Background:
In one of my previous projects, a turn-based strategy game, I had created a SoundPlayer class, which could load from files and produced Clip (I think) objects that could be played by my program. The problem was, it used up huge amounts of memory and I could only play at most one copy of each sound at a time (that is, I couldn't have, for example, two explosion sound effects going off and have them overlap) because of the way I had arranged things to keep them from loading too many times. The largest sound it could load was a 28 second wav file, and that didn't even work on all computers. Even on my computer, which had the overall best performance for running this program, sounds would sometimes not play, or rarely play over and over until they were told to play a second time. Most of this is probably my implementation, but it still wasn't working.
Questions:
How can I load large sounds, like music, either midi or mp3, or possibly some well compressed (small file-size) format that can contain the same type of data as a wav? How can I minimize memory use AND the amount of space used by the loaded-from files? How can I make it play more than one instance of the same sound at a time? How can I keep it so that things play the right number of times, not more, not less?
Additional Requirements:
I need to be able to stop the sounds, so I will probably need some sort of a handle to the object associated with it, and I may need to adjust its volume. Also, I may need to know when a sound finishes, either with a boolean or an event (or something like it) fired at the completion of the sound. It would help to know how far into a sound it has played, and in some cases it might be useful to be able to loop some number (or indefinitely) either over the whole sound or a part of it.
I know this is a lot, but sound is pretty necessary to make a good game.
Thanks in advance.

