home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / ELYVER10.ZIP / MIKXMAS.ZIP / docs / HISTORY.DOC < prev    next >
Encoding:
Text File  |  1995-12-13  |  14.5 KB  |  487 lines

  1. ╔════════════════╗
  2. ║ MIKMOD History ║
  3. ╚════════════════╝
  4.  
  5. Date last modified: December 13, 1995
  6.  
  7.  
  8. Version 2.10
  9.  
  10.      -  New ASM mixing routines for the Xmas release 
  11.  
  12.      -  Made XM global volume effects ( Gxx and Hxx )
  13.  
  14.      -  Fixed XM tremor effect (thanks pel!)
  15.  
  16.      -  New drivers for Sun, Alpha AudioFile & Ensoniq Soundscape
  17.  
  18.      -  Peter Breitling & I made new BC/Watcom/DJGPP portable dma routines
  19.  
  20.      -  Made mikmod C++ compatible: if you want to use it from C++ programs,
  21.         simply compile mikmod in C++ mode. I tested it on Watcom & Borland.
  22.  
  23.  
  24. Version 2.09 Beta
  25.  
  26.      -  MikMod is back to polling mode -> no need to call MD_Update() at
  27.         the exact speed of a song.. just call it once per frame or so.
  28.  
  29.      -  Made one BIG include file mikmod.h
  30.                    
  31.      -  New drivers for: AWE-32 (not included in the release version), Win95
  32.         Linux voxware, file-output.
  33.      
  34.      -  Portable module loaders
  35.      
  36.      -  New 32 bits software mixing routine, capable of doing bidi loops & 
  37.         interpolated mixing.
  38.  
  39.      -  Made project & makefiles for DOS (borland C, Watcom), Win95 
  40.         (Borland C 4.5), Linux
  41.         
  42.                                
  43. Version 2.04 (unreleased)
  44.  
  45.      -  Added a reppos (restart position) field to the UNI definition
  46.     so XMs loop correctly if they use a restart position other than 0.
  47.  
  48.      -  Fixed the XM loader.. it doesn't crash anymore on modules like
  49.     TOM-MID1.XM etc. 
  50.  
  51.      -  Implemented _mm_setiobase() function (see MMIO.C) for reading 
  52.     modules from a certain file offset.. (for your .WAD files or 
  53.     whatever)
  54.  
  55.      -  Fixed gusdriver bug which sometimes caused wierd sounds when playing
  56.     16 bit samples
  57.      
  58.      -  Fixed GUS allocation routines so now it can load 8 bit samples 
  59.     bigger than 256k in size.
  60.  
  61.  
  62. Version 2.03  
  63.  
  64.      -  Virtual timer routines: multiple timers using only one hardware
  65.     timer, with retrace synchronisation option.
  66.      
  67.      -  Works with 'pmodew' AND 'DOS4GW' extenders.
  68.      
  69.      -  Fast assembly mixing routine for protected mode.
  70.  
  71.      -  Now also amplified 16 bit mixing for SB-16 (protected mode only)
  72.      
  73.      -  Totally rewritten gus driver.. it's fast and small.
  74.  
  75.      -  Fixed ancient >64k sample bug of the .MOD loader.
  76.  
  77.      -  Fixed borland interrupt bug (it doesn't save the 32 bit registers
  78.     during interrupts).
  79.     
  80.      -  Fixed watcom interrupt bug (see WATIRQ.DOC)
  81.     
  82.      -  Included ALL makefiles, for both borland and watcom (*.bc *.wc)
  83.  
  84.      -  Made some minor changes to mikcvt.c and mikdesc.c so they compile
  85.     with watcom.
  86.  
  87.  
  88. Version 2.02
  89.  
  90.      -  The /V switch now also effects SB volume. (the internal volume 
  91.     variable is called mp_volume, instead of md_mainvol) 
  92.  
  93.      -  Also protected mode SB support (it's slow tho, the mixing routines
  94.     are 100% C)
  95.      
  96.      -  Made a bonus utility 'mikdesc' which adds 4dos descriptions to your
  97.     modfiles.
  98.  
  99.      -  Fixed mikcvt bug
  100.      
  101.      -  Fixed S3M channel detection & panning (at last)
  102.      
  103.      -  Timer interrupt calls system timer at the correct rate
  104.      
  105.      -  Fixed multisample bug (XMLOAD.C).. bug appeared at NEVER.XM
  106.  
  107.      -  Implemented all XM volume row effects
  108.  
  109.      -  Bumped UNI format version to UN04
  110.  
  111.      -  Now supports XM periods and finetuning , logarithmic and linear
  112.      
  113.      -  Fixed sources & created makefiles to compile mikmod using watcom
  114.  
  115.      -  Using central timer interrupt (in MDRIVER.C) for updating (this makes
  116.     syncing the player to the screen a bit easier).. so this is bye-bye
  117.     to gustimer 1
  118.  
  119.      -  Updated docs to reflect the changes in MDRIVER.C & MWAV.C
  120.  
  121.  
  122. Version 2.01 (unreleased)
  123.  
  124.      -  MD_SampleLoad() & MD_SampleUnload() prototypes have changed
  125.  
  126.      -  Renamed some types (like 'SAMPLEINFO' to 'SAMPLE')
  127.  
  128.      -  Multisample instruments
  129.  
  130.      -  Implemented XM panning & envelope support
  131.  
  132.      -  Improved XM effects support
  133.  
  134.  
  135. Version 2.00 (1st public release since 1.00?)
  136.  
  137.      -  Using synchronous interrupt for soundblaster playing.
  138.  
  139.      -  Made wavload routines & demo program
  140.      
  141.      -  Made a new MIKCVT for converting mods into .UNI modules
  142.      
  143.      -  Docs for MLOADER, MDRIVER, MWAV & MPLAYER modules.
  144.      
  145.      -  Created a nosound device.. might be useful.
  146.      
  147.      
  148. Version 1.94
  149.  
  150.      -  Wheee.. I fixed SB-16 support (how did I do this? Well.. I 
  151.     traded my sb-pro for a sb-16)
  152.     
  153.      -  No more autodetecting routines.. the drivers only check the
  154.     corresponding environment variables for gus & sb.
  155.  
  156.  
  157. Version 1.93
  158.  
  159.      -  Changed source directory structure
  160.  
  161.      -  I managed to compile MikMod with WC 10.. MikMod32 !!
  162.  
  163.      -  Radically changed the GUS driver preemtive ramping: it no longer 
  164.     has to use the second gus timer (it uses the volume ramp 
  165.     interrupt instead). I believe it even sounds better than the old 
  166.     version.
  167.    
  168.      -  Instead of letting the sounddrivers do the playing of voices, I 
  169.     just added some new routines to the driverstructure:
  170.     
  171.         - VoiceSetVolume
  172.         - VoiceSetFrequency
  173.         - VoiceSetPanning
  174.         - VoicePlay
  175.     
  176.     So now the starting of voices and updating of voiceparameters is 
  177.     back where it belongs: MODPLAY.C
  178.     
  179.      -  Fixed small STM tempo bug (Thanks outbit).
  180.  
  181.  
  182. Version 1.92? (irc testrelease)
  183.  
  184.      -  Introduced a general sample-converter, so that device drivers 
  185.     can request the type of sample they want to receive (signed / 
  186.     unsigned / 16 / 8bits). The sample converter takes care of 
  187.     transforming _any_ kind of input stream into the required output 
  188.     stream. This greatly reduces the complexity of the sample-load 
  189.     routines of the devicedrivers.
  190.  
  191.      -  XM support.. sorta..
  192.  
  193.      -  Tried to fix SB-16 support but no luck.. it produced no sound.
  194.  
  195.  
  196. Version 1.91
  197.  
  198.  
  199.      -  Using MyGlob() to expand wildcards on the commandline, instead 
  200.     of the old GetFirstName() etc..
  201.  
  202.  
  203.      -  Using standard sys-v style getopts() to improve QNX / Watcom 
  204.     compatibility.
  205.  
  206.      -  Added switches to dump all registered devicedrivers or loaders       
  207.     (/ld /ll).
  208.  
  209.      -  Added Rao's and Air Richter's STM loader.
  210.  
  211.  
  212. Version 1.90 Beta
  213.  
  214.     internal Hardcode & No-Limits & friends test release. Rahh.. I 
  215.     need a SB-16 so I can finish the SB driver!!
  216.  
  217.      -  Modules can be made to loop or to stop when they are done 
  218.     playing, using the new MP_Loop() and MP_Ready() functions (use 
  219.     the /R switch). Thanks to brianc@qnx.com who reminded me to make 
  220.     such a function.
  221.  
  222.      -  Using a object-oriented device-structure for building new 
  223.     drivers (MDRIVER.C & MDRIVER.H).
  224.  
  225.      -  Using a object-oriented loader-structure for managing all module 
  226.     loaders (MLOADER.C & MLOADER.H), so I don't have to mess around 
  227.     in the MLOADER.C source anymore to add new loaders. All .H files 
  228.     belonging to the module-loaders have been imported into 
  229.     the loader sources.
  230.  
  231.      -  Created speaker device.
  232.  
  233.      -  Created SB device. (no 16-bits yet tho)
  234.  
  235.      -  Created GUS device.
  236.  
  237.      -  Added automatic 20% per-channel amplification for 8-bit mixing, 
  238.     so multichannel mods don't sound so quiet. Otto Chrons calls it 
  239.     'autogain'.
  240.  
  241.      -  EMS support.
  242.  
  243.      -  Added a /M switch to force mono-output on SB.
  244.  
  245.      -  Using a new error handling system.. but it's still 
  246.     experimental.. instead of using error-codes, the routines now 
  247.     use error-strings:
  248.  
  249.     old style:      mp_err=102;       // some dumb number                       
  250.             return 0;
  251.  
  252.     new style:      myerr="Out of memory";        // Heh :)                       
  253.             return 0;
  254.  
  255.     I did this so I can make new errormessages on-the-fly, without 
  256.     having to define new errorcodes (and recompile everything).
  257.  
  258.  
  259. Version 1.02 Beta
  260.  
  261.      -  Added a comment field to the UN01 format. (For MTM ULT & 
  262.     FAR mods)
  263.  
  264.      -  15-instrument modules have the reppos as a byte-offset, 
  265.     NOT words.. fixed (thanks Rao, I didn't have any 15 inst. mods 
  266.     with sampleloops.)
  267.  
  268.      -  All S3M effects are supported: I added the following effects: 
  269.     Xxx, Sxy, Qxy, Kxy, Lxy, Ixy. Effects I and Q are new 
  270.     uniformat(tm) opcodes, so I bumped the uniformat(tm) version-id 
  271.     to UN01.
  272.  
  273.      -  Instead of pattern break positions, the UN01 format now saves 
  274.     the number of rows in a pattern as an array of words.
  275.  
  276.      -  Added DSM support (except delta-samples.. I didn't have 
  277.     any examples.. are they zero based, pelusa ?)
  278.  
  279.      -  Added MED support.. for all you amigoids outthere. (not 
  280.     to mention Red Penguin =).. well it's not perfect but I'll fix 
  281.     that.
  282.  
  283.      -  Fixed DSM & S3M order (positions) loading.. the bug caused some 
  284.     S3M's to be played too short.
  285.  
  286.      -  Fixed S3M number of channels detection.
  287.  
  288.  
  289. Version 1.01 Beta
  290.  
  291.      -  Fixed MTM loader.. used to play everything 1 note too low.
  292.  
  293.      -  Added ultratracker 1.6 loader. 
  294.      
  295.      
  296. Version 1.00 Beta
  297.  
  298.      -  Preemptive ramping.. nuked the RegisterPlayer()
  299.      
  300.      -  .MOD .MTM .S3M .ULT .FAR .669 .UNI support
  301.  
  302.      -  Using a new 'stream-ish' format for the tracks
  303.  
  304.      -  Grouped the different sources of mikmod in seperate directories.
  305.      
  306.      -  Renamed the MODFILE struct to UNIMOD
  307.  
  308.      -  Added a converter to convert .MOD .MTM .S3M .ULT .FAR .669 
  309.     to .UNI.. The track compression of the UNIMOD format saves a lot 
  310.     of space..
  311.  
  312.      -  No more fixed size song- and samplenames..
  313.  
  314.      -  DMP and MTM stereo panning effects supported
  315.  
  316.      -  Instead of passing the UNIMOD struct as a pointer to each loader 
  317.     I now use a static UNIMOD struct that each loader can use.
  318.  
  319.      -  Started using the S3M method of getting the period for a certain 
  320.     note. ( together with the S3M finetune method )
  321.  
  322.      -  Implemented variable length patterns.. (669 and FAR style)
  323.  
  324.      -  Implemented MTM style patterns (sorta)
  325.  
  326.      -  I discovered a bug in UltraDownload.. it crashes with small DMA 
  327.     transfers (<8 bytes).. I fixed this by forcing each transfer to 
  328.     a minimum of 8 bytes.
  329.  
  330.      -  Fixed a bug in the MTM loader.. samples only loop when the 
  331.     difference between reppos and repend is bigger than 2 bytes.
  332.  
  333.      -  S3M note value 254 means note-off.
  334.  
  335.      -  Fixed left-right stereo positions for MOD-playing.. thanks to 
  336.     Rao :) No more plug-switching!
  337.  
  338.  
  339. Version 0.44: (unreleased)
  340.  
  341.      -  Moved modplay tables to a seperate file 'tables.c'
  342.  
  343.      -  MikMod now plays 'backwards' mods too
  344.  
  345.      -  When the data of effect 9 is zero, then you have to use 
  346.     the previous sampleoffset.. fixed (thanks Stuart)
  347.  
  348.      -  Fixed the patterndelay effect (see 0.4 rev. below)
  349.  
  350.      -  Using default amiga channel positions as default (left, right, 
  351.     right, left)
  352.  
  353.  
  354. Version 0.43
  355.  
  356.      -  Fixed a bug that caused the first sample not to be unloaded
  357.  
  358.      -  Added a check to see if the loop end point exceeds the sample 
  359.     size (some modfiles seem to have this problem)
  360.  
  361.      -  Added wildcard filename matching to the modplayer
  362.  
  363.      -  Added the M!K! module id.
  364.  
  365.      -  Removed the check for the number of bytes loaded from a sample, 
  366.     because a lot of modules don't have the last sample complete, so 
  367.     mikmod would refuse to play them.
  368.  
  369.      -  Changed the loader so it can load 15-instrument modules
  370.  
  371.      -  Extended protracker speeds can be disabled
  372.  
  373.      -  Improved commandline parsing
  374.  
  375.      -  Added master volume
  376.  
  377.      -  Added functions to skip to the next or previous song position
  378.  
  379.  
  380. Version 0.42
  381.  
  382.      -  Removed more ultraclicks by adding volumeramping when stopping a 
  383.     voice. Actually this idea was suggested to me by Forte Tech 
  384.     Support.. thanks!
  385.  
  386.      -  When an arpeggio effect stopped, the period would 'hang' at the 
  387.     last arpeggio note, while it should return to the 'base' period.
  388.     To fix this problem I changed the arpeggio code to not affect 
  389.     tmpperiod but period itself. (This bug was kinda hard to find 
  390.     because it's an outdated effect)
  391.  
  392.      -  Have to limit patbrk values to max. 64.
  393.  
  394.      -  Rearranged the GusPlay() callback routine to use a more sensible 
  395.     order of setting the frequency and volume of a voice.
  396.  
  397.  
  398. Version 0.41
  399.  
  400.      -  When comparing to my amiga, I noticed that some effects on 
  401.     mikmod were too fast. I discovered that effects like toneslide, 
  402.     vibrato, volumeslide etc aren't updated the first tick of a row. 
  403.     FIXED.
  404.  
  405.      -  Have to reset wantedperiod for each note..
  406.  
  407.  
  408. Version 0.4:
  409.  
  410.      -  Totally rewritten the modload routines.. Created a type 
  411.     'MODFILE' that holds all info of a modfile, so now you can load
  412.     more than one module.
  413.  
  414.      -  New docs.
  415.  
  416.      -  Using handle-numbers instead of sample numbers to load samples..
  417.     (neccessary when loading more than one module at a time )
  418.  
  419.      -  Have to limit volume range for effect C
  420.  
  421.      -  Fixed effect '3' (toneslide) (this caused wierd slides on
  422.     modules like scramble.mod)
  423.  
  424.      -  Switched to a 3-byte-per-note format when converting patterns..
  425.     same format that GUSMOD uses.
  426.  
  427.      -  When a patternbreak has just occurred, all patternbreak 
  428.     command's have to be ignored for the next row. ( This bug 
  429.     made mikmod skip a pattern in the module 'condom-corruption')
  430.  
  431.     0.44 addendum: This is _not_ true.. the condom-corruption bug
  432.     was caused by the patterndelay effect which was implemented
  433.     incorrectly.
  434.  
  435.  
  436. Version 0.3: (unreleased)
  437.  
  438.      -  Added 2 octaves to period tables.
  439.  
  440.      -  Removed ASM bits from MODLOAD.C
  441.  
  442.      -  Implemented the remaining effect commands. (Phew!)
  443.  
  444.      -  The sample start bug of the SDK 2.01 has been removed in the 
  445.     2.10 SDK. So now this program can be compiled without modifying 
  446.     the SDK itself.
  447.  
  448.      -  The pattern break effect data is in BCD !. This screwed 
  449.     up modules like garbage_collection (by Peter Salomonson).
  450.  
  451.  
  452.  
  453. Version 0.2:
  454.  
  455.  
  456. MODLOAD.C:
  457.  
  458.      -  I have to check ALL song positions (128 positions ) for 
  459.     patterns.. This bug caused edited modules to load incorrectly. 
  460.     FIXED.
  461.  
  462.  
  463. MODPLAY.C:
  464.  
  465.      -  The old version didn't allow sample loops smaller than 64 bytes. 
  466.     ( that was a leftover from my soundblaster player.. ) FIXED.
  467.  
  468.  
  469. MIKMOD.C:
  470.  
  471.      -  UltraClicks removed (most of them). Ultraclicks are caused by
  472.     the fact that a GUS plays beyond the last byte of a sample. 
  473.     (actually, it interpolates between the last byte of a sample and 
  474.     the next byte that doesn't belong to that sample). I fixed this 
  475.     by allocating one more byte when loading a sample and zeroing 
  476.     that extra byte.
  477.  
  478.      -  Added fast volume ramping when starting a sample...
  479.  
  480.      -  #@$%@^$!!#$@! Fixed the extended speed.. I really should be more 
  481.     careful.
  482.  
  483.  
  484. Version 0.1 
  485.  
  486. First public release.
  487.