Steve's Mikmod Page


Last updated Thursday, 31-Dec-98 14:48:59 GMT
Features Changes ToDo v2.13 v2.14 Archive programs Projects Mailing lists Development version

This page is well out of date. For newer information about mikmod, visit http://www.freenet.tlh.fl.us/~amstpi/mikmod.html.

Description

Mikmod is a very portable module player written originally by MikMak. It will play the XM, MOD, MTM, S3M, STM, ULT and UNI module formats, and IT support is currently being worked on. Versions are available for DOS, Linux, Win95, OS/2, SunOS, HP-UX, DEC Alpha, SGI and AIX. This page deals primarily with work on the Unix ports although much of the stuff here may be useful for the other systems.

Features

Mikmod 2.14 for Unix is probably the best mod-player for Unix, complete with:

Current state (Changes file):

Changes made since mikmod-2.11-unix.tgz (5th August 1996)
Steve McIntyre (stevem@chiark.greenend.org.uk)

=============================================================================
31/12/96- Released as MikMod v2.14 for Unix (mikmod-2.14-unix.tar.gz)

29/12/96- New drv_ultra to use new Ultralib API. Solaris driver now tested
	  on Solaris/x86 and it works! 

12/12/96- Minor cosmetic changes.

06/12/96- One-line patch to display.c to fix null-pointer filename
	  problems on Solaris. 

03/12/96- Finished tolerant flag stuff - if given -t option, will carry
	  on after file format/access errors. 

02/12/96- 669 loader almost fixed - major seg-fault problems gone, but
	  all modules play too fast. 
	- Adding tolerant flag to player - don't necessarily exit just
	  because we can't read/recognise a file we're given. 

01/12/96- Minor changes made for Sun compatibility.

28/11/96- Show errors again after curses window exits, suggested by Joey Hess 
	  (joey@kite.ml.org). 
	- Added scheduling patches from Erno Kuusela (ernesti@netppl.fi).
	  BE CAREFUL WITH THIS! 
	- Updated my email address on all files to a more permanent one -
	  from now on use stevem@chiark.greenend.org.uk.

24/11/96- Add extractbanner, minor small changes.

22/11/96- Minor changes, again in mplayer.c

21/11/96- Add loadbanner and usage functions. Various other small changes
	  in mplayer.c

14/11/96- Improvements to panning functions in virtch.c supplied by
	  Mikmak. Malloc fix in drv_ultra.c to step seg-fault problem. Also
	  make UltraInit set md_mixfreq to 44100. 

11/11/96- Change to driver API. Add PatternChange, Mute and UnMute driver
	  calls. This is mainly to remove the ugly #ifdef ULTRA calls in
	  mplayer.c, so all the other drivers can simply use empty function
	  calls (e.g. MD_BlankFunction()), but drv_ultra and any further
	  wavetable-type drivers will have to provide proper functions here.
	  Not fully implemented yet... Need fully-working mute function for
	  GUS. 

10/11/96- Major rearrangement of code - add display.c and move ALL display
	  code out of other files. Now an X replacement is as simple as
	  replacing ui.c and display.c. Minor changes to ultra support.
	  Need to trace seg-faults on freeing .669s and .ULTs. Add cur_mod
	  global structure so any function can read/change items for
	  display. Add md_type flag - are we using a wavetable (e.g. GUS) or
	  normal device? Possible hooks for AWE32-lib equivalent to guslib. 

03/11/96- Finally fixed problem of eternally-looping mods (e.g. 
	  mercrain.s3m) by adding a sanity check to UNI_PTEFFECTB in
	  mplayer.c. Only change position if the new position is later than
	  current.  This fix also works for mods (e.g. chi-mai.s3m and
	  ac_blues.s3m) which have some patterns partially empty and use
	  the same instruction to jump to the next. 

28/10/96- Changes to allow FreeBSD use - old OSS version?
	- Minor bug fixes.
	- Also modified curses includes for cleaner use of ncurses - check
	  the Makefile.
	- Moved Changes, ToDo and README* files from source/ to docs/.

18/10/96- Re-added .669 loader. Portability may be awful; I'm not sure yet.

12/10/96- Changes for Solaris by Johan Hagman (Johan.Hagman@mailbox.swipnet.se)
          to reduce the CPU load and make it possible to use mikmod 2.13 as a
          Netscape helper application for MOD files:
        - Changed FRAGSIZE from 512 to 2048 in drv_sun.c to reduce the 
          number of interrupts. The interactive commands become slightly less
          responsive by this change.
        - Added a new command line option -q (quiet) that is needed for
          non-interactive use as a helper application. The files that were
          changed for this option are mikmodux.c, drv_sun.c and mplayer.c.

=============================================================================
24/09/96- Released as MikMod v2.13 for Unix (mikmod-2.13.tar.gz)

23/09/96- Added Ultra driver from Andy Lo A Foe (arloafoe@cs.vu.nl)
	- Updated Sun/Solaris driver from Valtteri Vuorikoski (vuori@sci.fi)
	- Several minor bug fixes

10/09/96- Fixed SGI compilation flags.
	- Changed mtypes.h so all signed definitions are explicit.
	- Allow all platforms to use built-in usleep() if necessary.
	- Numerous other small bug fixes.

07/09/96- Added man page.

06/09/96- Altered MOD_TYPES to include Amiga-style mod name ordering. If you 
	  have a large archive such as Aminet mounted, you should now be 
	  able to play straight from the archive.

05/09/96- Minor bug fixes.

04/09/96- Minor bug fixes.

03/09/96- Added SGI driver from Stephan Kanthak
	  (kanthak@i6.informatik.rwth-aachen.de)
	- Altered
		+ mikmod.h to list SGI driver functions and to change banner
		+ mikmodux.c to add SGI driver calls, also refesh() fix
		+ Makefile to accommodate new driver
	- Various small bugfixes.

31/08/96- Completely rewritten archive code in marchive.c, now handles
	  zip, lha/lzh, zoo. Arj support ready, just need newer version of
	  "arj" to test with. Will still only handle one mod per archive as
	  multi-file support will be _painful_.
	- Added "delete" option to ui. Hit 'd' to delete then 'y' to confirm
	  file removal. Useful when scanning large numbers of mods from ftp
	  etc. Doesn't yet remove deleted mod from current playlist, so 
	  skipping backwards will cause program to exit.

30/08/96- Added AIX driver from Lutz Vieweg (lkv@mania.robin.de)
	- Altered
		+ mikmod.h to list AIX driver functions and to change banner
		+ mikmodux.c to add AIX driver calls, also refesh()
		+ Makefile to accommodate new driver

29/08/96- Added sanity checking to virtch.c - avoid divide by zero and core
	  dump in "maxvol=16777216L / md_numchan". Thanks to Lutz Vieweg.
	- Moved zip-handling to new source file, marchive.c. Need to 
	  write a front-end function to work like file(1), then call 
	  appropriate archiver

28/08/96- Released mikmod-2.12-unix.tgz as m212unix.tgz - hopefully should 
	  work on all the platforms.

27/08/96- Added HP-UX driver from Lutz Vieweg (lkv@mania.robin.de)
	- Altered
		+ mikmod.h to list HP driver functions and to change banner
		+ mikmodux.c to add HP driver calls and ignore ^C
		+ Makefile to accommodate new driver

15/08/96- Moved to new cleaned-up version of SunOS driver that should work
	for Solaris too. Limited so far, may not work at all for 16-bit or
	high quality audio.

12/08/96- added DEC AudioFile driver from Roine Gustafsson (e93_rog@e.kth.se)
	(now called drv_AF.c)
	- Altered 
		+ mikmod.h to list AF driver functions and to change banner
		+ mikmodux.c to add AF driver calls
		+ minor bug-fix? to load_ult.c
		+ Makefile to accommodate new driver

11/08/96- moved volume and tempo multiplier init from mdriver.c to
	mikmodux.c: init once only, so each mod will get the same values
	rather than resetting each mod
	- add sanity check to pattern handling: if the mod is obviously 
	broken (patpos > 255) then go to next pattern
	- mdriver now frees the sound device when paused and reinitialises
	it when un-paused. Saves having to exit completely to allow other
	access to sound device. Could also be useful for on-the-fly
	parameter changing later


Soon to come (ToDo file):

Things to add to MikMod for Unix, Steve McIntyre

Handle randomising within mikmod.
Multi-file archives...? 					(Work underway)
*PORTABLE* X interface - which toolkit/widget set to use? Motif? 
Use a config file for default options, locations of archivers etc.

Maybe:

Replace curses code to make it more portable again - maybe for DOS?

Mikmod 2.13 for Unix

Mikmod 2.14 for Unix

Archivers

To make use of the on-the-fly decompression of archived mods, you may need some of the following:

Other mikmod projects

For more details about mikmod and links to the other projects being worked on, try the Mikmod home page. You might also like to look at the development version of MikMod, which includes the latest drivers and features but not as much testing.

Mikmod mailing lists

There are now three mailing lists available for MikMod users and developers: To subscribe to one of the above lists, send an e-mail to <list>-request@chiark.greenend.org.uk containing the word "subscribe" in the body.


Steve McIntyre
stevem@chiark.greenend.org.uk
CUWoCS Honorary Vice-Chair-Thing
"Can't keep my eyes from the circling sky,
Tongue-tied & twisted, Just an earth-bound misfit, I..."

This page hosted by Get your own Free Home Page
1