First to refresh everyone's memory, here's a quick description of a mod file form wikipedia.
This is the original module format. Uses inverse-frequency note numbers. 4 voices, with up to 32 in later variations of the format. Pattern data is not packed. Instruments are simple volume levels; samples and instruments correspond one-to-one. 15 instruments in the original Soundtracker, 31 in later trackers. This format was originally created to be easily playable with the Amiga hardware, since it was equipped with a four-channel DAC. The CPU has to do very little work to play these modules on an Amiga. Many games utilize this format - often with small player programs included. In the early 1990s, usage of this format with games was widespread across platforms, with games on PC and Nintendo systems utilizing it, as well.
So picking the highlights above a mod file basically 4 streams of notes, each note representing 1 of the 15 instruments.
My question is how can these files be converted into sound in modern day computers?? (I know they can, JavaModPlayer2 is a good mod player). I'm assuming that the original notes in the mod files were directly fed to the 15 hardware instruments that resides in the Amiga.
Wouldn't this undoubtedly make mod files sound different on practically every computer depending on how the 15 Amiga instruments are emulated?
How do modern mod players play mod files? Do they decode into another format first, like mp3? Or do they directly feed the information to the sound hardware - how do they do that? Does Java provide an API for this?
Would it be possible to ship "software" versions of the 15 Amiga instruments and use them while reading the mod file and to ultimately play the music unanimously on all computers?
I am quite clouded by how sound works in general, so any and all insights are welcome!
I was considering making my own mod player in java for fun since the mod format is fairly straightforward and tangible.