home *** CD-ROM | disk | FTP | other *** search
/ PC Loisirs 18 / cd.iso / sharewar / mikm202 / docs / history.doc < prev    next >
Encoding:
Text File  |  1995-09-18  |  12.0 KB  |  407 lines

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