about | news | download | instructions | features | bugs | todo  SourceForge.net Logo


ANA-MP is a player for music files (modules) in the .MOD, .XM and .S3M formats.

It is programmed in java and will therefore run (or at least crawl) on any platform that has an implementation of Java and the javax.sound.* api (In most cases that means jdk1.3.0 or newer from Sun)

ANA-MP is released under the LGPL license.


06/04/2005: Version released

Just a quick note to anyone stumbling across this page: Several updates has been released since version 0.9.7, the latest being Get it from the SourceForge project page, which can be reached by clicking the SourceForge logo at the top of this page or one of the download links further down. This page is just so due for a redesign...

23/08/2004: Version 0.9.7 released

This release brings S3M support to the Java world! :)
It's a bit experimental yet, as support for quite a few effects and some format variations are missing. I expect to make it more complete during the next week or so...

You may also notice that the version numbering scheme has changed. It just seemed very unlikely that 0.99 would be the last release before 1.0. The new scheme will make room for as many releases as I might want before I call it finished and put the "1.0" stamp on it.

01/05/2003: Version 0.96 released

Woohoo! New version :)
Made interpolated mixing work. Mixing is now handled by plugins and mixers
with higer order interpolation should be easy to implement. The command line
option "noint" can be used if you want to use a faster (crappier)
interpolation algorithm.

Reworked the output plugin interface. The player now always work at 44100Hz,
16 bits, stereo. It's up to the output plugin to resample if a lower quality
is needed. This simplifies the player code but means that there is no
performance gain in decreasing the sound quality.

Wav output plugin added. Supports only 44100Hz, 16 bits stereo. Use the
"wav" command line option.

Version number increased :-)

Bugfix: KeyOff resulted in sample being cut.

Reorganized the distribution:
 -All files distributed in one archive.
 -Added build.xml for building using ant.
 -Added this file :-)

Lots of smaller code cleanups.

09/04/2003: Version 0.95 released

This project isn't dead yet! :)
3 things done in a hurry for this release:
  1. Made the start of a framework for low level mixer plugins.
  2. Fixed stupid use of memory in the mixer
  3. Javadoc written for almost everything

30/07/2002: Version 0.94 released

I'm now quite satisfied with the support for effects. All effects except set filter, invert loop and autovibrato are now implemented. If I can find out how autovibrato works I'll try to fix that, but I probably will not bother with set filter and invert loop.
This version also have a very basic support for playlists. You can now play a file with a list of modules separated by newlines. There is even a option for playing in random order. :)
You might notice that this version is a lot smaller than the previous. That's because much of the player code is rewritten. Fewer class files -> Less overhead.

22/07/2002: Version 0.93 released

XM-support is coming along nicely :) Most .XMs now play without any obvious errors. A few things are still missing though: All the .XM spesific effects and autovibrato. The effects will probably be there in the next release, but I haven't found any descriprion of how the autovibrato thing works. I guess I have to experiment a bit...
There hav also been a number of bugfixes.

Some details:

added:	support for ping pong loops
added:	detection of Noisetracker modules ("N.T.")
added:	relative note and finetune is used
fixed:	loading of 16 bits samples (.xm)
fixed:	the .xm-loader loader loaded all notes one note to high
fixed:	a serious bug in all the slide note effects
fixed:	the .xm loader f***ed up the extended (Exx) effects
fixed:	(.Xm loader) set sampleLength, loopStart and loopLength right
	when loading 16 samples
fixed:	loop pattern effect
fixed:	(.Xm loader) load the right number of patterns (when not all
	patterns is used)
fixed:	nullPointerException when "slide to note and volume slide" is
	played and "volume slide" never have been played in the same track
fixed:	more bugs in "slide to note and volume slide" and "vibrato and
	volume slide" (when passing arguments on to slide to note and vibrato)
fixed:	yet another bug in "slide to note" when sliding down (a "<"/">"
	confusion... ;) )
fixed:	a lot of small bugs in the mixing code, generating exeptions
fixed:	(.XM loader) make extra empty patterns quiet (not playing
	instrument 0 with note 0 in all divisions, all channels...)
fixed:	make it safe to play an instrument without any samples (to stop
	any sound in that track)
fixed:	(.XM loader) make patterns with packed size == 0 quiet (like
	extra patterns)
fixed:	patterns with varying length...
fixed:	the .MOD loader didn't load fineTune values right
fixed:	handling of volume (don't assume default = 1, get value from
fixed:	handling og panning (let loader decide which panning value
	should be used)
added:	(empty) classes for xm and s3m effects
fixed:	the rounding error when calculating ticks in whole millisecs was
	to large. Fast modules sounded crap...
added:	A ModuleUnits interface have been created so that the player
	dont have to know hov to do note-period-rate calculations for each
	type of module. There will be one implementation of this interface
	for each type of module
added:	instruments will fade out if a KEY-OFF note is played
fixed:	I finally gave up on making the slide effects work for both mod
	an xm, making separate effects for each format. Im confused: Slides
	for xm are said to be as protracker in the xm-spec commented by
	SaharaSurfers, while the with comments from Byteraver say that the
	distance between two octaves is 255 portamento units. What
	actually works is the protracker way, only multiplied by 4. (and that
	seems to be what mikmod does, except that mikmod also does that when playing
	ordinary .mods...)
added:	volume envelopes!!! :)
fixed:	a bug in the forward looping code that made it play the first part of
	the sample, skip a part and then start on the loop. This happened if
	the loop start wasn't reached in the first tick of playing this sample.
added:	panning envelopes!!! :)

15/07/2002: Version 0.92 released

I have continued the rewrite of the player. This is the first version where the modules is actually played with this new code. The internal format used now is based on the .XM format, with some modifications and extensions. The player don't support all of .XM's features yet, actually it only support those features that .XM have in common with .MOD, so playing an .XM is doomed to make the player crash... .XM (and hopfully .S3M) support is not a long way off though :) I'm not so certain about .IT. I haven't looked much at the format and I'm not sure how well it maps to the players internal format.

Things that have been fixed/added:

07/07/2002: Version 0.91 released

This version fixes a lot of bugs in the effects, and it will also play more variations of the .MOD format.

I have also started to rewrite the player to make it possible to support more formats. You can test the xm-loader by typing:
java -cp ana-mp-0.91.jar anakata.modplay.loader.XMLoaderTest <an-xm-module>

Some details:

bugfix:		sample-loop was broken, played "play entire sample, then loop" instead of
                "play sample until loop-end, then loop"
bugfix:		verbose command line arg fixed
test:		slide up/down, works like winamp, madtracker broken?
bugfix:		slide to note now works
removed:	glissando control. I misunderstood how it worked...
bugfix:		jumping to start of 0'th pattern now work
test:		FLT4 works, 6CHN works
fix:		old 15 instr mod works :)
added:		look for id's 2CHN, OCTA (octalyzer), CD81 (atari falcon) and
                TDZx (taketracker) (none tested...)
added:		buffer cache... +less garbage
		                -the mixer assumes that all new buffers contains only zeros,
				 so all cached buffers must be cleared
test:		arpeggio works!!! (finaly)

03/07/2002: Version 0.9 released

First version.
This version will probably open your .MOD and some noises will often come out of your speakers. Sometimes the noices will sound like music and sometimes they will not...


All versions are available from HERE


To use it as a player, type: java -jar ana-mp-<version>.jar [options] name-of-mod-file (no options or filename will give you a list of options)
To use it to play music in your program: take a look at anakata/modplay/Player.java


Bugs "and stuff..."


Created by:
Torkjel Hongve
This page has been visited times since 2002/07/04